oracle-e54.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .text 00024720 00000000 00000000 00010000 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .ARM.exidx 00000008 00024720 00024720 00034720 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .relocate 00000074 20000000 00024728 00040000 2**2 CONTENTS, ALLOC, LOAD, DATA 3 .bkupram 00000000 47000000 47000000 00040074 2**0 CONTENTS 4 .qspi 00000000 04000000 04000000 00040074 2**0 CONTENTS 5 .bss 0000c788 20000078 000247a0 00040074 2**3 ALLOC 6 .stack 00010000 2000c800 00030f28 00040074 2**0 ALLOC 7 .ARM.attributes 0000002e 00000000 00000000 00040074 2**0 CONTENTS, READONLY 8 .comment 00000049 00000000 00000000 000400a2 2**0 CONTENTS, READONLY 9 .debug_info 000765d6 00000000 00000000 000400eb 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 10 .debug_abbrev 0000c4d1 00000000 00000000 000b66c1 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 11 .debug_loc 0003fa1e 00000000 00000000 000c2b92 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 12 .debug_aranges 00002108 00000000 00000000 001025b0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 13 .debug_ranges 00008128 00000000 00000000 001046b8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 14 .debug_macro 0003f84e 00000000 00000000 0010c7e0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 15 .debug_line 00059830 00000000 00000000 0014c02e 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 16 .debug_str 001280ca 00000000 00000000 001a585e 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 17 .debug_frame 00006a3c 00000000 00000000 002cd928 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: 00000000 : /********************** * GLOBAL FUNCTIONS **********************/ void _lv_gc_clear_roots(void) { 0: 00 c8 01 20 09 09 00 00 05 09 00 00 05 09 00 00 ... ............ #define LV_CLEAR_ROOT(root_type, root_name) _lv_memset_00(&LV_GC_ROOT(root_name), sizeof(LV_GC_ROOT(root_name))); LV_ITERATE_ROOTS(LV_CLEAR_ROOT) 10: 05 09 00 00 05 09 00 00 05 09 00 00 00 00 00 00 ................ ... 2c: 05 09 00 00 05 09 00 00 00 00 00 00 05 09 00 00 ................ 3c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 4c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 5c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 6c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 7c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ } 8c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 9c: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ ac: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ bc: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ cc: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ dc: 05 09 00 00 05 09 00 00 05 09 00 00 00 00 00 00 ................ ... f4: 8d 05 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 104: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 114: 05 09 00 00 61 08 00 00 cd 08 00 00 d5 08 00 00 ....a........... 124: dd 08 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 134: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 144: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 154: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 164: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 174: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 184: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 194: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 1a4: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 1b4: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 1c4: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 1d4: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 1e4: 05 09 00 00 05 09 00 00 e5 0e 00 00 05 09 00 00 ................ 1f4: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 204: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 214: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 224: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 234: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 244: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 254: 05 09 00 00 05 09 00 00 05 09 00 00 05 09 00 00 ................ 00000264 <__do_global_dtors_aux>: 264: b510 push {r4, lr} 266: 4c05 ldr r4, [pc, #20] ; (27c <__do_global_dtors_aux+0x18>) 268: 7823 ldrb r3, [r4, #0] 26a: b933 cbnz r3, 27a <__do_global_dtors_aux+0x16> 26c: 4b04 ldr r3, [pc, #16] ; (280 <__do_global_dtors_aux+0x1c>) 26e: b113 cbz r3, 276 <__do_global_dtors_aux+0x12> 270: 4804 ldr r0, [pc, #16] ; (284 <__do_global_dtors_aux+0x20>) 272: f3af 8000 nop.w 276: 2301 movs r3, #1 278: 7023 strb r3, [r4, #0] 27a: bd10 pop {r4, pc} 27c: 20000078 .word 0x20000078 280: 00000000 .word 0x00000000 284: 00024728 .word 0x00024728 00000288 : 288: b508 push {r3, lr} 28a: 4b03 ldr r3, [pc, #12] ; (298 ) 28c: b11b cbz r3, 296 28e: 4903 ldr r1, [pc, #12] ; (29c ) 290: 4803 ldr r0, [pc, #12] ; (2a0 ) 292: f3af 8000 nop.w 296: bd08 pop {r3, pc} 298: 00000000 .word 0x00000000 29c: 2000007c .word 0x2000007c 2a0: 00024728 .word 0x00024728 000002a4 : /** * \brief I/O write interface */ int32_t io_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length) { 2a4: b570 push {r4, r5, r6, lr} 2a6: 460d mov r5, r1 2a8: 4616 mov r6, r2 ASSERT(io_descr && buf); 2aa: 4604 mov r4, r0 2ac: b110 cbz r0, 2b4 2ae: 1e08 subs r0, r1, #0 2b0: bf18 it ne 2b2: 2001 movne r0, #1 2b4: 4905 ldr r1, [pc, #20] ; (2cc ) 2b6: 4b06 ldr r3, [pc, #24] ; (2d0 ) 2b8: 2234 movs r2, #52 ; 0x34 2ba: 4798 blx r3 return io_descr->write(io_descr, buf, length); 2bc: 6823 ldr r3, [r4, #0] 2be: 4632 mov r2, r6 2c0: 4629 mov r1, r5 2c2: 4620 mov r0, r4 } 2c4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} return io_descr->write(io_descr, buf, length); 2c8: 4718 bx r3 2ca: bf00 nop 2cc: 0001638c .word 0x0001638c 2d0: 00000615 .word 0x00000615 000002d4 <_irq_set>: */ __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) { if ((int32_t)(IRQn) >= 0) { NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 2d4: 0943 lsrs r3, r0, #5 2d6: 2201 movs r2, #1 2d8: f000 001f and.w r0, r0, #31 2dc: fa02 f000 lsl.w r0, r2, r0 2e0: 3340 adds r3, #64 ; 0x40 2e2: 4a02 ldr r2, [pc, #8] ; (2ec <_irq_set+0x18>) 2e4: f842 0023 str.w r0, [r2, r3, lsl #2] * \brief Set the given IRQ */ void _irq_set(uint8_t n) { NVIC_SetPendingIRQ((IRQn_Type)n); } 2e8: 4770 bx lr 2ea: bf00 nop 2ec: e000e100 .word 0xe000e100 000002f0 <_get_cycles_for_us>: */ static inline uint32_t _get_cycles_for_us_internal(const uint16_t us, const uint32_t freq, const uint8_t power) { switch (power) { case 9: return (us * (freq / 1000000) + 2) / 3; 2f0: 2377 movs r3, #119 ; 0x77 2f2: 4358 muls r0, r3 2f4: 3002 adds r0, #2 * \brief Retrieve the amount of cycles to delay for the given amount of us */ uint32_t _get_cycles_for_us(const uint16_t us) { return _get_cycles_for_us_internal(us, CONF_CPU_FREQUENCY, CPU_FREQ_POWER); } 2f6: 2303 movs r3, #3 2f8: fbb0 f0f3 udiv r0, r0, r3 2fc: 4770 bx lr 000002fe <_get_cycles_for_ms>: */ static inline uint32_t _get_cycles_for_ms_internal(const uint16_t ms, const uint32_t freq, const uint8_t power) { switch (power) { case 9: return (ms * (freq / 1000000) + 2) / 3 * 1000; 2fe: 2377 movs r3, #119 ; 0x77 300: 4358 muls r0, r3 302: 3002 adds r0, #2 304: 2303 movs r3, #3 306: fbb0 f0f3 udiv r0, r0, r3 * \brief Retrieve the amount of cycles to delay for the given amount of ms */ uint32_t _get_cycles_for_ms(const uint16_t ms) { return _get_cycles_for_ms_internal(ms, CONF_CPU_FREQUENCY, CPU_FREQ_POWER); } 30a: f44f 737a mov.w r3, #1000 ; 0x3e8 30e: 4358 muls r0, r3 310: 4770 bx lr 00000312 <_delay_init>: * \brief Initialize delay functionality */ void _delay_init(void *const hw) { (void)hw; } 312: 4770 bx lr 314: 0000 movs r0, r0 ... 00000318 <_delay_cycles>: __asm(".align 3 \n" "__delay:\n" "subs r1, r1, #1\n" "bhi __delay\n"); #elif defined __GNUC__ __asm(".syntax unified\n" 318: 3901 subs r1, #1 31a: d8fd bhi.n 318 <_delay_cycles> __asm("__delay:\n" "subs r1, r1, #1\n" "bhi.n __delay\n"); #endif #endif } 31c: 4770 bx lr 31e: bf00 nop 00000320 : * \param[in] head The pointer to the head of timer task list * \param[in] task The pointer to task to add * \param[in] time Current timer time */ static void timer_add_timer_task(struct list_descriptor *list, struct timer_task *const new_task, const uint32_t time) { 320: b5f0 push {r4, r5, r6, r7, lr} * \return A pointer to the head of the given list or NULL if the list is * empty */ static inline void *list_get_head(const struct list_descriptor *const list) { return (void *)list->head; 322: 6805 ldr r5, [r0, #0] struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list); if (!head) { 324: b91d cbnz r5, 32e list_insert_as_head(list, new_task); 326: 4b0f ldr r3, [pc, #60] ; (364 ) if (it == head) { list_insert_as_head(list, new_task); } else { list_insert_after(prev, new_task); } } 328: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} list_insert_after(prev, new_task); 32c: 4718 bx r3 if (time_left >= new_task->interval) 32e: f8d1 c008 ldr.w ip, [r1, #8] 332: 462c mov r4, r5 struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list); 334: 2600 movs r6, #0 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 336: f1c2 0e01 rsb lr, r2, #1 time_left = it->interval - (time - it->time_label); 33a: e9d4 3701 ldrd r3, r7, [r4, #4] if (it->time_label <= time) { 33e: 4293 cmp r3, r2 time_left = it->interval - (time - it->time_label); 340: bf95 itete ls 342: 19db addls r3, r3, r7 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 344: 4473 addhi r3, lr time_left = it->interval - (time - it->time_label); 346: 1a9b subls r3, r3, r2 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 348: 19db addhi r3, r3, r7 if (time_left >= new_task->interval) 34a: 459c cmp ip, r3 34c: d907 bls.n 35e * \return A pointer to the next list element or NULL if there is not next * element */ static inline void *list_get_next_element(const void *const element) { return element ? ((struct list_element *)element)->next : NULL; 34e: 6823 ldr r3, [r4, #0] for (it = head; it; it = (struct timer_task *)list_get_next_element(it)) { 350: 4626 mov r6, r4 352: b913 cbnz r3, 35a list_insert_after(prev, new_task); 354: 4b04 ldr r3, [pc, #16] ; (368 ) 356: 4630 mov r0, r6 358: e7e6 b.n 328 35a: 461c mov r4, r3 35c: e7ed b.n 33a if (it == head) { 35e: 42a5 cmp r5, r4 360: d0e1 beq.n 326 362: e7f7 b.n 354 364: 000005d5 .word 0x000005d5 368: 00000601 .word 0x00000601 0000036c : /** * \internal Process interrupts */ static void timer_process_counted(struct _timer_device *device) { 36c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} struct timer_descriptor *timer = CONTAINER_OF(device, struct timer_descriptor, device); struct timer_task * it = (struct timer_task *)list_get_head(&timer->tasks); uint32_t time = ++timer->time; 370: e9d0 6504 ldrd r6, r5, [r0, #16] if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 374: 7e03 ldrb r3, [r0, #24] uint32_t time = ++timer->time; 376: 3601 adds r6, #1 if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 378: 07da lsls r2, r3, #31 { 37a: 4604 mov r4, r0 uint32_t time = ++timer->time; 37c: 6106 str r6, [r0, #16] if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 37e: d41f bmi.n 3c0 380: 7e03 ldrb r3, [r0, #24] 382: 079b lsls r3, r3, #30 384: d41c bmi.n 3c0 } while (it && ((time - it->time_label) >= it->interval)) { struct timer_task *tmp = it; list_remove_head(&timer->tasks); 386: f8df 8044 ldr.w r8, [pc, #68] ; 3cc if (TIMER_TASK_REPEAT == tmp->mode) { tmp->time_label = time; timer_add_timer_task(&timer->tasks, tmp, time); 38a: f8df 9044 ldr.w r9, [pc, #68] ; 3d0 list_remove_head(&timer->tasks); 38e: f100 0714 add.w r7, r0, #20 while (it && ((time - it->time_label) >= it->interval)) { 392: b1cd cbz r5, 3c8 394: 686b ldr r3, [r5, #4] 396: 68aa ldr r2, [r5, #8] 398: 1af3 subs r3, r6, r3 39a: 4293 cmp r3, r2 39c: d314 bcc.n 3c8 list_remove_head(&timer->tasks); 39e: 4638 mov r0, r7 3a0: 47c0 blx r8 if (TIMER_TASK_REPEAT == tmp->mode) { 3a2: 7c2b ldrb r3, [r5, #16] 3a4: 2b01 cmp r3, #1 3a6: d104 bne.n 3b2 tmp->time_label = time; 3a8: 606e str r6, [r5, #4] timer_add_timer_task(&timer->tasks, tmp, time); 3aa: 4632 mov r2, r6 3ac: 4629 mov r1, r5 3ae: 4638 mov r0, r7 3b0: 47c8 blx r9 return (void *)list->head; 3b2: f8d4 a014 ldr.w sl, [r4, #20] } it = (struct timer_task *)list_get_head(&timer->tasks); tmp->cb(tmp); 3b6: 68eb ldr r3, [r5, #12] 3b8: 4628 mov r0, r5 3ba: 4798 blx r3 it = (struct timer_task *)list_get_head(&timer->tasks); 3bc: 4655 mov r5, sl 3be: e7e8 b.n 392 timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED; 3c0: 7e23 ldrb r3, [r4, #24] 3c2: f043 0302 orr.w r3, r3, #2 3c6: 7623 strb r3, [r4, #24] } } 3c8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 3cc: 00000609 .word 0x00000609 3d0: 00000321 .word 0x00000321 000003d4 : { 3d4: b538 push {r3, r4, r5, lr} 3d6: 460d mov r5, r1 ASSERT(descr && hw); 3d8: 4604 mov r4, r0 3da: b110 cbz r0, 3e2 3dc: 1e08 subs r0, r1, #0 3de: bf18 it ne 3e0: 2001 movne r0, #1 3e2: 223b movs r2, #59 ; 0x3b 3e4: 4905 ldr r1, [pc, #20] ; (3fc ) 3e6: 4b06 ldr r3, [pc, #24] ; (400 ) 3e8: 4798 blx r3 _timer_init(&descr->device, hw); 3ea: 4b06 ldr r3, [pc, #24] ; (404 ) 3ec: 4629 mov r1, r5 3ee: 4620 mov r0, r4 3f0: 4798 blx r3 descr->device.timer_cb.period_expired = timer_process_counted; 3f2: 4b05 ldr r3, [pc, #20] ; (408 ) 3f4: 6023 str r3, [r4, #0] descr->time = 0; 3f6: 2000 movs r0, #0 3f8: 6120 str r0, [r4, #16] } 3fa: bd38 pop {r3, r4, r5, pc} 3fc: 000163a0 .word 0x000163a0 400: 00000615 .word 0x00000615 404: 00000d39 .word 0x00000d39 408: 0000036d .word 0x0000036d 0000040c : { 40c: b538 push {r3, r4, r5, lr} ASSERT(descr); 40e: 4605 mov r5, r0 410: 3800 subs r0, #0 412: bf18 it ne 414: 2001 movne r0, #1 416: 4908 ldr r1, [pc, #32] ; (438 ) 418: 4b08 ldr r3, [pc, #32] ; (43c ) 41a: 2253 movs r2, #83 ; 0x53 41c: 4798 blx r3 if (_timer_is_started(&descr->device)) { 41e: 4b08 ldr r3, [pc, #32] ; (440 ) 420: 4628 mov r0, r5 422: 4798 blx r3 424: 4604 mov r4, r0 426: b920 cbnz r0, 432 _timer_start(&descr->device); 428: 4628 mov r0, r5 42a: 4b06 ldr r3, [pc, #24] ; (444 ) 42c: 4798 blx r3 return ERR_NONE; 42e: 4620 mov r0, r4 } 430: bd38 pop {r3, r4, r5, pc} return ERR_DENIED; 432: f06f 0010 mvn.w r0, #16 436: e7fb b.n 430 438: 000163a0 .word 0x000163a0 43c: 00000615 .word 0x00000615 440: 00000e89 .word 0x00000e89 444: 00000e75 .word 0x00000e75 00000448 : { 448: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 44c: 460d mov r5, r1 ASSERT(descr && task); 44e: 4604 mov r4, r0 450: b110 cbz r0, 458 452: 1e08 subs r0, r1, #0 454: bf18 it ne 456: 2001 movne r0, #1 458: 491e ldr r1, [pc, #120] ; (4d4 ) 45a: f8df 8090 ldr.w r8, [pc, #144] ; 4ec 45e: 227a movs r2, #122 ; 0x7a 460: 47c0 blx r8 descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; 462: 7e23 ldrb r3, [r4, #24] if (is_list_element(&descr->tasks, task)) { 464: f104 0714 add.w r7, r4, #20 descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; 468: f043 0301 orr.w r3, r3, #1 46c: 7623 strb r3, [r4, #24] if (is_list_element(&descr->tasks, task)) { 46e: 4629 mov r1, r5 470: 4b19 ldr r3, [pc, #100] ; (4d8 ) 472: 4638 mov r0, r7 474: 4798 blx r3 476: 4606 mov r6, r0 478: b160 cbz r0, 494 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 47a: 7e23 ldrb r3, [r4, #24] ASSERT(false); 47c: 4915 ldr r1, [pc, #84] ; (4d4 ) descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 47e: f003 03fe and.w r3, r3, #254 ; 0xfe ASSERT(false); 482: 2000 movs r0, #0 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 484: 7623 strb r3, [r4, #24] ASSERT(false); 486: 227f movs r2, #127 ; 0x7f 488: 47c0 blx r8 return ERR_ALREADY_INITIALIZED; 48a: f06f 0011 mvn.w r0, #17 } 48e: b002 add sp, #8 490: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} task->time_label = descr->time; 494: 6922 ldr r2, [r4, #16] timer_add_timer_task(&descr->tasks, task, descr->time); 496: 4b11 ldr r3, [pc, #68] ; (4dc ) task->time_label = descr->time; 498: 606a str r2, [r5, #4] timer_add_timer_task(&descr->tasks, task, descr->time); 49a: 4629 mov r1, r5 49c: 4638 mov r0, r7 49e: 4798 blx r3 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 4a0: 7e23 ldrb r3, [r4, #24] 4a2: f003 03fe and.w r3, r3, #254 ; 0xfe 4a6: 7623 strb r3, [r4, #24] if (descr->flags & TIMER_FLAG_INTERRUPT_TRIGERRED) { 4a8: 7e23 ldrb r3, [r4, #24] 4aa: f013 0302 ands.w r3, r3, #2 4ae: d00e beq.n 4ce CRITICAL_SECTION_ENTER() 4b0: 4b0b ldr r3, [pc, #44] ; (4e0 ) 4b2: a801 add r0, sp, #4 4b4: 4798 blx r3 descr->flags &= ~TIMER_FLAG_INTERRUPT_TRIGERRED; 4b6: 7e23 ldrb r3, [r4, #24] 4b8: f003 03fd and.w r3, r3, #253 ; 0xfd 4bc: 7623 strb r3, [r4, #24] _timer_set_irq(&descr->device); 4be: 4620 mov r0, r4 4c0: 4b08 ldr r3, [pc, #32] ; (4e4 ) 4c2: 4798 blx r3 CRITICAL_SECTION_LEAVE() 4c4: a801 add r0, sp, #4 4c6: 4b08 ldr r3, [pc, #32] ; (4e8 ) 4c8: 4798 blx r3 return ERR_NONE; 4ca: 4630 mov r0, r6 4cc: e7df b.n 48e 4ce: 4618 mov r0, r3 4d0: e7dd b.n 48e 4d2: bf00 nop 4d4: 000163a0 .word 0x000163a0 4d8: 000005c5 .word 0x000005c5 4dc: 00000321 .word 0x00000321 4e0: 00000f01 .word 0x00000f01 4e4: 00000ea5 .word 0x00000ea5 4e8: 00000f0f .word 0x00000f0f 4ec: 00000615 .word 0x00000615 000004f0 : /** * \brief Initialize Delay driver */ void delay_init(void *const hw) { _delay_init(hardware = hw); 4f0: 4b01 ldr r3, [pc, #4] ; (4f8 ) 4f2: 6018 str r0, [r3, #0] 4f4: 4b01 ldr r3, [pc, #4] ; (4fc ) 4f6: 4718 bx r3 4f8: 20000094 .word 0x20000094 4fc: 00000313 .word 0x00000313 00000500 : /** * \brief Perform delay in us */ void delay_us(const uint16_t us) { _delay_cycles(hardware, _get_cycles_for_us(us)); 500: 4b05 ldr r3, [pc, #20] ; (518 ) { 502: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_us(us)); 504: 681c ldr r4, [r3, #0] 506: 4b05 ldr r3, [pc, #20] ; (51c ) 508: 4798 blx r3 50a: 4b05 ldr r3, [pc, #20] ; (520 ) 50c: 4601 mov r1, r0 50e: 4620 mov r0, r4 } 510: e8bd 4010 ldmia.w sp!, {r4, lr} _delay_cycles(hardware, _get_cycles_for_us(us)); 514: 4718 bx r3 516: bf00 nop 518: 20000094 .word 0x20000094 51c: 000002f1 .word 0x000002f1 520: 00000319 .word 0x00000319 00000524 : /** * \brief Perform delay in ms */ void delay_ms(const uint16_t ms) { _delay_cycles(hardware, _get_cycles_for_ms(ms)); 524: 4b05 ldr r3, [pc, #20] ; (53c ) { 526: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_ms(ms)); 528: 681c ldr r4, [r3, #0] 52a: 4b05 ldr r3, [pc, #20] ; (540 ) 52c: 4798 blx r3 52e: 4b05 ldr r3, [pc, #20] ; (544 ) 530: 4601 mov r1, r0 532: 4620 mov r0, r4 } 534: e8bd 4010 ldmia.w sp!, {r4, lr} _delay_cycles(hardware, _get_cycles_for_ms(ms)); 538: 4718 bx r3 53a: bf00 nop 53c: 20000094 .word 0x20000094 540: 000002ff .word 0x000002ff 544: 00000319 .word 0x00000319 00000548 <_init_chip>: } static inline void hri_nvmctrl_set_CTRLA_RWS_bf(const void *const hw, hri_nvmctrl_ctrla_reg_t mask) { NVMCTRL_CRITICAL_SECTION_ENTER(); ((Nvmctrl *)hw)->CTRLA.reg |= NVMCTRL_CTRLA_RWS(mask); 548: 4a0a ldr r2, [pc, #40] ; (574 <_init_chip+0x2c>) 54a: 8813 ldrh r3, [r2, #0] 54c: b29b uxth r3, r3 /** * \brief Initialize the hardware abstraction layer */ void _init_chip(void) { 54e: b510 push {r4, lr} 550: f443 63a0 orr.w r3, r3, #1280 ; 0x500 554: 8013 strh r3, [r2, #0] hri_nvmctrl_set_CTRLA_RWS_bf(NVMCTRL, CONF_NVM_WAIT_STATE); _osc32kctrl_init_sources(); 556: 4b08 ldr r3, [pc, #32] ; (578 <_init_chip+0x30>) 558: 4798 blx r3 _oscctrl_init_sources(); 55a: 4b08 ldr r3, [pc, #32] ; (57c <_init_chip+0x34>) 55c: 4798 blx r3 _mclk_init(); 55e: 4b08 ldr r3, [pc, #32] ; (580 <_init_chip+0x38>) 560: 4798 blx r3 #if _GCLK_INIT_1ST _gclk_init_generators_by_fref(_GCLK_INIT_1ST); #endif _oscctrl_init_referenced_generators(); 562: 4b08 ldr r3, [pc, #32] ; (584 <_init_chip+0x3c>) 564: 4798 blx r3 #endif #if CONF_CMCC_ENABLE cache_init(); #endif } 566: e8bd 4010 ldmia.w sp!, {r4, lr} _gclk_init_generators_by_fref(_GCLK_INIT_LAST); 56a: 4b07 ldr r3, [pc, #28] ; (588 <_init_chip+0x40>) 56c: f640 70ff movw r0, #4095 ; 0xfff 570: 4718 bx r3 572: bf00 nop 574: 41004000 .word 0x41004000 578: 000009ed .word 0x000009ed 57c: 0000061b .word 0x0000061b 580: 00000659 .word 0x00000659 584: 0000061d .word 0x0000061d 588: 000008e5 .word 0x000008e5 0000058c : return tmp; } static inline hri_ramecc_intflag_reg_t hri_ramecc_read_INTFLAG_reg(const void *const hw) { return ((Ramecc *)hw)->INTFLAG.reg; 58c: 4a0b ldr r2, [pc, #44] ; (5bc ) 58e: 7893 ldrb r3, [r2, #2] /** * \internal RAMECC interrupt handler */ void RAMECC_Handler(void) { 590: b082 sub sp, #8 592: b2db uxtb r3, r3 struct _ramecc_device *dev = (struct _ramecc_device *)&device; volatile uint32_t int_mask = hri_ramecc_read_INTFLAG_reg(RAMECC); 594: 9301 str r3, [sp, #4] if (int_mask & RAMECC_INTFLAG_DUALE && dev->ramecc_cb.dual_bit_err) { 596: 9b01 ldr r3, [sp, #4] 598: 0799 lsls r1, r3, #30 59a: d505 bpl.n 5a8 59c: 4b08 ldr r3, [pc, #32] ; (5c0 ) 59e: 681b ldr r3, [r3, #0] 5a0: b113 cbz r3, 5a8 return tmp; } static inline hri_ramecc_erraddr_reg_t hri_ramecc_read_ERRADDR_reg(const void *const hw) { return ((Ramecc *)hw)->ERRADDR.reg; 5a2: 6850 ldr r0, [r2, #4] } else if (int_mask & RAMECC_INTFLAG_SINGLEE && dev->ramecc_cb.single_bit_err) { dev->ramecc_cb.single_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); } else { return; } } 5a4: b002 add sp, #8 dev->ramecc_cb.single_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); 5a6: 4718 bx r3 } else if (int_mask & RAMECC_INTFLAG_SINGLEE && dev->ramecc_cb.single_bit_err) { 5a8: 9b01 ldr r3, [sp, #4] 5aa: 07db lsls r3, r3, #31 5ac: d504 bpl.n 5b8 5ae: 4b04 ldr r3, [pc, #16] ; (5c0 ) 5b0: 685b ldr r3, [r3, #4] 5b2: b10b cbz r3, 5b8 5b4: 4a01 ldr r2, [pc, #4] ; (5bc ) 5b6: e7f4 b.n 5a2 } 5b8: b002 add sp, #8 5ba: 4770 bx lr 5bc: 41020000 .word 0x41020000 5c0: 20000098 .word 0x20000098 000005c4 : * \brief Check whether element belongs to list */ bool is_list_element(const struct list_descriptor *const list, const void *const element) { struct list_element *it; for (it = list->head; it; it = it->next) { 5c4: 6800 ldr r0, [r0, #0] 5c6: b900 cbnz r0, 5ca 5c8: 4770 bx lr if (it == element) { 5ca: 4288 cmp r0, r1 5cc: d1fa bne.n 5c4 return true; 5ce: 2001 movs r0, #1 } } return false; } 5d0: 4770 bx lr ... 000005d4 : /** * \brief Insert an element as list head */ void list_insert_as_head(struct list_descriptor *const list, void *const element) { 5d4: b538 push {r3, r4, r5, lr} ASSERT(!is_list_element(list, element)); 5d6: 4b07 ldr r3, [pc, #28] ; (5f4 ) { 5d8: 4604 mov r4, r0 ASSERT(!is_list_element(list, element)); 5da: 4798 blx r3 5dc: f080 0001 eor.w r0, r0, #1 { 5e0: 460d mov r5, r1 ASSERT(!is_list_element(list, element)); 5e2: 4b05 ldr r3, [pc, #20] ; (5f8 ) 5e4: 4905 ldr r1, [pc, #20] ; (5fc ) 5e6: 2239 movs r2, #57 ; 0x39 5e8: b2c0 uxtb r0, r0 5ea: 4798 blx r3 ((struct list_element *)element)->next = list->head; 5ec: 6823 ldr r3, [r4, #0] 5ee: 602b str r3, [r5, #0] list->head = (struct list_element *)element; 5f0: 6025 str r5, [r4, #0] } 5f2: bd38 pop {r3, r4, r5, pc} 5f4: 000005c5 .word 0x000005c5 5f8: 00000615 .word 0x00000615 5fc: 000163b7 .word 0x000163b7 00000600 : /** * \brief Insert an element after the given list element */ void list_insert_after(void *const after, void *const element) { ((struct list_element *)element)->next = ((struct list_element *)after)->next; 600: 6803 ldr r3, [r0, #0] 602: 600b str r3, [r1, #0] ((struct list_element *)after)->next = (struct list_element *)element; 604: 6001 str r1, [r0, #0] } 606: 4770 bx lr 00000608 : /** * \brief Removes list head */ void *list_remove_head(struct list_descriptor *const list) { if (list->head) { 608: 6803 ldr r3, [r0, #0] 60a: b10b cbz r3, 610 struct list_element *tmp = list->head; list->head = list->head->next; 60c: 681a ldr r2, [r3, #0] 60e: 6002 str r2, [r0, #0] return (void *)tmp; } return NULL; } 610: 4618 mov r0, r3 612: 4770 bx lr 00000614 : /** * \brief Assert function */ void assert(const bool condition, const char *const file, const int line) { if (!(condition)) { 614: b900 cbnz r0, 618 __asm("BKPT #0"); 616: be00 bkpt 0x0000 } (void)file; (void)line; } 618: 4770 bx lr 0000061a <_oscctrl_init_sources>: hri_oscctrl_set_XOSCCTRL_ONDEMAND_bit(hw, 1); #endif #endif (void)hw; } 61a: 4770 bx lr 0000061c <_oscctrl_init_referenced_generators>: static inline void hri_oscctrl_write_DPLLRATIO_reg(const void *const hw, uint8_t submodule_index, hri_oscctrl_dpllratio_reg_t data) { OSCCTRL_CRITICAL_SECTION_ENTER(); ((Oscctrl *)hw)->Dpll[submodule_index].DPLLRATIO.reg = data; 61c: 4b0c ldr r3, [pc, #48] ; (650 <_oscctrl_init_referenced_generators+0x34>) 61e: 4a0d ldr r2, [pc, #52] ; (654 <_oscctrl_init_referenced_generators+0x38>) 620: 635a str r2, [r3, #52] ; 0x34 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 622: 6bda ldr r2, [r3, #60] ; 0x3c 624: f012 0f06 tst.w r2, #6 628: d1fb bne.n 622 <_oscctrl_init_referenced_generators+0x6> static inline void hri_oscctrl_write_DPLLCTRLB_reg(const void *const hw, uint8_t submodule_index, hri_oscctrl_dpllctrlb_reg_t data) { OSCCTRL_CRITICAL_SECTION_ENTER(); ((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLB.reg = data; 62a: f44f 6202 mov.w r2, #2080 ; 0x820 62e: 639a str r2, [r3, #56] ; 0x38 ((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLA.reg = data; 630: 2202 movs r2, #2 632: f883 2030 strb.w r2, [r3, #48] ; 0x30 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 636: 4a06 ldr r2, [pc, #24] ; (650 <_oscctrl_init_referenced_generators+0x34>) 638: 6bd3 ldr r3, [r2, #60] ; 0x3c 63a: 0798 lsls r0, r3, #30 63c: d4fc bmi.n 638 <_oscctrl_init_referenced_generators+0x1c> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_LOCK) 63e: 4b04 ldr r3, [pc, #16] ; (650 <_oscctrl_init_referenced_generators+0x34>) 640: 6c1a ldr r2, [r3, #64] ; 0x40 #endif #endif #if CONF_FDPLL0_CONFIG == 1 #if CONF_FDPLL0_ENABLE == 1 while (!(hri_oscctrl_get_DPLLSTATUS_LOCK_bit(hw, 0) || hri_oscctrl_get_DPLLSTATUS_CLKRDY_bit(hw, 0))) 642: 07d1 lsls r1, r2, #31 644: d402 bmi.n 64c <_oscctrl_init_referenced_generators+0x30> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_CLKRDY) 646: 6c1a ldr r2, [r3, #64] ; 0x40 648: 0792 lsls r2, r2, #30 64a: d5f9 bpl.n 640 <_oscctrl_init_referenced_generators+0x24> hri_gclk_write_GENCTRL_SRC_bf(GCLK, 0, CONF_GCLK_GEN_0_SOURCE); while (hri_gclk_get_SYNCBUSY_GENCTRL0_bit(GCLK)) ; #endif (void)hw; } 64c: 4770 bx lr 64e: bf00 nop 650: 40001000 .word 0x40001000 654: 00010e4d .word 0x00010e4d 00000658 <_mclk_init>: } static inline void hri_mclk_write_CPUDIV_reg(const void *const hw, hri_mclk_cpudiv_reg_t data) { MCLK_CRITICAL_SECTION_ENTER(); ((Mclk *)hw)->CPUDIV.reg = data; 658: 4b01 ldr r3, [pc, #4] ; (660 <_mclk_init+0x8>) 65a: 2201 movs r2, #1 65c: 715a strb r2, [r3, #5] */ void _mclk_init(void) { void *hw = (void *)MCLK; hri_mclk_write_CPUDIV_reg(hw, MCLK_CPUDIV_DIV(CONF_MCLK_CPUDIV)); } 65e: 4770 bx lr 660: 40000800 .word 0x40000800 00000664 : return ((Sercom *)hw)->SPI.SYNCBUSY.reg & reg; } static inline void hri_sercomusart_wait_for_sync(const void *const hw, hri_sercomusart_syncbusy_reg_t reg) { while (((Sercom *)hw)->USART.SYNCBUSY.reg & reg) { 664: 69c3 ldr r3, [r0, #28] 666: 420b tst r3, r1 668: d1fc bne.n 664 }; } 66a: 4770 bx lr 0000066c : } static inline void hri_sercomusart_clear_CTRLA_ENABLE_bit(const void *const hw) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.CTRLA.reg &= ~SERCOM_USART_CTRLA_ENABLE; 66c: 6802 ldr r2, [r0, #0] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST | SERCOM_USART_SYNCBUSY_ENABLE); 66e: 4b03 ldr r3, [pc, #12] ; (67c ) ((Sercom *)hw)->USART.CTRLA.reg &= ~SERCOM_USART_CTRLA_ENABLE; 670: f022 0202 bic.w r2, r2, #2 674: 6002 str r2, [r0, #0] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST | SERCOM_USART_SYNCBUSY_ENABLE); 676: 2103 movs r1, #3 678: 4718 bx r3 67a: bf00 nop 67c: 00000665 .word 0x00000665 00000680 <_sercom_get_hardware_index>: /** * \brief Retrieve ordinal number of the given sercom hardware instance */ static uint8_t _sercom_get_hardware_index(const void *const hw) { 680: b570 push {r4, r5, r6, lr} Sercom *const sercom_modules[] = SERCOM_INSTS; 682: 4d0c ldr r5, [pc, #48] ; (6b4 <_sercom_get_hardware_index+0x34>) { 684: 4606 mov r6, r0 Sercom *const sercom_modules[] = SERCOM_INSTS; 686: cd0f ldmia r5!, {r0, r1, r2, r3} { 688: b088 sub sp, #32 Sercom *const sercom_modules[] = SERCOM_INSTS; 68a: 466c mov r4, sp 68c: c40f stmia r4!, {r0, r1, r2, r3} 68e: e895 000f ldmia.w r5, {r0, r1, r2, r3} 692: e884 000f stmia.w r4, {r0, r1, r2, r3} /* Find index for SERCOM instance. */ for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 696: 466a mov r2, sp 698: 2300 movs r3, #0 if ((uint32_t)hw == (uint32_t)sercom_modules[i]) { 69a: f852 1b04 ldr.w r1, [r2], #4 69e: 42b1 cmp r1, r6 6a0: d102 bne.n 6a8 <_sercom_get_hardware_index+0x28> return i; 6a2: b2d8 uxtb r0, r3 } } return 0; } 6a4: b008 add sp, #32 6a6: bd70 pop {r4, r5, r6, pc} for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 6a8: 3301 adds r3, #1 6aa: 2b08 cmp r3, #8 6ac: d1f5 bne.n 69a <_sercom_get_hardware_index+0x1a> return 0; 6ae: 2000 movs r0, #0 6b0: e7f8 b.n 6a4 <_sercom_get_hardware_index+0x24> 6b2: bf00 nop 6b4: 000163f0 .word 0x000163f0 000006b8 <_sercom_get_irq_num>: /** * \brief Retrieve IRQ number for the given hardware instance */ static uint8_t _sercom_get_irq_num(const void *const hw) { 6b8: b508 push {r3, lr} return SERCOM0_0_IRQn + (_sercom_get_hardware_index(hw) << 2); 6ba: 4b03 ldr r3, [pc, #12] ; (6c8 <_sercom_get_irq_num+0x10>) 6bc: 4798 blx r3 6be: 0080 lsls r0, r0, #2 6c0: 302e adds r0, #46 ; 0x2e } 6c2: f000 00fe and.w r0, r0, #254 ; 0xfe 6c6: bd08 pop {r3, pc} 6c8: 00000681 .word 0x00000681 000006cc <__NVIC_EnableIRQ>: NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 6cc: 0942 lsrs r2, r0, #5 6ce: 2301 movs r3, #1 6d0: f000 001f and.w r0, r0, #31 6d4: fa03 f000 lsl.w r0, r3, r0 6d8: 4b01 ldr r3, [pc, #4] ; (6e0 <__NVIC_EnableIRQ+0x14>) 6da: f843 0022 str.w r0, [r3, r2, lsl #2] } 6de: 4770 bx lr 6e0: e000e100 .word 0xe000e100 000006e4 <__NVIC_DisableIRQ>: NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 6e4: 0943 lsrs r3, r0, #5 6e6: 2201 movs r2, #1 6e8: f000 001f and.w r0, r0, #31 6ec: fa02 f000 lsl.w r0, r2, r0 6f0: 3320 adds r3, #32 6f2: 4a04 ldr r2, [pc, #16] ; (704 <__NVIC_DisableIRQ+0x20>) 6f4: f842 0023 str.w r0, [r2, r3, lsl #2] \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"); 6f8: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 6fc: f3bf 8f6f isb sy } 700: 4770 bx lr 702: bf00 nop 704: e000e100 .word 0xe000e100 00000708 <__NVIC_ClearPendingIRQ>: */ __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) { if ((int32_t)(IRQn) >= 0) { NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 708: 0943 lsrs r3, r0, #5 70a: 2201 movs r2, #1 70c: f000 001f and.w r0, r0, #31 710: fa02 f000 lsl.w r0, r2, r0 714: 3360 adds r3, #96 ; 0x60 716: 4a02 ldr r2, [pc, #8] ; (720 <__NVIC_ClearPendingIRQ+0x18>) 718: f842 0023 str.w r0, [r2, r3, lsl #2] } } 71c: 4770 bx lr 71e: bf00 nop 720: e000e100 .word 0xe000e100 00000724 <_usart_init>: { 724: b538 push {r3, r4, r5, lr} uint8_t sercom_offset = _sercom_get_hardware_index(hw); 726: 4b1b ldr r3, [pc, #108] ; (794 <_usart_init+0x70>) { 728: 4604 mov r4, r0 uint8_t sercom_offset = _sercom_get_hardware_index(hw); 72a: 4798 blx r3 if (_usarts[i].number == sercom_offset) { 72c: 2802 cmp r0, #2 72e: d005 beq.n 73c <_usart_init+0x18> ASSERT(false); 730: 4919 ldr r1, [pc, #100] ; (798 <_usart_init+0x74>) 732: 4b1a ldr r3, [pc, #104] ; (79c <_usart_init+0x78>) 734: f240 226b movw r2, #619 ; 0x26b 738: 2000 movs r0, #0 73a: 4798 blx r3 return ((Sercom *)hw)->USART.SYNCBUSY.reg & reg; 73c: 69e3 ldr r3, [r4, #28] 73e: 4d18 ldr r5, [pc, #96] ; (7a0 <_usart_init+0x7c>) if (!hri_sercomusart_is_syncing(hw, SERCOM_USART_SYNCBUSY_SWRST)) { 740: f013 0f01 tst.w r3, #1 744: d10e bne.n 764 <_usart_init+0x40> static inline hri_sercomusart_ctrla_reg_t hri_sercomusart_get_CTRLA_reg(const void *const hw, hri_sercomusart_ctrla_reg_t mask) { uint32_t tmp; hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST | SERCOM_USART_SYNCBUSY_ENABLE); 746: 2103 movs r1, #3 748: 4620 mov r0, r4 74a: 47a8 blx r5 tmp = ((Sercom *)hw)->USART.CTRLA.reg; 74c: 6823 ldr r3, [r4, #0] if (hri_sercomusart_get_CTRLA_reg(hw, SERCOM_USART_CTRLA_ENABLE)) { 74e: 079b lsls r3, r3, #30 750: d503 bpl.n 75a <_usart_init+0x36> hri_sercomusart_clear_CTRLA_ENABLE_bit(hw); 752: 4b14 ldr r3, [pc, #80] ; (7a4 <_usart_init+0x80>) 754: 4798 blx r3 hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_ENABLE); 756: 2102 movs r1, #2 758: 47a8 blx r5 } static inline void hri_sercomusart_write_CTRLA_reg(const void *const hw, hri_sercomusart_ctrla_reg_t data) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.CTRLA.reg = data; 75a: 2305 movs r3, #5 75c: 6023 str r3, [r4, #0] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST | SERCOM_USART_SYNCBUSY_ENABLE); 75e: 2103 movs r1, #3 760: 4620 mov r0, r4 762: 47a8 blx r5 hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST); 764: 4620 mov r0, r4 766: 2101 movs r1, #1 768: 47a8 blx r5 ((Sercom *)hw)->USART.CTRLA.reg = data; 76a: 4b0f ldr r3, [pc, #60] ; (7a8 <_usart_init+0x84>) 76c: 6023 str r3, [r4, #0] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST | SERCOM_USART_SYNCBUSY_ENABLE); 76e: 2103 movs r1, #3 770: 47a8 blx r5 } static inline void hri_sercomusart_write_CTRLB_reg(const void *const hw, hri_sercomusart_ctrlb_reg_t data) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.CTRLB.reg = data; 772: f44f 3340 mov.w r3, #196608 ; 0x30000 776: 6063 str r3, [r4, #4] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_MASK); 778: 211f movs r1, #31 77a: 47a8 blx r5 } static inline void hri_sercomusart_write_CTRLC_reg(const void *const hw, hri_sercomusart_ctrlc_reg_t data) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.CTRLC.reg = data; 77c: 4b0b ldr r3, [pc, #44] ; (7ac <_usart_init+0x88>) 77e: 60a3 str r3, [r4, #8] } static inline void hri_sercomusart_write_BAUD_reg(const void *const hw, hri_sercomusart_baud_reg_t data) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.BAUD.reg = data; 780: f64f 4311 movw r3, #64529 ; 0xfc11 784: 81a3 strh r3, [r4, #12] } static inline void hri_sercomusart_write_RXPL_reg(const void *const hw, hri_sercomusart_rxpl_reg_t data) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.RXPL.reg = data; 786: 2300 movs r3, #0 788: 73a3 strb r3, [r4, #14] } 78a: 4618 mov r0, r3 } static inline void hri_sercomusart_write_DBGCTRL_reg(const void *const hw, hri_sercomusart_dbgctrl_reg_t data) { SERCOM_CRITICAL_SECTION_ENTER(); ((Sercom *)hw)->USART.DBGCTRL.reg = data; 78c: f884 3030 strb.w r3, [r4, #48] ; 0x30 790: bd38 pop {r3, r4, r5, pc} 792: bf00 nop 794: 00000681 .word 0x00000681 798: 000163d5 .word 0x000163d5 79c: 00000615 .word 0x00000615 7a0: 00000665 .word 0x00000665 7a4: 0000066d .word 0x0000066d 7a8: 40100004 .word 0x40100004 7ac: 00700002 .word 0x00700002 000007b0 <_usart_async_init>: { 7b0: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} ASSERT(device); 7b4: 4605 mov r5, r0 7b6: 3800 subs r0, #0 7b8: bf18 it ne 7ba: 2001 movne r0, #1 7bc: 4b14 ldr r3, [pc, #80] ; (810 <_usart_async_init+0x60>) { 7be: 460c mov r4, r1 ASSERT(device); 7c0: 22cb movs r2, #203 ; 0xcb 7c2: 4914 ldr r1, [pc, #80] ; (814 <_usart_async_init+0x64>) 7c4: 4798 blx r3 init_status = _usart_init(hw); 7c6: 4b14 ldr r3, [pc, #80] ; (818 <_usart_async_init+0x68>) 7c8: 4620 mov r0, r4 7ca: 4798 blx r3 if (init_status) { 7cc: 4606 mov r6, r0 7ce: b9d0 cbnz r0, 806 <_usart_async_init+0x56> if (hw == SERCOM2) { 7d0: 4b12 ldr r3, [pc, #72] ; (81c <_usart_async_init+0x6c>) device->hw = hw; 7d2: 61ac str r4, [r5, #24] if (hw == SERCOM2) { 7d4: 429c cmp r4, r3 _sercom2_dev = (struct _usart_async_device *)dev; 7d6: bf08 it eq 7d8: 4b11 ldreq r3, [pc, #68] ; (820 <_usart_async_init+0x70>) NVIC_DisableIRQ((IRQn_Type)irq); 7da: f8df 8054 ldr.w r8, [pc, #84] ; 830 <_usart_async_init+0x80> _sercom2_dev = (struct _usart_async_device *)dev; 7de: bf08 it eq 7e0: 601d streq r5, [r3, #0] uint8_t irq = _sercom_get_irq_num(hw); 7e2: 4620 mov r0, r4 7e4: 4b0f ldr r3, [pc, #60] ; (824 <_usart_async_init+0x74>) NVIC_ClearPendingIRQ((IRQn_Type)irq); 7e6: 4f10 ldr r7, [pc, #64] ; (828 <_usart_async_init+0x78>) NVIC_EnableIRQ((IRQn_Type)irq); 7e8: 4d10 ldr r5, [pc, #64] ; (82c <_usart_async_init+0x7c>) uint8_t irq = _sercom_get_irq_num(hw); 7ea: 4798 blx r3 for (uint32_t i = 0; i < 4; i++) { 7ec: 2100 movs r1, #0 uint8_t irq = _sercom_get_irq_num(hw); 7ee: 4604 mov r4, r0 NVIC_DisableIRQ((IRQn_Type)irq); 7f0: 1863 adds r3, r4, r1 7f2: b2d8 uxtb r0, r3 7f4: 9001 str r0, [sp, #4] 7f6: 47c0 blx r8 NVIC_ClearPendingIRQ((IRQn_Type)irq); 7f8: 9801 ldr r0, [sp, #4] 7fa: 47b8 blx r7 for (uint32_t i = 0; i < 4; i++) { 7fc: 3101 adds r1, #1 NVIC_EnableIRQ((IRQn_Type)irq); 7fe: 9801 ldr r0, [sp, #4] 800: 47a8 blx r5 for (uint32_t i = 0; i < 4; i++) { 802: 2904 cmp r1, #4 804: d1f4 bne.n 7f0 <_usart_async_init+0x40> } 806: 4630 mov r0, r6 808: b002 add sp, #8 80a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 80e: bf00 nop 810: 00000615 .word 0x00000615 814: 000163d5 .word 0x000163d5 818: 00000725 .word 0x00000725 81c: 41012000 .word 0x41012000 820: 200000a8 .word 0x200000a8 824: 000006b9 .word 0x000006b9 828: 00000709 .word 0x00000709 82c: 000006cd .word 0x000006cd 830: 000006e5 .word 0x000006e5 00000834 <_usart_async_enable>: hri_sercomusart_set_CTRLA_ENABLE_bit(device->hw); 834: 6980 ldr r0, [r0, #24] ((Sercom *)hw)->USART.CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE; 836: 6803 ldr r3, [r0, #0] 838: f043 0302 orr.w r3, r3, #2 83c: 6003 str r3, [r0, #0] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST | SERCOM_USART_SYNCBUSY_ENABLE); 83e: 2103 movs r1, #3 840: 4b00 ldr r3, [pc, #0] ; (844 <_usart_async_enable+0x10>) 842: 4718 bx r3 844: 00000665 .word 0x00000665 00000848 <_usart_async_write_byte>: hri_sercomusart_write_DATA_reg(device->hw, data); 848: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.DATA.reg = data; 84a: 6299 str r1, [r3, #40] ; 0x28 } 84c: 4770 bx lr 0000084e <_usart_async_enable_byte_sent_irq>: hri_sercomusart_set_INTEN_DRE_bit(device->hw); 84e: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; 850: 2201 movs r2, #1 852: 759a strb r2, [r3, #22] } 854: 4770 bx lr 00000856 <_usart_async_enable_tx_done_irq>: hri_sercomusart_set_INTEN_TXC_bit(device->hw); 856: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC; 858: 2202 movs r2, #2 85a: 759a strb r2, [r3, #22] } 85c: 4770 bx lr ... 00000860 : /** * \internal Sercom interrupt handler */ void SERCOM2_0_Handler(void) { _sercom_usart_interrupt_handler(_sercom2_dev); 860: 4b19 ldr r3, [pc, #100] ; (8c8 ) 862: 6818 ldr r0, [r3, #0] { 864: b510 push {r4, lr} void *hw = device->hw; 866: 6984 ldr r4, [r0, #24] return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) >> SERCOM_USART_INTFLAG_DRE_Pos; 868: 7e23 ldrb r3, [r4, #24] if (hri_sercomusart_get_interrupt_DRE_bit(hw) && hri_sercomusart_get_INTEN_DRE_bit(hw)) { 86a: 07da lsls r2, r3, #31 86c: d508 bpl.n 880 return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_DRE) >> SERCOM_USART_INTENSET_DRE_Pos; 86e: 7da3 ldrb r3, [r4, #22] 870: 07db lsls r3, r3, #31 872: d505 bpl.n 880 ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_DRE; 874: 2301 movs r3, #1 876: 7523 strb r3, [r4, #20] device->usart_cb.tx_byte_sent(device); 878: 6803 ldr r3, [r0, #0] } 87a: e8bd 4010 ldmia.w sp!, {r4, lr} device->usart_cb.tx_done_cb(device); 87e: 4718 bx r3 return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) >> SERCOM_USART_INTFLAG_TXC_Pos; 880: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_TXC_bit(hw) && hri_sercomusart_get_INTEN_TXC_bit(hw)) { 882: 0799 lsls r1, r3, #30 884: d506 bpl.n 894 return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_TXC) >> SERCOM_USART_INTENSET_TXC_Pos; 886: 7da3 ldrb r3, [r4, #22] 888: 079a lsls r2, r3, #30 88a: d503 bpl.n 894 ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_TXC; 88c: 2302 movs r3, #2 88e: 7523 strb r3, [r4, #20] device->usart_cb.tx_done_cb(device); 890: 6883 ldr r3, [r0, #8] 892: e7f2 b.n 87a return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC) >> SERCOM_USART_INTFLAG_RXC_Pos; 894: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_RXC_bit(hw)) { 896: 075b lsls r3, r3, #29 898: d50c bpl.n 8b4 SERCOM_CRITICAL_SECTION_LEAVE(); } static inline hri_sercomusart_status_reg_t hri_sercomusart_read_STATUS_reg(const void *const hw) { return ((Sercom *)hw)->USART.STATUS.reg; 89a: 8b63 ldrh r3, [r4, #26] if (hri_sercomusart_read_STATUS_reg(hw) 89c: f003 0337 and.w r3, r3, #55 ; 0x37 8a0: b113 cbz r3, 8a8 ((Sercom *)hw)->USART.STATUS.reg = mask; 8a2: 23ff movs r3, #255 ; 0xff 8a4: 8363 strh r3, [r4, #26] } 8a6: bd10 pop {r4, pc} return ((Sercom *)hw)->USART.DATA.reg; 8a8: 6aa1 ldr r1, [r4, #40] ; 0x28 device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw)); 8aa: 6843 ldr r3, [r0, #4] } 8ac: e8bd 4010 ldmia.w sp!, {r4, lr} device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw)); 8b0: b2c9 uxtb r1, r1 8b2: 4718 bx r3 return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_ERROR) >> SERCOM_USART_INTFLAG_ERROR_Pos; 8b4: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) { 8b6: 09db lsrs r3, r3, #7 8b8: d0f5 beq.n 8a6 ((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR; 8ba: 2380 movs r3, #128 ; 0x80 8bc: 7623 strb r3, [r4, #24] device->usart_cb.error_cb(device); 8be: 68c3 ldr r3, [r0, #12] 8c0: 4798 blx r3 return ((Sercom *)hw)->USART.STATUS.reg; 8c2: 8b63 ldrh r3, [r4, #26] 8c4: b29b uxth r3, r3 8c6: e7ed b.n 8a4 8c8: 200000a8 .word 0x200000a8 000008cc : 8cc: 4b00 ldr r3, [pc, #0] ; (8d0 ) 8ce: 4718 bx r3 8d0: 00000861 .word 0x00000861 000008d4 : 8d4: 4b00 ldr r3, [pc, #0] ; (8d8 ) 8d6: 4718 bx r3 8d8: 00000861 .word 0x00000861 000008dc : 8dc: 4b00 ldr r3, [pc, #0] ; (8e0 ) 8de: 4718 bx r3 8e0: 00000861 .word 0x00000861 000008e4 <_gclk_init_generators_by_fref>: void _gclk_init_generators_by_fref(uint32_t bm) { #if CONF_GCLK_GENERATOR_0_CONFIG == 1 if (bm & (1ul << 0)) { 8e4: 07c3 lsls r3, r0, #31 8e6: d507 bpl.n 8f8 <_gclk_init_generators_by_fref+0x14> } static inline void hri_gclk_write_GENCTRL_reg(const void *const hw, uint8_t index, hri_gclk_genctrl_reg_t data) { GCLK_CRITICAL_SECTION_ENTER(); ((Gclk *)hw)->GENCTRL[index].reg = data; 8e8: 4b04 ldr r3, [pc, #16] ; (8fc <_gclk_init_generators_by_fref+0x18>) 8ea: 4a05 ldr r2, [pc, #20] ; (900 <_gclk_init_generators_by_fref+0x1c>) 8ec: 621a str r2, [r3, #32] while (((Gclk *)hw)->SYNCBUSY.reg & reg) { 8ee: f643 72fd movw r2, #16381 ; 0x3ffd 8f2: 6859 ldr r1, [r3, #4] 8f4: 4211 tst r1, r2 8f6: d1fc bne.n 8f2 <_gclk_init_generators_by_fref+0xe> | (CONF_GCLK_GEN_11_DIVSEL << GCLK_GENCTRL_DIVSEL_Pos) | (CONF_GCLK_GEN_11_OE << GCLK_GENCTRL_OE_Pos) | (CONF_GCLK_GEN_11_OOV << GCLK_GENCTRL_OOV_Pos) | (CONF_GCLK_GEN_11_IDC << GCLK_GENCTRL_IDC_Pos) | (CONF_GCLK_GENERATOR_11_CONFIG << GCLK_GENCTRL_GENEN_Pos) | CONF_GCLK_GEN_11_SOURCE); } #endif } 8f8: 4770 bx lr 8fa: bf00 nop 8fc: 40001c00 .word 0x40001c00 900: 00010107 .word 0x00010107 00000904 : /** * \brief Default interrupt handler for unused IRQs. */ void Dummy_Handler(void) { while (1) { 904: e7fe b.n 904 ... 00000908 : if (pSrc != pDest) { 908: 4918 ldr r1, [pc, #96] ; (96c ) 90a: 4819 ldr r0, [pc, #100] ; (970 ) 90c: 4281 cmp r1, r0 { 90e: b510 push {r4, lr} if (pSrc != pDest) { 910: d00a beq.n 928 *pDest++ = *pSrc++; 912: 4b18 ldr r3, [pc, #96] ; (974 ) 914: 1cda adds r2, r3, #3 916: 1a12 subs r2, r2, r0 918: f022 0203 bic.w r2, r2, #3 91c: 1ec4 subs r4, r0, #3 91e: 42a3 cmp r3, r4 920: bf38 it cc 922: 2200 movcc r2, #0 924: 4b14 ldr r3, [pc, #80] ; (978 ) 926: 4798 blx r3 *pDest++ = 0; 928: 4b14 ldr r3, [pc, #80] ; (97c ) 92a: 4815 ldr r0, [pc, #84] ; (980 ) 92c: 1cda adds r2, r3, #3 92e: 1a12 subs r2, r2, r0 930: 1ec1 subs r1, r0, #3 932: f022 0203 bic.w r2, r2, #3 936: 4299 cmp r1, r3 938: bf88 it hi 93a: 2200 movhi r2, #0 93c: 4b11 ldr r3, [pc, #68] ; (984 ) 93e: 2100 movs r1, #0 940: 4798 blx r3 SCB->VTOR = ((uint32_t)pSrc & SCB_VTOR_TBLOFF_Msk); 942: 4a11 ldr r2, [pc, #68] ; (988 ) 944: 4b11 ldr r3, [pc, #68] ; (98c ) 946: f022 027f bic.w r2, r2, #127 ; 0x7f 94a: 609a str r2, [r3, #8] SCB->CPACR |= (0xFu << 20); 94c: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 950: f442 0270 orr.w r2, r2, #15728640 ; 0xf00000 954: f8c3 2088 str.w r2, [r3, #136] ; 0x88 __ASM volatile ("dsb 0xF":::"memory"); 958: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 95c: f3bf 8f6f isb sy __libc_init_array(); 960: 4b0b ldr r3, [pc, #44] ; (990 ) 962: 4798 blx r3 main(); 964: 4b0b ldr r3, [pc, #44] ; (994 ) 966: 4798 blx r3 while (1) 968: e7fe b.n 968 96a: bf00 nop 96c: 00024728 .word 0x00024728 970: 20000000 .word 0x20000000 974: 20000074 .word 0x20000074 978: 000162f9 .word 0x000162f9 97c: 2000c800 .word 0x2000c800 980: 20000078 .word 0x20000078 984: 00016349 .word 0x00016349 988: 00000000 .word 0x00000000 98c: e000ed00 .word 0xe000ed00 990: 00016291 .word 0x00016291 994: 00000999 .word 0x00000999 00000998
: #include "oracle.h" int main(void) { 998: b508 push {r3, lr} oracle_init(); 99a: 4b02 ldr r3, [pc, #8] ; (9a4 ) for(;;) { oracle_service(); 99c: 4c02 ldr r4, [pc, #8] ; (9a8 ) oracle_init(); 99e: 4798 blx r3 oracle_service(); 9a0: 47a0 blx r4 for(;;) 9a2: e7fd b.n 9a0 9a4: 000009ad .word 0x000009ad 9a8: 000009e5 .word 0x000009e5 000009ac : #include "p_ssd1963.h" #include "p_screen.h" void oracle_init(void) { 9ac: b510 push {r4, lr} * Currently the following initialization functions are supported: * - System clock initialization */ static inline void init_mcu(void) { _init_chip(); 9ae: 4b07 ldr r3, [pc, #28] ; (9cc ) 9b0: 4798 blx r3 // init mcu init_mcu(); // uart init p_usart_init(); 9b2: 4b07 ldr r3, [pc, #28] ; (9d0 ) 9b4: 4798 blx r3 // i2c init p_i2c_init(); 9b6: 4b07 ldr r3, [pc, #28] ; (9d4 ) 9b8: 4798 blx r3 // gpio init p_gpio_init(); 9ba: 4b07 ldr r3, [pc, #28] ; (9d8 ) 9bc: 4798 blx r3 // time init p_tcc_init(); 9be: 4b07 ldr r3, [pc, #28] ; (9dc ) 9c0: 4798 blx r3 p_screen_init(); } 9c2: e8bd 4010 ldmia.w sp!, {r4, lr} p_screen_init(); 9c6: 4b06 ldr r3, [pc, #24] ; (9e0 ) 9c8: 4718 bx r3 9ca: bf00 nop 9cc: 00000549 .word 0x00000549 9d0: 000012c5 .word 0x000012c5 9d4: 00001225 .word 0x00001225 9d8: 0000115d .word 0x0000115d 9dc: 0000124d .word 0x0000124d 9e0: 00001371 .word 0x00001371 000009e4 : void oracle_service(void) { p_screen_service(); 9e4: 4b00 ldr r3, [pc, #0] ; (9e8 ) 9e6: 4718 bx r3 9e8: 0000141d .word 0x0000141d 000009ec <_osc32kctrl_init_sources>: } static inline void hri_osc32kctrl_write_XOSC32K_reg(const void *const hw, hri_osc32kctrl_xosc32k_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->XOSC32K.reg = data; 9ec: 4b06 ldr r3, [pc, #24] ; (a08 <_osc32kctrl_init_sources+0x1c>) 9ee: f242 328e movw r2, #9102 ; 0x238e 9f2: 829a strh r2, [r3, #20] } static inline void hri_osc32kctrl_write_CFDCTRL_reg(const void *const hw, hri_osc32kctrl_cfdctrl_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->CFDCTRL.reg = data; 9f4: 2200 movs r2, #0 9f6: 759a strb r2, [r3, #22] } static inline void hri_osc32kctrl_write_EVCTRL_reg(const void *const hw, hri_osc32kctrl_evctrl_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->EVCTRL.reg = data; 9f8: 75da strb r2, [r3, #23] } static inline hri_osc32kctrl_osculp32k_reg_t hri_osc32kctrl_read_OSCULP32K_CALIB_bf(const void *const hw) { uint32_t tmp; tmp = ((Osc32kctrl *)hw)->OSCULP32K.reg; 9fa: 69da ldr r2, [r3, #28] calib = hri_osc32kctrl_read_OSCULP32K_CALIB_bf(hw); hri_osc32kctrl_write_OSCULP32K_reg(hw, #if CONF_OSCULP32K_CALIB_ENABLE == 1 OSC32KCTRL_OSCULP32K_CALIB(CONF_OSCULP32K_CALIB) #else OSC32KCTRL_OSCULP32K_CALIB(calib) 9fc: f402 527c and.w r2, r2, #16128 ; 0x3f00 } static inline void hri_osc32kctrl_write_OSCULP32K_reg(const void *const hw, hri_osc32kctrl_osculp32k_reg_t data) { OSC32KCTRL_CRITICAL_SECTION_ENTER(); ((Osc32kctrl *)hw)->OSCULP32K.reg = data; a00: 61da str r2, [r3, #28] ((Osc32kctrl *)hw)->RTCCTRL.reg = data; a02: 2201 movs r2, #1 a04: 741a strb r2, [r3, #16] #endif #endif hri_osc32kctrl_write_RTCCTRL_reg(hw, OSC32KCTRL_RTCCTRL_RTCSEL(CONF_RTCCTRL)); (void)calib; } a06: 4770 bx lr a08: 40001400 .word 0x40001400 00000a0c : */ static void usart_transmission_complete(struct _usart_async_device *device) { struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); descr->stat = 0; a0c: 2300 movs r3, #0 a0e: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.tx_done) { a10: 69c3 ldr r3, [r0, #28] a12: b10b cbz r3, a18 descr->usart_cb.tx_done(descr); a14: 3808 subs r0, #8 a16: 4718 bx r3 } } a18: 4770 bx lr 00000a1a : */ static void usart_error(struct _usart_async_device *device) { struct usart_async_descriptor *descr = CONTAINER_OF(device, struct usart_async_descriptor, device); descr->stat = 0; a1a: 2300 movs r3, #0 a1c: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.error) { a1e: 6a43 ldr r3, [r0, #36] ; 0x24 a20: b10b cbz r3, a26 descr->usart_cb.error(descr); a22: 3808 subs r0, #8 a24: 4718 bx r3 } } a26: 4770 bx lr 00000a28 : { a28: b570 push {r4, r5, r6, lr} a2a: 4604 mov r4, r0 ringbuffer_put(&descr->rx, data); a2c: 4b05 ldr r3, [pc, #20] ; (a44 ) a2e: f1a0 0508 sub.w r5, r0, #8 a32: 302c adds r0, #44 ; 0x2c a34: 4798 blx r3 if (descr->usart_cb.rx_done) { a36: 6a23 ldr r3, [r4, #32] a38: b11b cbz r3, a42 descr->usart_cb.rx_done(descr); a3a: 4628 mov r0, r5 } a3c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} descr->usart_cb.rx_done(descr); a40: 4718 bx r3 } a42: bd70 pop {r4, r5, r6, pc} a44: 00000c79 .word 0x00000c79 00000a48 : { a48: b570 push {r4, r5, r6, lr} a4a: 460e mov r6, r1 a4c: 4615 mov r5, r2 ASSERT(descr && buf && length); a4e: 4604 mov r4, r0 a50: b118 cbz r0, a5a a52: b1d9 cbz r1, a8c a54: 1e10 subs r0, r2, #0 a56: bf18 it ne a58: 2001 movne r0, #1 a5a: 4b0f ldr r3, [pc, #60] ; (a98 ) a5c: 490f ldr r1, [pc, #60] ; (a9c ) a5e: f240 123b movw r2, #315 ; 0x13b a62: 4798 blx r3 if (descr->tx_por != descr->tx_buffer_length) { a64: f8b4 2044 ldrh.w r2, [r4, #68] ; 0x44 a68: f8b4 304c ldrh.w r3, [r4, #76] ; 0x4c a6c: 429a cmp r2, r3 a6e: d10f bne.n a90 descr->tx_por = 0; a70: 2300 movs r3, #0 a72: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 descr->stat = USART_ASYNC_STATUS_BUSY; a76: 2301 movs r3, #1 a78: 6323 str r3, [r4, #48] ; 0x30 _usart_async_enable_byte_sent_irq(&descr->device); a7a: f104 0008 add.w r0, r4, #8 a7e: 4b08 ldr r3, [pc, #32] ; (aa0 ) descr->tx_buffer = (uint8_t *)buf; a80: 64a6 str r6, [r4, #72] ; 0x48 descr->tx_buffer_length = length; a82: f8a4 504c strh.w r5, [r4, #76] ; 0x4c _usart_async_enable_byte_sent_irq(&descr->device); a86: 4798 blx r3 return (int32_t)length; a88: 4628 mov r0, r5 } a8a: bd70 pop {r4, r5, r6, pc} ASSERT(descr && buf && length); a8c: 4608 mov r0, r1 a8e: e7e4 b.n a5a return ERR_NO_RESOURCE; a90: f06f 001b mvn.w r0, #27 a94: e7f9 b.n a8a a96: bf00 nop a98: 00000615 .word 0x00000615 a9c: 00016439 .word 0x00016439 aa0: 0000084f .word 0x0000084f 00000aa4 : if (descr->tx_por != descr->tx_buffer_length) { aa4: 8f83 ldrh r3, [r0, #60] ; 0x3c aa6: f8b0 2044 ldrh.w r2, [r0, #68] ; 0x44 aaa: 429a cmp r2, r3 { aac: b510 push {r4, lr} aae: 4604 mov r4, r0 if (descr->tx_por != descr->tx_buffer_length) { ab0: d00a beq.n ac8 _usart_async_write_byte(&descr->device, descr->tx_buffer[descr->tx_por++]); ab2: 6c02 ldr r2, [r0, #64] ; 0x40 ab4: 1c59 adds r1, r3, #1 ab6: 8781 strh r1, [r0, #60] ; 0x3c ab8: 5cd1 ldrb r1, [r2, r3] aba: 4b04 ldr r3, [pc, #16] ; (acc ) abc: 4798 blx r3 _usart_async_enable_byte_sent_irq(&descr->device); abe: 4b04 ldr r3, [pc, #16] ; (ad0 ) ac0: 4620 mov r0, r4 } ac2: e8bd 4010 ldmia.w sp!, {r4, lr} _usart_async_enable_tx_done_irq(&descr->device); ac6: 4718 bx r3 ac8: 4b02 ldr r3, [pc, #8] ; (ad4 ) aca: e7fa b.n ac2 acc: 00000849 .word 0x00000849 ad0: 0000084f .word 0x0000084f ad4: 00000857 .word 0x00000857 00000ad8 : { ad8: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} adc: 460e mov r6, r1 ade: 4617 mov r7, r2 ASSERT(descr && buf && length); ae0: 4604 mov r4, r0 ae2: b118 cbz r0, aec ae4: b1e9 cbz r1, b22 ae6: 1e10 subs r0, r2, #0 ae8: bf18 it ne aea: 2001 movne r0, #1 aec: 4910 ldr r1, [pc, #64] ; (b30 ) aee: 4b11 ldr r3, [pc, #68] ; (b34 ) ringbuffer_get(&descr->rx, &buf[was_read++]); af0: f8df 9050 ldr.w r9, [pc, #80] ; b44 ASSERT(descr && buf && length); af4: f44f 72ac mov.w r2, #344 ; 0x158 af8: 4798 blx r3 num = ringbuffer_num(&descr->rx); afa: 3434 adds r4, #52 ; 0x34 CRITICAL_SECTION_ENTER() afc: 4b0e ldr r3, [pc, #56] ; (b38 ) afe: a801 add r0, sp, #4 b00: 4798 blx r3 num = ringbuffer_num(&descr->rx); b02: 4b0e ldr r3, [pc, #56] ; (b3c ) b04: 4620 mov r0, r4 b06: 4798 blx r3 CRITICAL_SECTION_LEAVE() b08: 4b0d ldr r3, [pc, #52] ; (b40 ) num = ringbuffer_num(&descr->rx); b0a: 4680 mov r8, r0 CRITICAL_SECTION_LEAVE() b0c: a801 add r0, sp, #4 b0e: 4798 blx r3 while ((was_read < num) && (was_read < length)) { b10: 2500 movs r5, #0 b12: 45a8 cmp r8, r5 b14: d001 beq.n b1a b16: 42bd cmp r5, r7 b18: d105 bne.n b26 } b1a: 4628 mov r0, r5 b1c: b003 add sp, #12 b1e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} ASSERT(descr && buf && length); b22: 4608 mov r0, r1 b24: e7e2 b.n aec ringbuffer_get(&descr->rx, &buf[was_read++]); b26: 1971 adds r1, r6, r5 b28: 4620 mov r0, r4 b2a: 47c8 blx r9 b2c: 3501 adds r5, #1 b2e: e7f0 b.n b12 b30: 00016439 .word 0x00016439 b34: 00000615 .word 0x00000615 b38: 00000f01 .word 0x00000f01 b3c: 00000cbd .word 0x00000cbd b40: 00000f0f .word 0x00000f0f b44: 00000c39 .word 0x00000c39 00000b48 : { b48: b5f8 push {r3, r4, r5, r6, r7, lr} b4a: 460d mov r5, r1 b4c: 4616 mov r6, r2 b4e: 461f mov r7, r3 ASSERT(descr && hw && rx_buffer && rx_buffer_length); b50: 4604 mov r4, r0 b52: b120 cbz r0, b5e b54: b309 cbz r1, b9a b56: b312 cbz r2, b9e b58: 1e18 subs r0, r3, #0 b5a: bf18 it ne b5c: 2001 movne r0, #1 b5e: 4912 ldr r1, [pc, #72] ; (ba8 ) b60: 4b12 ldr r3, [pc, #72] ; (bac ) b62: 223a movs r2, #58 ; 0x3a b64: 4798 blx r3 if (ERR_NONE != ringbuffer_init(&descr->rx, rx_buffer, rx_buffer_length)) { b66: 4b12 ldr r3, [pc, #72] ; (bb0 ) b68: 463a mov r2, r7 b6a: 4631 mov r1, r6 b6c: f104 0034 add.w r0, r4, #52 ; 0x34 b70: 4798 blx r3 b72: b9b0 cbnz r0, ba2 init_status = _usart_async_init(&descr->device, hw); b74: 4b0f ldr r3, [pc, #60] ; (bb4 ) b76: 4629 mov r1, r5 b78: f104 0008 add.w r0, r4, #8 b7c: 4798 blx r3 if (init_status) { b7e: b958 cbnz r0, b98 descr->io.read = usart_async_read; b80: 4b0d ldr r3, [pc, #52] ; (bb8 ) b82: 6063 str r3, [r4, #4] descr->io.write = usart_async_write; b84: 4b0d ldr r3, [pc, #52] ; (bbc ) b86: 6023 str r3, [r4, #0] descr->device.usart_cb.tx_byte_sent = usart_process_byte_sent; b88: 4b0d ldr r3, [pc, #52] ; (bc0 ) b8a: 60a3 str r3, [r4, #8] descr->device.usart_cb.rx_done_cb = usart_fill_rx_buffer; b8c: 4b0d ldr r3, [pc, #52] ; (bc4 ) b8e: 60e3 str r3, [r4, #12] descr->device.usart_cb.tx_done_cb = usart_transmission_complete; b90: 4b0d ldr r3, [pc, #52] ; (bc8 ) b92: 6123 str r3, [r4, #16] descr->device.usart_cb.error_cb = usart_error; b94: 4b0d ldr r3, [pc, #52] ; (bcc ) b96: 6163 str r3, [r4, #20] } b98: bdf8 pop {r3, r4, r5, r6, r7, pc} ASSERT(descr && hw && rx_buffer && rx_buffer_length); b9a: 4608 mov r0, r1 b9c: e7df b.n b5e b9e: 4610 mov r0, r2 ba0: e7dd b.n b5e return ERR_INVALID_ARG; ba2: f06f 000c mvn.w r0, #12 ba6: e7f7 b.n b98 ba8: 00016439 .word 0x00016439 bac: 00000615 .word 0x00000615 bb0: 00000bfd .word 0x00000bfd bb4: 000007b1 .word 0x000007b1 bb8: 00000ad9 .word 0x00000ad9 bbc: 00000a49 .word 0x00000a49 bc0: 00000aa5 .word 0x00000aa5 bc4: 00000a29 .word 0x00000a29 bc8: 00000a0d .word 0x00000a0d bcc: 00000a1b .word 0x00000a1b 00000bd0 : { bd0: b510 push {r4, lr} ASSERT(descr); bd2: 4604 mov r4, r0 bd4: 3800 subs r0, #0 bd6: bf18 it ne bd8: 2001 movne r0, #1 bda: 4905 ldr r1, [pc, #20] ; (bf0 ) bdc: 4b05 ldr r3, [pc, #20] ; (bf4 ) bde: 2261 movs r2, #97 ; 0x61 be0: 4798 blx r3 _usart_async_enable(&descr->device); be2: f104 0008 add.w r0, r4, #8 be6: 4b04 ldr r3, [pc, #16] ; (bf8 ) be8: 4798 blx r3 } bea: 2000 movs r0, #0 bec: bd10 pop {r4, pc} bee: bf00 nop bf0: 00016439 .word 0x00016439 bf4: 00000615 .word 0x00000615 bf8: 00000835 .word 0x00000835 00000bfc : /** * \brief Ringbuffer init */ int32_t ringbuffer_init(struct ringbuffer *const rb, void *buf, uint32_t size) { bfc: b570 push {r4, r5, r6, lr} bfe: 460e mov r6, r1 c00: 4614 mov r4, r2 ASSERT(rb && buf && size); c02: 4605 mov r5, r0 c04: b118 cbz r0, c0e c06: b189 cbz r1, c2c c08: 1e10 subs r0, r2, #0 c0a: bf18 it ne c0c: 2001 movne r0, #1 c0e: 4908 ldr r1, [pc, #32] ; (c30 ) c10: 4b08 ldr r3, [pc, #32] ; (c34 ) c12: 2228 movs r2, #40 ; 0x28 c14: 4798 blx r3 /* * buf size must be aligned to power of 2 */ if ((size & (size - 1)) != 0) { c16: 1e63 subs r3, r4, #1 c18: ea13 0004 ands.w r0, r3, r4 return ERR_INVALID_ARG; } /* size - 1 is faster in calculation */ rb->size = size - 1; rb->read_index = 0; c1c: bf03 ittte eq c1e: e9c5 3001 strdeq r3, r0, [r5, #4] rb->write_index = rb->read_index; c22: 60e8 streq r0, [r5, #12] rb->buf = (uint8_t *)buf; c24: 602e streq r6, [r5, #0] return ERR_INVALID_ARG; c26: f06f 000c mvnne.w r0, #12 return ERR_NONE; } c2a: bd70 pop {r4, r5, r6, pc} ASSERT(rb && buf && size); c2c: 4608 mov r0, r1 c2e: e7ee b.n c0e c30: 00016456 .word 0x00016456 c34: 00000615 .word 0x00000615 00000c38 : /** * \brief Get one byte from ringbuffer * */ int32_t ringbuffer_get(struct ringbuffer *const rb, uint8_t *data) { c38: b538 push {r3, r4, r5, lr} c3a: 460d mov r5, r1 ASSERT(rb && data); c3c: 4604 mov r4, r0 c3e: b110 cbz r0, c46 c40: 1e08 subs r0, r1, #0 c42: bf18 it ne c44: 2001 movne r0, #1 c46: 4b0a ldr r3, [pc, #40] ; (c70 ) c48: 490a ldr r1, [pc, #40] ; (c74 ) c4a: 2240 movs r2, #64 ; 0x40 c4c: 4798 blx r3 if (rb->write_index != rb->read_index) { c4e: e9d4 3202 ldrd r3, r2, [r4, #8] c52: 429a cmp r2, r3 c54: d009 beq.n c6a *data = rb->buf[rb->read_index & rb->size]; c56: 6862 ldr r2, [r4, #4] c58: 4013 ands r3, r2 c5a: 6822 ldr r2, [r4, #0] c5c: 5cd3 ldrb r3, [r2, r3] c5e: 702b strb r3, [r5, #0] rb->read_index++; c60: 68a3 ldr r3, [r4, #8] c62: 3301 adds r3, #1 c64: 60a3 str r3, [r4, #8] return ERR_NONE; c66: 2000 movs r0, #0 } return ERR_NOT_FOUND; } c68: bd38 pop {r3, r4, r5, pc} return ERR_NOT_FOUND; c6a: f06f 0009 mvn.w r0, #9 c6e: e7fb b.n c68 c70: 00000615 .word 0x00000615 c74: 00016456 .word 0x00016456 00000c78 : /** * \brief Put one byte to ringbuffer * */ int32_t ringbuffer_put(struct ringbuffer *const rb, uint8_t data) { c78: b538 push {r3, r4, r5, lr} ASSERT(rb); c7a: 4604 mov r4, r0 c7c: 3800 subs r0, #0 c7e: bf18 it ne c80: 2001 movne r0, #1 { c82: 460d mov r5, r1 ASSERT(rb); c84: 4b0b ldr r3, [pc, #44] ; (cb4 ) c86: 490c ldr r1, [pc, #48] ; (cb8 ) c88: 2251 movs r2, #81 ; 0x51 c8a: 4798 blx r3 rb->buf[rb->write_index & rb->size] = data; c8c: 68e3 ldr r3, [r4, #12] c8e: 6862 ldr r2, [r4, #4] c90: 4013 ands r3, r2 c92: 6822 ldr r2, [r4, #0] c94: 54d5 strb r5, [r2, r3] /* * buffer full strategy: new data will overwrite the oldest data in * the buffer */ if ((rb->write_index - rb->read_index) > rb->size) { c96: e9d4 2101 ldrd r2, r1, [r4, #4] c9a: 68e3 ldr r3, [r4, #12] c9c: 1a59 subs r1, r3, r1 c9e: 4291 cmp r1, r2 rb->read_index = rb->write_index - rb->size; ca0: bf88 it hi ca2: 1a9a subhi r2, r3, r2 } rb->write_index++; ca4: f103 0301 add.w r3, r3, #1 rb->read_index = rb->write_index - rb->size; ca8: bf88 it hi caa: 60a2 strhi r2, [r4, #8] rb->write_index++; cac: 60e3 str r3, [r4, #12] return ERR_NONE; } cae: 2000 movs r0, #0 cb0: bd38 pop {r3, r4, r5, pc} cb2: bf00 nop cb4: 00000615 .word 0x00000615 cb8: 00016456 .word 0x00016456 00000cbc : /** * \brief Return the element number of ringbuffer */ uint32_t ringbuffer_num(const struct ringbuffer *const rb) { cbc: b510 push {r4, lr} ASSERT(rb); cbe: 4604 mov r4, r0 cc0: 3800 subs r0, #0 cc2: bf18 it ne cc4: 2001 movne r0, #1 cc6: 4904 ldr r1, [pc, #16] ; (cd8 ) cc8: 4b04 ldr r3, [pc, #16] ; (cdc ) cca: 2267 movs r2, #103 ; 0x67 ccc: 4798 blx r3 return rb->write_index - rb->read_index; cce: e9d4 3002 ldrd r3, r0, [r4, #8] } cd2: 1ac0 subs r0, r0, r3 cd4: bd10 pop {r4, pc} cd6: bf00 nop cd8: 00016456 .word 0x00016456 cdc: 00000615 .word 0x00000615 00000ce0 : typedef uint8_t hri_tccount8_per_reg_t; typedef uint8_t hri_tccount8_perbuf_reg_t; static inline void hri_tc_wait_for_sync(const void *const hw, hri_tc_syncbusy_reg_t reg) { while (((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg) { ce0: 6903 ldr r3, [r0, #16] ce2: 420b tst r3, r1 ce4: d1fc bne.n ce0 }; } ce6: 4770 bx lr 00000ce8 : * \param[in] hw The pointer to hardware instance * * \return The index of TC configuration */ static int8_t get_tc_index(const void *const hw) { ce8: b570 push {r4, r5, r6, lr} * \param[in] hw The pointer to hardware instance */ static inline uint8_t _get_hardware_offset(const void *const hw) { /* List of available TC modules. */ Tc *const tc_modules[TC_INST_NUM] = TC_INSTS; cea: 4d10 ldr r5, [pc, #64] ; (d2c ) { cec: 4606 mov r6, r0 Tc *const tc_modules[TC_INST_NUM] = TC_INSTS; cee: cd0f ldmia r5!, {r0, r1, r2, r3} { cf0: b088 sub sp, #32 Tc *const tc_modules[TC_INST_NUM] = TC_INSTS; cf2: 466c mov r4, sp cf4: c40f stmia r4!, {r0, r1, r2, r3} cf6: e895 000f ldmia.w r5, {r0, r1, r2, r3} cfa: e884 000f stmia.w r4, {r0, r1, r2, r3} /* Find index for TC instance. */ for (uint32_t i = 0; i < TC_INST_NUM; i++) { cfe: 466a mov r2, sp d00: 2000 movs r0, #0 if ((uint32_t)hw == (uint32_t)tc_modules[i]) { d02: f852 1b04 ldr.w r1, [r2], #4 d06: 42b1 cmp r1, r6 d08: d102 bne.n d10 if (_tcs[i].number == index) { d0a: b930 cbnz r0, d1a } d0c: b008 add sp, #32 d0e: bd70 pop {r4, r5, r6, pc} for (uint32_t i = 0; i < TC_INST_NUM; i++) { d10: 3001 adds r0, #1 d12: 2808 cmp r0, #8 d14: d1f5 bne.n d02 return i; d16: 2000 movs r0, #0 d18: e7f8 b.n d0c ASSERT(false); d1a: 2000 movs r0, #0 d1c: 4904 ldr r1, [pc, #16] ; (d30 ) d1e: 4b05 ldr r3, [pc, #20] ; (d34 ) d20: f44f 729e mov.w r2, #316 ; 0x13c d24: 4798 blx r3 d26: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff d2a: e7ef b.n d0c d2c: 00016490 .word 0x00016490 d30: 0001647a .word 0x0001647a d34: 00000615 .word 0x00000615 00000d38 <_timer_init>: { d38: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} int8_t i = get_tc_index(hw); d3c: 4b45 ldr r3, [pc, #276] ; (e54 <_timer_init+0x11c>) { d3e: 4681 mov r9, r0 int8_t i = get_tc_index(hw); d40: 4608 mov r0, r1 { d42: 460c mov r4, r1 int8_t i = get_tc_index(hw); d44: 4798 blx r3 ASSERT(ARRAY_SIZE(_tcs)); d46: 4b44 ldr r3, [pc, #272] ; (e58 <_timer_init+0x120>) d48: 4944 ldr r1, [pc, #272] ; (e5c <_timer_init+0x124>) device->hw = hw; d4a: f8c9 400c str.w r4, [r9, #12] ASSERT(ARRAY_SIZE(_tcs)); d4e: 228d movs r2, #141 ; 0x8d int8_t i = get_tc_index(hw); d50: 4680 mov r8, r0 ASSERT(ARRAY_SIZE(_tcs)); d52: 2001 movs r0, #1 d54: 4798 blx r3 static inline bool hri_tc_is_syncing(const void *const hw, hri_tc_syncbusy_reg_t reg) { return ((Tc *)hw)->COUNT8.SYNCBUSY.reg & reg; d56: 6923 ldr r3, [r4, #16] d58: 4a41 ldr r2, [pc, #260] ; (e60 <_timer_init+0x128>) if (!hri_tc_is_syncing(hw, TC_SYNCBUSY_SWRST)) { d5a: f013 0f01 tst.w r3, #1 d5e: d111 bne.n d84 <_timer_init+0x4c> } static inline hri_tc_ctrla_reg_t hri_tc_get_CTRLA_reg(const void *const hw, hri_tc_ctrla_reg_t mask) { uint32_t tmp; hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); d60: 2103 movs r1, #3 d62: 4620 mov r0, r4 d64: 4790 blx r2 tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; d66: 6823 ldr r3, [r4, #0] if (hri_tc_get_CTRLA_reg(hw, TC_CTRLA_ENABLE)) { d68: 079b lsls r3, r3, #30 d6a: d506 bpl.n d7a <_timer_init+0x42> ((Tc *)hw)->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE; d6c: 6823 ldr r3, [r4, #0] d6e: f023 0302 bic.w r3, r3, #2 d72: 6023 str r3, [r4, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); d74: 4790 blx r2 hri_tc_wait_for_sync(hw, TC_SYNCBUSY_ENABLE); d76: 2102 movs r1, #2 d78: 4790 blx r2 } static inline void hri_tc_write_CTRLA_reg(const void *const hw, hri_tc_ctrla_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT16.CTRLA.reg = data; d7a: 2301 movs r3, #1 d7c: 6023 str r3, [r4, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); d7e: 2103 movs r1, #3 d80: 4620 mov r0, r4 d82: 4790 blx r2 hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a); d84: 4f37 ldr r7, [pc, #220] ; (e64 <_timer_init+0x12c>) d86: 2514 movs r5, #20 d88: fb05 7508 mla r5, r5, r8, r7 hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST); d8c: 2101 movs r1, #1 d8e: 4620 mov r0, r4 d90: 4790 blx r2 hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a); d92: 6a6e ldr r6, [r5, #36] ; 0x24 ((Tc *)hw)->COUNT16.CTRLA.reg = data; d94: 6026 str r6, [r4, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); d96: 2103 movs r1, #3 d98: 4790 blx r2 hri_tc_write_DBGCTRL_reg(hw, _tcs[i].dbg_ctrl); d9a: f895 302a ldrb.w r3, [r5, #42] ; 0x2a } static inline void hri_tc_write_DBGCTRL_reg(const void *const hw, hri_tc_dbgctrl_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT16.DBGCTRL.reg = data; d9e: 73e3 strb r3, [r4, #15] if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) { da0: f006 060c and.w r6, r6, #12 hri_tc_write_EVCTRL_reg(hw, _tcs[i].event_ctrl); da4: 8d2b ldrh r3, [r5, #40] ; 0x28 ((Tc *)hw)->COUNT16.EVCTRL.reg = data; da6: 80e3 strh r3, [r4, #6] if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) { da8: 2e08 cmp r6, #8 ((Tc *)hw)->COUNT16.WAVE.reg = data; daa: f04f 0301 mov.w r3, #1 dae: 7323 strb r3, [r4, #12] db0: d13a bne.n e28 <_timer_init+0xf0> hri_tccount32_write_CC_reg(hw, 0, _tcs[i].cc0); db2: 6aeb ldr r3, [r5, #44] ; 0x2c } static inline void hri_tccount32_write_CC_reg(const void *const hw, uint8_t index, hri_tccount32_cc_reg_t data) { TC_CRITICAL_SECTION_ENTER(); ((Tc *)hw)->COUNT32.CC[index].reg = data; db4: 61e3 str r3, [r4, #28] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); db6: 21c0 movs r1, #192 ; 0xc0 db8: 4790 blx r2 ((Tc *)hw)->COUNT32.CC[index].reg = data; dba: 2300 movs r3, #0 dbc: 6223 str r3, [r4, #32] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_PER); dbe: 4790 blx r2 ((Tc *)hw)->COUNT16.INTENSET.reg = TC_INTENSET_OVF; dc0: 2301 movs r3, #1 dc2: 7263 strb r3, [r4, #9] if (hw == TC0) { dc4: 4b28 ldr r3, [pc, #160] ; (e68 <_timer_init+0x130>) dc6: 429c cmp r4, r3 _tc0_dev = (struct _timer_device *)dev; dc8: bf04 itt eq dca: 4b28 ldreq r3, [pc, #160] ; (e6c <_timer_init+0x134>) dcc: f8c3 9000 streq.w r9, [r3] NVIC_DisableIRQ(_tcs[i].irq); dd0: 2314 movs r3, #20 dd2: fb03 7308 mla r3, r3, r8, r7 dd6: f9b3 3022 ldrsh.w r3, [r3, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) dda: 2b00 cmp r3, #0 ddc: db0d blt.n dfa <_timer_init+0xc2> NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); dde: 095a lsrs r2, r3, #5 de0: 2101 movs r1, #1 de2: f003 031f and.w r3, r3, #31 de6: fa01 f303 lsl.w r3, r1, r3 dea: 3220 adds r2, #32 dec: 4920 ldr r1, [pc, #128] ; (e70 <_timer_init+0x138>) dee: f841 3022 str.w r3, [r1, r2, lsl #2] __ASM volatile ("dsb 0xF":::"memory"); df2: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); df6: f3bf 8f6f isb sy NVIC_ClearPendingIRQ(_tcs[i].irq); dfa: 2014 movs r0, #20 dfc: fb00 7708 mla r7, r0, r8, r7 e00: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) e04: 2b00 cmp r3, #0 e06: db0c blt.n e22 <_timer_init+0xea> NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); e08: f003 011f and.w r1, r3, #31 e0c: 095b lsrs r3, r3, #5 e0e: 009b lsls r3, r3, #2 e10: f103 4360 add.w r3, r3, #3758096384 ; 0xe0000000 e14: f503 4361 add.w r3, r3, #57600 ; 0xe100 e18: 2201 movs r2, #1 e1a: 408a lsls r2, r1 e1c: f8c3 2180 str.w r2, [r3, #384] ; 0x180 NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); e20: 601a str r2, [r3, #0] } e22: 2000 movs r0, #0 e24: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT16) { e28: b92e cbnz r6, e36 <_timer_init+0xfe> hri_tccount16_write_CC_reg(hw, 0, (uint16_t)_tcs[i].cc0); e2a: 8dab ldrh r3, [r5, #44] ; 0x2c ((Tc *)hw)->COUNT16.CC[index].reg = data; e2c: 83a3 strh r3, [r4, #28] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e2e: 21c0 movs r1, #192 ; 0xc0 e30: 4790 blx r2 ((Tc *)hw)->COUNT16.CC[index].reg = data; e32: 83e6 strh r6, [r4, #30] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e34: e7c3 b.n dbe <_timer_init+0x86> } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT8) { e36: 2e04 cmp r6, #4 e38: d1c2 bne.n dc0 <_timer_init+0x88> hri_tccount8_write_CC_reg(hw, 0, (uint8_t)_tcs[i].cc0); e3a: f895 302c ldrb.w r3, [r5, #44] ; 0x2c ((Tc *)hw)->COUNT8.CC[index].reg = data; e3e: 7723 strb r3, [r4, #28] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e40: 21c0 movs r1, #192 ; 0xc0 e42: 4790 blx r2 ((Tc *)hw)->COUNT8.CC[index].reg = data; e44: 2300 movs r3, #0 e46: 7763 strb r3, [r4, #29] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e48: 4790 blx r2 hri_tccount8_write_PER_reg(hw, _tcs[i].per); e4a: f895 302b ldrb.w r3, [r5, #43] ; 0x2b ((Tc *)hw)->COUNT8.PER.reg = data; e4e: 76e3 strb r3, [r4, #27] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_PER); e50: 2120 movs r1, #32 e52: e7b4 b.n dbe <_timer_init+0x86> e54: 00000ce9 .word 0x00000ce9 e58: 00000615 .word 0x00000615 e5c: 0001647a .word 0x0001647a e60: 00000ce1 .word 0x00000ce1 e64: 00016490 .word 0x00016490 e68: 40003800 .word 0x40003800 e6c: 200000ac .word 0x200000ac e70: e000e100 .word 0xe000e100 00000e74 <_timer_start>: hri_tc_set_CTRLA_ENABLE_bit(device->hw); e74: 68c0 ldr r0, [r0, #12] ((Tc *)hw)->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; e76: 6803 ldr r3, [r0, #0] e78: f043 0302 orr.w r3, r3, #2 e7c: 6003 str r3, [r0, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); e7e: 2103 movs r1, #3 e80: 4b00 ldr r3, [pc, #0] ; (e84 <_timer_start+0x10>) e82: 4718 bx r3 e84: 00000ce1 .word 0x00000ce1 00000e88 <_timer_is_started>: { e88: b508 push {r3, lr} return hri_tc_get_CTRLA_ENABLE_bit(device->hw); e8a: 68c0 ldr r0, [r0, #12] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); e8c: 4b03 ldr r3, [pc, #12] ; (e9c <_timer_is_started+0x14>) e8e: 2103 movs r1, #3 e90: 4798 blx r3 tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; e92: 6800 ldr r0, [r0, #0] } e94: f3c0 0040 ubfx r0, r0, #1, #1 e98: bd08 pop {r3, pc} e9a: bf00 nop e9c: 00000ce1 .word 0x00000ce1 00000ea0 <_tc_get_timer>: } ea0: 2000 movs r0, #0 ea2: 4770 bx lr 00000ea4 <_timer_set_irq>: { ea4: b510 push {r4, lr} int8_t i = get_tc_index(hw); ea6: 4b0a ldr r3, [pc, #40] ; (ed0 <_timer_set_irq+0x2c>) ea8: 68c0 ldr r0, [r0, #12] eaa: 4798 blx r3 ASSERT(ARRAY_SIZE(_tcs)); eac: 4b09 ldr r3, [pc, #36] ; (ed4 <_timer_set_irq+0x30>) eae: 490a ldr r1, [pc, #40] ; (ed8 <_timer_set_irq+0x34>) int8_t i = get_tc_index(hw); eb0: 4604 mov r4, r0 ASSERT(ARRAY_SIZE(_tcs)); eb2: f240 120f movw r2, #271 ; 0x10f eb6: 2001 movs r0, #1 eb8: 4798 blx r3 _irq_set(_tcs[i].irq); eba: 4b08 ldr r3, [pc, #32] ; (edc <_timer_set_irq+0x38>) ebc: 2014 movs r0, #20 ebe: fb00 3004 mla r0, r0, r4, r3 } ec2: e8bd 4010 ldmia.w sp!, {r4, lr} _irq_set(_tcs[i].irq); ec6: f890 0022 ldrb.w r0, [r0, #34] ; 0x22 eca: 4b05 ldr r3, [pc, #20] ; (ee0 <_timer_set_irq+0x3c>) ecc: 4718 bx r3 ece: bf00 nop ed0: 00000ce9 .word 0x00000ce9 ed4: 00000615 .word 0x00000615 ed8: 0001647a .word 0x0001647a edc: 00016490 .word 0x00016490 ee0: 000002d5 .word 0x000002d5 00000ee4 : tc_interrupt_handler(_tc0_dev); ee4: 4b05 ldr r3, [pc, #20] ; (efc ) ee6: 6818 ldr r0, [r3, #0] void *const hw = device->hw; ee8: 68c3 ldr r3, [r0, #12] return (((Tc *)hw)->COUNT16.INTFLAG.reg & TC_INTFLAG_OVF) >> TC_INTFLAG_OVF_Pos; eea: 7a9a ldrb r2, [r3, #10] if (hri_tc_get_interrupt_OVF_bit(hw)) { eec: 07d2 lsls r2, r2, #31 eee: d503 bpl.n ef8 ((Tc *)hw)->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF; ef0: 2201 movs r2, #1 ef2: 729a strb r2, [r3, #10] device->timer_cb.period_expired(device); ef4: 6803 ldr r3, [r0, #0] ef6: 4718 bx r3 } ef8: 4770 bx lr efa: bf00 nop efc: 200000ac .word 0x200000ac 00000f00 : __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); f00: f3ef 8310 mrs r3, PRIMASK /** * \brief Disable interrupts, enter critical section */ void atomic_enter_critical(hal_atomic_t volatile *atomic) { *atomic = __get_PRIMASK(); f04: 6003 str r3, [r0, #0] __ASM volatile ("cpsid i" : : : "memory"); f06: b672 cpsid i \details Ensures the apparent order of the explicit memory operations before and after the instruction, without ensuring their completion. */ __STATIC_FORCEINLINE void __DMB(void) { __ASM volatile ("dmb 0xF":::"memory"); f08: f3bf 8f5f dmb sy __disable_irq(); __DMB(); } f0c: 4770 bx lr 00000f0e : f0e: f3bf 8f5f dmb sy * \brief Exit atomic section */ void atomic_leave_critical(hal_atomic_t volatile *atomic) { __DMB(); __set_PRIMASK(*atomic); f12: 6803 ldr r3, [r0, #0] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); f14: f383 8810 msr PRIMASK, r3 } f18: 4770 bx lr ... 00000f1c : * GPIO_DIRECTION_OFF = Disables the pin * (low power state) */ static inline void gpio_set_pin_direction(const uint8_t pin, const enum gpio_direction direction) { _gpio_set_direction((enum gpio_port)GPIO_PORT(pin), 1U << GPIO_PIN(pin), direction); f1c: 2201 movs r2, #1 f1e: 0943 lsrs r3, r0, #5 * \brief Set direction on port with mask */ static inline void _gpio_set_direction(const enum gpio_port port, const uint32_t mask, const enum gpio_direction direction) { switch (direction) { f20: 4291 cmp r1, r2 f22: f000 001f and.w r0, r0, #31 f26: fa02 f000 lsl.w r0, r2, r0 f2a: d010 beq.n f4e f2c: 2902 cmp r1, #2 f2e: d01f beq.n f70 f30: bb29 cbnz r1, f7e ((Port *)hw)->Group[submodule_index].DIRCLR.reg = ~data; } static inline void hri_port_clear_DIR_reg(const void *const hw, uint8_t submodule_index, hri_port_dir_reg_t mask) { ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; f32: 01db lsls r3, r3, #7 f34: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 f38: f503 4300 add.w r3, r3, #32768 ; 0x8000 f3c: 6058 str r0, [r3, #4] | ((mask & 0xffff0000) >> 16)); break; case GPIO_DIRECTION_OUT: hri_port_set_DIR_reg(PORT, port, mask); hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | (mask & 0xffff)); f3e: b282 uxth r2, r0 f40: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 hri_port_write_WRCONFIG_reg( PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16)); f44: 0c00 lsrs r0, r0, #16 static inline void hri_port_write_WRCONFIG_reg(const void *const hw, uint8_t submodule_index, hri_port_wrconfig_reg_t data) { PORT_CRITICAL_SECTION_ENTER(); ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; f46: 629a str r2, [r3, #40] ; 0x28 hri_port_write_WRCONFIG_reg( f48: f040 4040 orr.w r0, r0, #3221225472 ; 0xc0000000 f4c: e00e b.n f6c ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; f4e: 01db lsls r3, r3, #7 hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_INEN | (mask & 0xffff)); f50: b282 uxth r2, r0 f52: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 f56: f503 4300 add.w r3, r3, #32768 ; 0x8000 f5a: f042 4280 orr.w r2, r2, #1073741824 ; 0x40000000 f5e: f442 3200 orr.w r2, r2, #131072 ; 0x20000 f62: 6058 str r0, [r3, #4] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; f64: 629a str r2, [r3, #40] ; 0x28 hri_port_write_WRCONFIG_reg(PORT, f66: 4a08 ldr r2, [pc, #32] ; (f88 ) f68: ea42 4010 orr.w r0, r2, r0, lsr #16 f6c: 6298 str r0, [r3, #40] ; 0x28 } f6e: 4770 bx lr ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; f70: 01db lsls r3, r3, #7 f72: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 f76: f503 4300 add.w r3, r3, #32768 ; 0x8000 f7a: 6098 str r0, [r3, #8] f7c: e7df b.n f3e break; default: ASSERT(false); f7e: 4903 ldr r1, [pc, #12] ; (f8c ) f80: 4b03 ldr r3, [pc, #12] ; (f90 ) f82: 2246 movs r2, #70 ; 0x46 f84: 2000 movs r0, #0 f86: 4718 bx r3 f88: c0020000 .word 0xc0020000 f8c: 000164c4 .word 0x000164c4 f90: 00000615 .word 0x00000615 00000f94 <_gpio_set_pin_function>: /** * \brief Set gpio pin function */ static inline void _gpio_set_pin_function(const uint32_t gpio, const uint32_t function) { f94: b530 push {r4, r5, lr} uint8_t port = GPIO_PORT(gpio); uint8_t pin = GPIO_PIN(gpio); if (function == GPIO_PIN_FUNCTION_OFF) { f96: 1c4b adds r3, r1, #1 uint8_t pin = GPIO_PIN(gpio); f98: b2c5 uxtb r5, r0 f9a: 4b18 ldr r3, [pc, #96] ; (ffc <_gpio_set_pin_function+0x68>) f9c: f000 041f and.w r4, r0, #31 uint8_t port = GPIO_PORT(gpio); fa0: ea4f 1050 mov.w r0, r0, lsr #5 fa4: ea4f 10c0 mov.w r0, r0, lsl #7 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; fa8: 4403 add r3, r0 if (function == GPIO_PIN_FUNCTION_OFF) { faa: d107 bne.n fbc <_gpio_set_pin_function+0x28> fac: 4423 add r3, r4 fae: f893 2040 ldrb.w r2, [r3, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; fb2: f002 02fe and.w r2, r2, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; fb6: f883 2040 strb.w r2, [r3, #64] ; 0x40 } else { // Even numbered pin hri_port_write_PMUX_PMUXE_bf(PORT, port, pin >> 1, function & 0xffff); } } } fba: bd30 pop {r4, r5, pc} tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; fbc: 1918 adds r0, r3, r4 fbe: eb03 0354 add.w r3, r3, r4, lsr #1 fc2: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; fc6: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; fca: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; fce: f880 2040 strb.w r2, [r0, #64] ; 0x40 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; fd2: f893 2030 ldrb.w r2, [r3, #48] ; 0x30 if (pin & 1) { fd6: f015 0f01 tst.w r5, #1 hri_port_write_PMUX_PMUXO_bf(PORT, port, pin >> 1, function & 0xffff); fda: b2c9 uxtb r1, r1 tmp &= ~PORT_PMUX_PMUXO_Msk; fdc: bf19 ittee ne fde: f002 020f andne.w r2, r2, #15 tmp |= PORT_PMUX_PMUXO(data); fe2: ea42 1101 orrne.w r1, r2, r1, lsl #4 tmp |= PORT_PMUX_PMUXE(data); fe6: f001 010f andeq.w r1, r1, #15 tmp &= ~PORT_PMUX_PMUXE_Msk; fea: f002 02f0 andeq.w r2, r2, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXO(data); fee: bf14 ite ne ff0: b2c9 uxtbne r1, r1 tmp |= PORT_PMUX_PMUXE(data); ff2: 4311 orreq r1, r2 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; ff4: f883 1030 strb.w r1, [r3, #48] ; 0x30 } ff8: e7df b.n fba <_gpio_set_pin_function+0x26> ffa: bf00 nop ffc: 41008000 .word 0x41008000 00001000 : switch (pull_mode) { 1000: 2901 cmp r1, #1 _gpio_set_pin_pull_mode((enum gpio_port)GPIO_PORT(pin), pin & 0x1F, pull_mode); 1002: ea4f 1350 mov.w r3, r0, lsr #5 1006: f000 001f and.w r0, r0, #31 100a: d00f beq.n 102c 100c: 2902 cmp r1, #2 100e: d01d beq.n 104c 1010: bb69 cbnz r1, 106e ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 1012: eb00 10c3 add.w r0, r0, r3, lsl #7 1016: f100 4082 add.w r0, r0, #1090519040 ; 0x41000000 101a: f500 4000 add.w r0, r0, #32768 ; 0x8000 101e: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 1022: f003 03fb and.w r3, r3, #251 ; 0xfb 1026: f880 3040 strb.w r3, [r0, #64] ; 0x40 } 102a: 4770 bx lr ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 102c: 01db lsls r3, r3, #7 102e: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 1032: f503 4300 add.w r3, r3, #32768 ; 0x8000 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 1036: 4081 lsls r1, r0 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 1038: 4418 add r0, r3 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 103a: 6059 str r1, [r3, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 103c: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 1040: f042 0204 orr.w r2, r2, #4 1044: f880 2040 strb.w r2, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1048: 6199 str r1, [r3, #24] } 104a: 4770 bx lr ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 104c: 01db lsls r3, r3, #7 104e: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 1052: f503 4300 add.w r3, r3, #32768 ; 0x8000 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 1056: 2201 movs r2, #1 1058: 4082 lsls r2, r0 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 105a: 4418 add r0, r3 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 105c: 605a str r2, [r3, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 105e: f890 1040 ldrb.w r1, [r0, #64] ; 0x40 1062: f041 0104 orr.w r1, r1, #4 1066: f880 1040 strb.w r1, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 106a: 615a str r2, [r3, #20] } 106c: 4770 bx lr ASSERT(false); 106e: 4902 ldr r1, [pc, #8] ; (1078 ) 1070: 4b02 ldr r3, [pc, #8] ; (107c ) 1072: 2289 movs r2, #137 ; 0x89 1074: 2000 movs r0, #0 1076: 4718 bx r3 1078: 000164c4 .word 0x000164c4 107c: 00000615 .word 0x00000615 00001080 : } } void p_gpio_set_port_data(PortGroup* const port, const uint32_t mask, const uint32_t data) { uint32_t dword = (uint32_t)(SSD1963_TFT_DATA_FIX(data)); 1080: 0053 lsls r3, r2, #1 { 1082: b510 push {r4, lr} uint32_t dword = (uint32_t)(SSD1963_TFT_DATA_FIX(data)); 1084: 0154 lsls r4, r2, #5 1086: f404 3470 and.w r4, r4, #245760 ; 0x3c000 108a: f403 737c and.w r3, r3, #1008 ; 0x3f0 108e: 4323 orrs r3, r4 1090: f002 0407 and.w r4, r2, #7 1094: 0352 lsls r2, r2, #13 1096: f002 52e0 and.w r2, r2, #469762048 ; 0x1c000000 109a: 4323 orrs r3, r4 109c: 4313 orrs r3, r2 port->OUTSET.reg = (mask & dword); 109e: ea03 0201 and.w r2, r3, r1 port->OUTCLR.reg = (mask & ~dword); 10a2: ea21 0103 bic.w r1, r1, r3 port->OUTSET.reg = (mask & dword); 10a6: 6182 str r2, [r0, #24] port->OUTCLR.reg = (mask & ~dword); 10a8: 6141 str r1, [r0, #20] } 10aa: bd10 pop {r4, pc} 000010ac : { 10ac: b538 push {r3, r4, r5, lr} 10ae: 4c05 ldr r4, [pc, #20] ; (10c4 ) p_gpio_set_port_data(group, mask, (uint32_t)data); 10b0: 4b05 ldr r3, [pc, #20] ; (10c8 ) 10b2: 2540 movs r5, #64 ; 0x40 10b4: 6165 str r5, [r4, #20] 10b6: 4798 blx r3 10b8: 2380 movs r3, #128 ; 0x80 10ba: 6163 str r3, [r4, #20] ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 10bc: 61a3 str r3, [r4, #24] 10be: 61a5 str r5, [r4, #24] } 10c0: bd38 pop {r3, r4, r5, pc} 10c2: bf00 nop 10c4: 41008000 .word 0x41008000 10c8: 00001081 .word 0x00001081 000010cc : { 10cc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} p_gpio_parallel_write(group, mask, data[ind]); 10d0: 4f07 ldr r7, [pc, #28] ; (10f0 ) { 10d2: 4688 mov r8, r1 10d4: 4616 mov r6, r2 10d6: 461d mov r5, r3 for(int ind = 0; ind < len; ind++) 10d8: 2400 movs r4, #0 10da: 42a5 cmp r5, r4 10dc: dc01 bgt.n 10e2 } 10de: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} p_gpio_parallel_write(group, mask, data[ind]); 10e2: f836 2014 ldrh.w r2, [r6, r4, lsl #1] 10e6: 4641 mov r1, r8 10e8: 47b8 blx r7 for(int ind = 0; ind < len; ind++) 10ea: 3401 adds r4, #1 10ec: e7f5 b.n 10da 10ee: bf00 nop 10f0: 000010ad .word 0x000010ad 000010f4 : void p_gpio_set_port_group_config(enum gpio_port port, const uint32_t mask, p_port_config* config) { 10f4: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} for(uint8_t i = 0; i < 32; i++) { if(mask & (1UL << i)) { uint32_t _gpio_pin = GPIO(port, i); 10f8: 0147 lsls r7, r0, #5 gpio_set_pin_direction(_gpio_pin, config->direction); 10fa: 4b15 ldr r3, [pc, #84] ; (1150 ) _gpio_set_pin_function(pin, function); 10fc: f8df a058 ldr.w sl, [pc, #88] ; 1158 { 1100: 4688 mov r8, r1 1102: 4616 mov r6, r2 uint32_t _gpio_pin = GPIO(port, i); 1104: fa5f fb87 uxtb.w fp, r7 1108: 2500 movs r5, #0 if(mask & (1UL << i)) 110a: fa28 f205 lsr.w r2, r8, r5 110e: 07d2 lsls r2, r2, #31 1110: d519 bpl.n 1146 uint32_t _gpio_pin = GPIO(port, i); 1112: 19ec adds r4, r5, r7 1114: b2e4 uxtb r4, r4 gpio_set_pin_direction(_gpio_pin, config->direction); 1116: 4620 mov r0, r4 1118: 7871 ldrb r1, [r6, #1] 111a: 4798 blx r3 111c: eb0b 0905 add.w r9, fp, r5 gpio_set_pin_pull_mode(_gpio_pin, config->pull_mode); 1120: 4b0c ldr r3, [pc, #48] ; (1154 ) 1122: 7831 ldrb r1, [r6, #0] 1124: 4620 mov r0, r4 1126: 4798 blx r3 1128: 6871 ldr r1, [r6, #4] 112a: 4648 mov r0, r9 112c: 47d0 blx sl * \param[in] level true = Pin level set to "high" state * false = Pin level set to "low" state */ static inline void gpio_set_pin_level(const uint8_t pin, const bool level) { _gpio_set_level((enum gpio_port)GPIO_PORT(pin), 1U << GPIO_PIN(pin), level); 112e: f004 011f and.w r1, r4, #31 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1132: 0964 lsrs r4, r4, #5 1134: 01e4 lsls r4, r4, #7 1136: f104 4482 add.w r4, r4, #1090519040 ; 0x41000000 113a: 2201 movs r2, #1 113c: f504 4400 add.w r4, r4, #32768 ; 0x8000 1140: 408a lsls r2, r1 1142: 4b03 ldr r3, [pc, #12] ; (1150 ) 1144: 6162 str r2, [r4, #20] for(uint8_t i = 0; i < 32; i++) 1146: 3501 adds r5, #1 1148: 2d20 cmp r5, #32 114a: d1de bne.n 110a gpio_set_pin_function(_gpio_pin, config->function); gpio_set_pin_level(_gpio_pin, 0); } } } 114c: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 1150: 00000f1d .word 0x00000f1d 1154: 00001001 .word 0x00001001 1158: 00000f95 .word 0x00000f95 0000115c : { 115c: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} memset(&data_config, 0, sizeof(data_config)); 1160: f04f 0900 mov.w r9, #0 p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 1164: 466a mov r2, sp 1166: 4b29 ldr r3, [pc, #164] ; (120c ) memset(&data_config, 0, sizeof(data_config)); 1168: f8cd 9000 str.w r9, [sp] data_config.direction = GPIO_DIRECTION_OUT; 116c: 2502 movs r5, #2 data_config.function = GPIO_PIN_FUNCTION_OFF; 116e: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 1172: 4927 ldr r1, [pc, #156] ; (1210 ) gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT); 1174: f8df 80a8 ldr.w r8, [pc, #168] ; 1220 data_config.direction = GPIO_DIRECTION_OUT; 1178: f88d 5001 strb.w r5, [sp, #1] p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 117c: 2001 movs r0, #1 data_config.function = GPIO_PIN_FUNCTION_OFF; 117e: 9401 str r4, [sp, #4] p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 1180: 4798 blx r3 gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT); 1182: 4629 mov r1, r5 1184: 2006 movs r0, #6 gpio_set_pin_pull_mode(SSD1963_TFT_CS, GPIO_PULL_OFF); 1186: 4f23 ldr r7, [pc, #140] ; (1214 ) _gpio_set_pin_function(pin, function); 1188: 4e23 ldr r6, [pc, #140] ; (1218 ) gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT); 118a: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_CS, GPIO_PULL_OFF); 118c: 4649 mov r1, r9 118e: 2006 movs r0, #6 1190: 47b8 blx r7 1192: 4621 mov r1, r4 1194: 2006 movs r0, #6 1196: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_nRST, GPIO_DIRECTION_OUT); 1198: 4629 mov r1, r5 119a: 2004 movs r0, #4 119c: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_nRST, GPIO_PULL_OFF); 119e: 4649 mov r1, r9 11a0: 2004 movs r0, #4 11a2: 47b8 blx r7 11a4: 4621 mov r1, r4 11a6: 2004 movs r0, #4 11a8: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_RD, GPIO_DIRECTION_OUT); 11aa: 4629 mov r1, r5 11ac: 2003 movs r0, #3 11ae: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_RD, GPIO_PULL_OFF); 11b0: 4649 mov r1, r9 11b2: 2003 movs r0, #3 11b4: 47b8 blx r7 11b6: 4621 mov r1, r4 11b8: 2003 movs r0, #3 11ba: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_RSDC, GPIO_DIRECTION_OUT); 11bc: 4629 mov r1, r5 11be: 2005 movs r0, #5 11c0: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_RSDC, GPIO_PULL_OFF); 11c2: 4649 mov r1, r9 11c4: 2005 movs r0, #5 11c6: 47b8 blx r7 11c8: 4621 mov r1, r4 11ca: 2005 movs r0, #5 11cc: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_WR, GPIO_DIRECTION_OUT); 11ce: 4629 mov r1, r5 11d0: 2007 movs r0, #7 11d2: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_WR, GPIO_PULL_OFF); 11d4: 4649 mov r1, r9 11d6: 2007 movs r0, #7 11d8: 47b8 blx r7 11da: 4621 mov r1, r4 11dc: 2007 movs r0, #7 11de: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_TE, GPIO_DIRECTION_IN); 11e0: 2101 movs r1, #1 11e2: 2068 movs r0, #104 ; 0x68 11e4: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_TE, GPIO_PULL_DOWN); 11e6: 4629 mov r1, r5 11e8: 2068 movs r0, #104 ; 0x68 11ea: 47b8 blx r7 11ec: 4621 mov r1, r4 11ee: 2068 movs r0, #104 ; 0x68 11f0: 47b0 blx r6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 11f2: 4b0a ldr r3, [pc, #40] ; (121c ) 11f4: 2240 movs r2, #64 ; 0x40 11f6: 619a str r2, [r3, #24] 11f8: 2210 movs r2, #16 11fa: 619a str r2, [r3, #24] 11fc: 2208 movs r2, #8 11fe: 619a str r2, [r3, #24] 1200: 2280 movs r2, #128 ; 0x80 1202: 619a str r2, [r3, #24] } 1204: b003 add sp, #12 1206: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 120a: bf00 nop 120c: 000010f5 .word 0x000010f5 1210: 1c03c3f7 .word 0x1c03c3f7 1214: 00001001 .word 0x00001001 1218: 00000f95 .word 0x00000f95 121c: 41008000 .word 0x41008000 1220: 00000f1d .word 0x00000f1d 00001224 : //// port init //gpio_set_pin_pull_mode(I2C_MASTER_SDA, GPIO_PULL_OFF); //gpio_set_pin_function(I2C_MASTER_SDA, I2C_MASTER_SDA_MUX); //gpio_set_pin_pull_mode(I2C_MASTER_SCL, GPIO_PULL_OFF); //gpio_set_pin_function(I2C_MASTER_SCL, I2C_MASTER_SCL_MUX); } 1224: 4770 bx lr ... 00001228 : static volatile uint64_t sys_time = 0; /** * Example of using TIMER_0. */ static void TIMER_0_task1_cb(const struct timer_task *const timer_task) { 1228: b410 push {r4} sys_time++; 122a: 4c06 ldr r4, [pc, #24] ; (1244 ) 122c: e9d4 2300 ldrd r2, r3, [r4] 1230: 1c50 adds r0, r2, #1 1232: f143 0100 adc.w r1, r3, #0 1236: e9c4 0100 strd r0, r1, [r4] lv_tick_inc(1); 123a: 4b03 ldr r3, [pc, #12] ; (1248 ) } 123c: f85d 4b04 ldr.w r4, [sp], #4 lv_tick_inc(1); 1240: 2001 movs r0, #1 1242: 4718 bx r3 1244: 200000b0 .word 0x200000b0 1248: 0000da79 .word 0x0000da79 0000124c : //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); } void p_tcc_init(void) { 124c: b570 push {r4, r5, r6, lr} delay_init(SysTick); 124e: 4812 ldr r0, [pc, #72] ; (1298 ) 1250: 4b12 ldr r3, [pc, #72] ; (129c ) hri_mclk_set_APBAMASK_TC0_bit(MCLK); hri_gclk_write_PCHCTRL_reg(GCLK, TC0_GCLK_ID, CONF_GCLK_TC0_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); timer_init(&p_tcc_inst, TC0, _tc_get_timer()); 1252: 4c13 ldr r4, [pc, #76] ; (12a0 ) delay_init(SysTick); 1254: 4798 blx r3 } static inline void hri_mclk_set_APBAMASK_TC0_bit(const void *const hw) { MCLK_CRITICAL_SECTION_ENTER(); ((Mclk *)hw)->APBAMASK.reg |= MCLK_APBAMASK_TC0; 1256: 4a13 ldr r2, [pc, #76] ; (12a4 ) 1258: 6953 ldr r3, [r2, #20] 125a: f443 4380 orr.w r3, r3, #16384 ; 0x4000 125e: 6153 str r3, [r2, #20] } static inline void hri_gclk_write_PCHCTRL_reg(const void *const hw, uint8_t index, hri_gclk_pchctrl_reg_t data) { GCLK_CRITICAL_SECTION_ENTER(); ((Gclk *)hw)->PCHCTRL[index].reg = data; 1260: 4b11 ldr r3, [pc, #68] ; (12a8 ) 1262: 2240 movs r2, #64 ; 0x40 1264: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4 timer_init(&p_tcc_inst, TC0, _tc_get_timer()); 1268: 4b10 ldr r3, [pc, #64] ; (12ac ) 126a: 4798 blx r3 126c: f104 051c add.w r5, r4, #28 1270: 4602 mov r2, r0 1272: 490f ldr r1, [pc, #60] ; (12b0 ) 1274: 4b0f ldr r3, [pc, #60] ; (12b4 ) 1276: 4628 mov r0, r5 1278: 4798 blx r3 TIMER_0_task1.interval = 1; 127a: 2301 movs r3, #1 127c: 6123 str r3, [r4, #16] TIMER_0_task1.cb = TIMER_0_task1_cb; TIMER_0_task1.mode = TIMER_TASK_REPEAT; 127e: 7623 strb r3, [r4, #24] TIMER_0_task1.cb = TIMER_0_task1_cb; 1280: 4a0d ldr r2, [pc, #52] ; (12b8 ) //TIMER_0_task2.interval = 200; //TIMER_0_task2.cb = TIMER_0_task2_cb; //TIMER_0_task2.mode = TIMER_TASK_REPEAT; timer_add_task(&p_tcc_inst, &TIMER_0_task1); 1282: 4b0e ldr r3, [pc, #56] ; (12bc ) TIMER_0_task1.cb = TIMER_0_task1_cb; 1284: 6162 str r2, [r4, #20] timer_add_task(&p_tcc_inst, &TIMER_0_task1); 1286: f104 0108 add.w r1, r4, #8 128a: 4628 mov r0, r5 128c: 4798 blx r3 //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); 128e: 4628 mov r0, r5 1290: 4b0b ldr r3, [pc, #44] ; (12c0 ) } 1292: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} timer_start(&p_tcc_inst); 1296: 4718 bx r3 1298: e000e010 .word 0xe000e010 129c: 000004f1 .word 0x000004f1 12a0: 200000b0 .word 0x200000b0 12a4: 40000800 .word 0x40000800 12a8: 40001c00 .word 0x40001c00 12ac: 00000ea1 .word 0x00000ea1 12b0: 40003800 .word 0x40003800 12b4: 000003d5 .word 0x000003d5 12b8: 00001229 .word 0x00001229 12bc: 00000449 .word 0x00000449 12c0: 0000040d .word 0x0000040d 000012c4 : 12c4: 4b21 ldr r3, [pc, #132] ; (134c ) static uint8_t example_USART_0[12] = "Hello World!"; static uint8_t debug_buffer[DEBUG_MAX_BUFFER_SIZE]; static uint8_t debug_rx_buff[DEBUG_USART_EX_BUFF_SIZE]; void p_usart_init(void) { 12c6: b537 push {r0, r1, r2, r4, r5, lr} 12c8: 2240 movs r2, #64 ; 0x40 12ca: f8c3 20dc str.w r2, [r3, #220] ; 0xdc 12ce: 2243 movs r2, #67 ; 0x43 12d0: f8c3 208c str.w r2, [r3, #140] ; 0x8c } static inline void hri_mclk_set_APBBMASK_SERCOM2_bit(const void *const hw) { MCLK_CRITICAL_SECTION_ENTER(); ((Mclk *)hw)->APBBMASK.reg |= MCLK_APBBMASK_SERCOM2; 12d4: 4a1e ldr r2, [pc, #120] ; (1350 ) hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM2_GCLK_ID_CORE, CONF_GCLK_SERCOM2_CORE_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM2_GCLK_ID_SLOW, CONF_GCLK_SERCOM2_SLOW_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); hri_mclk_set_APBBMASK_SERCOM2_bit(MCLK); usart_async_init(&p_usart_debug_inst, USART_DEBUG_SERCOM, debug_rx_buff, DEBUG_USART_EX_BUFF_SIZE, (void*)NULL); 12d6: 491f ldr r1, [pc, #124] ; (1354 ) 12d8: 6993 ldr r3, [r2, #24] 12da: 4d1f ldr r5, [pc, #124] ; (1358 ) 12dc: f443 7300 orr.w r3, r3, #512 ; 0x200 12e0: 6193 str r3, [r2, #24] 12e2: 4a1e ldr r2, [pc, #120] ; (135c ) 12e4: 2300 movs r3, #0 12e6: f102 0410 add.w r4, r2, #16 12ea: 9300 str r3, [sp, #0] 12ec: 4620 mov r0, r4 12ee: 2310 movs r3, #16 12f0: 47a8 blx r5 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 12f2: 4b1b ldr r3, [pc, #108] ; (1360 ) 12f4: f893 20d8 ldrb.w r2, [r3, #216] ; 0xd8 tmp &= ~PORT_PINCFG_PMUXEN; 12f8: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 12fc: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1300: f883 20d8 strb.w r2, [r3, #216] ; 0xd8 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1304: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXE_Msk; 1308: f002 02f0 and.w r2, r2, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 130c: f042 0203 orr.w r2, r2, #3 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1310: f883 20bc strb.w r2, [r3, #188] ; 0xbc tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1314: f893 20d9 ldrb.w r2, [r3, #217] ; 0xd9 tmp &= ~PORT_PINCFG_PMUXEN; 1318: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 131c: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1320: f883 20d9 strb.w r2, [r3, #217] ; 0xd9 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 1324: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXO_Msk; 1328: f002 020f and.w r2, r2, #15 tmp |= PORT_PMUX_PMUXO(data); 132c: f042 0230 orr.w r2, r2, #48 ; 0x30 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1330: f883 20bc strb.w r2, [r3, #188] ; 0xbc // port init gpio_set_pin_function(USART_DEBUG_RX, USART_DEBUG_RX_MUX); gpio_set_pin_function(USART_DEBUG_TX, USART_DEBUG_TX_MUX); usart_async_enable(&p_usart_debug_inst); 1334: 4620 mov r0, r4 1336: 4b0b ldr r3, [pc, #44] ; (1364 ) 1338: 4798 blx r3 io_write(&p_usart_debug_inst.io, example_USART_0, 12); 133a: 490b ldr r1, [pc, #44] ; (1368 ) 133c: 4b0b ldr r3, [pc, #44] ; (136c ) 133e: 220c movs r2, #12 1340: 4620 mov r0, r4 } 1342: b003 add sp, #12 1344: e8bd 4030 ldmia.w sp!, {r4, r5, lr} io_write(&p_usart_debug_inst.io, example_USART_0, 12); 1348: 4718 bx r3 134a: bf00 nop 134c: 40001c00 .word 0x40001c00 1350: 40000800 .word 0x40000800 1354: 41012000 .word 0x41012000 1358: 00000b49 .word 0x00000b49 135c: 200000e8 .word 0x200000e8 1360: 41008000 .word 0x41008000 1364: 00000bd1 .word 0x00000bd1 1368: 20000000 .word 0x20000000 136c: 000002a5 .word 0x000002a5 00001370 : static lv_disp_buf_t disp_buf; static lv_color_t buf[LV_HOR_RES_MAX * 34]; /*Declare a buffer for 10 lines*/ void p_screen_init(void) { 1370: b530 push {r4, r5, lr} // devices init lv_init(); 1372: 4b1a ldr r3, [pc, #104] ; (13dc ) ssd1963_init(); lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 34); /*Initialize the display buffer*/ 1374: 4c1a ldr r4, [pc, #104] ; (13e0 ) 1376: 4d1b ldr r5, [pc, #108] ; (13e4 ) { 1378: b08d sub sp, #52 ; 0x34 lv_init(); 137a: 4798 blx r3 ssd1963_init(); 137c: 4b1a ldr r3, [pc, #104] ; (13e8 ) 137e: 4798 blx r3 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 34); /*Initialize the display buffer*/ 1380: 2200 movs r2, #0 1382: 491a ldr r1, [pc, #104] ; (13ec ) 1384: 4620 mov r0, r4 1386: f44f 537f mov.w r3, #16320 ; 0x3fc0 138a: 47a8 blx r5 lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ 138c: a801 add r0, sp, #4 138e: 4b18 ldr r3, [pc, #96] ; (13f0 ) 1390: 4798 blx r3 disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/ 1392: 4b18 ldr r3, [pc, #96] ; (13f4 ) 1394: 9304 str r3, [sp, #16] disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 1396: a801 add r0, sp, #4 1398: 4b17 ldr r3, [pc, #92] ; (13f8 ) disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ 139a: 9402 str r4, [sp, #8] lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 139c: 4798 blx r3 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 139e: 4b17 ldr r3, [pc, #92] ; (13fc ) 13a0: 2000 movs r0, #0 13a2: 4798 blx r3 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 13a4: 4b16 ldr r3, [pc, #88] ; (1400 ) 13a6: 2100 movs r1, #0 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 13a8: 4604 mov r4, r0 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 13aa: 4798 blx r3 lv_img_set_src(hornet_image, &hornet); 13ac: 4b15 ldr r3, [pc, #84] ; (1404 ) 13ae: 4916 ldr r1, [pc, #88] ; (1408 ) lv_obj_t* hornet_image = lv_img_create(scr, NULL); 13b0: 4605 mov r5, r0 lv_img_set_src(hornet_image, &hornet); 13b2: 4798 blx r3 lv_obj_set_pos(hornet_image, 0, 0); 13b4: 2200 movs r2, #0 13b6: 4611 mov r1, r2 13b8: 4628 mov r0, r5 13ba: 4d14 ldr r5, [pc, #80] ; (140c ) 13bc: 47a8 blx r5 lv_obj_t* random_text = lv_label_create(scr, NULL); 13be: 4b14 ldr r3, [pc, #80] ; (1410 ) 13c0: 2100 movs r1, #0 13c2: 4620 mov r0, r4 13c4: 4798 blx r3 lv_obj_set_pos(random_text, 90, 35); 13c6: 2223 movs r2, #35 ; 0x23 lv_obj_t* random_text = lv_label_create(scr, NULL); 13c8: 4604 mov r4, r0 lv_obj_set_pos(random_text, 90, 35); 13ca: 215a movs r1, #90 ; 0x5a 13cc: 47a8 blx r5 lv_label_set_text(random_text, "Hello World"); 13ce: 4911 ldr r1, [pc, #68] ; (1414 ) 13d0: 4b11 ldr r3, [pc, #68] ; (1418 ) 13d2: 4620 mov r0, r4 13d4: 4798 blx r3 } 13d6: b00d add sp, #52 ; 0x34 13d8: bd30 pop {r4, r5, pc} 13da: bf00 nop 13dc: 00001cdd .word 0x00001cdd 13e0: 20000148 .word 0x20000148 13e4: 0000d7e1 .word 0x0000d7e1 13e8: 0000149d .word 0x0000149d 13ec: 2000016c .word 0x2000016c 13f0: 0000d7a1 .word 0x0000d7a1 13f4: 00001641 .word 0x00001641 13f8: 0000d801 .word 0x0000d801 13fc: 00001825 .word 0x00001825 1400: 0001475d .word 0x0001475d 1404: 00014509 .word 0x00014509 1408: 000164ec .word 0x000164ec 140c: 00002855 .word 0x00002855 1410: 0001597d .word 0x0001597d 1414: 000164e0 .word 0x000164e0 1418: 00015681 .word 0x00015681 0000141c : void p_screen_service(void) { lv_task_handler(); 141c: 4b00 ldr r3, [pc, #0] ; (1420 ) 141e: 4718 bx r3 1420: 0000fa45 .word 0x0000fa45 00001424 : ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1424: 4909 ldr r1, [pc, #36] ; (144c ) /** * Write command * @param cmd the command */ static inline void ssd1963_cmd(uint8_t cmd) { 1426: b508 push {r3, lr} 1428: 2340 movs r3, #64 ; 0x40 142a: 614b str r3, [r1, #20] if(cmd_mode == false) { 142c: 4b08 ldr r3, [pc, #32] ; (1450 ) { 142e: 4602 mov r2, r0 if(cmd_mode == false) { 1430: 7818 ldrb r0, [r3, #0] 1432: b918 cbnz r0, 143c 1434: 2020 movs r0, #32 1436: 6148 str r0, [r1, #20] cmd_mode = true; 1438: 2101 movs r1, #1 143a: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_CS(0); ssd1963_cmd_mode(); LV_DRV_DISP_PAR_WR_WORD(cmd); 143c: 4b05 ldr r3, [pc, #20] ; (1454 ) 143e: 4906 ldr r1, [pc, #24] ; (1458 ) 1440: 4806 ldr r0, [pc, #24] ; (145c ) 1442: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1444: 4b01 ldr r3, [pc, #4] ; (144c ) 1446: 2240 movs r2, #64 ; 0x40 1448: 619a str r2, [r3, #24] LV_DRV_DISP_PAR_CS(1); } 144a: bd08 pop {r3, pc} 144c: 41008000 .word 0x41008000 1450: 2000000c .word 0x2000000c 1454: 000010ad .word 0x000010ad 1458: 1c03c3f7 .word 0x1c03c3f7 145c: 41008080 .word 0x41008080 00001460 : ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1460: 4909 ldr r1, [pc, #36] ; (1488 ) /** * Write data * @param data the data */ static inline void ssd1963_data(uint8_t data) { 1462: b508 push {r3, lr} 1464: 2340 movs r3, #64 ; 0x40 1466: 614b str r3, [r1, #20] if(cmd_mode != false) { 1468: 4b08 ldr r3, [pc, #32] ; (148c ) { 146a: 4602 mov r2, r0 if(cmd_mode != false) { 146c: 7818 ldrb r0, [r3, #0] 146e: b118 cbz r0, 1478 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1470: 2020 movs r0, #32 1472: 6188 str r0, [r1, #24] cmd_mode = false; 1474: 2100 movs r1, #0 1476: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_CS(0); ssd1963_data_mode(); LV_DRV_DISP_PAR_WR_WORD(data); 1478: 4b05 ldr r3, [pc, #20] ; (1490 ) 147a: 4906 ldr r1, [pc, #24] ; (1494 ) 147c: 4806 ldr r0, [pc, #24] ; (1498 ) 147e: 4798 blx r3 1480: 4b01 ldr r3, [pc, #4] ; (1488 ) 1482: 2240 movs r2, #64 ; 0x40 1484: 619a str r2, [r3, #24] LV_DRV_DISP_PAR_CS(1); } 1486: bd08 pop {r3, pc} 1488: 41008000 .word 0x41008000 148c: 2000000c .word 0x2000000c 1490: 000010ad .word 0x000010ad 1494: 1c03c3f7 .word 0x1c03c3f7 1498: 41008080 .word 0x41008080 0000149c : { 149c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} asm volatile("nop"); 14a0: bf00 nop 14a2: 4f5f ldr r7, [pc, #380] ; (1620 ) LV_DRV_DELAY_MS(50); 14a4: 4e5f ldr r6, [pc, #380] ; (1624 ) 14a6: 2410 movs r4, #16 14a8: 61bc str r4, [r7, #24] 14aa: 2032 movs r0, #50 ; 0x32 14ac: 47b0 blx r6 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 14ae: 617c str r4, [r7, #20] asm volatile("nop"); 14b0: bf00 nop LV_DRV_DELAY_MS(50); 14b2: 2032 movs r0, #50 ; 0x32 14b4: 47b0 blx r6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 14b6: 61bc str r4, [r7, #24] LV_DRV_DELAY_MS(50); 14b8: 2032 movs r0, #50 ; 0x32 14ba: 47b0 blx r6 asm volatile("nop"); 14bc: bf00 nop ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 14be: f04f 0840 mov.w r8, #64 ; 0x40 LV_DRV_DELAY_MS(10); 14c2: 200a movs r0, #10 14c4: f8c7 8014 str.w r8, [r7, #20] 14c8: 47b0 blx r6 LV_DRV_DELAY_MS(5); 14ca: 2005 movs r0, #5 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 14cc: f8c7 8018 str.w r8, [r7, #24] ssd1963_cmd(0x01); 14d0: 4d55 ldr r5, [pc, #340] ; (1628 ) ssd1963_data(0x2F); //N=0x36 for 6.5M, 0x23 for 10M crystal 14d2: 4c56 ldr r4, [pc, #344] ; (162c ) ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 14d4: f8df 9160 ldr.w r9, [pc, #352] ; 1638 LV_DRV_DELAY_MS(5); 14d8: 47b0 blx r6 ssd1963_cmd(0x01); 14da: 2001 movs r0, #1 14dc: 47a8 blx r5 LV_DRV_DELAY_MS(20); 14de: 2014 movs r0, #20 14e0: 47b0 blx r6 ssd1963_cmd(0x01); 14e2: 2001 movs r0, #1 14e4: 47a8 blx r5 LV_DRV_DELAY_MS(20); 14e6: 2014 movs r0, #20 14e8: 47b0 blx r6 ssd1963_cmd(0x01); 14ea: 2001 movs r0, #1 14ec: 47a8 blx r5 LV_DRV_DELAY_MS(20); 14ee: 2014 movs r0, #20 14f0: 47b0 blx r6 ssd1963_cmd(0xE2); //PLL multiplier, set PLL clock to 120M 14f2: 20e2 movs r0, #226 ; 0xe2 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 14f4: f8c7 8014 str.w r8, [r7, #20] 14f8: 47a8 blx r5 ssd1963_data(0x2F); //N=0x36 for 6.5M, 0x23 for 10M crystal 14fa: 202f movs r0, #47 ; 0x2f 14fc: 47a0 blx r4 ssd1963_data(0x03); 14fe: 2003 movs r0, #3 1500: 47a0 blx r4 ssd1963_data(0x54); 1502: 2054 movs r0, #84 ; 0x54 1504: 47a0 blx r4 ssd1963_cmd(0xE0); // PLL enable 1506: 20e0 movs r0, #224 ; 0xe0 1508: 47a8 blx r5 ssd1963_data(0x01); 150a: 2001 movs r0, #1 150c: 47a0 blx r4 delay_us(100); 150e: 4b48 ldr r3, [pc, #288] ; (1630 ) 1510: 2064 movs r0, #100 ; 0x64 1512: 4798 blx r3 ssd1963_cmd(0xE0); 1514: 20e0 movs r0, #224 ; 0xe0 1516: 47a8 blx r5 ssd1963_data(0x03); // now, use PLL output as system clock 1518: 2003 movs r0, #3 151a: 47a0 blx r4 delay_ms(1); 151c: 2001 movs r0, #1 151e: 47b0 blx r6 ssd1963_cmd(0x01); 1520: 2001 movs r0, #1 1522: 47a8 blx r5 delay_ms(1); 1524: 2001 movs r0, #1 1526: 47b0 blx r6 ssd1963_cmd(0xE6); //PLL setting for PCLK, depends on resolution 1528: 20e6 movs r0, #230 ; 0xe6 152a: 47a8 blx r5 ssd1963_data(0x01); 152c: 2001 movs r0, #1 152e: 47a0 blx r4 ssd1963_data(0xCC); 1530: 20cc movs r0, #204 ; 0xcc 1532: 47a0 blx r4 ssd1963_data(0xCC); 1534: 20cc movs r0, #204 ; 0xcc 1536: 47a0 blx r4 ssd1963_cmd(0xB0); 1538: 20b0 movs r0, #176 ; 0xb0 153a: 47a8 blx r5 ssd1963_data(0x28); // set 18-bit for 7" panel TY700TFT800480 153c: 2028 movs r0, #40 ; 0x28 153e: 47a0 blx r4 ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 1540: 4e3c ldr r6, [pc, #240] ; (1634 ) ssd1963_data(0x80); // set TTL mode 1542: 2080 movs r0, #128 ; 0x80 1544: 47a0 blx r4 ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 1546: 47b0 blx r6 1548: 47c8 blx r9 154a: 3801 subs r0, #1 154c: f3c0 2007 ubfx r0, r0, #8, #8 1550: 47a0 blx r4 ssd1963_data(SSD1963_HOR_RES-1); 1552: 47b0 blx r6 1554: 47c8 blx r9 1556: 3801 subs r0, #1 1558: b2c0 uxtb r0, r0 155a: 47a0 blx r4 ssd1963_data((SSD1963_VER_RES-1)>>8); 155c: f8df 90dc ldr.w r9, [pc, #220] ; 163c 1560: 47b0 blx r6 1562: 47c8 blx r9 1564: 3801 subs r0, #1 1566: f3c0 2007 ubfx r0, r0, #8, #8 156a: 47a0 blx r4 ssd1963_data(SSD1963_VER_RES-1); 156c: 47b0 blx r6 156e: 47c8 blx r9 1570: 3801 subs r0, #1 1572: b2c0 uxtb r0, r0 1574: 47a0 blx r4 ssd1963_data(0x00); 1576: 2000 movs r0, #0 1578: 47a0 blx r4 ssd1963_cmd(0xF0); //Pixel Data Interface Format 157a: 20f0 movs r0, #240 ; 0xf0 157c: 47a8 blx r5 ssd1963_data(0x03); //16-bit(565 format) data 157e: 2003 movs r0, #3 1580: 47a0 blx r4 ssd1963_cmd(0x3A); //Set the current pixel format for RGB image data 1582: 203a movs r0, #58 ; 0x3a 1584: 47a8 blx r5 ssd1963_data(0x55); //16-bit/pixel 1586: 2055 movs r0, #85 ; 0x55 1588: 47a0 blx r4 ssd1963_cmd(0xb4); //SET HBP, 158a: 20b4 movs r0, #180 ; 0xb4 158c: 47a8 blx r5 ssd1963_data(0x02); //SET HSYNC Tatol 525 158e: 2002 movs r0, #2 1590: 47a0 blx r4 ssd1963_data(0x0d); 1592: 200d movs r0, #13 1594: 47a0 blx r4 ssd1963_data(0x00); //SET HBP 43 1596: 2000 movs r0, #0 1598: 47a0 blx r4 ssd1963_data(0x2b); 159a: 202b movs r0, #43 ; 0x2b 159c: 47a0 blx r4 ssd1963_data(0x28); //SET VBP 41=40+1 159e: 2028 movs r0, #40 ; 0x28 15a0: 47a0 blx r4 ssd1963_data(0x00); //SET Hsync pulse start position 15a2: 2000 movs r0, #0 15a4: 47a0 blx r4 ssd1963_data(0x00); 15a6: 2000 movs r0, #0 15a8: 47a0 blx r4 ssd1963_data(0x00); //SET Hsync pulse subpixel start position 15aa: 2000 movs r0, #0 15ac: 47a0 blx r4 ssd1963_cmd(0xb6); //SET VBP, 15ae: 20b6 movs r0, #182 ; 0xb6 15b0: 47a8 blx r5 ssd1963_data(0x01); //SET Vsync total 286=285+1 15b2: 2001 movs r0, #1 15b4: 47a0 blx r4 ssd1963_data(0x1d); 15b6: 201d movs r0, #29 15b8: 47a0 blx r4 ssd1963_data(0x00); //SET VBP=12 15ba: 2000 movs r0, #0 15bc: 47a0 blx r4 ssd1963_data(0x0c); 15be: 200c movs r0, #12 15c0: 47a0 blx r4 ssd1963_data(0x09); //SET Vsync pulse 10=9+1 15c2: 2009 movs r0, #9 15c4: 47a0 blx r4 ssd1963_data(0x00); //SET Vsync pulse start position 15c6: 2000 movs r0, #0 15c8: 47a0 blx r4 ssd1963_data(0x00); 15ca: 2000 movs r0, #0 15cc: 47a0 blx r4 ssd1963_cmd(0x2a); //SET column address 15ce: 202a movs r0, #42 ; 0x2a 15d0: 47a8 blx r5 ssd1963_data(0x00); //SET start column address=0 15d2: 2000 movs r0, #0 15d4: 47a0 blx r4 ssd1963_data(0x00); 15d6: 2000 movs r0, #0 15d8: 47a0 blx r4 ssd1963_data(0x01); //SET end column address=479 15da: 2001 movs r0, #1 15dc: 47a0 blx r4 ssd1963_data(0xDF); 15de: 20df movs r0, #223 ; 0xdf 15e0: 47a0 blx r4 ssd1963_cmd(0x2b); //SET page address 15e2: 202b movs r0, #43 ; 0x2b 15e4: 47a8 blx r5 ssd1963_data(0x00); //SET start page address=0 15e6: 2000 movs r0, #0 15e8: 47a0 blx r4 ssd1963_data(0x00); 15ea: 2000 movs r0, #0 15ec: 47a0 blx r4 ssd1963_data(0x01); //SET end page address=271 15ee: 2001 movs r0, #1 15f0: 47a0 blx r4 ssd1963_data(0x0F); 15f2: 200f movs r0, #15 15f4: 47a0 blx r4 ssd1963_cmd(0x29); //display on 15f6: 2029 movs r0, #41 ; 0x29 15f8: 47a8 blx r5 ssd1963_cmd(0xBE); 15fa: 20be movs r0, #190 ; 0xbe 15fc: 47a8 blx r5 ssd1963_data(0x06); 15fe: 2006 movs r0, #6 1600: 47a0 blx r4 ssd1963_data(0xFF); 1602: 20ff movs r0, #255 ; 0xff 1604: 47a0 blx r4 ssd1963_data(0x01); 1606: 2001 movs r0, #1 1608: 47a0 blx r4 ssd1963_data(0xFF); 160a: 20ff movs r0, #255 ; 0xff 160c: 47a0 blx r4 ssd1963_data(0x00); 160e: 2000 movs r0, #0 1610: 47a0 blx r4 ssd1963_data(0x01); 1612: 2001 movs r0, #1 1614: 47a0 blx r4 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1616: f8c7 8018 str.w r8, [r7, #24] } 161a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 161e: bf00 nop 1620: 41008000 .word 0x41008000 1624: 00000525 .word 0x00000525 1628: 00001425 .word 0x00001425 162c: 00001461 .word 0x00001461 1630: 00000501 .word 0x00000501 1634: 0000d941 .word 0x0000d941 1638: 0000d94d .word 0x0000d94d 163c: 0000d971 .word 0x0000d971 00001640 : { 1640: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(area->x2 < 0) return; 1644: f9b1 3004 ldrsh.w r3, [r1, #4] { 1648: ed2d 8b02 vpush {d8} if(area->x2 < 0) return; 164c: 2b00 cmp r3, #0 { 164e: ee08 0a10 vmov s16, r0 1652: b081 sub sp, #4 1654: 460d mov r5, r1 1656: 4690 mov r8, r2 if(area->x2 < 0) return; 1658: f2c0 8081 blt.w 175e if(area->y2 < 0) return; 165c: f9b1 3006 ldrsh.w r3, [r1, #6] 1660: 2b00 cmp r3, #0 1662: db7c blt.n 175e if(area->x1 > SSD1963_HOR_RES - 1) return; 1664: 4f40 ldr r7, [pc, #256] ; (1768 ) 1666: f8df a118 ldr.w sl, [pc, #280] ; 1780 166a: 47b8 blx r7 166c: 47d0 blx sl 166e: f9b5 3000 ldrsh.w r3, [r5] 1672: 4283 cmp r3, r0 1674: da73 bge.n 175e if(area->y1 > SSD1963_VER_RES - 1) return; 1676: 47b8 blx r7 1678: 4c3c ldr r4, [pc, #240] ; (176c ) 167a: 47a0 blx r4 167c: f9b5 6002 ldrsh.w r6, [r5, #2] 1680: 42b0 cmp r0, r6 1682: 46a3 mov fp, r4 1684: dd6b ble.n 175e int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 1686: f9b5 4000 ldrsh.w r4, [r5] int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 168a: 47b8 blx r7 168c: 47d0 blx sl 168e: f9b5 3004 ldrsh.w r3, [r5, #4] 1692: 4298 cmp r0, r3 int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 1694: ea24 74e4 bic.w r4, r4, r4, asr #31 int32_t act_y1 = area->y1 < 0 ? 0 : area->y1; 1698: ea26 76e6 bic.w r6, r6, r6, asr #31 int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 169c: dc52 bgt.n 1744 169e: 47b8 blx r7 16a0: 47d0 blx sl 16a2: f100 3aff add.w sl, r0, #4294967295 ; 0xffffffff int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 16a6: 47b8 blx r7 16a8: 47d8 blx fp 16aa: f9b5 3006 ldrsh.w r3, [r5, #6] 16ae: 4298 cmp r0, r3 16b0: dc4a bgt.n 1748 16b2: 47b8 blx r7 16b4: 47d8 blx fp 16b6: 1e47 subs r7, r0, #1 ssd1963_cmd(0x002A); 16b8: f8df 90c8 ldr.w r9, [pc, #200] ; 1784 ssd1963_data(act_x1 >> 8); 16bc: f8df b0c8 ldr.w fp, [pc, #200] ; 1788 ssd1963_cmd(0x002A); 16c0: 202a movs r0, #42 ; 0x2a 16c2: 47c8 blx r9 ssd1963_data(act_x1 >> 8); 16c4: f3c4 2007 ubfx r0, r4, #8, #8 16c8: 47d8 blx fp ssd1963_data(0x00FF & act_x1); 16ca: b2e0 uxtb r0, r4 16cc: 47d8 blx fp ssd1963_data(act_x2 >> 8); 16ce: f3ca 2007 ubfx r0, sl, #8, #8 16d2: 47d8 blx fp ssd1963_data(0x00FF & act_x2); 16d4: fa5f f08a uxtb.w r0, sl 16d8: 47d8 blx fp ssd1963_cmd(0x002B); 16da: 202b movs r0, #43 ; 0x2b 16dc: 47c8 blx r9 ssd1963_data(act_y1 >> 8); 16de: f3c6 2007 ubfx r0, r6, #8, #8 16e2: 47d8 blx fp ssd1963_data(0x00FF & act_y1); 16e4: b2f0 uxtb r0, r6 16e6: 47d8 blx fp ssd1963_data(act_y2 >> 8); 16e8: f3c7 2007 ubfx r0, r7, #8, #8 16ec: 47d8 blx fp ssd1963_data(0x00FF & act_y2); 16ee: b2f8 uxtb r0, r7 16f0: 47d8 blx fp ssd1963_cmd(0x2c); 16f2: 202c movs r0, #44 ; 0x2c 16f4: 47c8 blx r9 uint16_t full_w = area->x2 - area->x1 + 1; 16f6: 88ab ldrh r3, [r5, #4] if(cmd_mode != false) { 16f8: 4a1d ldr r2, [pc, #116] ; (1770 ) uint16_t full_w = area->x2 - area->x1 + 1; 16fa: 882d ldrh r5, [r5, #0] if(cmd_mode != false) { 16fc: 7811 ldrb r1, [r2, #0] uint16_t full_w = area->x2 - area->x1 + 1; 16fe: 3301 adds r3, #1 1700: 1b5d subs r5, r3, r5 1702: b2ad uxth r5, r5 if(cmd_mode != false) { 1704: 4b1b ldr r3, [pc, #108] ; (1774 ) 1706: b119 cbz r1, 1710 1708: 2120 movs r1, #32 170a: 6199 str r1, [r3, #24] cmd_mode = false; 170c: 2100 movs r1, #0 170e: 7011 strb r1, [r2, #0] ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1710: 2240 movs r2, #64 ; 0x40 1712: 615a str r2, [r3, #20] uint16_t act_w = act_x2 - act_x1 + 1; 1714: f1c4 0301 rsb r3, r4, #1 1718: 4453 add r3, sl LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 171a: 4817 ldr r0, [pc, #92] ; (1778 ) 171c: f8df a06c ldr.w sl, [pc, #108] ; 178c 1720: f8df b06c ldr.w fp, [pc, #108] ; 1790 uint16_t act_w = act_x2 - act_x1 + 1; 1724: b29c uxth r4, r3 color_p += full_w; 1726: 006d lsls r5, r5, #1 for(i = act_y1; i <= act_y2; i++) { 1728: 42be cmp r6, r7 172a: dd0f ble.n 174c ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 172c: 4b11 ldr r3, [pc, #68] ; (1774 ) 172e: 2240 movs r2, #64 ; 0x40 1730: 619a str r2, [r3, #24] lv_disp_flush_ready(disp_drv); 1732: ee18 0a10 vmov r0, s16 1736: 4b11 ldr r3, [pc, #68] ; (177c ) } 1738: b001 add sp, #4 173a: ecbd 8b02 vpop {d8} 173e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_disp_flush_ready(disp_drv); 1742: 4718 bx r3 int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 1744: 469a mov sl, r3 1746: e7ae b.n 16a6 int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 1748: 461f mov r7, r3 174a: e7b5 b.n 16b8 LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 174c: 4642 mov r2, r8 174e: 4623 mov r3, r4 1750: 4651 mov r1, sl 1752: 3601 adds r6, #1 1754: 47d8 blx fp color_p += full_w; 1756: 44a8 add r8, r5 for(i = act_y1; i <= act_y2; i++) { 1758: 4807 ldr r0, [pc, #28] ; (1778 ) 175a: b236 sxth r6, r6 175c: e7e4 b.n 1728 } 175e: b001 add sp, #4 1760: ecbd 8b02 vpop {d8} 1764: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 1768: 0000d941 .word 0x0000d941 176c: 0000d971 .word 0x0000d971 1770: 2000000c .word 0x2000000c 1774: 41008000 .word 0x41008000 1778: 41008080 .word 0x41008080 177c: 0000d9fd .word 0x0000d9fd 1780: 0000d94d .word 0x0000d94d 1784: 00001425 .word 0x00001425 1788: 00001461 .word 0x00001461 178c: 1c03c3f7 .word 0x1c03c3f7 1790: 000010cd .word 0x000010cd 00001794 : bool lv_debug_check_null(const void * p) { if(p) return true; return false; } 1794: 3800 subs r0, #0 1796: bf18 it ne 1798: 2001 movne r0, #1 179a: 4770 bx lr 0000179c : LV_LOG_WARN("lv_debug_check_str: string is longer than LV_DEBUG_STR_MAX_LENGTH"); return false; } void lv_debug_log_error(const char * msg, uint64_t value) { 179c: b5f0 push {r4, r5, r6, r7, lr} static const char hex[] = "0123456789ABCDEF"; size_t msg_len = strlen(msg); 179e: 4b1b ldr r3, [pc, #108] ; (180c ) { 17a0: b0c3 sub sp, #268 ; 0x10c 17a2: 4607 mov r7, r0 17a4: 4616 mov r6, r2 size_t msg_len = strlen(msg); 17a6: 4798 blx r3 uint32_t value_len = sizeof(unsigned long int); if(msg_len < 230) { 17a8: 28e5 cmp r0, #229 ; 0xe5 size_t msg_len = strlen(msg); 17aa: 4604 mov r4, r0 if(msg_len < 230) { 17ac: d829 bhi.n 1802 char buf[255]; char * bufp = buf; /*Add the function name*/ _lv_memcpy(bufp, msg, msg_len); 17ae: ad02 add r5, sp, #8 17b0: 4602 mov r2, r0 17b2: 4b17 ldr r3, [pc, #92] ; (1810 ) 17b4: 4639 mov r1, r7 17b6: 4628 mov r0, r5 17b8: 4798 blx r3 bufp += msg_len; 17ba: 192b adds r3, r5, r4 /*Add value in hey*/ *bufp = ' '; 17bc: 2220 movs r2, #32 17be: 552a strb r2, [r5, r4] bufp ++; *bufp = '('; 17c0: 2228 movs r2, #40 ; 0x28 17c2: 705a strb r2, [r3, #1] bufp ++; *bufp = '0'; 17c4: 2230 movs r2, #48 ; 0x30 17c6: 709a strb r2, [r3, #2] int8_t i; for(i = value_len * 2 - 1; i >= 0; i--) { uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; *bufp = hex[x]; 17c8: 4c12 ldr r4, [pc, #72] ; (1814 ) *bufp = 'x'; 17ca: 2278 movs r2, #120 ; 0x78 17cc: 70da strb r2, [r3, #3] bufp ++; 17ce: 1d18 adds r0, r3, #4 17d0: 221c movs r2, #28 uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; 17d2: fa26 f102 lsr.w r1, r6, r2 *bufp = hex[x]; 17d6: f001 010f and.w r1, r1, #15 17da: 4421 add r1, r4 for(i = value_len * 2 - 1; i >= 0; i--) { 17dc: 3a04 subs r2, #4 *bufp = hex[x]; 17de: 7cc9 ldrb r1, [r1, #19] 17e0: f800 1b01 strb.w r1, [r0], #1 for(i = value_len * 2 - 1; i >= 0; i--) { 17e4: 1d11 adds r1, r2, #4 17e6: d1f4 bne.n 17d2 bufp++; } *bufp = ')'; 17e8: 2229 movs r2, #41 ; 0x29 17ea: 731a strb r2, [r3, #12] bufp ++; *bufp = '\0'; 17ec: 2200 movs r2, #0 17ee: 735a strb r2, [r3, #13] LV_LOG_ERROR(buf); 17f0: 4b09 ldr r3, [pc, #36] ; (1818 ) 17f2: 9500 str r5, [sp, #0] 17f4: 22bc movs r2, #188 ; 0xbc } else { LV_LOG_ERROR(msg); 17f6: 4909 ldr r1, [pc, #36] ; (181c ) 17f8: 4c09 ldr r4, [pc, #36] ; (1820 ) 17fa: 2003 movs r0, #3 17fc: 47a0 blx r4 } } 17fe: b043 add sp, #268 ; 0x10c 1800: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_ERROR(msg); 1802: 4b05 ldr r3, [pc, #20] ; (1818 ) 1804: 9700 str r7, [sp, #0] 1806: 22bf movs r2, #191 ; 0xbf 1808: e7f5 b.n 17f6 180a: bf00 nop 180c: 0001637d .word 0x0001637d 1810: 0000ec79 .word 0x0000ec79 1814: 0001eb5d .word 0x0001eb5d 1818: 0001eb81 .word 0x0001eb81 181c: 0001ea53 .word 0x0001ea53 1820: 0000e931 .word 0x0000e931 00001824 : * @param disp pointer to display which active screen should be get. (NULL to use the default * screen) * @return pointer to the active screen object (loaded by 'lv_scr_load()') */ lv_obj_t * lv_disp_get_scr_act(lv_disp_t * disp) { 1824: b537 push {r0, r1, r2, r4, r5, lr} if(!disp) disp = lv_disp_get_default(); 1826: 4604 mov r4, r0 1828: b970 cbnz r0, 1848 182a: 4b08 ldr r3, [pc, #32] ; (184c ) 182c: 4798 blx r3 if(!disp) { 182e: 4604 mov r4, r0 1830: b950 cbnz r0, 1848 LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); 1832: 4b07 ldr r3, [pc, #28] ; (1850 ) 1834: 9300 str r3, [sp, #0] 1836: 4907 ldr r1, [pc, #28] ; (1854 ) 1838: 4b07 ldr r3, [pc, #28] ; (1858 ) 183a: 4d08 ldr r5, [pc, #32] ; (185c ) 183c: 222e movs r2, #46 ; 0x2e 183e: 2002 movs r0, #2 1840: 47a8 blx r5 return NULL; } return disp->act_scr; } 1842: 4620 mov r0, r4 1844: b003 add sp, #12 1846: bd30 pop {r4, r5, pc} return disp->act_scr; 1848: 6be4 ldr r4, [r4, #60] ; 0x3c 184a: e7fa b.n 1842 184c: 0000d941 .word 0x0000d941 1850: 0001ebc4 .word 0x0001ebc4 1854: 0001eb94 .word 0x0001eb94 1858: 0001ed34 .word 0x0001ed34 185c: 0000e931 .word 0x0000e931 00001860 : * Return with the top layer. (Same on every screen and it is above the normal screen layer) * @param disp pointer to display which top layer should be get. (NULL to use the default screen) * @return pointer to the top layer object (transparent screen sized lv_obj) */ lv_obj_t * lv_disp_get_layer_top(lv_disp_t * disp) { 1860: b537 push {r0, r1, r2, r4, r5, lr} if(!disp) disp = lv_disp_get_default(); 1862: 4604 mov r4, r0 1864: b970 cbnz r0, 1884 1866: 4b08 ldr r3, [pc, #32] ; (1888 ) 1868: 4798 blx r3 if(!disp) { 186a: 4604 mov r4, r0 186c: b950 cbnz r0, 1884 LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); 186e: 4b07 ldr r3, [pc, #28] ; (188c ) 1870: 9300 str r3, [sp, #0] 1872: 4907 ldr r1, [pc, #28] ; (1890 ) 1874: 4b07 ldr r3, [pc, #28] ; (1894 ) 1876: 4d08 ldr r5, [pc, #32] ; (1898 ) 1878: 224b movs r2, #75 ; 0x4b 187a: 2002 movs r0, #2 187c: 47a8 blx r5 return NULL; } return disp->top_layer; } 187e: 4620 mov r0, r4 1880: b003 add sp, #12 1882: bd30 pop {r4, r5, pc} return disp->top_layer; 1884: 6c24 ldr r4, [r4, #64] ; 0x40 1886: e7fa b.n 187e 1888: 0000d941 .word 0x0000d941 188c: 0001ebfd .word 0x0001ebfd 1890: 0001eb94 .word 0x0001eb94 1894: 0001ed48 .word 0x0001ed48 1898: 0000e931 .word 0x0000e931 0000189c : * layer) * @param disp pointer to display which sys. layer should be get. (NULL to use the default screen) * @return pointer to the sys layer object (transparent screen sized lv_obj) */ lv_obj_t * lv_disp_get_layer_sys(lv_disp_t * disp) { 189c: b537 push {r0, r1, r2, r4, r5, lr} if(!disp) disp = lv_disp_get_default(); 189e: 4604 mov r4, r0 18a0: b970 cbnz r0, 18c0 18a2: 4b08 ldr r3, [pc, #32] ; (18c4 ) 18a4: 4798 blx r3 if(!disp) { 18a6: 4604 mov r4, r0 18a8: b950 cbnz r0, 18c0 LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); 18aa: 4b07 ldr r3, [pc, #28] ; (18c8 ) 18ac: 9300 str r3, [sp, #0] 18ae: 4907 ldr r1, [pc, #28] ; (18cc ) 18b0: 4b07 ldr r3, [pc, #28] ; (18d0 ) 18b2: 4d08 ldr r5, [pc, #32] ; (18d4 ) 18b4: 225c movs r2, #92 ; 0x5c 18b6: 2002 movs r0, #2 18b8: 47a8 blx r5 return NULL; } return disp->sys_layer; } 18ba: 4620 mov r0, r4 18bc: b003 add sp, #12 18be: bd30 pop {r4, r5, pc} return disp->sys_layer; 18c0: 6c64 ldr r4, [r4, #68] ; 0x44 18c2: e7fa b.n 18ba 18c4: 0000d941 .word 0x0000d941 18c8: 0001ec36 .word 0x0001ec36 18cc: 0001eb94 .word 0x0001eb94 18d0: 0001ed5e .word 0x0001ed5e 18d4: 0000e931 .word 0x0000e931 000018d8 : if(group->focus_cb) group->focus_cb(group); } static void obj_to_foreground(lv_obj_t * obj) { 18d8: b570 push {r4, r5, r6, lr} /*Search for 'top' attribute*/ lv_obj_t * i = obj; lv_obj_t * last_top = NULL; while(i != NULL) { if(i->top != 0) last_top = i; i = lv_obj_get_parent(i); 18da: 4d09 ldr r5, [pc, #36] ; (1900 ) lv_obj_t * last_top = NULL; 18dc: 2400 movs r4, #0 while(i != NULL) { 18de: b928 cbnz r0, 18ec } if(last_top != NULL) { 18e0: b164 cbz r4, 18fc /*Move the last_top object to the foreground*/ lv_obj_move_foreground(last_top); 18e2: 4620 mov r0, r4 18e4: 4b07 ldr r3, [pc, #28] ; (1904 ) } } 18e6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_move_foreground(last_top); 18ea: 4718 bx r3 if(i->top != 0) last_top = i; 18ec: f890 3034 ldrb.w r3, [r0, #52] ; 0x34 18f0: f013 0f20 tst.w r3, #32 18f4: bf18 it ne 18f6: 4604 movne r4, r0 i = lv_obj_get_parent(i); 18f8: 47a8 blx r5 18fa: e7f0 b.n 18de } 18fc: bd70 pop {r4, r5, r6, pc} 18fe: bf00 nop 1900: 000020d5 .word 0x000020d5 1904: 000027c5 .word 0x000027c5 00001908 : { 1908: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} if(group->frozen) return; 190c: 7d06 ldrb r6, [r0, #20] 190e: f016 0601 ands.w r6, r6, #1 { 1912: 4605 mov r5, r0 1914: 4688 mov r8, r1 1916: 4617 mov r7, r2 if(group->frozen) return; 1918: d15c bne.n 19d4 lv_obj_t ** obj_next = group->obj_focus; 191a: 68c4 ldr r4, [r0, #12] if(!lv_obj_get_hidden(*obj_next)) break; 191c: f8df a0c8 ldr.w sl, [pc, #200] ; 19e8 bool can_begin = true; 1920: f04f 0901 mov.w r9, #1 if(obj_next == NULL) { 1924: 2c00 cmp r4, #0 1926: d14c bne.n 19c2 if(group->wrap || obj_sentinel == NULL) { 1928: 7d2b ldrb r3, [r5, #20] 192a: 06db lsls r3, r3, #27 192c: d401 bmi.n 1932 192e: 2e00 cmp r6, #0 1930: d150 bne.n 19d4 if(!can_begin) return; 1932: f1b9 0f00 cmp.w r9, #0 1936: d04d beq.n 19d4 obj_next = begin(&group->obj_ll); 1938: 4628 mov r0, r5 193a: 47c0 blx r8 193c: 4604 mov r4, r0 if(obj_sentinel == NULL) { 193e: 2e00 cmp r6, #0 1940: d13a bne.n 19b8 if(obj_sentinel == NULL) return; /*Group is empty*/ 1942: 2800 cmp r0, #0 1944: d046 beq.n 19d4 1946: 4606 mov r6, r0 can_begin = false; 1948: f04f 0900 mov.w r9, #0 if(!lv_obj_get_hidden(*obj_next)) break; 194c: 6820 ldr r0, [r4, #0] 194e: 47d0 blx sl 1950: 4602 mov r2, r0 1952: 2800 cmp r0, #0 1954: d1e6 bne.n 1924 if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ 1956: 68eb ldr r3, [r5, #12] 1958: 42a3 cmp r3, r4 195a: d03b beq.n 19d4 if(group->obj_focus) { 195c: 4e1f ldr r6, [pc, #124] ; (19dc ) 195e: b17b cbz r3, 1980 (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 1960: 6818 ldr r0, [r3, #0] 1962: 9201 str r2, [sp, #4] 1964: 69c3 ldr r3, [r0, #28] 1966: 2117 movs r1, #23 1968: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); 196a: 68eb ldr r3, [r5, #12] 196c: 9a01 ldr r2, [sp, #4] 196e: 6818 ldr r0, [r3, #0] 1970: 210e movs r1, #14 1972: 47b0 blx r6 if(res != LV_RES_OK) return; 1974: 2801 cmp r0, #1 1976: d12d bne.n 19d4 lv_obj_invalidate(*group->obj_focus); 1978: 68eb ldr r3, [r5, #12] 197a: 6818 ldr r0, [r3, #0] 197c: 4b18 ldr r3, [pc, #96] ; (19e0 ) 197e: 4798 blx r3 (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 1980: 6820 ldr r0, [r4, #0] group->obj_focus = obj_next; 1982: 60ec str r4, [r5, #12] (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 1984: 69c3 ldr r3, [r0, #28] 1986: 2200 movs r2, #0 1988: 2116 movs r1, #22 198a: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); 198c: 68eb ldr r3, [r5, #12] 198e: 2200 movs r2, #0 1990: 6818 ldr r0, [r3, #0] 1992: 210d movs r1, #13 1994: 47b0 blx r6 if(res != LV_RES_OK) return; 1996: 2801 cmp r0, #1 1998: d11c bne.n 19d4 obj_to_foreground(*group->obj_focus); 199a: 68eb ldr r3, [r5, #12] 199c: 6818 ldr r0, [r3, #0] 199e: 4b11 ldr r3, [pc, #68] ; (19e4 ) 19a0: 4798 blx r3 lv_obj_invalidate(*group->obj_focus); 19a2: 68eb ldr r3, [r5, #12] 19a4: 6818 ldr r0, [r3, #0] 19a6: 4b0e ldr r3, [pc, #56] ; (19e0 ) 19a8: 4798 blx r3 if(group->focus_cb) group->focus_cb(group); 19aa: 692b ldr r3, [r5, #16] 19ac: b193 cbz r3, 19d4 19ae: 4628 mov r0, r5 } 19b0: b002 add sp, #8 19b2: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} if(group->focus_cb) group->focus_cb(group); 19b6: 4718 bx r3 can_begin = false; 19b8: f04f 0900 mov.w r9, #0 if(obj_next == NULL) continue; 19bc: 2c00 cmp r4, #0 19be: d1c5 bne.n 194c 19c0: e7b2 b.n 1928 obj_next = move(&group->obj_ll, obj_next); 19c2: 4621 mov r1, r4 19c4: 4628 mov r0, r5 19c6: 47b8 blx r7 if(obj_sentinel == NULL) { 19c8: 2e00 cmp r6, #0 19ca: bf08 it eq 19cc: 4626 moveq r6, r4 if(obj_next == obj_sentinel) return; 19ce: 42b0 cmp r0, r6 obj_next = move(&group->obj_ll, obj_next); 19d0: 4604 mov r4, r0 if(obj_next == obj_sentinel) return; 19d2: d1f3 bne.n 19bc } 19d4: b002 add sp, #8 19d6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 19da: bf00 nop 19dc: 00001f29 .word 0x00001f29 19e0: 00002739 .word 0x00002739 19e4: 000018d9 .word 0x000018d9 19e8: 000025d1 .word 0x000025d1 000019ec <_lv_group_init>: _lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t)); 19ec: 4801 ldr r0, [pc, #4] ; (19f4 <_lv_group_init+0x8>) 19ee: 4b02 ldr r3, [pc, #8] ; (19f8 <_lv_group_init+0xc>) 19f0: 2118 movs r1, #24 19f2: 4718 bx r3 19f4: 20008648 .word 0x20008648 19f8: 0000e64d .word 0x0000e64d 000019fc : focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next); 19fc: 4a01 ldr r2, [pc, #4] ; (1a04 ) 19fe: 4902 ldr r1, [pc, #8] ; (1a08 ) 1a00: 4b02 ldr r3, [pc, #8] ; (1a0c ) 1a02: 4718 bx r3 1a04: 0000e6fd .word 0x0000e6fd 1a08: 0000e6f1 .word 0x0000e6f1 1a0c: 00001909 .word 0x00001909 00001a10 : focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev); 1a10: 4a01 ldr r2, [pc, #4] ; (1a18 ) 1a12: 4902 ldr r1, [pc, #8] ; (1a1c ) 1a14: 4b02 ldr r3, [pc, #8] ; (1a20 ) 1a16: 4718 bx r3 1a18: 0000e71d .word 0x0000e71d 1a1c: 0000e6f7 .word 0x0000e6f7 1a20: 00001909 .word 0x00001909 00001a24 : { 1a24: b538 push {r3, r4, r5, lr} uint8_t temp_wrap = g->wrap; 1a26: 7d03 ldrb r3, [r0, #20] 1a28: f3c3 1500 ubfx r5, r3, #4, #1 g->wrap = 1; 1a2c: f043 0310 orr.w r3, r3, #16 1a30: 7503 strb r3, [r0, #20] { 1a32: 4604 mov r4, r0 if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT) 1a34: 071b lsls r3, r3, #28 lv_group_focus_next(g); 1a36: bf54 ite pl 1a38: 4b03 ldrpl r3, [pc, #12] ; (1a48 ) lv_group_focus_prev(g); 1a3a: 4b04 ldrmi r3, [pc, #16] ; (1a4c ) 1a3c: 4798 blx r3 g->wrap = temp_wrap; 1a3e: 7d23 ldrb r3, [r4, #20] 1a40: f365 1304 bfi r3, r5, #4, #1 1a44: 7523 strb r3, [r4, #20] } 1a46: bd38 pop {r3, r4, r5, pc} 1a48: 000019fd .word 0x000019fd 1a4c: 00001a11 .word 0x00001a11 00001a50 : { 1a50: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 1a54: 460d mov r5, r1 if(group == NULL) return; 1a56: 4604 mov r4, r0 1a58: 2800 cmp r0, #0 1a5a: d036 beq.n 1aca _LV_LL_READ(group->obj_ll, obj_i) { 1a5c: 4e25 ldr r6, [pc, #148] ; (1af4 ) 1a5e: 47b0 blx r6 1a60: 46b0 mov r8, r6 1a62: 4e25 ldr r6, [pc, #148] ; (1af8 ) 1a64: bb30 cbnz r0, 1ab4 if(obj->group_p) { 1a66: 6bab ldr r3, [r5, #56] ; 0x38 1a68: b173 cbz r3, 1a88 if(lv_obj_is_focused(obj)) { 1a6a: 4b24 ldr r3, [pc, #144] ; (1afc ) 1a6c: 4628 mov r0, r5 1a6e: 4798 blx r3 1a70: b150 cbz r0, 1a88 lv_group_refocus(obj->group_p); 1a72: 6ba8 ldr r0, [r5, #56] ; 0x38 1a74: 4b22 ldr r3, [pc, #136] ; (1b00 ) LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 1a76: 4e23 ldr r6, [pc, #140] ; (1b04 ) lv_group_refocus(obj->group_p); 1a78: 4798 blx r3 LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 1a7a: 4b23 ldr r3, [pc, #140] ; (1b08 ) 1a7c: 9300 str r3, [sp, #0] 1a7e: 4923 ldr r1, [pc, #140] ; (1b0c ) 1a80: 4b23 ldr r3, [pc, #140] ; (1b10 ) 1a82: 227f movs r2, #127 ; 0x7f 1a84: 2001 movs r0, #1 1a86: 47b0 blx r6 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1a88: 4b22 ldr r3, [pc, #136] ; (1b14 ) obj->group_p = group; 1a8a: 63ac str r4, [r5, #56] ; 0x38 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1a8c: 4620 mov r0, r4 1a8e: 4798 blx r3 LV_ASSERT_MEM(next); 1a90: 4b21 ldr r3, [pc, #132] ; (1b18 ) lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1a92: 4606 mov r6, r0 LV_ASSERT_MEM(next); 1a94: 4798 blx r3 1a96: 4607 mov r7, r0 1a98: b9f0 cbnz r0, 1ad8 1a9a: 4b1d ldr r3, [pc, #116] ; (1b10 ) 1a9c: 491b ldr r1, [pc, #108] ; (1b0c ) 1a9e: 9300 str r3, [sp, #0] 1aa0: 2285 movs r2, #133 ; 0x85 1aa2: 2003 movs r0, #3 1aa4: 4c17 ldr r4, [pc, #92] ; (1b04 ) 1aa6: 47a0 blx r4 1aa8: 481c ldr r0, [pc, #112] ; (1b1c ) 1aaa: 491d ldr r1, [pc, #116] ; (1b20 ) 1aac: 4632 mov r2, r6 1aae: 463b mov r3, r7 1ab0: 4788 blx r1 1ab2: e7fe b.n 1ab2 if((*obj_i) == obj) { 1ab4: 6803 ldr r3, [r0, #0] 1ab6: 42ab cmp r3, r5 1ab8: d10a bne.n 1ad0 LV_LOG_INFO("lv_group_add_obj: the object is already added to this group"); 1aba: 4b1a ldr r3, [pc, #104] ; (1b24 ) 1abc: 9300 str r3, [sp, #0] 1abe: 4913 ldr r1, [pc, #76] ; (1b0c ) 1ac0: 4b13 ldr r3, [pc, #76] ; (1b10 ) 1ac2: 4c10 ldr r4, [pc, #64] ; (1b04 ) 1ac4: 2275 movs r2, #117 ; 0x75 1ac6: 2001 movs r0, #1 1ac8: 47a0 blx r4 } 1aca: b002 add sp, #8 1acc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _LV_LL_READ(group->obj_ll, obj_i) { 1ad0: 4601 mov r1, r0 1ad2: 4620 mov r0, r4 1ad4: 47b0 blx r6 1ad6: e7c5 b.n 1a64 if(next == NULL) return; 1ad8: 2e00 cmp r6, #0 1ada: d0f6 beq.n 1aca *next = obj; 1adc: 6035 str r5, [r6, #0] if(_lv_ll_get_head(&group->obj_ll) == next) { 1ade: 4620 mov r0, r4 1ae0: 47c0 blx r8 1ae2: 4286 cmp r6, r0 1ae4: d1f1 bne.n 1aca lv_group_refocus(group); 1ae6: 4b06 ldr r3, [pc, #24] ; (1b00 ) 1ae8: 4620 mov r0, r4 } 1aea: b002 add sp, #8 1aec: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} lv_group_refocus(group); 1af0: 4718 bx r3 1af2: bf00 nop 1af4: 0000e6f1 .word 0x0000e6f1 1af8: 0000e6fd .word 0x0000e6fd 1afc: 000041d9 .word 0x000041d9 1b00: 00001a25 .word 0x00001a25 1b04: 0000e931 .word 0x0000e931 1b08: 0001ee4c .word 0x0001ee4c 1b0c: 0001edd1 .word 0x0001edd1 1b10: 0001ee8e .word 0x0001ee8e 1b14: 0000e6a9 .word 0x0000e6a9 1b18: 00001795 .word 0x00001795 1b1c: 0001ee02 .word 0x0001ee02 1b20: 0000179d .word 0x0000179d 1b24: 0001ee10 .word 0x0001ee10 00001b28 : { 1b28: b5f8 push {r3, r4, r5, r6, r7, lr} lv_group_t * g = obj->group_p; 1b2a: 6b84 ldr r4, [r0, #56] ; 0x38 { 1b2c: 4606 mov r6, r0 if(g == NULL) return; 1b2e: 2c00 cmp r4, #0 1b30: d033 beq.n 1b9a if(g->obj_focus == NULL) return; /*Just to be sure (Not possible if there is at least one object in the group)*/ 1b32: 68e3 ldr r3, [r4, #12] 1b34: 2b00 cmp r3, #0 1b36: d030 beq.n 1b9a if(*g->obj_focus == obj) { 1b38: 681b ldr r3, [r3, #0] 1b3a: 4d1c ldr r5, [pc, #112] ; (1bac ) 1b3c: 4283 cmp r3, r0 1b3e: d11b bne.n 1b78 if(g->frozen) g->frozen = 0; 1b40: 7d23 ldrb r3, [r4, #20] 1b42: 07da lsls r2, r3, #31 1b44: bf44 itt mi 1b46: f36f 0300 bfcmi r3, #0, #1 1b4a: 7523 strbmi r3, [r4, #20] if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { 1b4c: 4620 mov r0, r4 1b4e: 47a8 blx r5 1b50: 68e3 ldr r3, [r4, #12] 1b52: 4283 cmp r3, r0 1b54: d122 bne.n 1b9c 1b56: 4b16 ldr r3, [pc, #88] ; (1bb0 ) 1b58: 4620 mov r0, r4 1b5a: 4798 blx r3 1b5c: 68e3 ldr r3, [r4, #12] 1b5e: 4298 cmp r0, r3 1b60: d11c bne.n 1b9c (*g->obj_focus)->signal_cb(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 1b62: 6800 ldr r0, [r0, #0] 1b64: 2200 movs r2, #0 1b66: 69c3 ldr r3, [r0, #28] 1b68: 2117 movs r1, #23 1b6a: 4798 blx r3 if(*g->obj_focus == obj) { 1b6c: 68e3 ldr r3, [r4, #12] 1b6e: 681b ldr r3, [r3, #0] 1b70: 42b3 cmp r3, r6 g->obj_focus = NULL; 1b72: bf04 itt eq 1b74: 2300 moveq r3, #0 1b76: 60e3 streq r3, [r4, #12] _LV_LL_READ(g->obj_ll, i) { 1b78: 4620 mov r0, r4 1b7a: 47a8 blx r5 1b7c: 4f0d ldr r7, [pc, #52] ; (1bb4 ) 1b7e: 4605 mov r5, r0 1b80: b15d cbz r5, 1b9a if(*i == obj) { 1b82: 682b ldr r3, [r5, #0] 1b84: 42b3 cmp r3, r6 _lv_ll_remove(&g->obj_ll, i); 1b86: 4629 mov r1, r5 1b88: 4620 mov r0, r4 if(*i == obj) { 1b8a: d10b bne.n 1ba4 _lv_ll_remove(&g->obj_ll, i); 1b8c: 4b0a ldr r3, [pc, #40] ; (1bb8 ) 1b8e: 4798 blx r3 lv_mem_free(i); 1b90: 4b0a ldr r3, [pc, #40] ; (1bbc ) 1b92: 4628 mov r0, r5 1b94: 4798 blx r3 obj->group_p = NULL; 1b96: 2300 movs r3, #0 1b98: 63b3 str r3, [r6, #56] ; 0x38 } 1b9a: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_group_refocus(g); 1b9c: 4b08 ldr r3, [pc, #32] ; (1bc0 ) 1b9e: 4620 mov r0, r4 1ba0: 4798 blx r3 1ba2: e7e3 b.n 1b6c _LV_LL_READ(g->obj_ll, i) { 1ba4: 47b8 blx r7 1ba6: 4605 mov r5, r0 1ba8: e7ea b.n 1b80 1baa: bf00 nop 1bac: 0000e6f1 .word 0x0000e6f1 1bb0: 0000e6f7 .word 0x0000e6f7 1bb4: 0000e6fd .word 0x0000e6fd 1bb8: 0000e7b5 .word 0x0000e7b5 1bbc: 0000eb2d .word 0x0000eb2d 1bc0: 00001a25 .word 0x00001a25 00001bc4 : if(!group) return NULL; 1bc4: b110 cbz r0, 1bcc if(group->obj_focus == NULL) return NULL; 1bc6: 68c0 ldr r0, [r0, #12] 1bc8: b100 cbz r0, 1bcc return *group->obj_focus; 1bca: 6800 ldr r0, [r0, #0] } 1bcc: 4770 bx lr 00001bce : if(!group) return false; 1bce: b110 cbz r0, 1bd6 return group->editing ? true : false; 1bd0: 7d00 ldrb r0, [r0, #20] 1bd2: f3c0 0040 ubfx r0, r0, #1, #1 } 1bd6: 4770 bx lr 00001bd8 : /** * Reset one or all input devices * @param indev pointer to an input device to reset or NULL to reset all of them * @param obj pointer to an object which triggers the reset. */ void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj) 1bd8: b5f8 push {r3, r4, r5, r6, r7, lr} if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { indev->proc.types.pointer.last_pressed = NULL; } } else { lv_indev_t * i = lv_indev_get_next(NULL); 1bda: 4d0c ldr r5, [pc, #48] ; (1c0c ) while(i) { i->proc.reset_query = 1; if(indev_act == i) indev_obj_act = NULL; 1bdc: 4e0c ldr r6, [pc, #48] ; (1c10 ) void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj) 1bde: 4604 mov r4, r0 lv_indev_t * i = lv_indev_get_next(NULL); 1be0: 2000 movs r0, #0 1be2: 47a8 blx r5 if(indev_act == i) indev_obj_act = NULL; 1be4: 2700 movs r7, #0 while(i) { 1be6: b900 cbnz r0, 1bea i->proc.types.pointer.last_pressed = NULL; } i = lv_indev_get_next(i); } } } 1be8: bdf8 pop {r3, r4, r5, r6, r7, pc} i->proc.reset_query = 1; 1bea: f890 3050 ldrb.w r3, [r0, #80] ; 0x50 1bee: f043 0302 orr.w r3, r3, #2 1bf2: f880 3050 strb.w r3, [r0, #80] ; 0x50 if(indev_act == i) indev_obj_act = NULL; 1bf6: 6873 ldr r3, [r6, #4] 1bf8: 4298 cmp r0, r3 1bfa: bf08 it eq 1bfc: 6037 streq r7, [r6, #0] if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { 1bfe: b114 cbz r4, 1c06 1c00: 6bc3 ldr r3, [r0, #60] ; 0x3c 1c02: 429c cmp r4, r3 1c04: d100 bne.n 1c08 i->proc.types.pointer.last_pressed = NULL; 1c06: 63c7 str r7, [r0, #60] ; 0x3c i = lv_indev_get_next(i); 1c08: 47a8 blx r5 1c0a: e7ec b.n 1be6 1c0c: 0000da5d .word 0x0000da5d 1c10: 200080ec .word 0x200080ec 00001c14 <_lv_indev_init>: if(indev) { 1c14: 4b01 ldr r3, [pc, #4] ; (1c1c <_lv_indev_init+0x8>) 1c16: 2000 movs r0, #0 1c18: 4718 bx r3 1c1a: bf00 nop 1c1c: 00001bd9 .word 0x00001bd9 00001c20 : } 1c20: 4b01 ldr r3, [pc, #4] ; (1c28 ) 1c22: 6858 ldr r0, [r3, #4] 1c24: 4770 bx lr 1c26: bf00 nop 1c28: 200080ec .word 0x200080ec 00001c2c : if(indev) { 1c2c: b190 cbz r0, 1c54 indev->proc.reset_query = 1; 1c2e: f890 3050 ldrb.w r3, [r0, #80] ; 0x50 1c32: f043 0302 orr.w r3, r3, #2 1c36: f880 3050 strb.w r3, [r0, #80] ; 0x50 if(indev_act == indev) indev_obj_act = NULL; 1c3a: 4b08 ldr r3, [pc, #32] ; (1c5c ) 1c3c: 685a ldr r2, [r3, #4] 1c3e: 4282 cmp r2, r0 1c40: bf04 itt eq 1c42: 2200 moveq r2, #0 1c44: 601a streq r2, [r3, #0] if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { 1c46: b111 cbz r1, 1c4e 1c48: 6bc3 ldr r3, [r0, #60] ; 0x3c 1c4a: 428b cmp r3, r1 1c4c: d105 bne.n 1c5a indev->proc.types.pointer.last_pressed = NULL; 1c4e: 2300 movs r3, #0 1c50: 63c3 str r3, [r0, #60] ; 0x3c 1c52: 4770 bx lr 1c54: 4b02 ldr r3, [pc, #8] ; (1c60 ) 1c56: 4608 mov r0, r1 1c58: 4718 bx r3 } 1c5a: 4770 bx lr 1c5c: 200080ec .word 0x200080ec 1c60: 00001bd9 .word 0x00001bd9 00001c64 : * @return pointer to currently active object or NULL if no active object */ lv_obj_t * lv_indev_get_obj_act(void) { return indev_obj_act; } 1c64: 4b01 ldr r3, [pc, #4] ; (1c6c ) 1c66: 6818 ldr r0, [r3, #0] 1c68: 4770 bx lr 1c6a: bf00 nop 1c6c: 200080ec .word 0x200080ec 00001c70 : * @param obj pointer to an object which children will be repositioned * @param x_diff x coordinate shift * @param y_diff y coordinate shift */ static void refresh_children_position(lv_obj_t * obj, lv_coord_t x_diff, lv_coord_t y_diff) { 1c70: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 1c74: 1d05 adds r5, r0, #4 1c76: 4b12 ldr r3, [pc, #72] ; (1cc0 ) 1c78: f8df 9048 ldr.w r9, [pc, #72] ; 1cc4 1c7c: 4628 mov r0, r5 { 1c7e: 460e mov r6, r1 1c80: 4617 mov r7, r2 _LV_LL_READ(obj->child_ll, i) { 1c82: 4798 blx r3 i->coords.x1 += x_diff; 1c84: fa1f f886 uxth.w r8, r6 _LV_LL_READ(obj->child_ll, i) { 1c88: 4604 mov r4, r0 i->coords.y1 += y_diff; 1c8a: fa1f fa87 uxth.w sl, r7 _LV_LL_READ(obj->child_ll, i) { 1c8e: b90c cbnz r4, 1c94 i->coords.x2 += x_diff; i->coords.y2 += y_diff; refresh_children_position(i, x_diff, y_diff); } } 1c90: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} i->coords.x1 += x_diff; 1c94: 8a23 ldrh r3, [r4, #16] 1c96: 4443 add r3, r8 1c98: 8223 strh r3, [r4, #16] i->coords.y1 += y_diff; 1c9a: 8a63 ldrh r3, [r4, #18] 1c9c: 4453 add r3, sl 1c9e: 8263 strh r3, [r4, #18] i->coords.x2 += x_diff; 1ca0: 8aa3 ldrh r3, [r4, #20] 1ca2: 4443 add r3, r8 1ca4: 82a3 strh r3, [r4, #20] i->coords.y2 += y_diff; 1ca6: 8ae3 ldrh r3, [r4, #22] 1ca8: 4453 add r3, sl 1caa: 82e3 strh r3, [r4, #22] refresh_children_position(i, x_diff, y_diff); 1cac: 4620 mov r0, r4 1cae: 463a mov r2, r7 1cb0: 4631 mov r1, r6 1cb2: f7ff ffdd bl 1c70 _LV_LL_READ(obj->child_ll, i) { 1cb6: 4621 mov r1, r4 1cb8: 4628 mov r0, r5 1cba: 47c8 blx r9 1cbc: 4604 mov r4, r0 1cbe: e7e6 b.n 1c8e 1cc0: 0000e6f1 .word 0x0000e6f1 1cc4: 0000e6fd .word 0x0000e6fd 00001cc8 : LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { 1cc8: 3901 subs r1, #1 1cca: f100 0308 add.w r3, r0, #8 *d8 = *s8; 1cce: f811 2f01 ldrb.w r2, [r1, #1]! 1cd2: f800 2b01 strb.w r2, [r0], #1 while(len) { 1cd6: 4298 cmp r0, r3 1cd8: d1f9 bne.n 1cce * @param src pointer to the source area */ inline static void lv_area_copy(lv_area_t * dest, const lv_area_t * src) { _lv_memcpy_small(dest, src, sizeof(lv_area_t)); } 1cda: 4770 bx lr 00001cdc : { 1cdc: b5f0 push {r4, r5, r6, r7, lr} if(lv_initialized) { 1cde: 4e20 ldr r6, [pc, #128] ; (1d60 ) 1ce0: 4d20 ldr r5, [pc, #128] ; (1d64 ) 1ce2: 7833 ldrb r3, [r6, #0] { 1ce4: b085 sub sp, #20 if(lv_initialized) { 1ce6: b143 cbz r3, 1cfa LV_LOG_WARN("lv_init: already inited"); 1ce8: 4b1f ldr r3, [pc, #124] ; (1d68 ) 1cea: 9300 str r3, [sp, #0] 1cec: 491f ldr r1, [pc, #124] ; (1d6c ) 1cee: 4b20 ldr r3, [pc, #128] ; (1d70 ) 1cf0: 2278 movs r2, #120 ; 0x78 1cf2: 2002 movs r0, #2 LV_LOG_INFO("lv_init ready"); 1cf4: 47a8 blx r5 } 1cf6: b005 add sp, #20 1cf8: bdf0 pop {r4, r5, r6, r7, pc} _lv_mem_init(); 1cfa: 4b1e ldr r3, [pc, #120] ; (1d74 ) _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 1cfc: 4c1e ldr r4, [pc, #120] ; (1d78 ) lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 1cfe: 4f1f ldr r7, [pc, #124] ; (1d7c ) _lv_mem_init(); 1d00: 4798 blx r3 _lv_task_core_init(); 1d02: 4b1f ldr r3, [pc, #124] ; (1d80 ) 1d04: 4798 blx r3 _lv_fs_init(); 1d06: 4b1f ldr r3, [pc, #124] ; (1d84 ) 1d08: 4798 blx r3 _lv_anim_core_init(); 1d0a: 4b1f ldr r3, [pc, #124] ; (1d88 ) 1d0c: 4798 blx r3 _lv_group_init(); 1d0e: 4b1f ldr r3, [pc, #124] ; (1d8c ) 1d10: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 1d12: 481f ldr r0, [pc, #124] ; (1d90 ) 1d14: 2110 movs r1, #16 1d16: 47a0 blx r4 lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 1d18: 4b1e ldr r3, [pc, #120] ; (1d94 ) 1d1a: 9300 str r3, [sp, #0] 1d1c: 2202 movs r2, #2 1d1e: f04f 011f mov.w r1, #31 1d22: e9cd 3301 strd r3, r3, [sp, #4] 1d26: f64f 0000 movw r0, #63488 ; 0xf800 1d2a: 47b8 blx r7 lv_theme_set_act(th); 1d2c: 4b1a ldr r3, [pc, #104] ; (1d98 ) 1d2e: 4798 blx r3 _lv_refr_init(); 1d30: 4b1a ldr r3, [pc, #104] ; (1d9c ) 1d32: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t)); 1d34: 481a ldr r0, [pc, #104] ; (1da0 ) 1d36: f44f 71b8 mov.w r1, #368 ; 0x170 1d3a: 47a0 blx r4 _lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t)); 1d3c: 2160 movs r1, #96 ; 0x60 1d3e: 4819 ldr r0, [pc, #100] ; (1da4 ) 1d40: 47a0 blx r4 _lv_indev_init(); 1d42: 4b19 ldr r3, [pc, #100] ; (1da8 ) 1d44: 4798 blx r3 _lv_img_decoder_init(); 1d46: 4b19 ldr r3, [pc, #100] ; (1dac ) 1d48: 4798 blx r3 lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE); 1d4a: 4b19 ldr r3, [pc, #100] ; (1db0 ) 1d4c: 2001 movs r0, #1 1d4e: 4798 blx r3 LV_LOG_INFO("lv_init ready"); 1d50: 4b18 ldr r3, [pc, #96] ; (1db4 ) 1d52: 9300 str r3, [sp, #0] lv_initialized = true; 1d54: 2001 movs r0, #1 LV_LOG_INFO("lv_init ready"); 1d56: 4b06 ldr r3, [pc, #24] ; (1d70 ) 1d58: 4904 ldr r1, [pc, #16] ; (1d6c ) lv_initialized = true; 1d5a: 7030 strb r0, [r6, #0] LV_LOG_INFO("lv_init ready"); 1d5c: 22a2 movs r2, #162 ; 0xa2 1d5e: e7c9 b.n 1cf4 1d60: 200080f4 .word 0x200080f4 1d64: 0000e931 .word 0x0000e931 1d68: 0001eece .word 0x0001eece 1d6c: 0001ee9f .word 0x0001ee9f 1d70: 0001f0a6 .word 0x0001f0a6 1d74: 0000ea5d .word 0x0000ea5d 1d78: 0000e64d .word 0x0000e64d 1d7c: 0001255d .word 0x0001255d 1d80: 0000f879 .word 0x0000f879 1d84: 0000e421 .word 0x0000e421 1d88: 0000dc75 .word 0x0000dc75 1d8c: 000019ed .word 0x000019ed 1d90: 20008660 .word 0x20008660 1d94: 20000010 .word 0x20000010 1d98: 0001032d .word 0x0001032d 1d9c: 00004ef5 .word 0x00004ef5 1da0: 2000860c .word 0x2000860c 1da4: 20008618 .word 0x20008618 1da8: 00001c15 .word 0x00001c15 1dac: 0000d119 .word 0x0000d119 1db0: 0000c6f1 .word 0x0000c6f1 1db4: 0001eee6 .word 0x0001eee6 00001db8 : { 1db8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1dba: 4b0e ldr r3, [pc, #56] ; (1df4 ) { 1dbc: 4604 mov r4, r0 1dbe: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1dc0: 4798 blx r3 1dc2: 4605 mov r5, r0 1dc4: b968 cbnz r0, 1de2 1dc6: 4b0c ldr r3, [pc, #48] ; (1df8 ) 1dc8: 490c ldr r1, [pc, #48] ; (1dfc ) 1dca: 9300 str r3, [sp, #0] 1dcc: f240 5294 movw r2, #1428 ; 0x594 1dd0: 2003 movs r0, #3 1dd2: 4e0b ldr r6, [pc, #44] ; (1e00 ) 1dd4: 47b0 blx r6 1dd6: 480b ldr r0, [pc, #44] ; (1e04 ) 1dd8: 490b ldr r1, [pc, #44] ; (1e08 ) 1dda: 4622 mov r2, r4 1ddc: 462b mov r3, r5 1dde: 4788 blx r1 1de0: e7fe b.n 1de0 obj->adv_hittest = en == false ? 0 : 1; 1de2: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 1de6: f366 13c7 bfi r3, r6, #7, #1 1dea: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 1dee: b002 add sp, #8 1df0: bd70 pop {r4, r5, r6, pc} 1df2: bf00 nop 1df4: 00001795 .word 0x00001795 1df8: 0001f0fb .word 0x0001f0fb 1dfc: 0001ee9f .word 0x0001ee9f 1e00: 0000e931 .word 0x0000e931 1e04: 0001ef03 .word 0x0001ef03 1e08: 0000179d .word 0x0000179d 00001e0c : { 1e0c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e0e: 4b0e ldr r3, [pc, #56] ; (1e48 ) { 1e10: 4604 mov r4, r0 1e12: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e14: 4798 blx r3 1e16: 4605 mov r5, r0 1e18: b968 cbnz r0, 1e36 1e1a: 4b0c ldr r3, [pc, #48] ; (1e4c ) 1e1c: 490c ldr r1, [pc, #48] ; (1e50 ) 1e1e: 9300 str r3, [sp, #0] 1e20: f44f 62b4 mov.w r2, #1440 ; 0x5a0 1e24: 2003 movs r0, #3 1e26: 4e0b ldr r6, [pc, #44] ; (1e54 ) 1e28: 47b0 blx r6 1e2a: 480b ldr r0, [pc, #44] ; (1e58 ) 1e2c: 490b ldr r1, [pc, #44] ; (1e5c ) 1e2e: 4622 mov r2, r4 1e30: 462b mov r3, r5 1e32: 4788 blx r1 1e34: e7fe b.n 1e34 obj->click = (en == true ? 1 : 0); 1e36: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 1e3a: f366 0300 bfi r3, r6, #0, #1 1e3e: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 1e42: b002 add sp, #8 1e44: bd70 pop {r4, r5, r6, pc} 1e46: bf00 nop 1e48: 00001795 .word 0x00001795 1e4c: 0001f112 .word 0x0001f112 1e50: 0001ee9f .word 0x0001ee9f 1e54: 0000e931 .word 0x0000e931 1e58: 0001ef03 .word 0x0001ef03 1e5c: 0000179d .word 0x0000179d 00001e60 : { 1e60: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 1e64: 4680 mov r8, r0 1e66: b087 sub sp, #28 1e68: 4616 mov r6, r2 1e6a: 461f mov r7, r3 if(obj != NULL) { 1e6c: 460c mov r4, r1 1e6e: b191 cbz r1, 1e96 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e70: 4b24 ldr r3, [pc, #144] ; (1f04 ) 1e72: 4608 mov r0, r1 1e74: 4798 blx r3 1e76: 4605 mov r5, r0 1e78: b968 cbnz r0, 1e96 1e7a: 4b23 ldr r3, [pc, #140] ; (1f08 ) 1e7c: 4923 ldr r1, [pc, #140] ; (1f0c ) 1e7e: 9300 str r3, [sp, #0] 1e80: f44f 62db mov.w r2, #1752 ; 0x6d8 1e84: 2003 movs r0, #3 1e86: 4e22 ldr r6, [pc, #136] ; (1f10 ) 1e88: 47b0 blx r6 1e8a: 4822 ldr r0, [pc, #136] ; (1f14 ) 1e8c: 4922 ldr r1, [pc, #136] ; (1f18 ) 1e8e: 4622 mov r2, r4 1e90: 462b mov r3, r5 1e92: 4788 blx r1 1e94: e7fe b.n 1e94 if(event_temp_data_head) { 1e96: 4d21 ldr r5, [pc, #132] ; (1f1c ) event_temp_data.obj = obj; 1e98: 9403 str r4, [sp, #12] event_temp_data.deleted = false; 1e9a: 2300 movs r3, #0 1e9c: f88d 3010 strb.w r3, [sp, #16] event_temp_data.prev = event_temp_data_head; 1ea0: 686b ldr r3, [r5, #4] 1ea2: 9305 str r3, [sp, #20] event_temp_data_head = &event_temp_data; 1ea4: ab03 add r3, sp, #12 1ea6: 606b str r3, [r5, #4] lv_indev_t * indev_act = lv_indev_get_act(); 1ea8: 4b1d ldr r3, [pc, #116] ; (1f20 ) const void * event_act_data_save = event_act_data; 1eaa: f8d5 9008 ldr.w r9, [r5, #8] event_act_data = data; 1eae: 60af str r7, [r5, #8] lv_indev_t * indev_act = lv_indev_get_act(); 1eb0: 4798 blx r3 if(indev_act) { 1eb2: b118 cbz r0, 1ebc if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event); 1eb4: 6883 ldr r3, [r0, #8] 1eb6: b10b cbz r3, 1ebc 1eb8: 4631 mov r1, r6 1eba: 4798 blx r3 if(event_xcb) event_xcb(obj, event); 1ebc: f1b8 0f00 cmp.w r8, #0 1ec0: d002 beq.n 1ec8 1ec2: 4631 mov r1, r6 1ec4: 4620 mov r0, r4 1ec6: 47c0 blx r8 event_temp_data_head = event_temp_data_head->prev; 1ec8: 686b ldr r3, [r5, #4] event_act_data = event_act_data_save; 1eca: f8c5 9008 str.w r9, [r5, #8] event_temp_data_head = event_temp_data_head->prev; 1ece: 689b ldr r3, [r3, #8] 1ed0: 606b str r3, [r5, #4] if(event_temp_data.deleted) { 1ed2: f89d 3010 ldrb.w r3, [sp, #16] 1ed6: b983 cbnz r3, 1efa if(obj) { 1ed8: b18c cbz r4, 1efe if(obj->parent_event && obj->parent) { 1eda: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 1ede: 065a lsls r2, r3, #25 1ee0: d50d bpl.n 1efe 1ee2: 6820 ldr r0, [r4, #0] 1ee4: b158 cbz r0, 1efe lv_res_t res = lv_event_send(obj->parent, event, data); 1ee6: 4b0f ldr r3, [pc, #60] ; (1f24 ) 1ee8: 463a mov r2, r7 1eea: 4631 mov r1, r6 1eec: 4798 blx r3 return LV_RES_INV; 1eee: 1e43 subs r3, r0, #1 1ef0: 4258 negs r0, r3 1ef2: 4158 adcs r0, r3 } 1ef4: b007 add sp, #28 1ef6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return LV_RES_INV; 1efa: 2000 movs r0, #0 1efc: e7fa b.n 1ef4 return LV_RES_OK; 1efe: 2001 movs r0, #1 1f00: e7f8 b.n 1ef4 1f02: bf00 nop 1f04: 00001795 .word 0x00001795 1f08: 0001f1d7 .word 0x0001f1d7 1f0c: 0001ee9f .word 0x0001ee9f 1f10: 0000e931 .word 0x0000e931 1f14: 0001ef03 .word 0x0001ef03 1f18: 0000179d .word 0x0000179d 1f1c: 200080f4 .word 0x200080f4 1f20: 00001c21 .word 0x00001c21 1f24: 00001f29 .word 0x00001f29 00001f28 : { 1f28: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} 1f2a: 460e mov r6, r1 1f2c: 9203 str r2, [sp, #12] if(obj == NULL) return LV_RES_OK; 1f2e: 4604 mov r4, r0 1f30: b1d8 cbz r0, 1f6a LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1f32: 4a0f ldr r2, [pc, #60] ; (1f70 ) 1f34: 4790 blx r2 1f36: 9b03 ldr r3, [sp, #12] 1f38: 4605 mov r5, r0 1f3a: b968 cbnz r0, 1f58 1f3c: 4b0d ldr r3, [pc, #52] ; (1f74 ) 1f3e: 490e ldr r1, [pc, #56] ; (1f78 ) 1f40: 9300 str r3, [sp, #0] 1f42: f240 62c4 movw r2, #1732 ; 0x6c4 1f46: 2003 movs r0, #3 1f48: 4e0c ldr r6, [pc, #48] ; (1f7c ) 1f4a: 47b0 blx r6 1f4c: 480c ldr r0, [pc, #48] ; (1f80 ) 1f4e: 490d ldr r1, [pc, #52] ; (1f84 ) 1f50: 4622 mov r2, r4 1f52: 462b mov r3, r5 1f54: 4788 blx r1 1f56: e7fe b.n 1f56 res = lv_event_send_func(obj->event_cb, obj, event, data); 1f58: 69a0 ldr r0, [r4, #24] 1f5a: 4621 mov r1, r4 1f5c: 4c0a ldr r4, [pc, #40] ; (1f88 ) 1f5e: 4632 mov r2, r6 1f60: 46a4 mov ip, r4 } 1f62: b004 add sp, #16 1f64: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} res = lv_event_send_func(obj->event_cb, obj, event, data); 1f68: 4760 bx ip } 1f6a: 2001 movs r0, #1 1f6c: b004 add sp, #16 1f6e: bd70 pop {r4, r5, r6, pc} 1f70: 00001795 .word 0x00001795 1f74: 0001f1ea .word 0x0001f1ea 1f78: 0001ee9f .word 0x0001ee9f 1f7c: 0000e931 .word 0x0000e931 1f80: 0001ef03 .word 0x0001ef03 1f84: 0000179d .word 0x0000179d 1f88: 00001e61 .word 0x00001e61 00001f8c : { 1f8c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1f8e: 4b0b ldr r3, [pc, #44] ; (1fbc ) { 1f90: 4604 mov r4, r0 1f92: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1f94: 4798 blx r3 1f96: 4605 mov r5, r0 1f98: b968 cbnz r0, 1fb6 1f9a: 4b09 ldr r3, [pc, #36] ; (1fc0 ) 1f9c: 4909 ldr r1, [pc, #36] ; (1fc4 ) 1f9e: 9300 str r3, [sp, #0] 1fa0: f240 721b movw r2, #1819 ; 0x71b 1fa4: 2003 movs r0, #3 1fa6: 4e08 ldr r6, [pc, #32] ; (1fc8 ) 1fa8: 47b0 blx r6 1faa: 4808 ldr r0, [pc, #32] ; (1fcc ) 1fac: 4908 ldr r1, [pc, #32] ; (1fd0 ) 1fae: 4622 mov r2, r4 1fb0: 462b mov r3, r5 1fb2: 4788 blx r1 1fb4: e7fe b.n 1fb4 obj->signal_cb = signal_cb; 1fb6: 61e6 str r6, [r4, #28] } 1fb8: b002 add sp, #8 1fba: bd70 pop {r4, r5, r6, pc} 1fbc: 00001795 .word 0x00001795 1fc0: 0001f1f8 .word 0x0001f1f8 1fc4: 0001ee9f .word 0x0001ee9f 1fc8: 0000e931 .word 0x0000e931 1fcc: 0001ef03 .word 0x0001ef03 1fd0: 0000179d .word 0x0000179d 00001fd4 : if(obj == NULL) return LV_RES_OK; 1fd4: b110 cbz r0, 1fdc if(obj->signal_cb) res = obj->signal_cb(obj, signal, param); 1fd6: 69c3 ldr r3, [r0, #28] 1fd8: b103 cbz r3, 1fdc 1fda: 4718 bx r3 } 1fdc: 2001 movs r0, #1 1fde: 4770 bx lr 00001fe0 : { 1fe0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1fe2: 4b0b ldr r3, [pc, #44] ; (2010 ) { 1fe4: 4604 mov r4, r0 1fe6: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1fe8: 4798 blx r3 1fea: 4605 mov r5, r0 1fec: b968 cbnz r0, 200a 1fee: 4b09 ldr r3, [pc, #36] ; (2014 ) 1ff0: 4909 ldr r1, [pc, #36] ; (2018 ) 1ff2: 9300 str r3, [sp, #0] 1ff4: f240 7237 movw r2, #1847 ; 0x737 1ff8: 2003 movs r0, #3 1ffa: 4e08 ldr r6, [pc, #32] ; (201c ) 1ffc: 47b0 blx r6 1ffe: 4808 ldr r0, [pc, #32] ; (2020 ) 2000: 4908 ldr r1, [pc, #32] ; (2024 ) 2002: 4622 mov r2, r4 2004: 462b mov r3, r5 2006: 4788 blx r1 2008: e7fe b.n 2008 obj->design_cb = design_cb; 200a: 6226 str r6, [r4, #32] } 200c: b002 add sp, #8 200e: bd70 pop {r4, r5, r6, pc} 2010: 00001795 .word 0x00001795 2014: 0001f20d .word 0x0001f20d 2018: 0001ee9f .word 0x0001ee9f 201c: 0000e931 .word 0x0000e931 2020: 0001ef03 .word 0x0001ef03 2024: 0000179d .word 0x0000179d 00002028 : { 2028: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 202a: 4b0e ldr r3, [pc, #56] ; (2064 ) { 202c: 9103 str r1, [sp, #12] 202e: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2030: 4798 blx r3 2032: 9903 ldr r1, [sp, #12] 2034: 4605 mov r5, r0 2036: b968 cbnz r0, 2054 2038: 4b0b ldr r3, [pc, #44] ; (2068 ) 203a: 490c ldr r1, [pc, #48] ; (206c ) 203c: 9300 str r3, [sp, #0] 203e: f240 7249 movw r2, #1865 ; 0x749 2042: 2003 movs r0, #3 2044: 4e0a ldr r6, [pc, #40] ; (2070 ) 2046: 47b0 blx r6 2048: 480a ldr r0, [pc, #40] ; (2074 ) 204a: 490b ldr r1, [pc, #44] ; (2078 ) 204c: 4622 mov r2, r4 204e: 462b mov r3, r5 2050: 4788 blx r1 2052: e7fe b.n 2052 void * new_ext = lv_mem_realloc(obj->ext_attr, ext_size); 2054: 6a60 ldr r0, [r4, #36] ; 0x24 2056: 4b09 ldr r3, [pc, #36] ; (207c ) 2058: 4798 blx r3 if(new_ext == NULL) return NULL; 205a: b100 cbz r0, 205e obj->ext_attr = new_ext; 205c: 6260 str r0, [r4, #36] ; 0x24 } 205e: b004 add sp, #16 2060: bd70 pop {r4, r5, r6, pc} 2062: bf00 nop 2064: 00001795 .word 0x00001795 2068: 0001f222 .word 0x0001f222 206c: 0001ee9f .word 0x0001ee9f 2070: 0000e931 .word 0x0000e931 2074: 0001ef03 .word 0x0001ef03 2078: 0000179d .word 0x0000179d 207c: 0000ee5d .word 0x0000ee5d 00002080 : { 2080: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2082: 4b0e ldr r3, [pc, #56] ; (20bc ) { 2084: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2086: 4798 blx r3 2088: 4605 mov r5, r0 208a: b968 cbnz r0, 20a8 208c: 4b0c ldr r3, [pc, #48] ; (20c0 ) 208e: 490d ldr r1, [pc, #52] ; (20c4 ) 2090: 9300 str r3, [sp, #0] 2092: f240 7259 movw r2, #1881 ; 0x759 2096: 2003 movs r0, #3 2098: 4e0b ldr r6, [pc, #44] ; (20c8 ) 209a: 47b0 blx r6 209c: 480b ldr r0, [pc, #44] ; (20cc ) 209e: 490c ldr r1, [pc, #48] ; (20d0 ) 20a0: 4622 mov r2, r4 20a2: 462b mov r3, r5 20a4: 4788 blx r1 20a6: e7fe b.n 20a6 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 20a8: 69e3 ldr r3, [r4, #28] obj->ext_draw_pad = 0; 20aa: 2200 movs r2, #0 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 20ac: 2106 movs r1, #6 20ae: 4620 mov r0, r4 obj->ext_draw_pad = 0; 20b0: 8662 strh r2, [r4, #50] ; 0x32 } 20b2: b002 add sp, #8 20b4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 20b8: 4718 bx r3 20ba: bf00 nop 20bc: 00001795 .word 0x00001795 20c0: 0001f23b .word 0x0001f23b 20c4: 0001ee9f .word 0x0001ee9f 20c8: 0000e931 .word 0x0000e931 20cc: 0001ef03 .word 0x0001ef03 20d0: 0000179d .word 0x0000179d 000020d4 : { 20d4: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20d6: 4b0b ldr r3, [pc, #44] ; (2104 ) { 20d8: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20da: 4798 blx r3 20dc: 4605 mov r5, r0 20de: b968 cbnz r0, 20fc 20e0: 4b09 ldr r3, [pc, #36] ; (2108 ) 20e2: 490a ldr r1, [pc, #40] ; (210c ) 20e4: 9300 str r3, [sp, #0] 20e6: f240 729f movw r2, #1951 ; 0x79f 20ea: 2003 movs r0, #3 20ec: 4e08 ldr r6, [pc, #32] ; (2110 ) 20ee: 47b0 blx r6 20f0: 4808 ldr r0, [pc, #32] ; (2114 ) 20f2: 4909 ldr r1, [pc, #36] ; (2118 ) 20f4: 4622 mov r2, r4 20f6: 462b mov r3, r5 20f8: 4788 blx r1 20fa: e7fe b.n 20fa } 20fc: 6820 ldr r0, [r4, #0] 20fe: b002 add sp, #8 2100: bd70 pop {r4, r5, r6, pc} 2102: bf00 nop 2104: 00001795 .word 0x00001795 2108: 0001f257 .word 0x0001f257 210c: 0001ee9f .word 0x0001ee9f 2110: 0000e931 .word 0x0000e931 2114: 0001ef03 .word 0x0001ef03 2118: 0000179d .word 0x0000179d 0000211c : { 211c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 211e: 4b0e ldr r3, [pc, #56] ; (2158 ) { 2120: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2122: 4798 blx r3 2124: 4605 mov r5, r0 2126: b148 cbz r0, 213c par = lv_obj_get_parent(act_p); 2128: 4e0c ldr r6, [pc, #48] ; (215c ) 212a: 4620 mov r0, r4 212c: 47b0 blx r6 } while(par != NULL); 212e: 4625 mov r5, r4 2130: 4604 mov r4, r0 2132: 2800 cmp r0, #0 2134: d1f9 bne.n 212a } 2136: 4628 mov r0, r5 2138: b002 add sp, #8 213a: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 213c: 4b08 ldr r3, [pc, #32] ; (2160 ) 213e: 4909 ldr r1, [pc, #36] ; (2164 ) 2140: 9300 str r3, [sp, #0] 2142: f240 726b movw r2, #1899 ; 0x76b 2146: 2003 movs r0, #3 2148: 4e07 ldr r6, [pc, #28] ; (2168 ) 214a: 47b0 blx r6 214c: 4807 ldr r0, [pc, #28] ; (216c ) 214e: 4908 ldr r1, [pc, #32] ; (2170 ) 2150: 4622 mov r2, r4 2152: 462b mov r3, r5 2154: 4788 blx r1 2156: e7fe b.n 2156 2158: 00001795 .word 0x00001795 215c: 000020d5 .word 0x000020d5 2160: 0001f269 .word 0x0001f269 2164: 0001ee9f .word 0x0001ee9f 2168: 0000e931 .word 0x0000e931 216c: 0001ef03 .word 0x0001ef03 2170: 0000179d .word 0x0000179d 00002174 : { 2174: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2178: 4b1e ldr r3, [pc, #120] ; (21f4 ) { 217a: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 217c: 4798 blx r3 217e: 4604 mov r4, r0 2180: b968 cbnz r0, 219e 2182: 4b1d ldr r3, [pc, #116] ; (21f8 ) 2184: 491d ldr r1, [pc, #116] ; (21fc ) 2186: 9300 str r3, [sp, #0] 2188: f240 727f movw r2, #1919 ; 0x77f 218c: 2003 movs r0, #3 218e: 4e1c ldr r6, [pc, #112] ; (2200 ) 2190: 47b0 blx r6 2192: 481c ldr r0, [pc, #112] ; (2204 ) 2194: 491c ldr r1, [pc, #112] ; (2208 ) 2196: 462a mov r2, r5 2198: 4623 mov r3, r4 219a: 4788 blx r1 219c: e7fe b.n 219c if(obj->parent == NULL) 219e: 682b ldr r3, [r5, #0] 21a0: b11b cbz r3, 21aa scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/ 21a2: 4628 mov r0, r5 21a4: 4b19 ldr r3, [pc, #100] ; (220c ) 21a6: 4798 blx r3 21a8: 4605 mov r5, r0 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 21aa: 4819 ldr r0, [pc, #100] ; (2210 ) 21ac: 4e19 ldr r6, [pc, #100] ; (2214 ) _LV_LL_READ(d->scr_ll, s) { 21ae: 4f1a ldr r7, [pc, #104] ; (2218 ) _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 21b0: f8df 805c ldr.w r8, [pc, #92] ; 2210 21b4: 47b0 blx r6 21b6: 4604 mov r4, r0 21b8: b964 cbnz r4, 21d4 LV_LOG_WARN("lv_scr_get_disp: screen not found") 21ba: 4b18 ldr r3, [pc, #96] ; (221c ) 21bc: 9300 str r3, [sp, #0] 21be: 490f ldr r1, [pc, #60] ; (21fc ) 21c0: 4b0d ldr r3, [pc, #52] ; (21f8 ) 21c2: 4d0f ldr r5, [pc, #60] ; (2200 ) 21c4: f44f 62f2 mov.w r2, #1936 ; 0x790 21c8: 2002 movs r0, #2 21ca: 47a8 blx r5 } 21cc: 4620 mov r0, r4 21ce: b003 add sp, #12 21d0: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} _LV_LL_READ(d->scr_ll, s) { 21d4: f104 0930 add.w r9, r4, #48 ; 0x30 21d8: 4648 mov r0, r9 21da: 47b0 blx r6 21dc: b920 cbnz r0, 21e8 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 21de: 4621 mov r1, r4 21e0: 4640 mov r0, r8 21e2: 47b8 blx r7 21e4: 4604 mov r4, r0 21e6: e7e7 b.n 21b8 if(s == scr) return d; 21e8: 4285 cmp r5, r0 21ea: d0ef beq.n 21cc _LV_LL_READ(d->scr_ll, s) { 21ec: 4601 mov r1, r0 21ee: 4648 mov r0, r9 21f0: 47b8 blx r7 21f2: e7f3 b.n 21dc 21f4: 00001795 .word 0x00001795 21f8: 0001f27b .word 0x0001f27b 21fc: 0001ee9f .word 0x0001ee9f 2200: 0000e931 .word 0x0000e931 2204: 0001ef03 .word 0x0001ef03 2208: 0000179d .word 0x0000179d 220c: 0000211d .word 0x0000211d 2210: 2000860c .word 0x2000860c 2214: 0000e6f1 .word 0x0000e6f1 2218: 0000e6fd .word 0x0000e6fd 221c: 0001ef10 .word 0x0001ef10 00002220 : { 2220: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2222: 4b10 ldr r3, [pc, #64] ; (2264 ) { 2224: 4604 mov r4, r0 2226: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2228: 4798 blx r3 222a: 4606 mov r6, r0 222c: b968 cbnz r0, 224a 222e: 4b0e ldr r3, [pc, #56] ; (2268 ) 2230: 490e ldr r1, [pc, #56] ; (226c ) 2232: 9300 str r3, [sp, #0] 2234: f240 72ad movw r2, #1965 ; 0x7ad 2238: 2003 movs r0, #3 223a: 4d0d ldr r5, [pc, #52] ; (2270 ) 223c: 47a8 blx r5 223e: 480d ldr r0, [pc, #52] ; (2274 ) 2240: 490d ldr r1, [pc, #52] ; (2278 ) 2242: 4622 mov r2, r4 2244: 4633 mov r3, r6 2246: 4788 blx r1 2248: e7fe b.n 2248 result = _lv_ll_get_head(&obj->child_ll); 224a: 1d20 adds r0, r4, #4 if(child == NULL) { 224c: b925 cbnz r5, 2258 result = _lv_ll_get_head(&obj->child_ll); 224e: 4b0b ldr r3, [pc, #44] ; (227c ) } 2250: b002 add sp, #8 2252: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} result = _lv_ll_get_head(&obj->child_ll); 2256: 4718 bx r3 result = _lv_ll_get_next(&obj->child_ll, child); 2258: 4b09 ldr r3, [pc, #36] ; (2280 ) 225a: 4629 mov r1, r5 } 225c: b002 add sp, #8 225e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} result = _lv_ll_get_next(&obj->child_ll, child); 2262: 4718 bx r3 2264: 00001795 .word 0x00001795 2268: 0001f28b .word 0x0001f28b 226c: 0001ee9f .word 0x0001ee9f 2270: 0000e931 .word 0x0000e931 2274: 0001ef03 .word 0x0001ef03 2278: 0000179d .word 0x0000179d 227c: 0000e6f1 .word 0x0000e6f1 2280: 0000e6fd .word 0x0000e6fd 00002284 : { 2284: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2286: 4b0e ldr r3, [pc, #56] ; (22c0 ) { 2288: 4604 mov r4, r0 228a: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 228c: 4798 blx r3 228e: 4605 mov r5, r0 2290: b968 cbnz r0, 22ae 2292: 4b0c ldr r3, [pc, #48] ; (22c4 ) 2294: 490c ldr r1, [pc, #48] ; (22c8 ) 2296: 9300 str r3, [sp, #0] 2298: f640 0201 movw r2, #2049 ; 0x801 229c: 2003 movs r0, #3 229e: 4e0b ldr r6, [pc, #44] ; (22cc ) 22a0: 47b0 blx r6 22a2: 480b ldr r0, [pc, #44] ; (22d0 ) 22a4: 490b ldr r1, [pc, #44] ; (22d4 ) 22a6: 4622 mov r2, r4 22a8: 462b mov r3, r5 22aa: 4788 blx r1 22ac: e7fe b.n 22ac lv_area_copy(cords_p, &obj->coords); 22ae: 4b0a ldr r3, [pc, #40] ; (22d8 ) 22b0: f104 0110 add.w r1, r4, #16 22b4: 4630 mov r0, r6 } 22b6: b002 add sp, #8 22b8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_area_copy(cords_p, &obj->coords); 22bc: 4718 bx r3 22be: bf00 nop 22c0: 00001795 .word 0x00001795 22c4: 0001f2fc .word 0x0001f2fc 22c8: 0001ee9f .word 0x0001ee9f 22cc: 0000e931 .word 0x0000e931 22d0: 0001ef03 .word 0x0001ef03 22d4: 0000179d .word 0x0000179d 22d8: 00001cc9 .word 0x00001cc9 000022dc : { 22dc: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 22de: 4b10 ldr r3, [pc, #64] ; (2320 ) { 22e0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 22e2: 4798 blx r3 22e4: 4605 mov r5, r0 22e6: b968 cbnz r0, 2304 22e8: 4b0e ldr r3, [pc, #56] ; (2324 ) 22ea: 490f ldr r1, [pc, #60] ; (2328 ) 22ec: 9300 str r3, [sp, #0] 22ee: f640 0222 movw r2, #2082 ; 0x822 22f2: 2003 movs r0, #3 22f4: 4e0d ldr r6, [pc, #52] ; (232c ) 22f6: 47b0 blx r6 22f8: 480d ldr r0, [pc, #52] ; (2330 ) 22fa: 490e ldr r1, [pc, #56] ; (2334 ) 22fc: 4622 mov r2, r4 22fe: 462b mov r3, r5 2300: 4788 blx r1 2302: e7fe b.n 2302 lv_obj_t * parent = lv_obj_get_parent(obj); 2304: 4b0c ldr r3, [pc, #48] ; (2338 ) 2306: 4620 mov r0, r4 2308: 4798 blx r3 if(parent) { 230a: b128 cbz r0, 2318 rel_x = obj->coords.x1 - parent->coords.x1; 230c: 8a23 ldrh r3, [r4, #16] 230e: 8a00 ldrh r0, [r0, #16] 2310: 1a18 subs r0, r3, r0 2312: b200 sxth r0, r0 } 2314: b002 add sp, #8 2316: bd70 pop {r4, r5, r6, pc} rel_x = obj->coords.x1; 2318: f9b4 0010 ldrsh.w r0, [r4, #16] 231c: e7fa b.n 2314 231e: bf00 nop 2320: 00001795 .word 0x00001795 2324: 0001f30e .word 0x0001f30e 2328: 0001ee9f .word 0x0001ee9f 232c: 0000e931 .word 0x0000e931 2330: 0001ef03 .word 0x0001ef03 2334: 0000179d .word 0x0000179d 2338: 000020d5 .word 0x000020d5 0000233c : { 233c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 233e: 4b10 ldr r3, [pc, #64] ; (2380 ) { 2340: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2342: 4798 blx r3 2344: 4605 mov r5, r0 2346: b968 cbnz r0, 2364 2348: 4b0e ldr r3, [pc, #56] ; (2384 ) 234a: 490f ldr r1, [pc, #60] ; (2388 ) 234c: 9300 str r3, [sp, #0] 234e: f640 0236 movw r2, #2102 ; 0x836 2352: 2003 movs r0, #3 2354: 4e0d ldr r6, [pc, #52] ; (238c ) 2356: 47b0 blx r6 2358: 480d ldr r0, [pc, #52] ; (2390 ) 235a: 490e ldr r1, [pc, #56] ; (2394 ) 235c: 4622 mov r2, r4 235e: 462b mov r3, r5 2360: 4788 blx r1 2362: e7fe b.n 2362 lv_obj_t * parent = lv_obj_get_parent(obj); 2364: 4b0c ldr r3, [pc, #48] ; (2398 ) 2366: 4620 mov r0, r4 2368: 4798 blx r3 if(parent) { 236a: b128 cbz r0, 2378 rel_y = obj->coords.y1 - parent->coords.y1; 236c: 8a63 ldrh r3, [r4, #18] 236e: 8a40 ldrh r0, [r0, #18] 2370: 1a18 subs r0, r3, r0 2372: b200 sxth r0, r0 } 2374: b002 add sp, #8 2376: bd70 pop {r4, r5, r6, pc} rel_y = obj->coords.y1; 2378: f9b4 0012 ldrsh.w r0, [r4, #18] 237c: e7fa b.n 2374 237e: bf00 nop 2380: 00001795 .word 0x00001795 2384: 0001f31b .word 0x0001f31b 2388: 0001ee9f .word 0x0001ee9f 238c: 0000e931 .word 0x0000e931 2390: 0001ef03 .word 0x0001ef03 2394: 0000179d .word 0x0000179d 2398: 000020d5 .word 0x000020d5 0000239c : { 239c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 239e: 4b0d ldr r3, [pc, #52] ; (23d4 ) { 23a0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 23a2: 4798 blx r3 23a4: 4605 mov r5, r0 23a6: b968 cbnz r0, 23c4 23a8: 4b0b ldr r3, [pc, #44] ; (23d8 ) 23aa: 490c ldr r1, [pc, #48] ; (23dc ) 23ac: 9300 str r3, [sp, #0] 23ae: f640 024a movw r2, #2122 ; 0x84a 23b2: 2003 movs r0, #3 23b4: 4e0a ldr r6, [pc, #40] ; (23e0 ) 23b6: 47b0 blx r6 23b8: 480a ldr r0, [pc, #40] ; (23e4 ) 23ba: 490b ldr r1, [pc, #44] ; (23e8 ) 23bc: 4622 mov r2, r4 23be: 462b mov r3, r5 23c0: 4788 blx r1 23c2: e7fe b.n 23c2 * @param area_p pointer to an area * @return the width of the area (if x1 == x2 -> width = 1) */ static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p) { return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 23c4: 8aa3 ldrh r3, [r4, #20] 23c6: 8a20 ldrh r0, [r4, #16] 23c8: 3301 adds r3, #1 23ca: 1a18 subs r0, r3, r0 } 23cc: b200 sxth r0, r0 23ce: b002 add sp, #8 23d0: bd70 pop {r4, r5, r6, pc} 23d2: bf00 nop 23d4: 00001795 .word 0x00001795 23d8: 0001f328 .word 0x0001f328 23dc: 0001ee9f .word 0x0001ee9f 23e0: 0000e931 .word 0x0000e931 23e4: 0001ef03 .word 0x0001ef03 23e8: 0000179d .word 0x0000179d 000023ec : { 23ec: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 23ee: 4b0d ldr r3, [pc, #52] ; (2424 ) { 23f0: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 23f2: 4798 blx r3 23f4: 4605 mov r5, r0 23f6: b968 cbnz r0, 2414 23f8: 4b0b ldr r3, [pc, #44] ; (2428 ) 23fa: 490c ldr r1, [pc, #48] ; (242c ) 23fc: 9300 str r3, [sp, #0] 23fe: f640 0256 movw r2, #2134 ; 0x856 2402: 2003 movs r0, #3 2404: 4e0a ldr r6, [pc, #40] ; (2430 ) 2406: 47b0 blx r6 2408: 480a ldr r0, [pc, #40] ; (2434 ) 240a: 490b ldr r1, [pc, #44] ; (2438 ) 240c: 4622 mov r2, r4 240e: 462b mov r3, r5 2410: 4788 blx r1 2412: e7fe b.n 2412 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 2414: 8ae3 ldrh r3, [r4, #22] 2416: 8a60 ldrh r0, [r4, #18] 2418: 3301 adds r3, #1 241a: 1a18 subs r0, r3, r0 } 241c: b200 sxth r0, r0 241e: b002 add sp, #8 2420: bd70 pop {r4, r5, r6, pc} 2422: bf00 nop 2424: 00001795 .word 0x00001795 2428: 0001f339 .word 0x0001f339 242c: 0001ee9f .word 0x0001ee9f 2430: 0000e931 .word 0x0000e931 2434: 0001ef03 .word 0x0001ef03 2438: 0000179d .word 0x0000179d 0000243c : { 243c: b513 push {r0, r1, r4, lr} if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list; 243e: b911 cbnz r1, 2446 2440: 3028 adds r0, #40 ; 0x28 } 2442: b002 add sp, #8 2444: bd10 pop {r4, pc} info.part = part; 2446: f88d 1000 strb.w r1, [sp] info.result = NULL; 244a: 2400 movs r4, #0 res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 244c: 4b04 ldr r3, [pc, #16] ; (2460 ) info.result = NULL; 244e: 9401 str r4, [sp, #4] res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 2450: 466a mov r2, sp 2452: 2108 movs r1, #8 2454: 4798 blx r3 if(res != LV_RES_OK) return NULL; 2456: 2801 cmp r0, #1 return info.result; 2458: bf0c ite eq 245a: 9801 ldreq r0, [sp, #4] if(res != LV_RES_OK) return NULL; 245c: 4620 movne r0, r4 245e: e7f0 b.n 2442 2460: 00001fd5 .word 0x00001fd5 00002464 : * @param part a part of object or 0xFF to remove from all parts * @param prop a property or 0xFF to remove all porpeties * @param tr_limit delete transitions only "older" then this. `NULL` is not used */ static void trans_del(lv_obj_t * obj, uint8_t part, lv_style_property_t prop, lv_style_trans_t * tr_limit) { 2464: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 2468: 4607 mov r7, r0 246a: 4698 mov r8, r3 lv_style_trans_t * tr; lv_style_trans_t * tr_prev; tr = _lv_ll_get_tail(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 246c: 4819 ldr r0, [pc, #100] ; (24d4 ) 246e: 4b1a ldr r3, [pc, #104] ; (24d8 ) while(tr != NULL) { if(tr == tr_limit) break; /*'tr' might be deleted, so get the next object while 'tr' is valid*/ tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 2470: f8df 9060 ldr.w r9, [pc, #96] ; 24d4 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { /* Remove the transitioned property from trans. style * to allow changing it by normal styles*/ lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 2474: f8df b07c ldr.w fp, [pc, #124] ; 24f4 { 2478: 460d mov r5, r1 247a: 4616 mov r6, r2 tr = _lv_ll_get_tail(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 247c: 4798 blx r3 247e: 4604 mov r4, r0 while(tr != NULL) { 2480: b90c cbnz r4, 2486 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); lv_mem_free(tr); } tr = tr_prev; } } 2482: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if(tr == tr_limit) break; 2486: 4544 cmp r4, r8 2488: d0fb beq.n 2482 tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 248a: 4b14 ldr r3, [pc, #80] ; (24dc ) 248c: 4621 mov r1, r4 248e: 4648 mov r0, r9 2490: 4798 blx r3 2492: 4682 mov sl, r0 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 2494: 6820 ldr r0, [r4, #0] 2496: 42b8 cmp r0, r7 2498: d11a bne.n 24d0 249a: 79a1 ldrb r1, [r4, #6] 249c: 42a9 cmp r1, r5 249e: d001 beq.n 24a4 24a0: 2dff cmp r5, #255 ; 0xff 24a2: d115 bne.n 24d0 24a4: 88a2 ldrh r2, [r4, #4] 24a6: 42b2 cmp r2, r6 24a8: d001 beq.n 24ae 24aa: 2eff cmp r6, #255 ; 0xff 24ac: d110 bne.n 24d0 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 24ae: 47d8 blx fp lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 24b0: 4a0b ldr r2, [pc, #44] ; (24e0 ) 24b2: 4790 blx r2 lv_style_remove_prop(style_trans, tr->prop); 24b4: 88a1 ldrh r1, [r4, #4] 24b6: 4a0b ldr r2, [pc, #44] ; (24e4 ) 24b8: 4790 blx r2 lv_anim_del(tr, NULL); 24ba: 4a0b ldr r2, [pc, #44] ; (24e8 ) 24bc: 2100 movs r1, #0 24be: 4620 mov r0, r4 24c0: 4790 blx r2 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 24c2: 4a0a ldr r2, [pc, #40] ; (24ec ) 24c4: 4648 mov r0, r9 24c6: 4621 mov r1, r4 24c8: 4790 blx r2 lv_mem_free(tr); 24ca: 4a09 ldr r2, [pc, #36] ; (24f0 ) 24cc: 4620 mov r0, r4 24ce: 4790 blx r2 { 24d0: 4654 mov r4, sl 24d2: e7d5 b.n 2480 24d4: 20008660 .word 0x20008660 24d8: 0000e6f7 .word 0x0000e6f7 24dc: 0000e71d .word 0x0000e71d 24e0: 00005cb5 .word 0x00005cb5 24e4: 0000580d .word 0x0000580d 24e8: 0000dcf5 .word 0x0000dcf5 24ec: 0000e7b5 .word 0x0000e7b5 24f0: 0000eb2d .word 0x0000eb2d 24f4: 0000243d .word 0x0000243d 000024f8 : { 24f8: b537 push {r0, r1, r2, r4, r5, lr} lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 24fa: 4b0e ldr r3, [pc, #56] ; (2534 ) { 24fc: 4604 mov r4, r0 24fe: 460d mov r5, r1 lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 2500: 4798 blx r3 if(style_dsc == NULL) { 2502: b950 cbnz r0, 251a LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`"); 2504: 4b0c ldr r3, [pc, #48] ; (2538 ) 2506: 9300 str r3, [sp, #0] 2508: 490c ldr r1, [pc, #48] ; (253c ) 250a: 4b0d ldr r3, [pc, #52] ; (2540 ) 250c: 4c0d ldr r4, [pc, #52] ; (2544 ) 250e: f240 4292 movw r2, #1170 ; 0x492 2512: 2002 movs r0, #2 2514: 47a0 blx r4 } 2516: b003 add sp, #12 2518: bd30 pop {r4, r5, pc} _lv_style_list_reset(style_dsc); 251a: 4b0b ldr r3, [pc, #44] ; (2548 ) 251c: 4798 blx r3 trans_del(obj, part, 0xFF, NULL); 251e: 4620 mov r0, r4 2520: 4c0a ldr r4, [pc, #40] ; (254c ) 2522: 2300 movs r3, #0 2524: 22ff movs r2, #255 ; 0xff 2526: 4629 mov r1, r5 2528: 46a4 mov ip, r4 } 252a: b003 add sp, #12 252c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} trans_del(obj, part, 0xFF, NULL); 2530: 4760 bx ip 2532: bf00 nop 2534: 0000243d .word 0x0000243d 2538: 0001ef58 .word 0x0001ef58 253c: 0001ee9f .word 0x0001ee9f 2540: 0001f3f5 .word 0x0001f3f5 2544: 0000e931 .word 0x0000e931 2548: 00005cc5 .word 0x00005cc5 254c: 00002465 .word 0x00002465 00002550 : tr->prop = prop_tmp; } static void trans_anim_ready_cb(lv_anim_t * a) { 2550: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} * if there no more transitions for this property * It allows changing it by normal styles*/ bool running = false; lv_style_trans_t * tr_i; _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 2554: 4b16 ldr r3, [pc, #88] ; (25b0 ) lv_style_trans_t * tr = a->var; 2556: 6804 ldr r4, [r0, #0] _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 2558: 4816 ldr r0, [pc, #88] ; (25b4 ) 255a: 4e16 ldr r6, [pc, #88] ; (25b4 ) 255c: 4f16 ldr r7, [pc, #88] ; (25b8 ) 255e: 4798 blx r3 bool running = false; 2560: 2500 movs r5, #0 _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 2562: b990 cbnz r0, 258a if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { running = true; } } if(!running) { 2564: b945 cbnz r5, 2578 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 2566: 79a1 ldrb r1, [r4, #6] 2568: 4b14 ldr r3, [pc, #80] ; (25bc ) 256a: 6820 ldr r0, [r4, #0] 256c: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 256e: 4b14 ldr r3, [pc, #80] ; (25c0 ) 2570: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 2572: 88a1 ldrh r1, [r4, #4] 2574: 4b13 ldr r3, [pc, #76] ; (25c4 ) 2576: 4798 blx r3 } _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 2578: 480e ldr r0, [pc, #56] ; (25b4 ) 257a: 4b13 ldr r3, [pc, #76] ; (25c8 ) 257c: 4621 mov r1, r4 257e: 4798 blx r3 lv_mem_free(tr); 2580: 4620 mov r0, r4 2582: 4b12 ldr r3, [pc, #72] ; (25cc ) } 2584: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} lv_mem_free(tr); 2588: 4718 bx r3 if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { 258a: 42a0 cmp r0, r4 258c: d00c beq.n 25a8 258e: 6802 ldr r2, [r0, #0] 2590: 6823 ldr r3, [r4, #0] 2592: 429a cmp r2, r3 2594: d108 bne.n 25a8 2596: 6843 ldr r3, [r0, #4] 2598: f023 427f bic.w r2, r3, #4278190080 ; 0xff000000 259c: 6863 ldr r3, [r4, #4] 259e: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000 running = true; 25a2: 429a cmp r2, r3 25a4: bf08 it eq 25a6: 2501 moveq r5, #1 _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 25a8: 4601 mov r1, r0 25aa: 4630 mov r0, r6 25ac: 47b8 blx r7 25ae: e7d8 b.n 2562 25b0: 0000e6f1 .word 0x0000e6f1 25b4: 20008660 .word 0x20008660 25b8: 0000e6fd .word 0x0000e6fd 25bc: 0000243d .word 0x0000243d 25c0: 00005cb5 .word 0x00005cb5 25c4: 0000580d .word 0x0000580d 25c8: 0000e7b5 .word 0x0000e7b5 25cc: 0000eb2d .word 0x0000eb2d 000025d0 : { 25d0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 25d2: 4b0c ldr r3, [pc, #48] ; (2604 ) { 25d4: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 25d6: 4798 blx r3 25d8: 4605 mov r5, r0 25da: b968 cbnz r0, 25f8 25dc: 4b0a ldr r3, [pc, #40] ; (2608 ) 25de: 490b ldr r1, [pc, #44] ; (260c ) 25e0: 9300 str r3, [sp, #0] 25e2: f640 2241 movw r2, #2625 ; 0xa41 25e6: 2003 movs r0, #3 25e8: 4e09 ldr r6, [pc, #36] ; (2610 ) 25ea: 47b0 blx r6 25ec: 4809 ldr r0, [pc, #36] ; (2614 ) 25ee: 490a ldr r1, [pc, #40] ; (2618 ) 25f0: 4622 mov r2, r4 25f2: 462b mov r3, r5 25f4: 4788 blx r1 25f6: e7fe b.n 25f6 return obj->hidden == 0 ? false : true; 25f8: f894 0034 ldrb.w r0, [r4, #52] ; 0x34 } 25fc: f3c0 1000 ubfx r0, r0, #4, #1 2600: b002 add sp, #8 2602: bd70 pop {r4, r5, r6, pc} 2604: 00001795 .word 0x00001795 2608: 0001f443 .word 0x0001f443 260c: 0001ee9f .word 0x0001ee9f 2610: 0000e931 .word 0x0000e931 2614: 0001ef03 .word 0x0001ef03 2618: 0000179d .word 0x0000179d 0000261c : { 261c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2620: 4b35 ldr r3, [pc, #212] ; (26f8 ) { 2622: b086 sub sp, #24 2624: 4604 mov r4, r0 2626: 4688 mov r8, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2628: 4798 blx r3 262a: 4605 mov r5, r0 262c: b968 cbnz r0, 264a 262e: 4b33 ldr r3, [pc, #204] ; (26fc ) 2630: 4933 ldr r1, [pc, #204] ; (2700 ) 2632: 9300 str r3, [sp, #0] 2634: f44f 72f0 mov.w r2, #480 ; 0x1e0 2638: 2003 movs r0, #3 263a: 4e32 ldr r6, [pc, #200] ; (2704 ) 263c: 47b0 blx r6 263e: 4832 ldr r0, [pc, #200] ; (2708 ) 2640: 4932 ldr r1, [pc, #200] ; (270c ) 2642: 4622 mov r2, r4 2644: 462b mov r3, r5 2646: 4788 blx r1 2648: e7fe b.n 2648 if(lv_obj_get_hidden(obj)) return; 264a: 4f31 ldr r7, [pc, #196] ; (2710 ) 264c: 4620 mov r0, r4 264e: 47b8 blx r7 2650: 2800 cmp r0, #0 2652: d141 bne.n 26d8 lv_obj_t * obj_scr = lv_obj_get_screen(obj); 2654: 4b2f ldr r3, [pc, #188] ; (2714 ) 2656: 4620 mov r0, r4 2658: 4798 blx r3 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 265a: 4b2f ldr r3, [pc, #188] ; (2718 ) lv_obj_t * obj_scr = lv_obj_get_screen(obj); 265c: 4605 mov r5, r0 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 265e: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 2660: 4b2e ldr r3, [pc, #184] ; (271c ) lv_disp_t * disp = lv_obj_get_disp(obj_scr); 2662: 4606 mov r6, r0 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 2664: 4798 blx r3 2666: 4285 cmp r5, r0 2668: d12c bne.n 26c4 lv_coord_t ext_size = obj->ext_draw_pad; 266a: f9b4 5032 ldrsh.w r5, [r4, #50] ; 0x32 lv_area_copy(&obj_coords, &obj->coords); 266e: 4b2c ldr r3, [pc, #176] ; (2720 ) 2670: f104 0110 add.w r1, r4, #16 2674: a802 add r0, sp, #8 2676: 4798 blx r3 obj_coords.x1 -= ext_size; 2678: f8bd 2008 ldrh.w r2, [sp, #8] 267c: b2ab uxth r3, r5 267e: 1ad2 subs r2, r2, r3 2680: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 2684: f8bd 200a ldrh.w r2, [sp, #10] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 2688: 4d26 ldr r5, [pc, #152] ; (2724 ) obj_coords.y1 -= ext_size; 268a: 1ad2 subs r2, r2, r3 268c: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 2690: f8bd 200c ldrh.w r2, [sp, #12] 2694: 441a add r2, r3 2696: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 269a: f8bd 200e ldrh.w r2, [sp, #14] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 269e: 4641 mov r1, r8 obj_coords.y2 += ext_size; 26a0: 4413 add r3, r2 is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 26a2: a804 add r0, sp, #16 26a4: aa02 add r2, sp, #8 obj_coords.y2 += ext_size; 26a6: f8ad 300e strh.w r3, [sp, #14] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 26aa: 47a8 blx r5 if(is_common == false) return; /*The area is not on the object*/ 26ac: b1a0 cbz r0, 26d8 lv_obj_t * par = lv_obj_get_parent(obj); 26ae: f8df 8084 ldr.w r8, [pc, #132] ; 2734 26b2: 4620 mov r0, r4 par = lv_obj_get_parent(par); 26b4: 47c0 blx r8 26b6: 4604 mov r4, r0 while(par != NULL) { 26b8: b988 cbnz r0, 26de if(is_common) _lv_inv_area(disp, &area_trunc); 26ba: 4b1b ldr r3, [pc, #108] ; (2728 ) 26bc: a904 add r1, sp, #16 26be: 4630 mov r0, r6 26c0: 4798 blx r3 26c2: e009 b.n 26d8 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 26c4: 4b19 ldr r3, [pc, #100] ; (272c ) 26c6: 4630 mov r0, r6 26c8: 4798 blx r3 26ca: 4285 cmp r5, r0 26cc: d0cd beq.n 266a obj_scr == lv_disp_get_layer_sys(disp)) { 26ce: 4b18 ldr r3, [pc, #96] ; (2730 ) 26d0: 4630 mov r0, r6 26d2: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 26d4: 4285 cmp r5, r0 26d6: d0c8 beq.n 266a } 26d8: b006 add sp, #24 26da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 26de: a904 add r1, sp, #16 26e0: f104 0210 add.w r2, r4, #16 26e4: 4608 mov r0, r1 26e6: 47a8 blx r5 if(is_common == false) break; /*If no common parts with parent break;*/ 26e8: 2800 cmp r0, #0 26ea: d0f5 beq.n 26d8 if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 26ec: 4620 mov r0, r4 26ee: 47b8 blx r7 26f0: 2800 cmp r0, #0 26f2: d1f1 bne.n 26d8 par = lv_obj_get_parent(par); 26f4: 4620 mov r0, r4 26f6: e7dd b.n 26b4 26f8: 00001795 .word 0x00001795 26fc: 0001f455 .word 0x0001f455 2700: 0001ee9f .word 0x0001ee9f 2704: 0000e931 .word 0x0000e931 2708: 0001ef03 .word 0x0001ef03 270c: 0000179d .word 0x0000179d 2710: 000025d1 .word 0x000025d1 2714: 0000211d .word 0x0000211d 2718: 00002175 .word 0x00002175 271c: 00001825 .word 0x00001825 2720: 00001cc9 .word 0x00001cc9 2724: 0000ded1 .word 0x0000ded1 2728: 00004ef9 .word 0x00004ef9 272c: 00001861 .word 0x00001861 2730: 0000189d .word 0x0000189d 2734: 000020d5 .word 0x000020d5 00002738 : { 2738: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 273a: 4b1a ldr r3, [pc, #104] ; (27a4 ) { 273c: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 273e: 4798 blx r3 2740: 4604 mov r4, r0 2742: b968 cbnz r0, 2760 2744: 4b18 ldr r3, [pc, #96] ; (27a8 ) 2746: 4919 ldr r1, [pc, #100] ; (27ac ) 2748: 9300 str r3, [sp, #0] 274a: f240 220d movw r2, #525 ; 0x20d 274e: 2003 movs r0, #3 2750: 4e17 ldr r6, [pc, #92] ; (27b0 ) 2752: 47b0 blx r6 2754: 4817 ldr r0, [pc, #92] ; (27b4 ) 2756: 4918 ldr r1, [pc, #96] ; (27b8 ) 2758: 462a mov r2, r5 275a: 4623 mov r3, r4 275c: 4788 blx r1 275e: e7fe b.n 275e lv_coord_t ext_size = obj->ext_draw_pad; 2760: f9b5 4032 ldrsh.w r4, [r5, #50] ; 0x32 lv_area_copy(&obj_coords, &obj->coords); 2764: 4b15 ldr r3, [pc, #84] ; (27bc ) 2766: f105 0110 add.w r1, r5, #16 276a: a802 add r0, sp, #8 276c: 4798 blx r3 obj_coords.x1 -= ext_size; 276e: f8bd 2008 ldrh.w r2, [sp, #8] 2772: b2a3 uxth r3, r4 2774: 1ad2 subs r2, r2, r3 2776: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 277a: f8bd 200a ldrh.w r2, [sp, #10] 277e: 1ad2 subs r2, r2, r3 2780: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 2784: f8bd 200c ldrh.w r2, [sp, #12] 2788: 441a add r2, r3 278a: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 278e: f8bd 200e ldrh.w r2, [sp, #14] 2792: 4413 add r3, r2 2794: f8ad 300e strh.w r3, [sp, #14] lv_obj_invalidate_area(obj, &obj_coords); 2798: a902 add r1, sp, #8 279a: 4b09 ldr r3, [pc, #36] ; (27c0 ) 279c: 4628 mov r0, r5 279e: 4798 blx r3 } 27a0: b004 add sp, #16 27a2: bd70 pop {r4, r5, r6, pc} 27a4: 00001795 .word 0x00001795 27a8: 0001f46c .word 0x0001f46c 27ac: 0001ee9f .word 0x0001ee9f 27b0: 0000e931 .word 0x0000e931 27b4: 0001ef03 .word 0x0001ef03 27b8: 0000179d .word 0x0000179d 27bc: 00001cc9 .word 0x00001cc9 27c0: 0000261d .word 0x0000261d 000027c4 : { 27c4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 27c6: 4b19 ldr r3, [pc, #100] ; (282c ) { 27c8: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 27ca: 4798 blx r3 27cc: 4604 mov r4, r0 27ce: b968 cbnz r0, 27ec 27d0: 4b17 ldr r3, [pc, #92] ; (2830 ) 27d2: 4918 ldr r1, [pc, #96] ; (2834 ) 27d4: 9300 str r3, [sp, #0] 27d6: f240 2262 movw r2, #610 ; 0x262 27da: 2003 movs r0, #3 27dc: 4e16 ldr r6, [pc, #88] ; (2838 ) 27de: 47b0 blx r6 27e0: 4816 ldr r0, [pc, #88] ; (283c ) 27e2: 4917 ldr r1, [pc, #92] ; (2840 ) 27e4: 462a mov r2, r5 27e6: 4623 mov r3, r4 27e8: 4788 blx r1 27ea: e7fe b.n 27ea lv_obj_t * parent = lv_obj_get_parent(obj); 27ec: 4b15 ldr r3, [pc, #84] ; (2844 ) 27ee: 4628 mov r0, r5 27f0: 4798 blx r3 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 27f2: 1d07 adds r7, r0, #4 27f4: 4b14 ldr r3, [pc, #80] ; (2848 ) lv_obj_t * parent = lv_obj_get_parent(obj); 27f6: 4604 mov r4, r0 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 27f8: 4638 mov r0, r7 27fa: 4798 blx r3 27fc: 4285 cmp r5, r0 27fe: d013 beq.n 2828 lv_obj_invalidate(parent); 2800: 4e12 ldr r6, [pc, #72] ; (284c ) 2802: 4620 mov r0, r4 2804: 47b0 blx r6 _lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true); 2806: 462a mov r2, r5 2808: 4639 mov r1, r7 280a: 4638 mov r0, r7 280c: 2301 movs r3, #1 280e: 4f10 ldr r7, [pc, #64] ; (2850 ) 2810: 47b8 blx r7 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj); 2812: 69e3 ldr r3, [r4, #28] 2814: 462a mov r2, r5 2816: 2101 movs r1, #1 2818: 4620 mov r0, r4 281a: 4798 blx r3 lv_obj_invalidate(parent); 281c: 4620 mov r0, r4 281e: 4633 mov r3, r6 } 2820: b003 add sp, #12 2822: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} lv_obj_invalidate(parent); 2826: 4718 bx r3 } 2828: b003 add sp, #12 282a: bdf0 pop {r4, r5, r6, r7, pc} 282c: 00001795 .word 0x00001795 2830: 0001f47e .word 0x0001f47e 2834: 0001ee9f .word 0x0001ee9f 2838: 0000e931 .word 0x0000e931 283c: 0001ef03 .word 0x0001ef03 2840: 0000179d .word 0x0000179d 2844: 000020d5 .word 0x000020d5 2848: 0000e6f1 .word 0x0000e6f1 284c: 00002739 .word 0x00002739 2850: 0000e835 .word 0x0000e835 00002854 : { 2854: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2858: 4b2e ldr r3, [pc, #184] ; (2914 ) { 285a: b087 sub sp, #28 285c: 4604 mov r4, r0 285e: 4688 mov r8, r1 2860: 4617 mov r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2862: 4798 blx r3 2864: 4605 mov r5, r0 2866: b968 cbnz r0, 2884 2868: 4b2b ldr r3, [pc, #172] ; (2918 ) 286a: 492c ldr r1, [pc, #176] ; (291c ) 286c: 9300 str r3, [sp, #0] 286e: f240 2296 movw r2, #662 ; 0x296 2872: 2003 movs r0, #3 2874: 4e2a ldr r6, [pc, #168] ; (2920 ) 2876: 47b0 blx r6 2878: 482a ldr r0, [pc, #168] ; (2924 ) 287a: 492b ldr r1, [pc, #172] ; (2928 ) 287c: 4622 mov r2, r4 287e: 462b mov r3, r5 2880: 4788 blx r1 2882: e7fe b.n 2882 lv_obj_t * par = obj->parent; 2884: 6826 ldr r6, [r4, #0] if(par == NULL) { 2886: b95e cbnz r6, 28a0 LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object"); 2888: 4b28 ldr r3, [pc, #160] ; (292c ) 288a: 9300 str r3, [sp, #0] 288c: 4923 ldr r1, [pc, #140] ; (291c ) 288e: 4b22 ldr r3, [pc, #136] ; (2918 ) 2890: 4c23 ldr r4, [pc, #140] ; (2920 ) 2892: f44f 7227 mov.w r2, #668 ; 0x29c 2896: 2002 movs r0, #2 2898: 47a0 blx r4 } 289a: b007 add sp, #28 289c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} diff.x = x - obj->coords.x1; 28a0: 8a21 ldrh r1, [r4, #16] 28a2: 8a33 ldrh r3, [r6, #16] diff.y = y - obj->coords.y1; 28a4: 8a62 ldrh r2, [r4, #18] diff.x = x - obj->coords.x1; 28a6: 1a5b subs r3, r3, r1 28a8: eb03 0108 add.w r1, r3, r8 diff.y = y - obj->coords.y1; 28ac: 8a73 ldrh r3, [r6, #18] 28ae: 1a9b subs r3, r3, r2 28b0: 19da adds r2, r3, r7 28b2: b297 uxth r7, r2 diff.x = x - obj->coords.x1; 28b4: fa1f f881 uxth.w r8, r1 diff.y = y - obj->coords.y1; 28b8: b212 sxth r2, r2 if(diff.x == 0 && diff.y == 0) return; 28ba: ea58 0307 orrs.w r3, r8, r7 diff.x = x - obj->coords.x1; 28be: b20d sxth r5, r1 diff.y = y - obj->coords.y1; 28c0: 9203 str r2, [sp, #12] if(diff.x == 0 && diff.y == 0) return; 28c2: d0ea beq.n 289a lv_obj_invalidate(obj); 28c4: 4620 mov r0, r4 28c6: f8df 9070 ldr.w r9, [pc, #112] ; 2938 28ca: 47c8 blx r9 lv_obj_get_coords(obj, &ori); 28cc: a904 add r1, sp, #16 28ce: 4620 mov r0, r4 28d0: 4b17 ldr r3, [pc, #92] ; (2930 ) 28d2: 4798 blx r3 obj->coords.x1 += diff.x; 28d4: 8a23 ldrh r3, [r4, #16] refresh_children_position(obj, diff.x, diff.y); 28d6: 9a03 ldr r2, [sp, #12] obj->coords.x1 += diff.x; 28d8: 4443 add r3, r8 28da: 8223 strh r3, [r4, #16] obj->coords.y1 += diff.y; 28dc: 8a63 ldrh r3, [r4, #18] 28de: 443b add r3, r7 28e0: 8263 strh r3, [r4, #18] obj->coords.x2 += diff.x; 28e2: 8aa3 ldrh r3, [r4, #20] 28e4: 4498 add r8, r3 obj->coords.y2 += diff.y; 28e6: 8ae3 ldrh r3, [r4, #22] obj->coords.x2 += diff.x; 28e8: f8a4 8014 strh.w r8, [r4, #20] obj->coords.y2 += diff.y; 28ec: 441f add r7, r3 refresh_children_position(obj, diff.x, diff.y); 28ee: 4629 mov r1, r5 28f0: 4620 mov r0, r4 28f2: 4b10 ldr r3, [pc, #64] ; (2934 ) obj->coords.y2 += diff.y; 28f4: 82e7 strh r7, [r4, #22] refresh_children_position(obj, diff.x, diff.y); 28f6: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 28f8: 69e3 ldr r3, [r4, #28] 28fa: aa04 add r2, sp, #16 28fc: 2102 movs r1, #2 28fe: 4620 mov r0, r4 2900: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 2902: 69f3 ldr r3, [r6, #28] 2904: 4622 mov r2, r4 2906: 2101 movs r1, #1 2908: 4630 mov r0, r6 290a: 4798 blx r3 lv_obj_invalidate(obj); 290c: 4620 mov r0, r4 290e: 47c8 blx r9 2910: e7c3 b.n 289a 2912: bf00 nop 2914: 00001795 .word 0x00001795 2918: 0001f4ac .word 0x0001f4ac 291c: 0001ee9f .word 0x0001ee9f 2920: 0000e931 .word 0x0000e931 2924: 0001ef03 .word 0x0001ef03 2928: 0000179d .word 0x0000179d 292c: 0001ef8e .word 0x0001ef8e 2930: 00002285 .word 0x00002285 2934: 00001c71 .word 0x00001c71 2938: 00002739 .word 0x00002739 0000293c : { 293c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 293e: 4b0f ldr r3, [pc, #60] ; (297c ) { 2940: 4604 mov r4, r0 2942: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2944: 4798 blx r3 2946: 4605 mov r5, r0 2948: b968 cbnz r0, 2966 294a: 4b0d ldr r3, [pc, #52] ; (2980 ) 294c: 490d ldr r1, [pc, #52] ; (2984 ) 294e: 9300 str r3, [sp, #0] 2950: f44f 7233 mov.w r2, #716 ; 0x2cc 2954: 2003 movs r0, #3 2956: 4e0c ldr r6, [pc, #48] ; (2988 ) 2958: 47b0 blx r6 295a: 480c ldr r0, [pc, #48] ; (298c ) 295c: 490c ldr r1, [pc, #48] ; (2990 ) 295e: 4622 mov r2, r4 2960: 462b mov r3, r5 2962: 4788 blx r1 2964: e7fe b.n 2964 lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 2966: 4b0b ldr r3, [pc, #44] ; (2994 ) 2968: 4620 mov r0, r4 296a: 4798 blx r3 296c: 4b0a ldr r3, [pc, #40] ; (2998 ) 296e: 4602 mov r2, r0 2970: 4631 mov r1, r6 2972: 4620 mov r0, r4 } 2974: b002 add sp, #8 2976: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 297a: 4718 bx r3 297c: 00001795 .word 0x00001795 2980: 0001f4bb .word 0x0001f4bb 2984: 0001ee9f .word 0x0001ee9f 2988: 0000e931 .word 0x0000e931 298c: 0001ef03 .word 0x0001ef03 2990: 0000179d .word 0x0000179d 2994: 0000233d .word 0x0000233d 2998: 00002855 .word 0x00002855 0000299c : { 299c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 299e: 4b0f ldr r3, [pc, #60] ; (29dc ) { 29a0: 4604 mov r4, r0 29a2: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29a4: 4798 blx r3 29a6: 4605 mov r5, r0 29a8: b968 cbnz r0, 29c6 29aa: 4b0d ldr r3, [pc, #52] ; (29e0 ) 29ac: 490d ldr r1, [pc, #52] ; (29e4 ) 29ae: 9300 str r3, [sp, #0] 29b0: f44f 7236 mov.w r2, #728 ; 0x2d8 29b4: 2003 movs r0, #3 29b6: 4e0c ldr r6, [pc, #48] ; (29e8 ) 29b8: 47b0 blx r6 29ba: 480c ldr r0, [pc, #48] ; (29ec ) 29bc: 490c ldr r1, [pc, #48] ; (29f0 ) 29be: 4622 mov r2, r4 29c0: 462b mov r3, r5 29c2: 4788 blx r1 29c4: e7fe b.n 29c4 lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 29c6: 4b0b ldr r3, [pc, #44] ; (29f4 ) 29c8: 4620 mov r0, r4 29ca: 4798 blx r3 29cc: 4b0a ldr r3, [pc, #40] ; (29f8 ) 29ce: 4601 mov r1, r0 29d0: 4632 mov r2, r6 29d2: 4620 mov r0, r4 } 29d4: b002 add sp, #8 29d6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 29da: 4718 bx r3 29dc: 00001795 .word 0x00001795 29e0: 0001f4c8 .word 0x0001f4c8 29e4: 0001ee9f .word 0x0001ee9f 29e8: 0000e931 .word 0x0000e931 29ec: 0001ef03 .word 0x0001ef03 29f0: 0000179d .word 0x0000179d 29f4: 000022dd .word 0x000022dd 29f8: 00002855 .word 0x00002855 000029fc : { 29fc: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a00: f8df 90d8 ldr.w r9, [pc, #216] ; 2adc { 2a04: f9bd 8030 ldrsh.w r8, [sp, #48] ; 0x30 2a08: 4604 mov r4, r0 2a0a: 460d mov r5, r1 2a0c: 4617 mov r7, r2 2a0e: 461e mov r6, r3 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a10: 47c8 blx r9 2a12: 4682 mov sl, r0 2a14: b968 cbnz r0, 2a32 2a16: 4b2a ldr r3, [pc, #168] ; (2ac0 ) 2a18: 492a ldr r1, [pc, #168] ; (2ac4 ) 2a1a: 9300 str r3, [sp, #0] 2a1c: f240 326d movw r2, #877 ; 0x36d 2a20: 2003 movs r0, #3 2a22: 4d29 ldr r5, [pc, #164] ; (2ac8 ) 2a24: 47a8 blx r5 2a26: 4829 ldr r0, [pc, #164] ; (2acc ) 2a28: 4929 ldr r1, [pc, #164] ; (2ad0 ) 2a2a: 4622 mov r2, r4 2a2c: 4653 mov r3, sl 2a2e: 4788 blx r1 2a30: e7fe b.n 2a30 if(base == NULL) base = lv_obj_get_parent(obj); 2a32: b91d cbnz r5, 2a3c 2a34: 4b27 ldr r3, [pc, #156] ; (2ad4 ) 2a36: 4620 mov r0, r4 2a38: 4798 blx r3 2a3a: 4605 mov r5, r0 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2a3c: 4628 mov r0, r5 2a3e: 47c8 blx r9 2a40: 4681 mov r9, r0 2a42: b968 cbnz r0, 2a60 2a44: 4b1e ldr r3, [pc, #120] ; (2ac0 ) 2a46: 491f ldr r1, [pc, #124] ; (2ac4 ) 2a48: 9300 str r3, [sp, #0] 2a4a: f240 3271 movw r2, #881 ; 0x371 2a4e: 2003 movs r0, #3 2a50: 4c1d ldr r4, [pc, #116] ; (2ac8 ) 2a52: 47a0 blx r4 2a54: 481d ldr r0, [pc, #116] ; (2acc ) 2a56: 491e ldr r1, [pc, #120] ; (2ad0 ) 2a58: 462a mov r2, r5 2a5a: 464b mov r3, r9 2a5c: 4788 blx r1 2a5e: e7fe b.n 2a5e _lv_area_align(&base->coords, &obj->coords, align, &new_pos); 2a60: 463a mov r2, r7 2a62: f104 0110 add.w r1, r4, #16 2a66: ab03 add r3, sp, #12 2a68: f105 0010 add.w r0, r5, #16 2a6c: f8df 9070 ldr.w r9, [pc, #112] ; 2ae0 2a70: 47c8 blx r9 lv_obj_t * par = lv_obj_get_parent(obj); 2a72: 4b18 ldr r3, [pc, #96] ; (2ad4 ) 2a74: 4620 mov r0, r4 2a76: 4798 blx r3 new_pos.y += y_ofs; 2a78: f8bd 200e ldrh.w r2, [sp, #14] new_pos.x += x_ofs; 2a7c: f8bd 100c ldrh.w r1, [sp, #12] lv_coord_t par_abs_y = par->coords.y1; 2a80: f9b0 3012 ldrsh.w r3, [r0, #18] new_pos.x -= par_abs_x; 2a84: 8a00 ldrh r0, [r0, #16] new_pos.y += y_ofs; 2a86: 4442 add r2, r8 new_pos.x += x_ofs; 2a88: 4431 add r1, r6 new_pos.x -= par_abs_x; 2a8a: 1a09 subs r1, r1, r0 new_pos.y -= par_abs_y; 2a8c: 1ad2 subs r2, r2, r3 new_pos.x -= par_abs_x; 2a8e: b209 sxth r1, r1 new_pos.y -= par_abs_y; 2a90: b212 sxth r2, r2 lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2a92: 4b11 ldr r3, [pc, #68] ; (2ad8 ) new_pos.x -= par_abs_x; 2a94: f8ad 100c strh.w r1, [sp, #12] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2a98: 4620 mov r0, r4 new_pos.y -= par_abs_y; 2a9a: f8ad 200e strh.w r2, [sp, #14] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2a9e: 4798 blx r3 obj->realign.origo_align = 0; 2aa0: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 obj->realign.align = align; 2aa4: f884 7048 strb.w r7, [r4, #72] ; 0x48 obj->realign.origo_align = 0; 2aa8: f36f 0341 bfc r3, #1, #1 obj->realign.xofs = x_ofs; 2aac: f8a4 6044 strh.w r6, [r4, #68] ; 0x44 obj->realign.yofs = y_ofs; 2ab0: f8a4 8046 strh.w r8, [r4, #70] ; 0x46 obj->realign.base = base; 2ab4: 6425 str r5, [r4, #64] ; 0x40 obj->realign.origo_align = 0; 2ab6: f884 3049 strb.w r3, [r4, #73] ; 0x49 } 2aba: b004 add sp, #16 2abc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 2ac0: 0001f4d5 .word 0x0001f4d5 2ac4: 0001ee9f .word 0x0001ee9f 2ac8: 0000e931 .word 0x0000e931 2acc: 0001ef03 .word 0x0001ef03 2ad0: 0000179d .word 0x0000179d 2ad4: 000020d5 .word 0x000020d5 2ad8: 00002855 .word 0x00002855 2adc: 00001795 .word 0x00001795 2ae0: 0000e179 .word 0x0000e179 00002ae4 : { 2ae4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 2ae8: b087 sub sp, #28 2aea: e9cd 2303 strd r2, r3, [sp, #12] LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2aee: 4d5c ldr r5, [pc, #368] ; (2c60 ) { 2af0: f9bd 3040 ldrsh.w r3, [sp, #64] ; 0x40 2af4: 9305 str r3, [sp, #20] 2af6: 4680 mov r8, r0 2af8: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2afa: 47a8 blx r5 2afc: 46ab mov fp, r5 2afe: 4604 mov r4, r0 2b00: b968 cbnz r0, 2b1e 2b02: 4b58 ldr r3, [pc, #352] ; (2c64 ) 2b04: 4958 ldr r1, [pc, #352] ; (2c68 ) 2b06: 9300 str r3, [sp, #0] 2b08: f240 3295 movw r2, #917 ; 0x395 2b0c: 2003 movs r0, #3 2b0e: 4d57 ldr r5, [pc, #348] ; (2c6c ) 2b10: 47a8 blx r5 2b12: 4857 ldr r0, [pc, #348] ; (2c70 ) 2b14: 4957 ldr r1, [pc, #348] ; (2c74 ) 2b16: 4642 mov r2, r8 2b18: 4623 mov r3, r4 2b1a: 4788 blx r1 2b1c: e7fe b.n 2b1c lv_coord_t new_x = lv_obj_get_x(obj); 2b1e: 4b56 ldr r3, [pc, #344] ; (2c78 ) lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2b20: f8df 9168 ldr.w r9, [pc, #360] ; 2c8c lv_coord_t new_x = lv_obj_get_x(obj); 2b24: 4640 mov r0, r8 2b26: 4798 blx r3 lv_coord_t new_y = lv_obj_get_y(obj); 2b28: 4b54 ldr r3, [pc, #336] ; (2c7c ) lv_coord_t new_x = lv_obj_get_x(obj); 2b2a: 4604 mov r4, r0 lv_coord_t new_y = lv_obj_get_y(obj); 2b2c: 4640 mov r0, r8 2b2e: 4798 blx r3 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2b30: 4b53 ldr r3, [pc, #332] ; (2c80 ) lv_coord_t new_y = lv_obj_get_y(obj); 2b32: 4682 mov sl, r0 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2b34: 4640 mov r0, r8 2b36: 4798 blx r3 2b38: 4605 mov r5, r0 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2b3a: 4640 mov r0, r8 2b3c: 47c8 blx r9 2b3e: 4607 mov r7, r0 if(base == NULL) { 2b40: b91e cbnz r6, 2b4a base = lv_obj_get_parent(obj); 2b42: 4950 ldr r1, [pc, #320] ; (2c84 ) 2b44: 4640 mov r0, r8 2b46: 4788 blx r1 2b48: 4606 mov r6, r0 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2b4a: 4630 mov r0, r6 2b4c: 47d8 blx fp 2b4e: 4b4c ldr r3, [pc, #304] ; (2c80 ) 2b50: 4683 mov fp, r0 2b52: b968 cbnz r0, 2b70 2b54: 4b43 ldr r3, [pc, #268] ; (2c64 ) 2b56: 4944 ldr r1, [pc, #272] ; (2c68 ) 2b58: 9300 str r3, [sp, #0] 2b5a: f240 32a1 movw r2, #929 ; 0x3a1 2b5e: 2003 movs r0, #3 2b60: 4c42 ldr r4, [pc, #264] ; (2c6c ) 2b62: 47a0 blx r4 2b64: 4842 ldr r0, [pc, #264] ; (2c70 ) 2b66: 4943 ldr r1, [pc, #268] ; (2c74 ) 2b68: 4632 mov r2, r6 2b6a: 465b mov r3, fp 2b6c: 4788 blx r1 2b6e: e7fe b.n 2b6e switch(align) { 2b70: 9a03 ldr r2, [sp, #12] lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2b72: eb05 75d5 add.w r5, r5, r5, lsr #31 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2b76: eb07 77d7 add.w r7, r7, r7, lsr #31 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2b7a: f345 054f sbfx r5, r5, #1, #16 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2b7e: f347 074f sbfx r7, r7, #1, #16 switch(align) { 2b82: 2a14 cmp r2, #20 2b84: d826 bhi.n 2bd4 2b86: e8df f002 tbb [pc, r2] 2b8a: 590b .short 0x590b 2b8c: 4e5d5f1b .word 0x4e5d5f1b 2b90: 59635b67 .word 0x59635b67 2b94: 4e5d5f1b .word 0x4e5d5f1b 2b98: 5d5b5967 .word 0x5d5b5967 2b9c: 635f .short 0x635f 2b9e: 67 .byte 0x67 2b9f: 00 .byte 0x00 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2ba0: 4630 mov r0, r6 2ba2: 4798 blx r3 2ba4: eb00 70d0 add.w r0, r0, r0, lsr #31 2ba8: ebc5 0060 rsb r0, r5, r0, asr #1 new_x = lv_obj_get_width(base) - obj_w_half; 2bac: b204 sxth r4, r0 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2bae: 4630 mov r0, r6 2bb0: 47c8 blx r9 2bb2: eb00 70d0 add.w r0, r0, r0, lsr #31 2bb6: ebc7 0060 rsb r0, r7, r0, asr #1 new_y = lv_obj_get_height(base) - obj_h_half; 2bba: fa0f fa80 sxth.w sl, r0 break; 2bbe: e009 b.n 2bd4 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2bc0: 4630 mov r0, r6 2bc2: 4798 blx r3 2bc4: eb00 70d0 add.w r0, r0, r0, lsr #31 2bc8: ebc5 0060 rsb r0, r5, r0, asr #1 new_y = -obj_h_half; 2bcc: 427f negs r7, r7 new_x = lv_obj_get_width(base) - obj_w_half; 2bce: b204 sxth r4, r0 new_y = -obj_h_half; 2bd0: fa0f fa87 sxth.w sl, r7 lv_obj_t * par = lv_obj_get_parent(obj); 2bd4: 4b2b ldr r3, [pc, #172] ; (2c84 ) 2bd6: 4640 mov r0, r8 2bd8: 4798 blx r3 new_x += x_ofs + base_abs_x; 2bda: 9b04 ldr r3, [sp, #16] 2bdc: 8a31 ldrh r1, [r6, #16] new_y += y_ofs + base_abs_y; 2bde: 9a05 ldr r2, [sp, #20] new_x += x_ofs + base_abs_x; 2be0: 4419 add r1, r3 new_y += y_ofs + base_abs_y; 2be2: 8a73 ldrh r3, [r6, #18] new_x += x_ofs + base_abs_x; 2be4: 440c add r4, r1 new_y += y_ofs + base_abs_y; 2be6: 4413 add r3, r2 new_x -= par_abs_x; 2be8: 8a01 ldrh r1, [r0, #16] new_y -= par_abs_y; 2bea: 8a40 ldrh r0, [r0, #18] new_y += y_ofs + base_abs_y; 2bec: eb03 020a add.w r2, r3, sl new_x -= par_abs_x; 2bf0: 1a61 subs r1, r4, r1 new_y -= par_abs_y; 2bf2: 1a12 subs r2, r2, r0 lv_obj_set_pos(obj, new_x, new_y); 2bf4: 4b24 ldr r3, [pc, #144] ; (2c88 ) 2bf6: b212 sxth r2, r2 2bf8: b209 sxth r1, r1 2bfa: 4640 mov r0, r8 2bfc: 4798 blx r3 obj->realign.align = align; 2bfe: 9b03 ldr r3, [sp, #12] 2c00: f888 3048 strb.w r3, [r8, #72] ; 0x48 obj->realign.xofs = x_ofs; 2c04: 9b04 ldr r3, [sp, #16] 2c06: f8a8 3044 strh.w r3, [r8, #68] ; 0x44 obj->realign.yofs = y_ofs; 2c0a: 9b05 ldr r3, [sp, #20] 2c0c: f8a8 3046 strh.w r3, [r8, #70] ; 0x46 obj->realign.origo_align = 1; 2c10: f898 3049 ldrb.w r3, [r8, #73] ; 0x49 obj->realign.base = base; 2c14: f8c8 6040 str.w r6, [r8, #64] ; 0x40 obj->realign.origo_align = 1; 2c18: f043 0302 orr.w r3, r3, #2 2c1c: f888 3049 strb.w r3, [r8, #73] ; 0x49 } 2c20: b007 add sp, #28 2c22: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2c26: 4630 mov r0, r6 2c28: 4798 blx r3 2c2a: eb00 70d0 add.w r0, r0, r0, lsr #31 2c2e: ebc5 0060 rsb r0, r5, r0, asr #1 new_x = lv_obj_get_width(base) - obj_w_half; 2c32: b204 sxth r4, r0 new_y = lv_obj_get_height(base) - obj_h_half; 2c34: 4630 mov r0, r6 2c36: 47c8 blx r9 2c38: 1bc0 subs r0, r0, r7 2c3a: e7be b.n 2bba new_x = -obj_w_half; 2c3c: 4268 negs r0, r5 2c3e: e7c5 b.n 2bcc new_x = -obj_w_half; 2c40: 4268 negs r0, r5 2c42: e7b3 b.n 2bac new_x = -obj_w_half; 2c44: 4268 negs r0, r5 2c46: e7f4 b.n 2c32 new_x = lv_obj_get_width(base) - obj_w_half; 2c48: 4630 mov r0, r6 2c4a: 4798 blx r3 2c4c: 1b40 subs r0, r0, r5 2c4e: e7bd b.n 2bcc new_x = lv_obj_get_width(base) - obj_w_half; 2c50: 4630 mov r0, r6 2c52: 4798 blx r3 2c54: 1b40 subs r0, r0, r5 2c56: e7a9 b.n 2bac new_x = lv_obj_get_width(base) - obj_w_half; 2c58: 4630 mov r0, r6 2c5a: 4798 blx r3 2c5c: 1b40 subs r0, r0, r5 2c5e: e7e8 b.n 2c32 2c60: 00001795 .word 0x00001795 2c64: 0001f4e2 .word 0x0001f4e2 2c68: 0001ee9f .word 0x0001ee9f 2c6c: 0000e931 .word 0x0000e931 2c70: 0001ef03 .word 0x0001ef03 2c74: 0000179d .word 0x0000179d 2c78: 000022dd .word 0x000022dd 2c7c: 0000233d .word 0x0000233d 2c80: 0000239d .word 0x0000239d 2c84: 000020d5 .word 0x000020d5 2c88: 00002855 .word 0x00002855 2c8c: 000023ed .word 0x000023ed 00002c90 : { 2c90: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c92: 4b12 ldr r3, [pc, #72] ; (2cdc ) { 2c94: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c96: 4798 blx r3 2c98: 4605 mov r5, r0 2c9a: b968 cbnz r0, 2cb8 2c9c: 4b10 ldr r3, [pc, #64] ; (2ce0 ) 2c9e: 4911 ldr r1, [pc, #68] ; (2ce4 ) 2ca0: 9300 str r3, [sp, #0] 2ca2: f240 422a movw r2, #1066 ; 0x42a 2ca6: 2003 movs r0, #3 2ca8: 4e0f ldr r6, [pc, #60] ; (2ce8 ) 2caa: 47b0 blx r6 2cac: 480f ldr r0, [pc, #60] ; (2cec ) 2cae: 4910 ldr r1, [pc, #64] ; (2cf0 ) 2cb0: 4622 mov r2, r4 2cb2: 462b mov r3, r5 2cb4: 4788 blx r1 2cb6: e7fe b.n 2cb6 if(obj->realign.origo_align) 2cb8: f894 5049 ldrb.w r5, [r4, #73] ; 0x49 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2cbc: f9b4 0046 ldrsh.w r0, [r4, #70] ; 0x46 2cc0: 6c21 ldr r1, [r4, #64] ; 0x40 2cc2: f894 2048 ldrb.w r2, [r4, #72] ; 0x48 2cc6: f9b4 3044 ldrsh.w r3, [r4, #68] ; 0x44 2cca: 9000 str r0, [sp, #0] 2ccc: 4620 mov r0, r4 if(obj->realign.origo_align) 2cce: 07ac lsls r4, r5, #30 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2cd0: bf4c ite mi 2cd2: 4c08 ldrmi r4, [pc, #32] ; (2cf4 ) lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2cd4: 4c08 ldrpl r4, [pc, #32] ; (2cf8 ) 2cd6: 47a0 blx r4 } 2cd8: b002 add sp, #8 2cda: bd70 pop {r4, r5, r6, pc} 2cdc: 00001795 .word 0x00001795 2ce0: 0001f4f5 .word 0x0001f4f5 2ce4: 0001ee9f .word 0x0001ee9f 2ce8: 0000e931 .word 0x0000e931 2cec: 0001ef03 .word 0x0001ef03 2cf0: 0000179d .word 0x0000179d 2cf4: 00002ae5 .word 0x00002ae5 2cf8: 000029fd .word 0x000029fd 00002cfc : { 2cfc: b5f8 push {r3, r4, r5, r6, r7, lr} lv_obj_t * child = lv_obj_get_child(obj, NULL); 2cfe: 2100 movs r1, #0 2d00: 4d0b ldr r5, [pc, #44] ; (2d30 ) lv_obj_invalidate(child); 2d02: 4f0c ldr r7, [pc, #48] ; (2d34 ) { 2d04: 4606 mov r6, r0 lv_obj_t * child = lv_obj_get_child(obj, NULL); 2d06: 47a8 blx r5 2d08: 4604 mov r4, r0 while(child != NULL) { 2d0a: b904 cbnz r4, 2d0e } 2d0c: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_obj_invalidate(child); 2d0e: 4620 mov r0, r4 2d10: 47b8 blx r7 child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 2d12: 69e3 ldr r3, [r4, #28] 2d14: 2200 movs r2, #0 2d16: 2104 movs r1, #4 2d18: 4620 mov r0, r4 2d1a: 4798 blx r3 lv_obj_invalidate(child); 2d1c: 4620 mov r0, r4 2d1e: 47b8 blx r7 refresh_children_style(child); /*Check children too*/ 2d20: 4620 mov r0, r4 2d22: f7ff ffeb bl 2cfc child = lv_obj_get_child(obj, child); 2d26: 4621 mov r1, r4 2d28: 4630 mov r0, r6 2d2a: 47a8 blx r5 2d2c: 4604 mov r4, r0 2d2e: e7ec b.n 2d0a 2d30: 00002221 .word 0x00002221 2d34: 00002739 .word 0x00002739 00002d38 : { 2d38: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d3a: 4b46 ldr r3, [pc, #280] ; (2e54 ) { 2d3c: 4605 mov r5, r0 2d3e: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d40: 4798 blx r3 2d42: 4606 mov r6, r0 2d44: b968 cbnz r0, 2d62 2d46: 4b44 ldr r3, [pc, #272] ; (2e58 ) 2d48: 4944 ldr r1, [pc, #272] ; (2e5c ) 2d4a: 9300 str r3, [sp, #0] 2d4c: f240 521d movw r2, #1309 ; 0x51d 2d50: 2003 movs r0, #3 2d52: 4c43 ldr r4, [pc, #268] ; (2e60 ) 2d54: 47a0 blx r4 2d56: 4843 ldr r0, [pc, #268] ; (2e64 ) 2d58: 4943 ldr r1, [pc, #268] ; (2e68 ) 2d5a: 462a mov r2, r5 2d5c: 4633 mov r3, r6 2d5e: 4788 blx r1 2d60: e7fe b.n 2d60 switch(prop) { 2d62: 2c7f cmp r4, #127 ; 0x7f 2d64: 4e41 ldr r6, [pc, #260] ; (2e6c ) 2d66: d857 bhi.n 2e18 2d68: 2c6f cmp r4, #111 ; 0x6f 2d6a: d81a bhi.n 2da2 2d6c: 2c5c cmp r4, #92 ; 0x5c 2d6e: d848 bhi.n 2e02 2d70: 2c3f cmp r4, #63 ; 0x3f 2d72: d83d bhi.n 2df0 2d74: 2c07 cmp r4, #7 2d76: d84a bhi.n 2e0e 2d78: 2c01 cmp r4, #1 2d7a: d942 bls.n 2e02 lv_obj_invalidate(obj); 2d7c: 4628 mov r0, r5 2d7e: 47b0 blx r6 obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL); 2d80: 69eb ldr r3, [r5, #28] 2d82: 2200 movs r2, #0 2d84: 2104 movs r1, #4 2d86: 4628 mov r0, r5 2d88: 4798 blx r3 switch(prop) { 2d8a: 2c18 cmp r4, #24 2d8c: d855 bhi.n 2e3a 2d8e: 2c14 cmp r4, #20 2d90: d955 bls.n 2e3e if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL); 2d92: 6828 ldr r0, [r5, #0] 2d94: 2800 cmp r0, #0 2d96: d052 beq.n 2e3e 2d98: 69c3 ldr r3, [r0, #28] 2d9a: 2200 movs r2, #0 2d9c: 2101 movs r1, #1 2d9e: 4798 blx r3 2da0: e04d b.n 2e3e switch(prop) { 2da2: f1a4 0370 sub.w r3, r4, #112 ; 0x70 2da6: 2b0f cmp r3, #15 2da8: d82b bhi.n 2e02 2daa: a201 add r2, pc, #4 ; (adr r2, 2db0 ) 2dac: f852 f023 ldr.w pc, [r2, r3, lsl #2] 2db0: 00002d7d .word 0x00002d7d 2db4: 00002d7d .word 0x00002d7d 2db8: 00002e03 .word 0x00002e03 2dbc: 00002d7d .word 0x00002d7d 2dc0: 00002d7d .word 0x00002d7d 2dc4: 00002d7d .word 0x00002d7d 2dc8: 00002e03 .word 0x00002e03 2dcc: 00002e03 .word 0x00002e03 2dd0: 00002e03 .word 0x00002e03 2dd4: 00002e03 .word 0x00002e03 2dd8: 00002e03 .word 0x00002e03 2ddc: 00002e03 .word 0x00002e03 2de0: 00002d7d .word 0x00002d7d 2de4: 00002e03 .word 0x00002e03 2de8: 00002d7d .word 0x00002d7d 2dec: 00002d7d .word 0x00002d7d 2df0: f1a4 0240 sub.w r2, r4, #64 ; 0x40 2df4: b293 uxth r3, r2 2df6: 2201 movs r2, #1 2df8: 409a lsls r2, r3 2dfa: 4b1d ldr r3, [pc, #116] ; (2e70 ) 2dfc: 4013 ands r3, r2 2dfe: 2b00 cmp r3, #0 2e00: d1bc bne.n 2d7c lv_obj_invalidate(obj); 2e02: 4628 mov r0, r5 2e04: 4633 mov r3, r6 } 2e06: b002 add sp, #8 2e08: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 2e0c: 4718 bx r3 switch(prop) { 2e0e: f1a4 0310 sub.w r3, r4, #16 2e12: 2b08 cmp r3, #8 2e14: d8f5 bhi.n 2e02 2e16: e7b1 b.n 2d7c 2e18: f248 0381 movw r3, #32897 ; 0x8081 2e1c: 429c cmp r4, r3 2e1e: d808 bhi.n 2e32 2e20: f248 037f movw r3, #32895 ; 0x807f 2e24: 429c cmp r4, r3 2e26: d8a9 bhi.n 2d7c 2e28: 2c90 cmp r4, #144 ; 0x90 2e2a: d0a7 beq.n 2d7c 2e2c: 2cff cmp r4, #255 ; 0xff 2e2e: d1e8 bne.n 2e02 2e30: e7a4 b.n 2d7c 2e32: f248 038e movw r3, #32910 ; 0x808e 2e36: 429c cmp r4, r3 2e38: e7f9 b.n 2e2e switch(prop) { 2e3a: 2cff cmp r4, #255 ; 0xff 2e3c: d0a9 beq.n 2d92 lv_obj_invalidate(obj); 2e3e: 4628 mov r0, r5 2e40: 47b0 blx r6 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 2e42: 2cff cmp r4, #255 ; 0xff 2e44: d001 beq.n 2e4a 2e46: 0423 lsls r3, r4, #16 2e48: d502 bpl.n 2e50 2e4a: 4b0a ldr r3, [pc, #40] ; (2e74 ) 2e4c: 4628 mov r0, r5 2e4e: e7da b.n 2e06 } 2e50: b002 add sp, #8 2e52: bd70 pop {r4, r5, r6, pc} 2e54: 00001795 .word 0x00001795 2e58: 0001f504 .word 0x0001f504 2e5c: 0001ee9f .word 0x0001ee9f 2e60: 0000e931 .word 0x0000e931 2e64: 0001ef03 .word 0x0001ef03 2e68: 0000179d .word 0x0000179d 2e6c: 00002739 .word 0x00002739 2e70: 100f1003 .word 0x100f1003 2e74: 00002cfd .word 0x00002cfd 00002e78 : { 2e78: b510 push {r4, lr} lv_obj_clean_style_list(obj, part); 2e7a: 4b04 ldr r3, [pc, #16] ; (2e8c ) { 2e7c: 4604 mov r4, r0 lv_obj_clean_style_list(obj, part); 2e7e: 4798 blx r3 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2e80: 4620 mov r0, r4 2e82: 4b03 ldr r3, [pc, #12] ; (2e90 ) } 2e84: e8bd 4010 ldmia.w sp!, {r4, lr} lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2e88: 21ff movs r1, #255 ; 0xff 2e8a: 4718 bx r3 2e8c: 000024f9 .word 0x000024f9 2e90: 00002d39 .word 0x00002d39 00002e94 : { 2e94: b5f8 push {r3, r4, r5, r6, r7, lr} lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 2e96: 4c1e ldr r4, [pc, #120] ; (2f10 ) { 2e98: 4606 mov r6, r0 2e9a: 460d mov r5, r1 2e9c: 2700 movs r7, #0 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 2e9e: b2f9 uxtb r1, r7 2ea0: 4628 mov r0, r5 2ea2: 47a0 blx r4 if(dsc == NULL) break; 2ea4: 4602 mov r2, r0 2ea6: b1f8 cbz r0, 2ee8 for(ci = 0; ci < dsc->style_cnt; ci++) { 2ea8: 7901 ldrb r1, [r0, #4] 2eaa: f04f 0c00 mov.w ip, #0 2eae: fa5f f38c uxtb.w r3, ip 2eb2: 4299 cmp r1, r3 2eb4: d915 bls.n 2ee2 */ void _lv_style_list_reset(lv_style_list_t * style_list); static inline lv_style_t * lv_style_list_get_style(lv_style_list_t * list, uint8_t id) { if(list->has_trans && list->skip_trans) id++; 2eb6: 7950 ldrb r0, [r2, #5] 2eb8: f000 0006 and.w r0, r0, #6 2ebc: 2806 cmp r0, #6 2ebe: d123 bne.n 2f08 2ec0: 3301 adds r3, #1 2ec2: b2db uxtb r3, r3 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 2ec4: 4299 cmp r1, r3 2ec6: d916 bls.n 2ef6 return list->style_list[id]; 2ec8: 6810 ldr r0, [r2, #0] 2eca: f850 3023 ldr.w r3, [r0, r3, lsl #2] if(class == style || style == NULL) { 2ece: 429e cmp r6, r3 2ed0: d003 beq.n 2eda 2ed2: f10c 0c01 add.w ip, ip, #1 2ed6: 2e00 cmp r6, #0 2ed8: d1e9 bne.n 2eae lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2eda: 4b0e ldr r3, [pc, #56] ; (2f14 ) 2edc: 21ff movs r1, #255 ; 0xff 2ede: 4628 mov r0, r5 2ee0: 4798 blx r3 for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 2ee2: 3701 adds r7, #1 2ee4: 2f40 cmp r7, #64 ; 0x40 2ee6: d1da bne.n 2e9e lv_obj_t * child = lv_obj_get_child(obj, NULL); 2ee8: 4f0b ldr r7, [pc, #44] ; (2f18 ) 2eea: 2100 movs r1, #0 2eec: 4628 mov r0, r5 child = lv_obj_get_child(obj, child); 2eee: 47b8 blx r7 2ef0: 4604 mov r4, r0 while(child) { 2ef2: b910 cbnz r0, 2efa } 2ef4: bdf8 pop {r3, r4, r5, r6, r7, pc} if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 2ef6: 2300 movs r3, #0 2ef8: e7e9 b.n 2ece report_style_mod_core(style, child); 2efa: 4621 mov r1, r4 2efc: 4630 mov r0, r6 2efe: f7ff ffc9 bl 2e94 child = lv_obj_get_child(obj, child); 2f02: 4621 mov r1, r4 2f04: 4628 mov r0, r5 2f06: e7f2 b.n 2eee 2f08: 2900 cmp r1, #0 2f0a: d1dd bne.n 2ec8 2f0c: 460b mov r3, r1 2f0e: e7de b.n 2ece 2f10: 0000243d .word 0x0000243d 2f14: 00002d39 .word 0x00002d39 2f18: 00002221 .word 0x00002221 00002f1c : { 2f1c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_disp_t * d = lv_disp_get_next(NULL); 2f20: 4e0f ldr r6, [pc, #60] ; (2f60 ) _LV_LL_READ(d->scr_ll, i) { 2f22: f8df 9040 ldr.w r9, [pc, #64] ; 2f64 report_style_mod_core(style, i); 2f26: f8df a040 ldr.w sl, [pc, #64] ; 2f68 { 2f2a: 4607 mov r7, r0 lv_disp_t * d = lv_disp_get_next(NULL); 2f2c: 2000 movs r0, #0 2f2e: 47b0 blx r6 2f30: 4604 mov r4, r0 while(d) { 2f32: b90c cbnz r4, 2f38 } 2f34: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} _LV_LL_READ(d->scr_ll, i) { 2f38: f104 0830 add.w r8, r4, #48 ; 0x30 2f3c: 4640 mov r0, r8 2f3e: 47c8 blx r9 2f40: f8df b028 ldr.w fp, [pc, #40] ; 2f6c 2f44: 4605 mov r5, r0 2f46: b91d cbnz r5, 2f50 d = lv_disp_get_next(d); 2f48: 4620 mov r0, r4 2f4a: 47b0 blx r6 2f4c: 4604 mov r4, r0 2f4e: e7f0 b.n 2f32 report_style_mod_core(style, i); 2f50: 4629 mov r1, r5 2f52: 4638 mov r0, r7 2f54: 47d0 blx sl _LV_LL_READ(d->scr_ll, i) { 2f56: 4629 mov r1, r5 2f58: 4640 mov r0, r8 2f5a: 47d8 blx fp 2f5c: 4605 mov r5, r0 2f5e: e7f2 b.n 2f46 2f60: 0000da09 .word 0x0000da09 2f64: 0000e6f1 .word 0x0000e6f1 2f68: 00002e95 .word 0x00002e95 2f6c: 0000e6fd .word 0x0000e6fd 00002f70 : { 2f70: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 2f74: 4b3a ldr r3, [pc, #232] ; (3060 ) { 2f76: 4604 mov r4, r0 2f78: 460d mov r5, r1 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 2f7a: 7981 ldrb r1, [r0, #6] 2f7c: 6800 ldr r0, [r0, #0] 2f7e: 4798 blx r3 lv_style_t * style = _lv_style_list_get_transition_style(list); 2f80: 4b38 ldr r3, [pc, #224] ; (3064 ) 2f82: 4798 blx r3 if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/ 2f84: 88a1 ldrh r1, [r4, #4] 2f86: f001 030f and.w r3, r1, #15 2f8a: 2b08 cmp r3, #8 2f8c: d816 bhi.n 2fbc if(v == 0) x = tr->start_value._int; 2f8e: b94d cbnz r5, 2fa4 2f90: f9b4 2008 ldrsh.w r2, [r4, #8] _lv_style_set_int(style, tr->prop, x); 2f94: 4b34 ldr r3, [pc, #208] ; (3068 ) 2f96: 4798 blx r3 lv_obj_refresh_style(tr->obj, tr->prop); 2f98: 88a1 ldrh r1, [r4, #4] 2f9a: 6820 ldr r0, [r4, #0] 2f9c: 4b33 ldr r3, [pc, #204] ; (306c ) } 2f9e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} lv_obj_refresh_style(tr->obj, tr->prop); 2fa2: 4718 bx r3 else if(v == 255) x = tr->end_value._int; 2fa4: 2dff cmp r5, #255 ; 0xff 2fa6: f9b4 200c ldrsh.w r2, [r4, #12] 2faa: d0f3 beq.n 2f94 else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8); 2fac: f9b4 3008 ldrsh.w r3, [r4, #8] 2fb0: 1ad2 subs r2, r2, r3 2fb2: 4355 muls r5, r2 2fb4: eb03 2525 add.w r5, r3, r5, asr #8 2fb8: b22a sxth r2, r5 2fba: e7eb b.n 2f94 else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 2fbc: 2b0b cmp r3, #11 2fbe: d836 bhi.n 302e if(v <= 0) x = tr->start_value._color; 2fc0: 2d00 cmp r5, #0 2fc2: dc03 bgt.n 2fcc 2fc4: 8922 ldrh r2, [r4, #8] _lv_style_set_color(style, tr->prop, x); 2fc6: 4b2a ldr r3, [pc, #168] ; (3070 ) 2fc8: 4798 blx r3 2fca: e7e5 b.n 2f98 else if(v >= 255) x = tr->end_value._color; 2fcc: 2dfe cmp r5, #254 ; 0xfe 2fce: dd01 ble.n 2fd4 2fd0: 89a2 ldrh r2, [r4, #12] 2fd2: e7f8 b.n 2fc6 { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 2fd4: 8923 ldrh r3, [r4, #8] 2fd6: 89a6 ldrh r6, [r4, #12] LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 2fd8: 7a22 ldrb r2, [r4, #8] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 2fda: f1c5 0cff rsb ip, r5, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 2fde: f3c3 1345 ubfx r3, r3, #5, #6 2fe2: fb0c f303 mul.w r3, ip, r3 2fe6: f3c6 1645 ubfx r6, r6, #5, #6 2fea: fb15 3606 smlabb r6, r5, r6, r3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 2fee: 7b23 ldrb r3, [r4, #12] 2ff0: f002 021f and.w r2, r2, #31 2ff4: fb0c f202 mul.w r2, ip, r2 2ff8: f003 031f and.w r3, r3, #31 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 2ffc: f248 0781 movw r7, #32897 ; 0x8081 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 3000: fb15 2303 smlabb r3, r5, r3, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 3004: 437e muls r6, r7 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 3006: 437b muls r3, r7 3008: f3c6 56c5 ubfx r6, r6, #23, #6 300c: f3c3 53c4 ubfx r3, r3, #23, #5 3010: ea43 1346 orr.w r3, r3, r6, lsl #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 3014: 7a66 ldrb r6, [r4, #9] 3016: 7b62 ldrb r2, [r4, #13] 3018: 08f6 lsrs r6, r6, #3 301a: 08d2 lsrs r2, r2, #3 301c: fb0c fc06 mul.w ip, ip, r6 3020: fb15 c202 smlabb r2, r5, r2, ip 3024: 437a muls r2, r7 3026: 0dd2 lsrs r2, r2, #23 3028: ea43 22c2 orr.w r2, r3, r2, lsl #11 302c: e7cb b.n 2fc6 else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 302e: 2b0d cmp r3, #13 3030: d80f bhi.n 3052 if(v <= 0) x = tr->start_value._opa; 3032: 2d00 cmp r5, #0 3034: dc03 bgt.n 303e 3036: 7a22 ldrb r2, [r4, #8] _lv_style_set_opa(style, tr->prop, x); 3038: 4b0e ldr r3, [pc, #56] ; (3074 ) 303a: 4798 blx r3 303c: e7ac b.n 2f98 else if(v >= 255) x = tr->end_value._opa; 303e: 2dfe cmp r5, #254 ; 0xfe 3040: 7b22 ldrb r2, [r4, #12] 3042: dcf9 bgt.n 3038 else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8); 3044: 7a23 ldrb r3, [r4, #8] 3046: 1ad2 subs r2, r2, r3 3048: 4355 muls r5, r2 304a: eb03 2525 add.w r5, r3, r5, asr #8 304e: b2ea uxtb r2, r5 3050: e7f2 b.n 3038 if(v < 128) x = tr->start_value._ptr; 3052: 2d7f cmp r5, #127 ; 0x7f 3054: bfd4 ite le 3056: 68a2 ldrle r2, [r4, #8] else x = tr->end_value._ptr; 3058: 68e2 ldrgt r2, [r4, #12] _lv_style_set_ptr(style, tr->prop, x); 305a: 4b07 ldr r3, [pc, #28] ; (3078 ) 305c: 4798 blx r3 305e: e79b b.n 2f98 3060: 0000243d .word 0x0000243d 3064: 00005cb5 .word 0x00005cb5 3068: 00005875 .word 0x00005875 306c: 00002d39 .word 0x00002d39 3070: 00005945 .word 0x00005945 3074: 00005a15 .word 0x00005a15 3078: 00005ae9 .word 0x00005ae9 0000307c : { 307c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 307e: 4b0b ldr r3, [pc, #44] ; (30ac ) { 3080: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3082: 4798 blx r3 3084: 4604 mov r4, r0 3086: b968 cbnz r0, 30a4 3088: 4b09 ldr r3, [pc, #36] ; (30b0 ) 308a: 490a ldr r1, [pc, #40] ; (30b4 ) 308c: 9300 str r3, [sp, #0] 308e: f640 22b1 movw r2, #2737 ; 0xab1 3092: 2003 movs r0, #3 3094: 4e08 ldr r6, [pc, #32] ; (30b8 ) 3096: 47b0 blx r6 3098: 4808 ldr r0, [pc, #32] ; (30bc ) 309a: 4909 ldr r1, [pc, #36] ; (30c0 ) 309c: 462a mov r2, r5 309e: 4623 mov r3, r4 30a0: 4788 blx r1 30a2: e7fe b.n 30a2 } 30a4: 2000 movs r0, #0 30a6: b002 add sp, #8 30a8: bd70 pop {r4, r5, r6, pc} 30aa: bf00 nop 30ac: 00001795 .word 0x00001795 30b0: 0001f5c5 .word 0x0001f5c5 30b4: 0001ee9f .word 0x0001ee9f 30b8: 0000e931 .word 0x0000e931 30bc: 0001ef03 .word 0x0001ef03 30c0: 0000179d .word 0x0000179d 000030c4 : { 30c4: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} 30c8: 460d mov r5, r1 if(parent == NULL) { 30ca: 4606 mov r6, r0 30cc: 2800 cmp r0, #0 30ce: d177 bne.n 31c0 lv_disp_t * disp = lv_disp_get_default(); 30d0: 4b89 ldr r3, [pc, #548] ; (32f8 ) 30d2: 4798 blx r3 if(!disp) { 30d4: 4604 mov r4, r0 30d6: b940 cbnz r0, 30ea LV_LOG_WARN("lv_obj_create: not display created to so far. No place to assign the new screen"); 30d8: 4b88 ldr r3, [pc, #544] ; (32fc ) 30da: 9300 str r3, [sp, #0] 30dc: 4988 ldr r1, [pc, #544] ; (3300 ) 30de: 4b89 ldr r3, [pc, #548] ; (3304 ) 30e0: 22cf movs r2, #207 ; 0xcf 30e2: 2002 movs r0, #2 LV_LOG_INFO("Object create ready"); 30e4: 4d88 ldr r5, [pc, #544] ; (3308 ) 30e6: 47a8 blx r5 return new_obj; 30e8: e016 b.n 3118 new_obj = _lv_ll_ins_head(&disp->scr_ll); 30ea: 4b88 ldr r3, [pc, #544] ; (330c ) 30ec: 3030 adds r0, #48 ; 0x30 30ee: 4798 blx r3 LV_ASSERT_MEM(new_obj); 30f0: 4b87 ldr r3, [pc, #540] ; (3310 ) new_obj = _lv_ll_ins_head(&disp->scr_ll); 30f2: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 30f4: 4798 blx r3 30f6: 4607 mov r7, r0 30f8: b960 cbnz r0, 3114 30fa: 4b82 ldr r3, [pc, #520] ; (3304 ) 30fc: 4980 ldr r1, [pc, #512] ; (3300 ) 30fe: 9300 str r3, [sp, #0] 3100: 22d4 movs r2, #212 ; 0xd4 3102: 2003 movs r0, #3 3104: 4d80 ldr r5, [pc, #512] ; (3308 ) 3106: 47a8 blx r5 3108: 4882 ldr r0, [pc, #520] ; (3314 ) 310a: 4983 ldr r1, [pc, #524] ; (3318 ) 310c: 4622 mov r2, r4 310e: 463b mov r3, r7 3110: 4788 blx r1 3112: e7fe b.n 3112 if(new_obj == NULL) return NULL; 3114: b924 cbnz r4, 3120 3116: 2400 movs r4, #0 } 3118: 4620 mov r0, r4 311a: b004 add sp, #16 311c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3120: 214c movs r1, #76 ; 0x4c 3122: 4b7e ldr r3, [pc, #504] ; (331c ) 3124: 4620 mov r0, r4 3126: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 3128: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 new_obj->event_cb = NULL; 312c: 61a6 str r6, [r4, #24] new_obj->base_dir = LV_BIDI_DIR_LTR; 312e: f366 1305 bfi r3, r6, #4, #2 3132: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 3136: 4b7a ldr r3, [pc, #488] ; (3320 ) 3138: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 313a: 4b7a ldr r3, [pc, #488] ; (3324 ) 313c: 6223 str r3, [r4, #32] new_obj->coords.x1 = 0; 313e: 6126 str r6, [r4, #16] new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1; 3140: 4b79 ldr r3, [pc, #484] ; (3328 ) 3142: 4630 mov r0, r6 3144: 4798 blx r3 3146: 3801 subs r0, #1 3148: 82a0 strh r0, [r4, #20] new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1; 314a: 4b78 ldr r3, [pc, #480] ; (332c ) 314c: 4630 mov r0, r6 314e: 4798 blx r3 3150: 3801 subs r0, #1 3152: 82e0 strh r0, [r4, #22] _lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); 3154: 4b76 ldr r3, [pc, #472] ; (3330 ) 3156: 214c movs r1, #76 ; 0x4c 3158: 1d20 adds r0, r4, #4 315a: 4798 blx r3 new_obj->realign.align = LV_ALIGN_CENTER; 315c: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 3160: f423 73ff bic.w r3, r3, #510 ; 0x1fe 3164: f023 0301 bic.w r3, r3, #1 3168: f8a4 3048 strh.w r3, [r4, #72] ; 0x48 new_obj->click = 1; 316c: 8ea3 ldrh r3, [r4, #52] ; 0x34 316e: f423 637f bic.w r3, r3, #4080 ; 0xff0 3172: f023 030f bic.w r3, r3, #15 3176: f443 63e0 orr.w r3, r3, #1792 ; 0x700 new_obj->realign.base = NULL; 317a: 2200 movs r2, #0 new_obj->click = 1; 317c: f043 0301 orr.w r3, r3, #1 lv_style_list_init(&new_obj->style_list); 3180: f104 0028 add.w r0, r4, #40 ; 0x28 new_obj->click = 1; 3184: 86a3 strh r3, [r4, #52] ; 0x34 new_obj->realign.xofs = 0; 3186: e9c4 2210 strd r2, r2, [r4, #64] ; 0x40 lv_style_list_init(&new_obj->style_list); 318a: 4b6a ldr r3, [pc, #424] ; (3334 ) new_obj->ext_click_pad_hor = 0; 318c: 6322 str r2, [r4, #48] ; 0x30 new_obj->group_p = NULL; 318e: 63a2 str r2, [r4, #56] ; 0x38 new_obj->protect = LV_PROTECT_NONE; 3190: 87a2 strh r2, [r4, #60] ; 0x3c new_obj->ext_attr = NULL; 3192: 6262 str r2, [r4, #36] ; 0x24 lv_style_list_init(&new_obj->style_list); 3194: 9003 str r0, [sp, #12] 3196: 4798 blx r3 if(copy == NULL) { 3198: 9803 ldr r0, [sp, #12] 319a: 2d00 cmp r5, #0 319c: f040 80d8 bne.w 3350 if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ); 31a0: 4b65 ldr r3, [pc, #404] ; (3338 ) 31a2: 2e00 cmp r6, #0 31a4: f000 809c beq.w 32e0 31a8: 2102 movs r1, #2 31aa: 4620 mov r0, r4 31ac: 4798 blx r3 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj); 31ae: 69f3 ldr r3, [r6, #28] 31b0: 4622 mov r2, r4 31b2: 2101 movs r1, #1 31b4: 4630 mov r0, r6 31b6: 4798 blx r3 lv_obj_invalidate(new_obj); 31b8: 4b60 ldr r3, [pc, #384] ; (333c ) 31ba: 4620 mov r0, r4 31bc: 4798 blx r3 31be: e092 b.n 32e6 LV_ASSERT_OBJ(parent, LV_OBJX_NAME); 31c0: 4f53 ldr r7, [pc, #332] ; (3310 ) 31c2: 47b8 blx r7 31c4: 4604 mov r4, r0 31c6: b960 cbnz r0, 31e2 31c8: 4b4e ldr r3, [pc, #312] ; (3304 ) 31ca: 494d ldr r1, [pc, #308] ; (3300 ) 31cc: 9300 str r3, [sp, #0] 31ce: 22ed movs r2, #237 ; 0xed 31d0: 2003 movs r0, #3 31d2: 4d4d ldr r5, [pc, #308] ; (3308 ) 31d4: 47a8 blx r5 31d6: 485a ldr r0, [pc, #360] ; (3340 ) 31d8: 494f ldr r1, [pc, #316] ; (3318 ) 31da: 4632 mov r2, r6 31dc: 4623 mov r3, r4 31de: 4788 blx r1 31e0: e7fe b.n 31e0 new_obj = _lv_ll_ins_head(&parent->child_ll); 31e2: 4b4a ldr r3, [pc, #296] ; (330c ) 31e4: 1d30 adds r0, r6, #4 31e6: 4798 blx r3 31e8: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 31ea: 47b8 blx r7 31ec: 4607 mov r7, r0 31ee: b960 cbnz r0, 320a 31f0: 4b44 ldr r3, [pc, #272] ; (3304 ) 31f2: 4943 ldr r1, [pc, #268] ; (3300 ) 31f4: 9300 str r3, [sp, #0] 31f6: 22f0 movs r2, #240 ; 0xf0 31f8: 2003 movs r0, #3 31fa: 4d43 ldr r5, [pc, #268] ; (3308 ) 31fc: 47a8 blx r5 31fe: 4845 ldr r0, [pc, #276] ; (3314 ) 3200: 4945 ldr r1, [pc, #276] ; (3318 ) 3202: 4622 mov r2, r4 3204: 463b mov r3, r7 3206: 4788 blx r1 3208: e7fe b.n 3208 if(new_obj == NULL) return NULL; 320a: 2c00 cmp r4, #0 320c: d083 beq.n 3116 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 320e: 4b43 ldr r3, [pc, #268] ; (331c ) new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 3210: f8df 9138 ldr.w r9, [pc, #312] ; 334c _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3214: 214c movs r1, #76 ; 0x4c 3216: 4620 mov r0, r4 3218: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 321a: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 new_obj->parent = parent; 321e: 6026 str r6, [r4, #0] new_obj->base_dir = LV_BIDI_DIR_LTR; 3220: f36f 1305 bfc r3, #4, #2 3224: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 3228: 4b3d ldr r3, [pc, #244] ; (3320 ) 322a: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 322c: 4b3d ldr r3, [pc, #244] ; (3324 ) 322e: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 3230: f04f 0800 mov.w r8, #0 new_obj->coords.y1 = parent->coords.y1; 3234: f9b6 3012 ldrsh.w r3, [r6, #18] 3238: 8263 strh r3, [r4, #18] new_obj->event_cb = NULL; 323a: f8c4 8018 str.w r8, [r4, #24] new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 323e: 4640 mov r0, r8 3240: 8a77 ldrh r7, [r6, #18] 3242: 47c8 blx r9 3244: f04f 0a32 mov.w sl, #50 ; 0x32 3248: fb00 f00a mul.w r0, r0, sl 324c: 28ef cmp r0, #239 ; 0xef 324e: dd2b ble.n 32a8 3250: 4640 mov r0, r8 3252: 47c8 blx r9 3254: 2350 movs r3, #80 ; 0x50 3256: fb00 300a mla r0, r0, sl, r3 325a: 23a0 movs r3, #160 ; 0xa0 325c: fb90 f0f3 sdiv r0, r0, r3 3260: b280 uxth r0, r0 3262: 4438 add r0, r7 3264: 82e0 strh r0, [r4, #22] if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) { 3266: 4b37 ldr r3, [pc, #220] ; (3344 ) 3268: 4620 mov r0, r4 326a: 4798 blx r3 326c: 2801 cmp r0, #1 326e: 4607 mov r7, r0 3270: d11c bne.n 32ac new_obj->coords.x2 = parent->coords.x2; 3272: f9b6 8014 ldrsh.w r8, [r6, #20] 3276: f8a4 8014 strh.w r8, [r4, #20] new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH; 327a: 2000 movs r0, #0 327c: 47c8 blx r9 327e: f04f 0a64 mov.w sl, #100 ; 0x64 3282: fb00 f00a mul.w r0, r0, sl 3286: 28ef cmp r0, #239 ; 0xef 3288: fa1f f888 uxth.w r8, r8 328c: dd08 ble.n 32a0 328e: 2000 movs r0, #0 3290: 47c8 blx r9 3292: 2350 movs r3, #80 ; 0x50 3294: fb00 370a mla r7, r0, sl, r3 3298: 23a0 movs r3, #160 ; 0xa0 329a: fb97 f7f3 sdiv r7, r7, r3 329e: b2bf uxth r7, r7 32a0: eba8 0707 sub.w r7, r8, r7 32a4: 8227 strh r7, [r4, #16] 32a6: e755 b.n 3154 new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 32a8: 2001 movs r0, #1 32aa: e7da b.n 3262 new_obj->coords.x1 = parent->coords.x1; 32ac: f9b6 7010 ldrsh.w r7, [r6, #16] 32b0: 8227 strh r7, [r4, #16] new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 32b2: 2000 movs r0, #0 32b4: 47c8 blx r9 32b6: f04f 0864 mov.w r8, #100 ; 0x64 32ba: fb00 f008 mul.w r0, r0, r8 32be: 28ef cmp r0, #239 ; 0xef 32c0: b2bf uxth r7, r7 32c2: dd0b ble.n 32dc 32c4: 2000 movs r0, #0 32c6: 47c8 blx r9 32c8: 2350 movs r3, #80 ; 0x50 32ca: fb00 3008 mla r0, r0, r8, r3 32ce: 23a0 movs r3, #160 ; 0xa0 32d0: fb90 f0f3 sdiv r0, r0, r3 32d4: b280 uxth r0, r0 32d6: 4438 add r0, r7 32d8: 82a0 strh r0, [r4, #20] 32da: e73b b.n 3154 32dc: 2001 movs r0, #1 32de: e7fa b.n 32d6 else lv_theme_apply(new_obj, LV_THEME_SCR); 32e0: 2101 movs r1, #1 32e2: 4620 mov r0, r4 32e4: 4798 blx r3 LV_LOG_INFO("Object create ready"); 32e6: 4b18 ldr r3, [pc, #96] ; (3348 ) 32e8: 9300 str r3, [sp, #0] 32ea: 4905 ldr r1, [pc, #20] ; (3300 ) 32ec: 4b05 ldr r3, [pc, #20] ; (3304 ) 32ee: f240 1287 movw r2, #391 ; 0x187 32f2: 2001 movs r0, #1 32f4: e6f6 b.n 30e4 32f6: bf00 nop 32f8: 0000d941 .word 0x0000d941 32fc: 0001eff4 .word 0x0001eff4 3300: 0001ee9f .word 0x0001ee9f 3304: 0001f5d9 .word 0x0001f5d9 3308: 0000e931 .word 0x0000e931 330c: 0000e661 .word 0x0000e661 3310: 00001795 .word 0x00001795 3314: 0001ee02 .word 0x0001ee02 3318: 0000179d .word 0x0000179d 331c: 0000f061 .word 0x0000f061 3320: 00004b19 .word 0x00004b19 3324: 00004581 .word 0x00004581 3328: 0000d94d .word 0x0000d94d 332c: 0000d971 .word 0x0000d971 3330: 0000e64d .word 0x0000e64d 3334: 00005539 .word 0x00005539 3338: 00010345 .word 0x00010345 333c: 00002739 .word 0x00002739 3340: 0001ef03 .word 0x0001ef03 3344: 0000307d .word 0x0000307d 3348: 0001f044 .word 0x0001f044 334c: 0000d995 .word 0x0000d995 lv_style_list_copy(&new_obj->style_list, ©->style_list); 3350: 4b54 ldr r3, [pc, #336] ; (34a4 ) 3352: f105 0128 add.w r1, r5, #40 ; 0x28 3356: 4798 blx r3 lv_area_copy(&new_obj->coords, ©->coords); 3358: 4b53 ldr r3, [pc, #332] ; (34a8 ) 335a: f104 0010 add.w r0, r4, #16 335e: f105 0110 add.w r1, r5, #16 3362: 4798 blx r3 new_obj->ext_draw_pad = copy->ext_draw_pad; 3364: f9b5 3032 ldrsh.w r3, [r5, #50] ; 0x32 3368: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = copy->ext_click_pad_hor; 336a: f895 3030 ldrb.w r3, [r5, #48] ; 0x30 336e: f884 3030 strb.w r3, [r4, #48] ; 0x30 new_obj->ext_click_pad_ver = copy->ext_click_pad_ver; 3372: f895 3031 ldrb.w r3, [r5, #49] ; 0x31 3376: f884 3031 strb.w r3, [r4, #49] ; 0x31 new_obj->realign.align = copy->realign.align; 337a: f895 3048 ldrb.w r3, [r5, #72] ; 0x48 337e: f884 3048 strb.w r3, [r4, #72] ; 0x48 new_obj->realign.xofs = copy->realign.xofs; 3382: f9b5 3044 ldrsh.w r3, [r5, #68] ; 0x44 3386: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 new_obj->realign.yofs = copy->realign.yofs; 338a: f9b5 3046 ldrsh.w r3, [r5, #70] ; 0x46 338e: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 new_obj->realign.base = copy->realign.base; 3392: 6c2b ldr r3, [r5, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 3394: f895 2049 ldrb.w r2, [r5, #73] ; 0x49 new_obj->realign.base = copy->realign.base; 3398: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 339a: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 339e: f362 0300 bfi r3, r2, #0, #1 33a2: f884 3049 strb.w r3, [r4, #73] ; 0x49 new_obj->event_cb = copy->event_cb; 33a6: 69ab ldr r3, [r5, #24] 33a8: 61a3 str r3, [r4, #24] new_obj->adv_hittest = copy->adv_hittest; 33aa: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 33ae: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 33b2: 09db lsrs r3, r3, #7 33b4: f363 12c7 bfi r2, r3, #7, #1 33b8: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->click = copy->click; 33bc: f895 2034 ldrb.w r2, [r5, #52] ; 0x34 33c0: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 33c4: f362 0300 bfi r3, r2, #0, #1 33c8: f884 3034 strb.w r3, [r4, #52] ; 0x34 new_obj->drag = copy->drag; 33cc: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 33d0: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 33d4: f3c3 0340 ubfx r3, r3, #1, #1 33d8: f363 0241 bfi r2, r3, #1, #1 33dc: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_dir = copy->drag_dir; 33e0: f895 3035 ldrb.w r3, [r5, #53] ; 0x35 33e4: f894 2035 ldrb.w r2, [r4, #53] ; 0x35 33e8: f3c3 0342 ubfx r3, r3, #1, #3 33ec: f363 0243 bfi r2, r3, #1, #3 33f0: f884 2035 strb.w r2, [r4, #53] ; 0x35 new_obj->drag_throw = copy->drag_throw; 33f4: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 33f8: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 33fc: f3c3 0380 ubfx r3, r3, #2, #1 3400: f363 0282 bfi r2, r3, #2, #1 3404: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_parent = copy->drag_parent; 3408: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 340c: b2d2 uxtb r2, r2 340e: f3c3 03c0 ubfx r3, r3, #3, #1 3412: f363 02c3 bfi r2, r3, #3, #1 3416: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->hidden = copy->hidden; 341a: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 341e: b2d2 uxtb r2, r2 3420: f3c3 1300 ubfx r3, r3, #4, #1 3424: f363 1204 bfi r2, r3, #4, #1 3428: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->top = copy->top; 342c: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3430: b2d2 uxtb r2, r2 3432: f3c3 1340 ubfx r3, r3, #5, #1 3436: f363 1245 bfi r2, r3, #5, #1 343a: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->parent_event = copy->parent_event; 343e: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3442: b2d2 uxtb r2, r2 3444: f3c3 1380 ubfx r3, r3, #6, #1 3448: f363 1286 bfi r2, r3, #6, #1 344c: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->protect = copy->protect; 3450: f895 303c ldrb.w r3, [r5, #60] ; 0x3c 3454: f884 303c strb.w r3, [r4, #60] ; 0x3c new_obj->gesture_parent = copy->gesture_parent; 3458: f895 2035 ldrb.w r2, [r5, #53] ; 0x35 345c: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 3460: f362 0300 bfi r3, r2, #0, #1 3464: f884 3035 strb.w r3, [r4, #53] ; 0x35 if(copy->group_p != NULL) { 3468: 6ba8 ldr r0, [r5, #56] ; 0x38 346a: b110 cbz r0, 3472 lv_group_add_obj(copy->group_p, new_obj); 346c: 4b0f ldr r3, [pc, #60] ; (34ac ) 346e: 4621 mov r1, r4 3470: 4798 blx r3 if(lv_obj_get_parent(copy) != NULL && parent != NULL) { 3472: 4b0f ldr r3, [pc, #60] ; (34b0 ) 3474: 4628 mov r0, r5 3476: 4798 blx r3 3478: b178 cbz r0, 349a 347a: 2e00 cmp r6, #0 347c: f43f af33 beq.w 32e6 lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); 3480: 4b0c ldr r3, [pc, #48] ; (34b4 ) 3482: 4628 mov r0, r5 3484: 4798 blx r3 3486: 4b0c ldr r3, [pc, #48] ; (34b8 ) 3488: 9003 str r0, [sp, #12] 348a: 4628 mov r0, r5 348c: 4798 blx r3 348e: 9903 ldr r1, [sp, #12] 3490: 4b0a ldr r3, [pc, #40] ; (34bc ) 3492: 4602 mov r2, r0 3494: 4620 mov r0, r4 3496: 4798 blx r3 if(parent != NULL) { 3498: e689 b.n 31ae 349a: 2e00 cmp r6, #0 349c: f47f ae87 bne.w 31ae 34a0: e721 b.n 32e6 34a2: bf00 nop 34a4: 00005d29 .word 0x00005d29 34a8: 00001cc9 .word 0x00001cc9 34ac: 00001a51 .word 0x00001a51 34b0: 000020d5 .word 0x000020d5 34b4: 000022dd .word 0x000022dd 34b8: 0000233d .word 0x0000233d 34bc: 00002855 .word 0x00002855 000034c0 : { 34c0: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 34c4: 4b33 ldr r3, [pc, #204] ; (3594 ) { 34c6: 4604 mov r4, r0 34c8: 460d mov r5, r1 34ca: 4617 mov r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 34cc: 4798 blx r3 34ce: 4606 mov r6, r0 34d0: b968 cbnz r0, 34ee 34d2: 4b31 ldr r3, [pc, #196] ; (3598 ) 34d4: 4931 ldr r1, [pc, #196] ; (359c ) 34d6: 9300 str r3, [sp, #0] 34d8: f240 22e5 movw r2, #741 ; 0x2e5 34dc: 2003 movs r0, #3 34de: 4d30 ldr r5, [pc, #192] ; (35a0 ) 34e0: 47a8 blx r5 34e2: 4830 ldr r0, [pc, #192] ; (35a4 ) 34e4: 4930 ldr r1, [pc, #192] ; (35a8 ) 34e6: 4622 mov r2, r4 34e8: 4633 mov r3, r6 34ea: 4788 blx r1 34ec: e7fe b.n 34ec if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 34ee: 4b2f ldr r3, [pc, #188] ; (35ac ) 34f0: 4620 mov r0, r4 34f2: 4798 blx r3 34f4: 4285 cmp r5, r0 34f6: d104 bne.n 3502 34f8: 4b2d ldr r3, [pc, #180] ; (35b0 ) 34fa: 4620 mov r0, r4 34fc: 4798 blx r3 34fe: 4287 cmp r7, r0 3500: d03a beq.n 3578 lv_obj_invalidate(obj); 3502: 4620 mov r0, r4 3504: 4e2b ldr r6, [pc, #172] ; (35b4 ) 3506: 47b0 blx r6 lv_obj_get_coords(obj, &ori); 3508: a902 add r1, sp, #8 350a: 4b2b ldr r3, [pc, #172] ; (35b8 ) 350c: 4620 mov r0, r4 350e: 4798 blx r3 obj->coords.y2 = obj->coords.y1 + h - 1; 3510: 8a62 ldrh r2, [r4, #18] if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) { 3512: 4b2a ldr r3, [pc, #168] ; (35bc ) obj->coords.y2 = obj->coords.y1 + h - 1; 3514: 3f01 subs r7, #1 3516: 4417 add r7, r2 3518: 82e7 strh r7, [r4, #22] if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) { 351a: 4620 mov r0, r4 351c: 4798 blx r3 351e: 2801 cmp r0, #1 obj->coords.x1 = obj->coords.x2 - w + 1; 3520: b2ad uxth r5, r5 3522: bf0b itete eq 3524: 8aa3 ldrheq r3, [r4, #20] obj->coords.x2 = obj->coords.x1 + w - 1; 3526: 8a23 ldrhne r3, [r4, #16] obj->coords.x1 = obj->coords.x2 - w + 1; 3528: f1c5 0501 rsbeq r5, r5, #1 obj->coords.x2 = obj->coords.x1 + w - 1; 352c: f105 35ff addne.w r5, r5, #4294967295 ; 0xffffffff obj->coords.x1 = obj->coords.x2 - w + 1; 3530: bf0a itet eq 3532: 18ed addeq r5, r5, r3 obj->coords.x2 = obj->coords.x1 + w - 1; 3534: 18ed addne r5, r5, r3 obj->coords.x1 = obj->coords.x2 - w + 1; 3536: 8225 strheq r5, [r4, #16] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 3538: 69e3 ldr r3, [r4, #28] obj->coords.x2 = obj->coords.x1 + w - 1; 353a: bf18 it ne 353c: 82a5 strhne r5, [r4, #20] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 353e: aa02 add r2, sp, #8 3540: 2102 movs r1, #2 3542: 4620 mov r0, r4 3544: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 3546: 4b1e ldr r3, [pc, #120] ; (35c0 ) 3548: 4620 mov r0, r4 354a: 4798 blx r3 if(par != NULL) par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 354c: b118 cbz r0, 3556 354e: 69c3 ldr r3, [r0, #28] 3550: 4622 mov r2, r4 3552: 2101 movs r1, #1 3554: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 3556: 1d27 adds r7, r4, #4 3558: 4b1a ldr r3, [pc, #104] ; (35c4 ) 355a: f8df 8070 ldr.w r8, [pc, #112] ; 35cc 355e: 4638 mov r0, r7 3560: 4798 blx r3 3562: 4605 mov r5, r0 3564: b95d cbnz r5, 357e lv_obj_invalidate(obj); 3566: 4620 mov r0, r4 3568: 47b0 blx r6 if(obj->realign.auto_realign) lv_obj_realign(obj); 356a: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 356e: 07db lsls r3, r3, #31 3570: d502 bpl.n 3578 3572: 4b15 ldr r3, [pc, #84] ; (35c8 ) 3574: 4620 mov r0, r4 3576: 4798 blx r3 } 3578: b004 add sp, #16 357a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 357e: 69eb ldr r3, [r5, #28] 3580: aa02 add r2, sp, #8 3582: 2103 movs r1, #3 3584: 4628 mov r0, r5 3586: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 3588: 4629 mov r1, r5 358a: 4638 mov r0, r7 358c: 47c0 blx r8 358e: 4605 mov r5, r0 3590: e7e8 b.n 3564 3592: bf00 nop 3594: 00001795 .word 0x00001795 3598: 0001f5f9 .word 0x0001f5f9 359c: 0001ee9f .word 0x0001ee9f 35a0: 0000e931 .word 0x0000e931 35a4: 0001ef03 .word 0x0001ef03 35a8: 0000179d .word 0x0000179d 35ac: 0000239d .word 0x0000239d 35b0: 000023ed .word 0x000023ed 35b4: 00002739 .word 0x00002739 35b8: 00002285 .word 0x00002285 35bc: 0000307d .word 0x0000307d 35c0: 000020d5 .word 0x000020d5 35c4: 0000e6f1 .word 0x0000e6f1 35c8: 00002c91 .word 0x00002c91 35cc: 0000e6fd .word 0x0000e6fd 000035d0 : { 35d0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35d2: 4b0f ldr r3, [pc, #60] ; (3610 ) { 35d4: 4604 mov r4, r0 35d6: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35d8: 4798 blx r3 35da: 4605 mov r5, r0 35dc: b968 cbnz r0, 35fa 35de: 4b0d ldr r3, [pc, #52] ; (3614 ) 35e0: 490d ldr r1, [pc, #52] ; (3618 ) 35e2: 9300 str r3, [sp, #0] 35e4: f240 3227 movw r2, #807 ; 0x327 35e8: 2003 movs r0, #3 35ea: 4e0c ldr r6, [pc, #48] ; (361c ) 35ec: 47b0 blx r6 35ee: 480c ldr r0, [pc, #48] ; (3620 ) 35f0: 490c ldr r1, [pc, #48] ; (3624 ) 35f2: 4622 mov r2, r4 35f4: 462b mov r3, r5 35f6: 4788 blx r1 35f8: e7fe b.n 35f8 lv_obj_set_size(obj, lv_obj_get_width(obj), h); 35fa: 4b0b ldr r3, [pc, #44] ; (3628 ) 35fc: 4620 mov r0, r4 35fe: 4798 blx r3 3600: 4b0a ldr r3, [pc, #40] ; (362c ) 3602: 4601 mov r1, r0 3604: 4632 mov r2, r6 3606: 4620 mov r0, r4 } 3608: b002 add sp, #8 360a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_size(obj, lv_obj_get_width(obj), h); 360e: 4718 bx r3 3610: 00001795 .word 0x00001795 3614: 0001f61a .word 0x0001f61a 3618: 0001ee9f .word 0x0001ee9f 361c: 0000e931 .word 0x0000e931 3620: 0001ef03 .word 0x0001ef03 3624: 0000179d .word 0x0000179d 3628: 0000239d .word 0x0000239d 362c: 000034c1 .word 0x000034c1 00003630 : { 3630: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3632: 4b0e ldr r3, [pc, #56] ; (366c ) { 3634: 4604 mov r4, r0 3636: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3638: 4798 blx r3 363a: 4605 mov r5, r0 363c: b968 cbnz r0, 365a 363e: 4b0c ldr r3, [pc, #48] ; (3670 ) 3640: 490c ldr r1, [pc, #48] ; (3674 ) 3642: 9300 str r3, [sp, #0] 3644: f640 22d7 movw r2, #2775 ; 0xad7 3648: 2003 movs r0, #3 364a: 4e0b ldr r6, [pc, #44] ; (3678 ) 364c: 47b0 blx r6 364e: 480b ldr r0, [pc, #44] ; (367c ) 3650: 490b ldr r1, [pc, #44] ; (3680 ) 3652: 4622 mov r2, r4 3654: 462b mov r3, r5 3656: 4788 blx r1 3658: e7fe b.n 3658 return (obj->protect & prot) == 0 ? false : true; 365a: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 365e: 421e tst r6, r3 } 3660: bf14 ite ne 3662: 2001 movne r0, #1 3664: 2000 moveq r0, #0 3666: b002 add sp, #8 3668: bd70 pop {r4, r5, r6, pc} 366a: bf00 nop 366c: 00001795 .word 0x00001795 3670: 0001f63f .word 0x0001f63f 3674: 0001ee9f .word 0x0001ee9f 3678: 0000e931 .word 0x0000e931 367c: 0001ef03 .word 0x0001ef03 3680: 0000179d .word 0x0000179d 00003684 : { 3684: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3686: 4b13 ldr r3, [pc, #76] ; (36d4 ) { 3688: 4604 mov r4, r0 368a: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 368c: 4798 blx r3 368e: 4606 mov r6, r0 3690: b968 cbnz r0, 36ae 3692: 4b11 ldr r3, [pc, #68] ; (36d8 ) 3694: 4911 ldr r1, [pc, #68] ; (36dc ) 3696: 9300 str r3, [sp, #0] 3698: f640 22de movw r2, #2782 ; 0xade 369c: 2003 movs r0, #3 369e: 4d10 ldr r5, [pc, #64] ; (36e0 ) 36a0: 47a8 blx r5 36a2: 4810 ldr r0, [pc, #64] ; (36e4 ) 36a4: 4910 ldr r1, [pc, #64] ; (36e8 ) 36a6: 4622 mov r2, r4 36a8: 4633 mov r3, r6 36aa: 4788 blx r1 36ac: e7fe b.n 36ac if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state; 36ae: 2d3f cmp r5, #63 ; 0x3f 36b0: d803 bhi.n 36ba 36b2: f894 003d ldrb.w r0, [r4, #61] ; 0x3d } 36b6: b004 add sp, #16 36b8: bd70 pop {r4, r5, r6, pc} info.result = LV_STATE_DEFAULT; 36ba: 2300 movs r3, #0 36bc: f88d 300d strb.w r3, [sp, #13] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 36c0: aa03 add r2, sp, #12 36c2: 4b0a ldr r3, [pc, #40] ; (36ec ) info.part = part; 36c4: f88d 500c strb.w r5, [sp, #12] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 36c8: 2109 movs r1, #9 36ca: 4620 mov r0, r4 36cc: 4798 blx r3 return info.result; 36ce: f89d 000d ldrb.w r0, [sp, #13] 36d2: e7f0 b.n 36b6 36d4: 00001795 .word 0x00001795 36d8: 0001f653 .word 0x0001f653 36dc: 0001ee9f .word 0x0001ee9f 36e0: 0000e931 .word 0x0000e931 36e4: 0001ef03 .word 0x0001ef03 36e8: 0000179d .word 0x0000179d 36ec: 00001fd5 .word 0x00001fd5 000036f0 <_lv_obj_get_style_int>: { 36f0: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_state_t state = lv_obj_get_state(parent, part); 36f4: f8df a094 ldr.w sl, [pc, #148] ; 378c <_lv_obj_get_style_int+0x9c> res = _lv_style_list_get_int(dsc, prop, &value_act); 36f8: f8df b094 ldr.w fp, [pc, #148] ; 3790 <_lv_obj_get_style_int+0xa0> { 36fc: 4605 mov r5, r0 36fe: 460e mov r6, r1 3700: 4617 mov r7, r2 attr.full = prop_ori >> 8; 3702: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 3706: 4614 mov r4, r2 3708: b96d cbnz r5, 3726 <_lv_obj_get_style_int+0x36> prop = prop & (~LV_STYLE_STATE_MASK); 370a: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 370e: 2c22 cmp r4, #34 ; 0x22 prop = prop & (~LV_STYLE_STATE_MASK); 3710: b2a3 uxth r3, r4 switch(prop) { 3712: d030 beq.n 3776 <_lv_obj_get_style_int+0x86> 3714: d828 bhi.n 3768 <_lv_obj_get_style_int+0x78> 3716: 2b03 cmp r3, #3 3718: d02f beq.n 377a <_lv_obj_get_style_int+0x8a> return LV_IMG_ZOOM_NONE; 371a: 2b07 cmp r3, #7 371c: bf14 ite ne 371e: 2000 movne r0, #0 3720: f44f 7080 moveq.w r0, #256 ; 0x100 3724: e013 b.n 374e <_lv_obj_get_style_int+0x5e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3726: 4b17 ldr r3, [pc, #92] ; (3784 <_lv_obj_get_style_int+0x94>) 3728: 4631 mov r1, r6 372a: 4628 mov r0, r5 372c: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 372e: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3730: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 3732: 4628 mov r0, r5 3734: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3736: eb07 2000 add.w r0, r7, r0, lsl #8 373a: b284 uxth r4, r0 res = _lv_style_list_get_int(dsc, prop, &value_act); 373c: f10d 0206 add.w r2, sp, #6 3740: 4621 mov r1, r4 3742: 4648 mov r0, r9 3744: 47d8 blx fp if(res == LV_RES_OK) return value_act; 3746: 2801 cmp r0, #1 3748: d104 bne.n 3754 <_lv_obj_get_style_int+0x64> 374a: f9bd 0006 ldrsh.w r0, [sp, #6] } 374e: b003 add sp, #12 3750: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 3754: f018 0f80 tst.w r8, #128 ; 0x80 3758: d0d7 beq.n 370a <_lv_obj_get_style_int+0x1a> if(part != LV_OBJ_PART_MAIN) { 375a: b91e cbnz r6, 3764 <_lv_obj_get_style_int+0x74> parent = lv_obj_get_parent(parent); 375c: 4628 mov r0, r5 375e: 4b0a ldr r3, [pc, #40] ; (3788 <_lv_obj_get_style_int+0x98>) 3760: 4798 blx r3 3762: 4605 mov r5, r0 { 3764: 2600 movs r6, #0 3766: e7cf b.n 3708 <_lv_obj_get_style_int+0x18> switch(prop) { 3768: 2b31 cmp r3, #49 ; 0x31 376a: d008 beq.n 377e <_lv_obj_get_style_int+0x8e> return LV_DPI / 8; 376c: 2bc0 cmp r3, #192 ; 0xc0 376e: bf14 ite ne 3770: 2000 movne r0, #0 3772: 2010 moveq r0, #16 3774: e7eb b.n 374e <_lv_obj_get_style_int+0x5e> return 255; 3776: 20ff movs r0, #255 ; 0xff 3778: e7e9 b.n 374e <_lv_obj_get_style_int+0x5e> switch(prop) { 377a: 2006 movs r0, #6 377c: e7e7 b.n 374e <_lv_obj_get_style_int+0x5e> return LV_BORDER_SIDE_FULL; 377e: 200f movs r0, #15 3780: e7e5 b.n 374e <_lv_obj_get_style_int+0x5e> 3782: bf00 nop 3784: 0000243d .word 0x0000243d 3788: 000020d5 .word 0x000020d5 378c: 00003685 .word 0x00003685 3790: 00005e89 .word 0x00005e89 00003794 <_lv_obj_get_style_color>: { 3794: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_state_t state = lv_obj_get_state(parent, part); 3798: f8df a074 ldr.w sl, [pc, #116] ; 3810 <_lv_obj_get_style_color+0x7c> res = _lv_style_list_get_color(dsc, prop, &value_act); 379c: f8df b074 ldr.w fp, [pc, #116] ; 3814 <_lv_obj_get_style_color+0x80> { 37a0: 4605 mov r5, r0 37a2: 460e mov r6, r1 37a4: 4617 mov r7, r2 attr.full = prop_ori >> 8; 37a6: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 37aa: 4614 mov r4, r2 37ac: b94d cbnz r5, 37c2 <_lv_obj_get_style_color+0x2e> prop = prop & (~LV_STYLE_STATE_MASK); 37ae: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 37b2: 3c29 subs r4, #41 ; 0x29 37b4: 2c01 cmp r4, #1 return LV_COLOR_WHITE; 37b6: bf96 itet ls 37b8: 4b12 ldrls r3, [pc, #72] ; (3804 <_lv_obj_get_style_color+0x70>) return LV_COLOR_BLACK; 37ba: 2000 movhi r0, #0 return LV_COLOR_WHITE; 37bc: f8b3 0602 ldrhls.w r0, [r3, #1538] ; 0x602 return LV_COLOR_BLACK; 37c0: e012 b.n 37e8 <_lv_obj_get_style_color+0x54> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 37c2: 4b11 ldr r3, [pc, #68] ; (3808 <_lv_obj_get_style_color+0x74>) 37c4: 4631 mov r1, r6 37c6: 4628 mov r0, r5 37c8: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 37ca: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 37cc: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 37ce: 4628 mov r0, r5 37d0: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 37d2: eb07 2000 add.w r0, r7, r0, lsl #8 37d6: b284 uxth r4, r0 res = _lv_style_list_get_color(dsc, prop, &value_act); 37d8: aa01 add r2, sp, #4 37da: 4621 mov r1, r4 37dc: 4648 mov r0, r9 37de: 47d8 blx fp if(res == LV_RES_OK) return value_act; 37e0: 2801 cmp r0, #1 37e2: d104 bne.n 37ee <_lv_obj_get_style_color+0x5a> 37e4: f8bd 0004 ldrh.w r0, [sp, #4] } 37e8: b003 add sp, #12 37ea: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 37ee: f018 0f80 tst.w r8, #128 ; 0x80 37f2: d0dc beq.n 37ae <_lv_obj_get_style_color+0x1a> if(part != LV_OBJ_PART_MAIN) { 37f4: b91e cbnz r6, 37fe <_lv_obj_get_style_color+0x6a> parent = lv_obj_get_parent(parent); 37f6: 4628 mov r0, r5 37f8: 4b04 ldr r3, [pc, #16] ; (380c <_lv_obj_get_style_color+0x78>) 37fa: 4798 blx r3 37fc: 4605 mov r5, r0 { 37fe: 2600 movs r6, #0 3800: e7d4 b.n 37ac <_lv_obj_get_style_color+0x18> 3802: bf00 nop 3804: 0001f0a6 .word 0x0001f0a6 3808: 0000243d .word 0x0000243d 380c: 000020d5 .word 0x000020d5 3810: 00003685 .word 0x00003685 3814: 00005f11 .word 0x00005f11 00003818 <_lv_obj_get_style_opa>: { 3818: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_state_t state = lv_obj_get_state(parent, part); 381c: f8df a080 ldr.w sl, [pc, #128] ; 38a0 <_lv_obj_get_style_opa+0x88> res = _lv_style_list_get_opa(dsc, prop, &value_act); 3820: f8df b080 ldr.w fp, [pc, #128] ; 38a4 <_lv_obj_get_style_opa+0x8c> { 3824: 4605 mov r5, r0 3826: 460e mov r6, r1 3828: 4617 mov r7, r2 attr.full = prop_ori >> 8; 382a: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 382e: 4614 mov r4, r2 3830: b975 cbnz r5, 3850 <_lv_obj_get_style_opa+0x38> prop = prop & (~LV_STYLE_STATE_MASK); 3832: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 3836: 2c6d cmp r4, #109 ; 0x6d prop = prop & (~LV_STYLE_STATE_MASK); 3838: b2a0 uxth r0, r4 switch(prop) { 383a: d02a beq.n 3892 <_lv_obj_get_style_opa+0x7a> 383c: f248 03ad movw r3, #32941 ; 0x80ad 3840: 4298 cmp r0, r3 3842: d026 beq.n 3892 <_lv_obj_get_style_opa+0x7a> 3844: 382c subs r0, #44 ; 0x2c 3846: bf18 it ne 3848: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff 384c: b2c0 uxtb r0, r0 384e: e013 b.n 3878 <_lv_obj_get_style_opa+0x60> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3850: 4b11 ldr r3, [pc, #68] ; (3898 <_lv_obj_get_style_opa+0x80>) 3852: 4631 mov r1, r6 3854: 4628 mov r0, r5 3856: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 3858: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 385a: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 385c: 4628 mov r0, r5 385e: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3860: eb07 2000 add.w r0, r7, r0, lsl #8 3864: b284 uxth r4, r0 res = _lv_style_list_get_opa(dsc, prop, &value_act); 3866: f10d 0207 add.w r2, sp, #7 386a: 4621 mov r1, r4 386c: 4648 mov r0, r9 386e: 47d8 blx fp if(res == LV_RES_OK) return value_act; 3870: 2801 cmp r0, #1 3872: d104 bne.n 387e <_lv_obj_get_style_opa+0x66> 3874: f89d 0007 ldrb.w r0, [sp, #7] } 3878: b003 add sp, #12 387a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 387e: f018 0f80 tst.w r8, #128 ; 0x80 3882: d0d6 beq.n 3832 <_lv_obj_get_style_opa+0x1a> if(part != LV_OBJ_PART_MAIN) { 3884: b91e cbnz r6, 388e <_lv_obj_get_style_opa+0x76> parent = lv_obj_get_parent(parent); 3886: 4628 mov r0, r5 3888: 4b04 ldr r3, [pc, #16] ; (389c <_lv_obj_get_style_opa+0x84>) 388a: 4798 blx r3 388c: 4605 mov r5, r0 { 388e: 2600 movs r6, #0 3890: e7ce b.n 3830 <_lv_obj_get_style_opa+0x18> return LV_OPA_TRANSP; 3892: 2000 movs r0, #0 3894: e7f0 b.n 3878 <_lv_obj_get_style_opa+0x60> 3896: bf00 nop 3898: 0000243d .word 0x0000243d 389c: 000020d5 .word 0x000020d5 38a0: 00003685 .word 0x00003685 38a4: 00005f99 .word 0x00005f99 000038a8 <_lv_obj_get_style_ptr>: { 38a8: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_state_t state = lv_obj_get_state(parent, part); 38ac: f8df a084 ldr.w sl, [pc, #132] ; 3934 <_lv_obj_get_style_ptr+0x8c> res = _lv_style_list_get_ptr(dsc, prop, &value_act); 38b0: f8df b084 ldr.w fp, [pc, #132] ; 3938 <_lv_obj_get_style_ptr+0x90> { 38b4: 4605 mov r5, r0 38b6: 460e mov r6, r1 38b8: 4617 mov r7, r2 attr.full = prop_ori >> 8; 38ba: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 38be: 4614 mov r4, r2 38c0: b96d cbnz r5, 38de <_lv_obj_get_style_ptr+0x36> prop = prop & (~LV_STYLE_STATE_MASK); 38c2: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 38c6: 2cbe cmp r4, #190 ; 0xbe prop = prop & (~LV_STYLE_STATE_MASK); 38c8: b2a3 uxth r3, r4 switch(prop) { 38ca: d027 beq.n 391c <_lv_obj_get_style_ptr+0x74> 38cc: f248 028e movw r2, #32910 ; 0x808e 38d0: 4293 cmp r3, r2 38d2: d001 beq.n 38d8 <_lv_obj_get_style_ptr+0x30> 38d4: 2b7e cmp r3, #126 ; 0x7e 38d6: d123 bne.n 3920 <_lv_obj_get_style_ptr+0x78> return lv_theme_get_font_normal(); 38d8: 4b12 ldr r3, [pc, #72] ; (3924 <_lv_obj_get_style_ptr+0x7c>) 38da: 4798 blx r3 38dc: e011 b.n 3902 <_lv_obj_get_style_ptr+0x5a> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 38de: 4b12 ldr r3, [pc, #72] ; (3928 <_lv_obj_get_style_ptr+0x80>) 38e0: 4631 mov r1, r6 38e2: 4628 mov r0, r5 38e4: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 38e6: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 38e8: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 38ea: 4628 mov r0, r5 38ec: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 38ee: eb07 2000 add.w r0, r7, r0, lsl #8 38f2: b284 uxth r4, r0 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 38f4: aa01 add r2, sp, #4 38f6: 4621 mov r1, r4 38f8: 4648 mov r0, r9 38fa: 47d8 blx fp if(res == LV_RES_OK) return value_act; 38fc: 2801 cmp r0, #1 38fe: d103 bne.n 3908 <_lv_obj_get_style_ptr+0x60> 3900: 9801 ldr r0, [sp, #4] } 3902: b003 add sp, #12 3904: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 3908: f018 0f80 tst.w r8, #128 ; 0x80 390c: d0d9 beq.n 38c2 <_lv_obj_get_style_ptr+0x1a> if(part != LV_OBJ_PART_MAIN) { 390e: b91e cbnz r6, 3918 <_lv_obj_get_style_ptr+0x70> parent = lv_obj_get_parent(parent); 3910: 4628 mov r0, r5 3912: 4b06 ldr r3, [pc, #24] ; (392c <_lv_obj_get_style_ptr+0x84>) 3914: 4798 blx r3 3916: 4605 mov r5, r0 { 3918: 2600 movs r6, #0 391a: e7d1 b.n 38c0 <_lv_obj_get_style_ptr+0x18> return &lv_anim_path_def; 391c: 4804 ldr r0, [pc, #16] ; (3930 <_lv_obj_get_style_ptr+0x88>) 391e: e7f0 b.n 3902 <_lv_obj_get_style_ptr+0x5a> switch(prop) { 3920: 2000 movs r0, #0 3922: e7ee b.n 3902 <_lv_obj_get_style_ptr+0x5a> 3924: 00010339 .word 0x00010339 3928: 0000243d .word 0x0000243d 392c: 000020d5 .word 0x000020d5 3930: 00023f68 .word 0x00023f68 3934: 00003685 .word 0x00003685 3938: 00006021 .word 0x00006021 0000393c : { 393c: b570 push {r4, r5, r6, lr} lv_style_trans_t * tr = a->var; 393e: 6804 ldr r4, [r0, #0] lv_style_property_t prop_tmp = tr->prop; 3940: 88a5 ldrh r5, [r4, #4] tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 3942: 6820 ldr r0, [r4, #0] 3944: 79a1 ldrb r1, [r4, #6] 3946: f005 030f and.w r3, r5, #15 if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 394a: 2b08 cmp r3, #8 tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 394c: 462a mov r2, r5 if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 394e: d80c bhi.n 396a tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 3950: 4b0d ldr r3, [pc, #52] ; (3988 ) 3952: 4798 blx r3 tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 3954: 8120 strh r0, [r4, #8] tr->prop = 0; 3956: 2300 movs r3, #0 3958: 80a3 strh r3, [r4, #4] trans_del(tr->obj, tr->part, prop_tmp, tr); 395a: 79a1 ldrb r1, [r4, #6] 395c: 6820 ldr r0, [r4, #0] 395e: 4e0b ldr r6, [pc, #44] ; (398c ) 3960: 4623 mov r3, r4 3962: 462a mov r2, r5 3964: 47b0 blx r6 tr->prop = prop_tmp; 3966: 80a5 strh r5, [r4, #4] } 3968: bd70 pop {r4, r5, r6, pc} else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 396a: 2b0b cmp r3, #11 396c: d802 bhi.n 3974 tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 396e: 4b08 ldr r3, [pc, #32] ; (3990 ) 3970: 4798 blx r3 3972: e7ef b.n 3954 else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3974: 2b0d cmp r3, #13 3976: d803 bhi.n 3980 tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp); 3978: 4b06 ldr r3, [pc, #24] ; (3994 ) 397a: 4798 blx r3 397c: 7220 strb r0, [r4, #8] 397e: e7ea b.n 3956 tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp); 3980: 4b05 ldr r3, [pc, #20] ; (3998 ) 3982: 4798 blx r3 3984: 60a0 str r0, [r4, #8] 3986: e7e6 b.n 3956 3988: 000036f1 .word 0x000036f1 398c: 00002465 .word 0x00002465 3990: 00003795 .word 0x00003795 3994: 00003819 .word 0x00003819 3998: 000038a9 .word 0x000038a9 0000399c : { 399c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(obj->state == new_state) return; 39a0: f890 303d ldrb.w r3, [r0, #61] ; 0x3d 39a4: 428b cmp r3, r1 { 39a6: b09f sub sp, #124 ; 0x7c 39a8: 4604 mov r4, r0 39aa: 4688 mov r8, r1 if(obj->state == new_state) return; 39ac: f000 8242 beq.w 3e34 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39b0: 4b95 ldr r3, [pc, #596] ; (3c08 ) 39b2: 4798 blx r3 39b4: 4605 mov r5, r0 39b6: b968 cbnz r0, 39d4 39b8: 4b94 ldr r3, [pc, #592] ; (3c0c ) 39ba: 4995 ldr r1, [pc, #596] ; (3c10 ) 39bc: 9300 str r3, [sp, #0] 39be: f240 6237 movw r2, #1591 ; 0x637 39c2: 2003 movs r0, #3 39c4: 4e93 ldr r6, [pc, #588] ; (3c14 ) 39c6: 47b0 blx r6 39c8: 4893 ldr r0, [pc, #588] ; (3c18 ) 39ca: 4994 ldr r1, [pc, #592] ; (3c1c ) 39cc: 4622 mov r2, r4 39ce: 462b mov r3, r5 39d0: 4788 blx r1 39d2: e7fe b.n 39d2 lv_state_t prev_state = obj->state; 39d4: f894 303d ldrb.w r3, [r4, #61] ; 0x3d 39d8: 9302 str r3, [sp, #8] obj->state = new_state; 39da: 2300 movs r3, #0 39dc: f884 803d strb.w r8, [r4, #61] ; 0x3d 39e0: 9303 str r3, [sp, #12] 39e2: f89d 600c ldrb.w r6, [sp, #12] lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 39e6: 4b8e ldr r3, [pc, #568] ; (3c20 ) 39e8: 4631 mov r1, r6 39ea: 4620 mov r0, r4 39ec: 4798 blx r3 if(style_list == NULL) break; /*No more style lists*/ 39ee: 9005 str r0, [sp, #20] 39f0: b140 cbz r0, 3a04 if(style_list->ignore_trans) continue; 39f2: 7947 ldrb r7, [r0, #5] 39f4: f017 0708 ands.w r7, r7, #8 39f8: d00b beq.n 3a12 for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 39fa: 9b03 ldr r3, [sp, #12] 39fc: 3301 adds r3, #1 39fe: 2b40 cmp r3, #64 ; 0x40 3a00: 9303 str r3, [sp, #12] 3a02: d1ee bne.n 39e2 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3a04: 4b87 ldr r3, [pc, #540] ; (3c24 ) 3a06: 21ff movs r1, #255 ; 0xff 3a08: 4620 mov r0, r4 } 3a0a: b01f add sp, #124 ; 0x7c 3a0c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3a10: 4718 bx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_OPA, line_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 3a12: 4d85 ldr r5, [pc, #532] ; (3c28 ) 3a14: 22b0 movs r2, #176 ; 0xb0 3a16: 4631 mov r1, r6 3a18: 4620 mov r0, r4 3a1a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 3a1c: 22b1 movs r2, #177 ; 0xb1 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 3a1e: 9009 str r0, [sp, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 3a20: 4631 mov r1, r6 3a22: 4620 mov r0, r4 3a24: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) #if LV_USE_ANIMATION _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) 3a26: 4b81 ldr r3, [pc, #516] ; (3c2c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 3a28: 9008 str r0, [sp, #32] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) 3a2a: 22be movs r2, #190 ; 0xbe 3a2c: 4631 mov r1, r6 3a2e: 4620 mov r0, r4 3a30: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 3a32: 22b2 movs r2, #178 ; 0xb2 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) 3a34: 9006 str r0, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 3a36: 4631 mov r1, r6 3a38: 4620 mov r0, r4 3a3a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar) 3a3c: 22b3 movs r2, #179 ; 0xb3 props[0] = lv_obj_get_style_transition_prop_1(obj, part); 3a3e: f8ad 002c strh.w r0, [sp, #44] ; 0x2c 3a42: 4631 mov r1, r6 3a44: 4620 mov r0, r4 3a46: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) 3a48: 22b4 movs r2, #180 ; 0xb4 props[1] = lv_obj_get_style_transition_prop_2(obj, part); 3a4a: f8ad 002e strh.w r0, [sp, #46] ; 0x2e 3a4e: 4631 mov r1, r6 3a50: 4620 mov r0, r4 3a52: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 3a54: 22b5 movs r2, #181 ; 0xb5 props[2] = lv_obj_get_style_transition_prop_3(obj, part); 3a56: f8ad 0030 strh.w r0, [sp, #48] ; 0x30 3a5a: 4631 mov r1, r6 3a5c: 4620 mov r0, r4 3a5e: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 3a60: 22b6 movs r2, #182 ; 0xb6 props[3] = lv_obj_get_style_transition_prop_4(obj, part); 3a62: f8ad 0032 strh.w r0, [sp, #50] ; 0x32 3a66: 4631 mov r1, r6 3a68: 4620 mov r0, r4 3a6a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 3a6c: 22b7 movs r2, #183 ; 0xb7 props[4] = lv_obj_get_style_transition_prop_5(obj, part); 3a6e: f8ad 0034 strh.w r0, [sp, #52] ; 0x34 3a72: 4631 mov r1, r6 3a74: 4620 mov r0, r4 3a76: 47a8 blx r5 props[5] = lv_obj_get_style_transition_prop_6(obj, part); 3a78: 9704 str r7, [sp, #16] 3a7a: f8ad 0036 strh.w r0, [sp, #54] ; 0x36 if(props[i] != 0) { 3a7e: 9a04 ldr r2, [sp, #16] 3a80: ab0b add r3, sp, #44 ; 0x2c 3a82: f833 7012 ldrh.w r7, [r3, r2, lsl #1] 3a86: 2f00 cmp r7, #0 3a88: f000 80b6 beq.w 3bf8 _lv_style_list_add_trans_style(style_list); 3a8c: 4b68 ldr r3, [pc, #416] ; (3c30 ) 3a8e: 9805 ldr r0, [sp, #20] 3a90: 4798 blx r3 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3a92: 4b63 ldr r3, [pc, #396] ; (3c20 ) 3a94: 4631 mov r1, r6 3a96: 4620 mov r0, r4 3a98: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3a9a: 4b66 ldr r3, [pc, #408] ; (3c34 ) lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3a9c: 4605 mov r5, r0 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3a9e: 4798 blx r3 3aa0: f007 030f and.w r3, r7, #15 if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 3aa4: 2b08 cmp r3, #8 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3aa6: 4682 mov sl, r0 if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 3aa8: f200 80dc bhi.w 3c64 style_list->skip_trans = 1; 3aac: 796b ldrb r3, [r5, #5] lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3aae: f8df b178 ldr.w fp, [pc, #376] ; 3c28 style_list->skip_trans = 1; 3ab2: f043 0304 orr.w r3, r3, #4 3ab6: 716b strb r3, [r5, #5] obj->state = prev_state; 3ab8: 9b02 ldr r3, [sp, #8] 3aba: f884 303d strb.w r3, [r4, #61] ; 0x3d lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3abe: 463a mov r2, r7 3ac0: 4631 mov r1, r6 3ac2: 4620 mov r0, r4 3ac4: 47d8 blx fp lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3ac6: 463a mov r2, r7 lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3ac8: 9007 str r0, [sp, #28] obj->state = new_state; 3aca: f884 803d strb.w r8, [r4, #61] ; 0x3d lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3ace: 4631 mov r1, r6 3ad0: 4620 mov r0, r4 3ad2: 47d8 blx fp style_list->skip_trans = 0; 3ad4: 796a ldrb r2, [r5, #5] if(int1 == int2) return NULL; 3ad6: 9b07 ldr r3, [sp, #28] style_list->skip_trans = 0; 3ad8: f36f 0282 bfc r2, #2, #1 if(int1 == int2) return NULL; 3adc: 4283 cmp r3, r0 lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3ade: 4681 mov r9, r0 style_list->skip_trans = 0; 3ae0: 716a strb r2, [r5, #5] if(int1 == int2) return NULL; 3ae2: f000 8089 beq.w 3bf8 obj->state = prev_state; 3ae6: 9b02 ldr r3, [sp, #8] 3ae8: f884 303d strb.w r3, [r4, #61] ; 0x3d int1 = _lv_obj_get_style_int(obj, part, prop); 3aec: 463a mov r2, r7 3aee: 4631 mov r1, r6 3af0: 4620 mov r0, r4 3af2: 47d8 blx fp _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3af4: 4b50 ldr r3, [pc, #320] ; (3c38 ) obj->state = new_state; 3af6: f884 803d strb.w r8, [r4, #61] ; 0x3d _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3afa: 4602 mov r2, r0 int1 = _lv_obj_get_style_int(obj, part, prop); 3afc: 4683 mov fp, r0 _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3afe: 4639 mov r1, r7 3b00: 4650 mov r0, sl 3b02: 4798 blx r3 if(prop == LV_STYLE_RADIUS) { 3b04: 2f01 cmp r7, #1 3b06: d122 bne.n 3b4e if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) { 3b08: f647 73ff movw r3, #32767 ; 0x7fff 3b0c: 459b cmp fp, r3 3b0e: d001 beq.n 3b14 3b10: 4599 cmp r9, r3 3b12: d11c bne.n 3b4e lv_coord_t whalf = lv_obj_get_width(obj) / 2; 3b14: f8df a148 ldr.w sl, [pc, #328] ; 3c60 3b18: 4620 mov r0, r4 3b1a: 47d0 blx sl 3b1c: eb00 70d0 add.w r0, r0, r0, lsr #31 3b20: f340 054f sbfx r5, r0, #1, #16 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3b24: 4620 mov r0, r4 3b26: 47d0 blx sl if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b28: f647 72ff movw r2, #32767 ; 0x7fff lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3b2c: eb00 70d0 add.w r0, r0, r0, lsr #31 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b30: 4593 cmp fp, r2 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3b32: f340 034f sbfx r3, r0, #1, #16 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b36: d12a bne.n 3b8e 3b38: 429d cmp r5, r3 3b3a: da1e bge.n 3b7a 3b3c: f105 0b01 add.w fp, r5, #1 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b40: 4591 cmp r9, r2 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b42: fa0f fb8b sxth.w fp, fp if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b46: d102 bne.n 3b4e 3b48: 3501 adds r5, #1 3b4a: fa0f f985 sxth.w r9, r5 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3b4e: 4b3b ldr r3, [pc, #236] ; (3c3c ) 3b50: 483b ldr r0, [pc, #236] ; (3c40 ) 3b52: 4798 blx r3 LV_ASSERT_MEM(tr); 3b54: 4b2c ldr r3, [pc, #176] ; (3c08 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3b56: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3b58: 4798 blx r3 3b5a: 4682 mov sl, r0 3b5c: b9e0 cbnz r0, 3b98 3b5e: 4b39 ldr r3, [pc, #228] ; (3c44 ) 3b60: 492b ldr r1, [pc, #172] ; (3c10 ) 3b62: 9300 str r3, [sp, #0] 3b64: f640 62b2 movw r2, #3762 ; 0xeb2 3b68: 2003 movs r0, #3 3b6a: 4c2a ldr r4, [pc, #168] ; (3c14 ) 3b6c: 47a0 blx r4 3b6e: 4836 ldr r0, [pc, #216] ; (3c48 ) 3b70: 492a ldr r1, [pc, #168] ; (3c1c ) 3b72: 462a mov r2, r5 3b74: 4653 mov r3, sl 3b76: 4788 blx r1 3b78: e7fe b.n 3b78 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b7a: f103 0b01 add.w fp, r3, #1 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b7e: 4591 cmp r9, r2 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b80: fa0f fb8b sxth.w fp, fp if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b84: d1e3 bne.n 3b4e 3b86: 3301 adds r3, #1 3b88: fa0f f983 sxth.w r9, r3 3b8c: e7df b.n 3b4e 3b8e: 4591 cmp r9, r2 3b90: d1dd bne.n 3b4e 3b92: 429d cmp r5, r3 3b94: daf7 bge.n 3b86 3b96: e7d7 b.n 3b48 if(tr == NULL) return NULL; 3b98: 2d00 cmp r5, #0 3b9a: d02d beq.n 3bf8 tr->start_value._int = int1; 3b9c: f8a5 b008 strh.w fp, [r5, #8] tr->end_value._int = int2; 3ba0: f8a5 900c strh.w r9, [r5, #12] lv_anim_init(&a); 3ba4: 4b29 ldr r3, [pc, #164] ; (3c4c ) tr->obj = obj; 3ba6: 602c str r4, [r5, #0] tr->prop = props[i]; 3ba8: 80af strh r7, [r5, #4] tr->part = part; 3baa: 71ae strb r6, [r5, #6] lv_anim_init(&a); 3bac: a80e add r0, sp, #56 ; 0x38 3bae: 4798 blx r3 * LittelvGL's built-in functions can be used. * E.g. lv_obj_set_x */ static inline void lv_anim_set_exec_cb(lv_anim_t * a, lv_anim_exec_xcb_t exec_cb) { a->exec_cb = exec_cb; 3bb0: 4b27 ldr r3, [pc, #156] ; (3c50 ) 3bb2: 930f str r3, [sp, #60] ; 0x3c * @param a pointer to an initialized `lv_anim_t` variable * @param start_cb a function call when the animation starts */ static inline void lv_anim_set_start_cb(lv_anim_t * a, lv_anim_ready_cb_t start_cb) { a->start_cb = start_cb; 3bb4: 4b27 ldr r3, [pc, #156] ; (3c54 ) 3bb6: 9310 str r3, [sp, #64] ; 0x40 * @param a pointer to an initialized `lv_anim_t` variable * @param ready_cb a function call when the animation is ready */ static inline void lv_anim_set_ready_cb(lv_anim_t * a, lv_anim_ready_cb_t ready_cb) { a->ready_cb = ready_cb; 3bb8: 4b27 ldr r3, [pc, #156] ; (3c58 ) 3bba: 9311 str r3, [sp, #68] ; 0x44 a->end = end; 3bbc: 2200 movs r2, #0 3bbe: 23ff movs r3, #255 ; 0xff 3bc0: e9cd 2314 strd r2, r3, [sp, #80] ; 0x50 a->time = duration; 3bc4: 9b09 ldr r3, [sp, #36] ; 0x24 3bc6: 9316 str r3, [sp, #88] ; 0x58 a->act_time = (int32_t)(-delay); 3bc8: 9b08 ldr r3, [sp, #32] 3bca: 9a06 ldr r2, [sp, #24] a->var = var; 3bcc: 950e str r5, [sp, #56] ; 0x38 a->act_time = (int32_t)(-delay); 3bce: 425b negs r3, r3 3bd0: 9317 str r3, [sp, #92] ; 0x5c 3bd2: 9b06 ldr r3, [sp, #24] 3bd4: 1dd1 adds r1, r2, #7 3bd6: 3b01 subs r3, #1 uint8_t * d8 = (uint8_t *)dst; 3bd8: aa12 add r2, sp, #72 ; 0x48 *d8 = *s8; 3bda: f813 0f01 ldrb.w r0, [r3, #1]! 3bde: f802 0b01 strb.w r0, [r2], #1 while(len) { 3be2: 4299 cmp r1, r3 3be4: d1f9 bne.n 3bda a.early_apply = 0; 3be6: f89d 306e ldrb.w r3, [sp, #110] ; 0x6e 3bea: f36f 0300 bfc r3, #0, #1 3bee: f88d 306e strb.w r3, [sp, #110] ; 0x6e lv_anim_start(&a); 3bf2: a80e add r0, sp, #56 ; 0x38 3bf4: 4b19 ldr r3, [pc, #100] ; (3c5c ) 3bf6: 4798 blx r3 for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) { 3bf8: 9b04 ldr r3, [sp, #16] 3bfa: 3301 adds r3, #1 3bfc: 2b06 cmp r3, #6 3bfe: 9304 str r3, [sp, #16] 3c00: f47f af3d bne.w 3a7e 3c04: e6f9 b.n 39fa 3c06: bf00 nop 3c08: 00001795 .word 0x00001795 3c0c: 0001f6aa .word 0x0001f6aa 3c10: 0001ee9f .word 0x0001ee9f 3c14: 0000e931 .word 0x0000e931 3c18: 0001ef03 .word 0x0001ef03 3c1c: 0000179d .word 0x0000179d 3c20: 0000243d .word 0x0000243d 3c24: 00002d39 .word 0x00002d39 3c28: 000036f1 .word 0x000036f1 3c2c: 000038a9 .word 0x000038a9 3c30: 00005ddd .word 0x00005ddd 3c34: 00005cb5 .word 0x00005cb5 3c38: 00005875 .word 0x00005875 3c3c: 0000e661 .word 0x0000e661 3c40: 20008660 .word 0x20008660 3c44: 0001f6bb .word 0x0001f6bb 3c48: 0001ee02 .word 0x0001ee02 3c4c: 0000dcbd .word 0x0000dcbd 3c50: 00002f71 .word 0x00002f71 3c54: 0000393d .word 0x0000393d 3c58: 00002551 .word 0x00002551 3c5c: 0000dd65 .word 0x0000dd65 3c60: 0000239d .word 0x0000239d else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3c64: 2b0b cmp r3, #11 3c66: d84b bhi.n 3d00 style_list->skip_trans = 1; 3c68: 796b ldrb r3, [r5, #5] lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3c6a: f8df b200 ldr.w fp, [pc, #512] ; 3e6c style_list->skip_trans = 1; 3c6e: f043 0304 orr.w r3, r3, #4 3c72: 716b strb r3, [r5, #5] obj->state = prev_state; 3c74: 9b02 ldr r3, [sp, #8] 3c76: f884 303d strb.w r3, [r4, #61] ; 0x3d lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3c7a: 463a mov r2, r7 3c7c: 4631 mov r1, r6 3c7e: 4620 mov r0, r4 3c80: 47d8 blx fp lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3c82: 463a mov r2, r7 lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3c84: 4681 mov r9, r0 obj->state = new_state; 3c86: f884 803d strb.w r8, [r4, #61] ; 0x3d lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3c8a: 4631 mov r1, r6 3c8c: 4620 mov r0, r4 3c8e: 47d8 blx fp style_list->skip_trans = 0; 3c90: 796a ldrb r2, [r5, #5] lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3c92: f8ad 001c strh.w r0, [sp, #28] style_list->skip_trans = 0; 3c96: f36f 0282 bfc r2, #2, #1 3c9a: 716a strb r2, [r5, #5] if(c1.full == c2.full) return NULL; 3c9c: fa1f f989 uxth.w r9, r9 3ca0: b282 uxth r2, r0 3ca2: 4591 cmp r9, r2 3ca4: d0a8 beq.n 3bf8 obj->state = prev_state; 3ca6: 9b02 ldr r3, [sp, #8] 3ca8: f884 303d strb.w r3, [r4, #61] ; 0x3d c1 = _lv_obj_get_style_color(obj, part, prop); 3cac: 463a mov r2, r7 3cae: 4631 mov r1, r6 3cb0: 4620 mov r0, r4 3cb2: 47d8 blx fp _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 3cb4: 4639 mov r1, r7 3cb6: 4602 mov r2, r0 3cb8: 4b60 ldr r3, [pc, #384] ; (3e3c ) obj->state = new_state; 3cba: f884 803d strb.w r8, [r4, #61] ; 0x3d c1 = _lv_obj_get_style_color(obj, part, prop); 3cbe: 4681 mov r9, r0 _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 3cc0: 4650 mov r0, sl 3cc2: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3cc4: 4b5e ldr r3, [pc, #376] ; (3e40 ) 3cc6: 485f ldr r0, [pc, #380] ; (3e44 ) 3cc8: 4798 blx r3 LV_ASSERT_MEM(tr); 3cca: 4b5f ldr r3, [pc, #380] ; (3e48 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3ccc: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3cce: 4798 blx r3 3cd0: 4682 mov sl, r0 3cd2: b968 cbnz r0, 3cf0 3cd4: 4b5d ldr r3, [pc, #372] ; (3e4c ) 3cd6: 495e ldr r1, [pc, #376] ; (3e50 ) 3cd8: 9300 str r3, [sp, #0] 3cda: f640 62c6 movw r2, #3782 ; 0xec6 3cde: 2003 movs r0, #3 3ce0: 4c5c ldr r4, [pc, #368] ; (3e54 ) 3ce2: 47a0 blx r4 3ce4: 485c ldr r0, [pc, #368] ; (3e58 ) 3ce6: 495d ldr r1, [pc, #372] ; (3e5c ) 3ce8: 462a mov r2, r5 3cea: 4653 mov r3, sl 3cec: 4788 blx r1 3cee: e7fe b.n 3cee if(tr == NULL) return NULL; 3cf0: 2d00 cmp r5, #0 3cf2: d081 beq.n 3bf8 tr->end_value._color = c2; 3cf4: f8bd 301c ldrh.w r3, [sp, #28] tr->start_value._color = c1; 3cf8: f8a5 9008 strh.w r9, [r5, #8] tr->end_value._color = c2; 3cfc: 81ab strh r3, [r5, #12] 3cfe: e751 b.n 3ba4 else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3d00: 2b0d cmp r3, #13 3d02: d849 bhi.n 3d98 style_list->skip_trans = 1; 3d04: 796b ldrb r3, [r5, #5] lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3d06: f8df b168 ldr.w fp, [pc, #360] ; 3e70 style_list->skip_trans = 1; 3d0a: f043 0304 orr.w r3, r3, #4 3d0e: 716b strb r3, [r5, #5] obj->state = prev_state; 3d10: 9b02 ldr r3, [sp, #8] 3d12: f884 303d strb.w r3, [r4, #61] ; 0x3d lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3d16: 463a mov r2, r7 3d18: 4631 mov r1, r6 3d1a: 4620 mov r0, r4 3d1c: 47d8 blx fp lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3d1e: 463a mov r2, r7 lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3d20: 9007 str r0, [sp, #28] obj->state = new_state; 3d22: f884 803d strb.w r8, [r4, #61] ; 0x3d lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3d26: 4631 mov r1, r6 3d28: 4620 mov r0, r4 3d2a: 47d8 blx fp style_list->skip_trans = 0; 3d2c: 796a ldrb r2, [r5, #5] if(o1 == o2) return NULL; 3d2e: 9b07 ldr r3, [sp, #28] style_list->skip_trans = 0; 3d30: f36f 0282 bfc r2, #2, #1 if(o1 == o2) return NULL; 3d34: 4283 cmp r3, r0 lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3d36: 4681 mov r9, r0 style_list->skip_trans = 0; 3d38: 716a strb r2, [r5, #5] if(o1 == o2) return NULL; 3d3a: f43f af5d beq.w 3bf8 obj->state = prev_state; 3d3e: 9b02 ldr r3, [sp, #8] 3d40: f884 303d strb.w r3, [r4, #61] ; 0x3d o1 = _lv_obj_get_style_opa(obj, part, prop); 3d44: 463a mov r2, r7 3d46: 4631 mov r1, r6 3d48: 4620 mov r0, r4 3d4a: 47d8 blx fp _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 3d4c: 4639 mov r1, r7 3d4e: 4602 mov r2, r0 3d50: 4b43 ldr r3, [pc, #268] ; (3e60 ) obj->state = new_state; 3d52: f884 803d strb.w r8, [r4, #61] ; 0x3d o1 = _lv_obj_get_style_opa(obj, part, prop); 3d56: 4683 mov fp, r0 _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 3d58: 4650 mov r0, sl 3d5a: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3d5c: 4b38 ldr r3, [pc, #224] ; (3e40 ) 3d5e: 4839 ldr r0, [pc, #228] ; (3e44 ) 3d60: 4798 blx r3 LV_ASSERT_MEM(tr); 3d62: 4b39 ldr r3, [pc, #228] ; (3e48 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3d64: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3d66: 4798 blx r3 3d68: 4682 mov sl, r0 3d6a: b968 cbnz r0, 3d88 3d6c: 4b37 ldr r3, [pc, #220] ; (3e4c ) 3d6e: 4938 ldr r1, [pc, #224] ; (3e50 ) 3d70: 9300 str r3, [sp, #0] 3d72: f640 62db movw r2, #3803 ; 0xedb 3d76: 2003 movs r0, #3 3d78: 4c36 ldr r4, [pc, #216] ; (3e54 ) 3d7a: 47a0 blx r4 3d7c: 4836 ldr r0, [pc, #216] ; (3e58 ) 3d7e: 4937 ldr r1, [pc, #220] ; (3e5c ) 3d80: 462a mov r2, r5 3d82: 4653 mov r3, sl 3d84: 4788 blx r1 3d86: e7fe b.n 3d86 if(tr == NULL) return NULL; 3d88: 2d00 cmp r5, #0 3d8a: f43f af35 beq.w 3bf8 tr->start_value._opa = o1; 3d8e: f885 b008 strb.w fp, [r5, #8] tr->end_value._opa = o2; 3d92: f885 900c strb.w r9, [r5, #12] 3d96: e705 b.n 3ba4 obj->state = prev_state; 3d98: 9b02 ldr r3, [sp, #8] 3d9a: f884 303d strb.w r3, [r4, #61] ; 0x3d style_list->skip_trans = 1; 3d9e: 796b ldrb r3, [r5, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3da0: f8df b0d0 ldr.w fp, [pc, #208] ; 3e74 style_list->skip_trans = 1; 3da4: f043 0304 orr.w r3, r3, #4 3da8: 716b strb r3, [r5, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3daa: 463a mov r2, r7 3dac: 4631 mov r1, r6 3dae: 4620 mov r0, r4 3db0: 47d8 blx fp const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3db2: 463a mov r2, r7 const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3db4: 900a str r0, [sp, #40] ; 0x28 const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3db6: 4631 mov r1, r6 obj->state = new_state; 3db8: f884 803d strb.w r8, [r4, #61] ; 0x3d const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3dbc: 4620 mov r0, r4 3dbe: 47d8 blx fp 3dc0: 900e str r0, [sp, #56] ; 0x38 style_list->skip_trans = 0; 3dc2: 796b ldrb r3, [r5, #5] 3dc4: f36f 0382 bfc r3, #2, #1 const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3dc8: 4681 mov r9, r0 style_list->skip_trans = 0; 3dca: 716b strb r3, [r5, #5] if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; 3dcc: 2204 movs r2, #4 3dce: 4b25 ldr r3, [pc, #148] ; (3e64 ) 3dd0: a90e add r1, sp, #56 ; 0x38 3dd2: a80a add r0, sp, #40 ; 0x28 3dd4: 4798 blx r3 3dd6: 2800 cmp r0, #0 3dd8: f43f af0e beq.w 3bf8 obj->state = prev_state; 3ddc: 9b02 ldr r3, [sp, #8] 3dde: f884 303d strb.w r3, [r4, #61] ; 0x3d p1 = _lv_obj_get_style_ptr(obj, part, prop); 3de2: 463a mov r2, r7 3de4: 4631 mov r1, r6 3de6: 4620 mov r0, r4 3de8: 47d8 blx fp _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 3dea: 4639 mov r1, r7 3dec: 4602 mov r2, r0 3dee: 4b1e ldr r3, [pc, #120] ; (3e68 ) p1 = _lv_obj_get_style_ptr(obj, part, prop); 3df0: 900a str r0, [sp, #40] ; 0x28 3df2: 4683 mov fp, r0 obj->state = new_state; 3df4: f884 803d strb.w r8, [r4, #61] ; 0x3d _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 3df8: 4650 mov r0, sl 3dfa: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3dfc: 4b10 ldr r3, [pc, #64] ; (3e40 ) 3dfe: 4811 ldr r0, [pc, #68] ; (3e44 ) 3e00: 4798 blx r3 LV_ASSERT_MEM(tr); 3e02: 4b11 ldr r3, [pc, #68] ; (3e48 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3e04: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3e06: 4798 blx r3 3e08: 4682 mov sl, r0 3e0a: b968 cbnz r0, 3e28 3e0c: 4b0f ldr r3, [pc, #60] ; (3e4c ) 3e0e: 4910 ldr r1, [pc, #64] ; (3e50 ) 3e10: 9300 str r3, [sp, #0] 3e12: f640 62ef movw r2, #3823 ; 0xeef 3e16: 2003 movs r0, #3 3e18: 4c0e ldr r4, [pc, #56] ; (3e54 ) 3e1a: 47a0 blx r4 3e1c: 480e ldr r0, [pc, #56] ; (3e58 ) 3e1e: 490f ldr r1, [pc, #60] ; (3e5c ) 3e20: 462a mov r2, r5 3e22: 4653 mov r3, sl 3e24: 4788 blx r1 3e26: e7fe b.n 3e26 if(tr == NULL) return NULL; 3e28: 2d00 cmp r5, #0 3e2a: f43f aee5 beq.w 3bf8 tr->end_value._ptr = p2; 3e2e: e9c5 b902 strd fp, r9, [r5, #8] 3e32: e6b7 b.n 3ba4 } 3e34: b01f add sp, #124 ; 0x7c 3e36: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 3e3a: bf00 nop 3e3c: 00005945 .word 0x00005945 3e40: 0000e661 .word 0x0000e661 3e44: 20008660 .word 0x20008660 3e48: 00001795 .word 0x00001795 3e4c: 0001f6bb .word 0x0001f6bb 3e50: 0001ee9f .word 0x0001ee9f 3e54: 0000e931 .word 0x0000e931 3e58: 0001ee02 .word 0x0001ee02 3e5c: 0000179d .word 0x0000179d 3e60: 00005a15 .word 0x00005a15 3e64: 000162d9 .word 0x000162d9 3e68: 00005ae9 .word 0x00005ae9 3e6c: 00003795 .word 0x00003795 3e70: 00003819 .word 0x00003819 3e74: 000038a9 .word 0x000038a9 00003e78 : { 3e78: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3e7a: 4b11 ldr r3, [pc, #68] ; (3ec0 ) { 3e7c: 4604 mov r4, r0 3e7e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3e80: 4798 blx r3 3e82: 4606 mov r6, r0 3e84: b968 cbnz r0, 3ea2 3e86: 4b0f ldr r3, [pc, #60] ; (3ec4 ) 3e88: 490f ldr r1, [pc, #60] ; (3ec8 ) 3e8a: 9300 str r3, [sp, #0] 3e8c: f240 627e movw r2, #1662 ; 0x67e 3e90: 2003 movs r0, #3 3e92: 4d0e ldr r5, [pc, #56] ; (3ecc ) 3e94: 47a8 blx r5 3e96: 480e ldr r0, [pc, #56] ; (3ed0 ) 3e98: 490e ldr r1, [pc, #56] ; (3ed4 ) 3e9a: 4622 mov r2, r4 3e9c: 4633 mov r3, r6 3e9e: 4788 blx r1 3ea0: e7fe b.n 3ea0 lv_state_t new_state = obj->state | state; 3ea2: f894 303d ldrb.w r3, [r4, #61] ; 0x3d 3ea6: ea43 0105 orr.w r1, r3, r5 if(obj->state != new_state) { 3eaa: ea35 0303 bics.w r3, r5, r3 3eae: d005 beq.n 3ebc lv_obj_set_state(obj, new_state); 3eb0: 4b09 ldr r3, [pc, #36] ; (3ed8 ) 3eb2: 4620 mov r0, r4 } 3eb4: b002 add sp, #8 3eb6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_state(obj, new_state); 3eba: 4718 bx r3 } 3ebc: b002 add sp, #8 3ebe: bd70 pop {r4, r5, r6, pc} 3ec0: 00001795 .word 0x00001795 3ec4: 0001f6c8 .word 0x0001f6c8 3ec8: 0001ee9f .word 0x0001ee9f 3ecc: 0000e931 .word 0x0000e931 3ed0: 0001ef03 .word 0x0001ef03 3ed4: 0000179d .word 0x0000179d 3ed8: 0000399d .word 0x0000399d 00003edc : { 3edc: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ede: 4b11 ldr r3, [pc, #68] ; (3f24 ) { 3ee0: 4604 mov r4, r0 3ee2: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ee4: 4798 blx r3 3ee6: 4606 mov r6, r0 3ee8: b968 cbnz r0, 3f06 3eea: 4b0f ldr r3, [pc, #60] ; (3f28 ) 3eec: 490f ldr r1, [pc, #60] ; (3f2c ) 3eee: 9300 str r3, [sp, #0] 3ef0: f240 628f movw r2, #1679 ; 0x68f 3ef4: 2003 movs r0, #3 3ef6: 4d0e ldr r5, [pc, #56] ; (3f30 ) 3ef8: 47a8 blx r5 3efa: 480e ldr r0, [pc, #56] ; (3f34 ) 3efc: 490e ldr r1, [pc, #56] ; (3f38 ) 3efe: 4622 mov r2, r4 3f00: 4633 mov r3, r6 3f02: 4788 blx r1 3f04: e7fe b.n 3f04 lv_state_t new_state = obj->state & (~state); 3f06: f894 303d ldrb.w r3, [r4, #61] ; 0x3d if(obj->state != new_state) { 3f0a: 421d tst r5, r3 lv_state_t new_state = obj->state & (~state); 3f0c: ea23 0105 bic.w r1, r3, r5 if(obj->state != new_state) { 3f10: d005 beq.n 3f1e lv_obj_set_state(obj, new_state); 3f12: 4b0a ldr r3, [pc, #40] ; (3f3c ) 3f14: 4620 mov r0, r4 } 3f16: b002 add sp, #8 3f18: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_state(obj, new_state); 3f1c: 4718 bx r3 } 3f1e: b002 add sp, #8 3f20: bd70 pop {r4, r5, r6, pc} 3f22: bf00 nop 3f24: 00001795 .word 0x00001795 3f28: 0001f6d9 .word 0x0001f6d9 3f2c: 0001ee9f .word 0x0001ee9f 3f30: 0000e931 .word 0x0000e931 3f34: 0001ef03 .word 0x0001ef03 3f38: 0000179d .word 0x0000179d 3f3c: 0000399d .word 0x0000399d 00003f40 : { 3f40: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f42: 4b0b ldr r3, [pc, #44] ; (3f70 ) { 3f44: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f46: 4798 blx r3 3f48: 4605 mov r5, r0 3f4a: b968 cbnz r0, 3f68 3f4c: 4b09 ldr r3, [pc, #36] ; (3f74 ) 3f4e: 490a ldr r1, [pc, #40] ; (3f78 ) 3f50: 9300 str r3, [sp, #0] 3f52: f640 22f5 movw r2, #2805 ; 0xaf5 3f56: 2003 movs r0, #3 3f58: 4e08 ldr r6, [pc, #32] ; (3f7c ) 3f5a: 47b0 blx r6 3f5c: 4808 ldr r0, [pc, #32] ; (3f80 ) 3f5e: 4909 ldr r1, [pc, #36] ; (3f84 ) 3f60: 4622 mov r2, r4 3f62: 462b mov r3, r5 3f64: 4788 blx r1 3f66: e7fe b.n 3f66 } 3f68: 69e0 ldr r0, [r4, #28] 3f6a: b002 add sp, #8 3f6c: bd70 pop {r4, r5, r6, pc} 3f6e: bf00 nop 3f70: 00001795 .word 0x00001795 3f74: 0001f6ec .word 0x0001f6ec 3f78: 0001ee9f .word 0x0001ee9f 3f7c: 0000e931 .word 0x0000e931 3f80: 0001ef03 .word 0x0001ef03 3f84: 0000179d .word 0x0000179d 00003f88 : { 3f88: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f8a: 4b0b ldr r3, [pc, #44] ; (3fb8 ) { 3f8c: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f8e: 4798 blx r3 3f90: 4605 mov r5, r0 3f92: b968 cbnz r0, 3fb0 3f94: 4b09 ldr r3, [pc, #36] ; (3fbc ) 3f96: 490a ldr r1, [pc, #40] ; (3fc0 ) 3f98: 9300 str r3, [sp, #0] 3f9a: f640 321e movw r2, #2846 ; 0xb1e 3f9e: 2003 movs r0, #3 3fa0: 4e08 ldr r6, [pc, #32] ; (3fc4 ) 3fa2: 47b0 blx r6 3fa4: 4808 ldr r0, [pc, #32] ; (3fc8 ) 3fa6: 4909 ldr r1, [pc, #36] ; (3fcc ) 3fa8: 4622 mov r2, r4 3faa: 462b mov r3, r5 3fac: 4788 blx r1 3fae: e7fe b.n 3fae } 3fb0: 6a60 ldr r0, [r4, #36] ; 0x24 3fb2: b002 add sp, #8 3fb4: bd70 pop {r4, r5, r6, pc} 3fb6: bf00 nop 3fb8: 00001795 .word 0x00001795 3fbc: 0001f72a .word 0x0001f72a 3fc0: 0001ee9f .word 0x0001ee9f 3fc4: 0000e931 .word 0x0000e931 3fc8: 0001ef03 .word 0x0001ef03 3fcc: 0000179d .word 0x0000179d 00003fd0 : { 3fd0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3fd2: 4b0b ldr r3, [pc, #44] ; (4000 ) { 3fd4: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3fd6: 4798 blx r3 3fd8: 4605 mov r5, r0 3fda: b968 cbnz r0, 3ff8 3fdc: 4b09 ldr r3, [pc, #36] ; (4004 ) 3fde: 490a ldr r1, [pc, #40] ; (4008 ) 3fe0: 9300 str r3, [sp, #0] 3fe2: f640 326f movw r2, #2927 ; 0xb6f 3fe6: 2003 movs r0, #3 3fe8: 4e08 ldr r6, [pc, #32] ; (400c ) 3fea: 47b0 blx r6 3fec: 4808 ldr r0, [pc, #32] ; (4010 ) 3fee: 4909 ldr r1, [pc, #36] ; (4014 ) 3ff0: 4622 mov r2, r4 3ff2: 462b mov r3, r5 3ff4: 4788 blx r1 3ff6: e7fe b.n 3ff6 } 3ff8: 6ba0 ldr r0, [r4, #56] ; 0x38 3ffa: b002 add sp, #8 3ffc: bd70 pop {r4, r5, r6, pc} 3ffe: bf00 nop 4000: 00001795 .word 0x00001795 4004: 0001f74e .word 0x0001f74e 4008: 0001ee9f .word 0x0001ee9f 400c: 0000e931 .word 0x0000e931 4010: 0001ef03 .word 0x0001ef03 4014: 0000179d .word 0x0000179d 00004018 : { 4018: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_event_send(obj, LV_EVENT_DELETE, NULL); 401c: 4b39 ldr r3, [pc, #228] ; (4104 ) { 401e: 4604 mov r4, r0 lv_event_send(obj, LV_EVENT_DELETE, NULL); 4020: 2200 movs r2, #0 4022: 2115 movs r1, #21 4024: 4798 blx r3 lv_group_t * group = lv_obj_get_group(obj); 4026: 4b38 ldr r3, [pc, #224] ; (4108 ) 4028: 4620 mov r0, r4 402a: 4798 blx r3 if(group) lv_group_remove_obj(obj); 402c: 4607 mov r7, r0 402e: b110 cbz r0, 4036 4030: 4b36 ldr r3, [pc, #216] ; (410c ) 4032: 4620 mov r0, r4 4034: 4798 blx r3 lv_anim_del(obj, NULL); 4036: 4b36 ldr r3, [pc, #216] ; (4110 ) trans_del(obj, 0xFF, 0xFF, NULL); 4038: 4d36 ldr r5, [pc, #216] ; (4114 ) i_next = _lv_ll_get_next(&(obj->child_ll), i); 403a: f8df 90f4 ldr.w r9, [pc, #244] ; 4130 lv_anim_del(obj, NULL); 403e: 2100 movs r1, #0 4040: 4620 mov r0, r4 4042: 4798 blx r3 trans_del(obj, 0xFF, 0xFF, NULL); 4044: 22ff movs r2, #255 ; 0xff 4046: 2300 movs r3, #0 4048: 4611 mov r1, r2 404a: 4620 mov r0, r4 i = _lv_ll_get_head(&(obj->child_ll)); 404c: f104 0804 add.w r8, r4, #4 trans_del(obj, 0xFF, 0xFF, NULL); 4050: 47a8 blx r5 i = _lv_ll_get_head(&(obj->child_ll)); 4052: 4b31 ldr r3, [pc, #196] ; (4118 ) 4054: 4640 mov r0, r8 4056: 4798 blx r3 4058: 4605 mov r5, r0 while(i != NULL) { 405a: bb3d cbnz r5, 40ac #endif static void lv_event_mark_deleted(lv_obj_t * obj) { lv_event_temp_data_t * t = event_temp_data_head; 405c: 4b2f ldr r3, [pc, #188] ; (411c ) 405e: 685e ldr r6, [r3, #4] while(t) { if(t->obj == obj) t->deleted = true; 4060: 2301 movs r3, #1 while(t) { 4062: bb66 cbnz r6, 40be lv_indev_t * indev = lv_indev_get_next(NULL); 4064: f8df 80cc ldr.w r8, [pc, #204] ; 4134 lv_indev_reset(indev, obj); 4068: f8df 90cc ldr.w r9, [pc, #204] ; 4138 if(indev->group == group && obj == lv_indev_get_obj_act()) { 406c: f8df a0cc ldr.w sl, [pc, #204] ; 413c lv_indev_t * indev = lv_indev_get_next(NULL); 4070: 4630 mov r0, r6 4072: 47c0 blx r8 4074: 4605 mov r5, r0 while(indev) { 4076: bb45 cbnz r5, 40ca obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL); 4078: 462a mov r2, r5 407a: 4629 mov r1, r5 407c: 69e3 ldr r3, [r4, #28] 407e: 4d28 ldr r5, [pc, #160] ; (4120 ) 4080: 4620 mov r0, r4 4082: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 4084: 4b27 ldr r3, [pc, #156] ; (4124 ) 4086: 4620 mov r0, r4 4088: 4798 blx r3 if(par == NULL) { /*It is a screen*/ 408a: 2800 cmp r0, #0 408c: d137 bne.n 40fe lv_disp_t * d = lv_obj_get_disp(obj); 408e: 4b26 ldr r3, [pc, #152] ; (4128 ) 4090: 4620 mov r0, r4 4092: 4798 blx r3 _lv_ll_remove(&d->scr_ll, obj); 4094: 4621 mov r1, r4 4096: 3030 adds r0, #48 ; 0x30 _lv_ll_remove(&(par->child_ll), obj); 4098: 47a8 blx r5 if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr); 409a: 6a60 ldr r0, [r4, #36] ; 0x24 409c: 4d23 ldr r5, [pc, #140] ; (412c ) 409e: b100 cbz r0, 40a2 40a0: 47a8 blx r5 lv_mem_free(obj); /*Free the object itself*/ 40a2: 4620 mov r0, r4 40a4: 462b mov r3, r5 } 40a6: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_mem_free(obj); /*Free the object itself*/ 40aa: 4718 bx r3 i_next = _lv_ll_get_next(&(obj->child_ll), i); 40ac: 4629 mov r1, r5 40ae: 4640 mov r0, r8 40b0: 47c8 blx r9 40b2: 4606 mov r6, r0 obj_del_core(i); 40b4: 4628 mov r0, r5 40b6: f7ff ffaf bl 4018 i = i_next; 40ba: 4635 mov r5, r6 40bc: e7cd b.n 405a if(t->obj == obj) t->deleted = true; 40be: 6832 ldr r2, [r6, #0] 40c0: 4294 cmp r4, r2 40c2: bf08 it eq 40c4: 7133 strbeq r3, [r6, #4] t = t->prev; 40c6: 68b6 ldr r6, [r6, #8] 40c8: e7cb b.n 4062 if(indev->proc.types.pointer.act_obj == obj || indev->proc.types.pointer.last_obj == obj) { 40ca: 6b6b ldr r3, [r5, #52] ; 0x34 40cc: 42a3 cmp r3, r4 40ce: d002 beq.n 40d6 40d0: 6bab ldr r3, [r5, #56] ; 0x38 40d2: 42a3 cmp r3, r4 40d4: d102 bne.n 40dc lv_indev_reset(indev, obj); 40d6: 4621 mov r1, r4 40d8: 4628 mov r0, r5 40da: 47c8 blx r9 if(indev->proc.types.pointer.last_pressed == obj) { 40dc: 6beb ldr r3, [r5, #60] ; 0x3c 40de: 42a3 cmp r3, r4 if(indev->group == group && obj == lv_indev_get_obj_act()) { 40e0: 6dab ldr r3, [r5, #88] ; 0x58 indev->proc.types.pointer.last_pressed = NULL; 40e2: bf08 it eq 40e4: 63ee streq r6, [r5, #60] ; 0x3c if(indev->group == group && obj == lv_indev_get_obj_act()) { 40e6: 42bb cmp r3, r7 40e8: d105 bne.n 40f6 40ea: 47d0 blx sl 40ec: 4284 cmp r4, r0 40ee: d102 bne.n 40f6 lv_indev_reset(indev, obj); 40f0: 4621 mov r1, r4 40f2: 4628 mov r0, r5 40f4: 47c8 blx r9 indev = lv_indev_get_next(indev); 40f6: 4628 mov r0, r5 40f8: 47c0 blx r8 40fa: 4605 mov r5, r0 40fc: e7bb b.n 4076 _lv_ll_remove(&(par->child_ll), obj); 40fe: 4621 mov r1, r4 4100: 3004 adds r0, #4 4102: e7c9 b.n 4098 4104: 00001f29 .word 0x00001f29 4108: 00003fd1 .word 0x00003fd1 410c: 00001b29 .word 0x00001b29 4110: 0000dcf5 .word 0x0000dcf5 4114: 00002465 .word 0x00002465 4118: 0000e6f1 .word 0x0000e6f1 411c: 200080f4 .word 0x200080f4 4120: 0000e7b5 .word 0x0000e7b5 4124: 000020d5 .word 0x000020d5 4128: 00002175 .word 0x00002175 412c: 0000eb2d .word 0x0000eb2d 4130: 0000e6fd .word 0x0000e6fd 4134: 0000da5d .word 0x0000da5d 4138: 00001c2d .word 0x00001c2d 413c: 00001c65 .word 0x00001c65 00004140 : { 4140: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4142: 4b1b ldr r3, [pc, #108] ; (41b0 ) { 4144: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4146: 4798 blx r3 4148: 4605 mov r5, r0 414a: b968 cbnz r0, 4168 414c: 4b19 ldr r3, [pc, #100] ; (41b4 ) 414e: 491a ldr r1, [pc, #104] ; (41b8 ) 4150: 9300 str r3, [sp, #0] 4152: f240 1293 movw r2, #403 ; 0x193 4156: 2003 movs r0, #3 4158: 4e18 ldr r6, [pc, #96] ; (41bc ) 415a: 47b0 blx r6 415c: 4818 ldr r0, [pc, #96] ; (41c0 ) 415e: 4919 ldr r1, [pc, #100] ; (41c4 ) 4160: 4622 mov r2, r4 4162: 462b mov r3, r5 4164: 4788 blx r1 4166: e7fe b.n 4166 lv_obj_invalidate(obj); 4168: 4b17 ldr r3, [pc, #92] ; (41c8 ) 416a: 4620 mov r0, r4 416c: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 416e: 4b17 ldr r3, [pc, #92] ; (41cc ) 4170: 4620 mov r0, r4 4172: 4798 blx r3 if(par == NULL) { 4174: 4606 mov r6, r0 4176: b9b8 cbnz r0, 41a8 disp = lv_obj_get_disp(obj); 4178: 4b15 ldr r3, [pc, #84] ; (41d0 ) 417a: 4620 mov r0, r4 417c: 4798 blx r3 if(!disp) return LV_RES_INV; /*Shouldn't happen*/ 417e: 4605 mov r5, r0 4180: b178 cbz r0, 41a2 if(disp->act_scr == obj) act_scr_del = true; 4182: 6bc7 ldr r7, [r0, #60] ; 0x3c 4184: 1b3b subs r3, r7, r4 4186: 425f negs r7, r3 4188: 415f adcs r7, r3 obj_del_core(obj); 418a: 4b12 ldr r3, [pc, #72] ; (41d4 ) 418c: 4620 mov r0, r4 418e: 4798 blx r3 if(par) { 4190: b126 cbz r6, 419c par->signal_cb(par, LV_SIGNAL_CHILD_CHG, NULL); 4192: 69f3 ldr r3, [r6, #28] 4194: 2200 movs r2, #0 4196: 2101 movs r1, #1 4198: 4630 mov r0, r6 419a: 4798 blx r3 if(act_scr_del) { 419c: b10f cbz r7, 41a2 disp->act_scr = NULL; 419e: 2300 movs r3, #0 41a0: 63eb str r3, [r5, #60] ; 0x3c } 41a2: 2000 movs r0, #0 41a4: b003 add sp, #12 41a6: bdf0 pop {r4, r5, r6, r7, pc} bool act_scr_del = false; 41a8: 2700 movs r7, #0 lv_disp_t * disp = NULL; 41aa: 463d mov r5, r7 41ac: e7ed b.n 418a 41ae: bf00 nop 41b0: 00001795 .word 0x00001795 41b4: 0001f75f .word 0x0001f75f 41b8: 0001ee9f .word 0x0001ee9f 41bc: 0000e931 .word 0x0000e931 41c0: 0001ef03 .word 0x0001ef03 41c4: 0000179d .word 0x0000179d 41c8: 00002739 .word 0x00002739 41cc: 000020d5 .word 0x000020d5 41d0: 00002175 .word 0x00002175 41d4: 00004019 .word 0x00004019 000041d8 : { 41d8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 41da: 4b0e ldr r3, [pc, #56] ; (4214 ) { 41dc: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 41de: 4798 blx r3 41e0: 4605 mov r5, r0 41e2: b968 cbnz r0, 4200 41e4: 4b0c ldr r3, [pc, #48] ; (4218 ) 41e6: 490d ldr r1, [pc, #52] ; (421c ) 41e8: 9300 str r3, [sp, #0] 41ea: f44f 6238 mov.w r2, #2944 ; 0xb80 41ee: 2003 movs r0, #3 41f0: 4e0b ldr r6, [pc, #44] ; (4220 ) 41f2: 47b0 blx r6 41f4: 480b ldr r0, [pc, #44] ; (4224 ) 41f6: 490c ldr r1, [pc, #48] ; (4228 ) 41f8: 4622 mov r2, r4 41fa: 462b mov r3, r5 41fc: 4788 blx r1 41fe: e7fe b.n 41fe if(obj->group_p) { 4200: 6ba0 ldr r0, [r4, #56] ; 0x38 4202: b120 cbz r0, 420e if(lv_group_get_focused(obj->group_p) == obj) return true; 4204: 4b09 ldr r3, [pc, #36] ; (422c ) 4206: 4798 blx r3 4208: 1a23 subs r3, r4, r0 420a: 4258 negs r0, r3 420c: 4158 adcs r0, r3 } 420e: b002 add sp, #8 4210: bd70 pop {r4, r5, r6, pc} 4212: bf00 nop 4214: 00001795 .word 0x00001795 4218: 0001f78b .word 0x0001f78b 421c: 0001ee9f .word 0x0001ee9f 4220: 0000e931 .word 0x0000e931 4224: 0001ef03 .word 0x0001ef03 4228: 0000179d .word 0x0000179d 422c: 00001bc5 .word 0x00001bc5 00004230 : { 4230: b507 push {r0, r1, r2, lr} ext_area.x1 = obj->coords.x1 - obj->ext_click_pad_hor; 4232: 8a02 ldrh r2, [r0, #16] 4234: f890 3030 ldrb.w r3, [r0, #48] ; 0x30 4238: 1ad2 subs r2, r2, r3 423a: f8ad 2000 strh.w r2, [sp] ext_area.x2 = obj->coords.x2 + obj->ext_click_pad_hor; 423e: 8a82 ldrh r2, [r0, #20] 4240: 4413 add r3, r2 4242: f8ad 3004 strh.w r3, [sp, #4] ext_area.y1 = obj->coords.y1 - obj->ext_click_pad_ver; 4246: 8a42 ldrh r2, [r0, #18] 4248: f890 3031 ldrb.w r3, [r0, #49] ; 0x31 424c: 1ad2 subs r2, r2, r3 424e: f8ad 2002 strh.w r2, [sp, #2] ext_area.y2 = obj->coords.y2 + obj->ext_click_pad_ver; 4252: 8ac2 ldrh r2, [r0, #22] 4254: 4413 add r3, r2 4256: f8ad 3006 strh.w r3, [sp, #6] if(!_lv_area_is_point_on(&ext_area, point, 0)) { 425a: 2200 movs r2, #0 425c: 4b02 ldr r3, [pc, #8] ; (4268 ) 425e: 4668 mov r0, sp 4260: 4798 blx r3 } 4262: b003 add sp, #12 4264: f85d fb04 ldr.w pc, [sp], #4 4268: 0000df69 .word 0x0000df69 0000426c : { 426c: b510 push {r4, lr} 426e: 2300 movs r3, #0 if(buf->type[i] == NULL) break; 4270: f850 4023 ldr.w r4, [r0, r3, lsl #2] 4274: b2da uxtb r2, r3 4276: b11c cbz r4, 4280 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 4278: 3301 adds r3, #1 427a: 2b07 cmp r3, #7 427c: d1f8 bne.n 4270 427e: 461a mov r2, r3 buf->type[i] = name; 4280: f840 1022 str.w r1, [r0, r2, lsl #2] } 4284: 2001 movs r0, #1 4286: bd10 pop {r4, pc} 00004288 : { 4288: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 428c: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 428e: 4fb7 ldr r7, [pc, #732] ; (456c ) _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4290: f8df 82e4 ldr.w r8, [pc, #740] ; 4578 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 4294: 2201 movs r2, #1 4296: 4605 mov r5, r0 4298: 460e mov r6, r1 429a: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 429c: f248 020c movw r2, #32780 ; 0x800c draw_dsc->radius = lv_obj_get_style_radius(obj, part); 42a0: 8020 strh r0, [r4, #0] 42a2: 4631 mov r1, r6 42a4: 4628 mov r0, r5 42a6: 47c0 blx r8 if(opa_scale <= LV_OPA_MIN) { 42a8: 2805 cmp r0, #5 42aa: 4681 mov r9, r0 42ac: d80a bhi.n 42c4 draw_dsc->bg_opa = LV_OPA_TRANSP; 42ae: 2300 movs r3, #0 42b0: 7323 strb r3, [r4, #12] draw_dsc->border_opa = LV_OPA_TRANSP; 42b2: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = LV_OPA_TRANSP; 42b4: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = LV_OPA_TRANSP; 42b8: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = LV_OPA_TRANSP; 42bc: f884 3044 strb.w r3, [r4, #68] ; 0x44 } 42c0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if(draw_dsc->bg_opa != LV_OPA_TRANSP) { 42c4: 7b23 ldrb r3, [r4, #12] 42c6: b343 cbz r3, 431a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 42c8: 222c movs r2, #44 ; 0x2c 42ca: 4631 mov r1, r6 42cc: 4628 mov r0, r5 42ce: 47c0 blx r8 if(draw_dsc->bg_opa > LV_OPA_MIN) { 42d0: 2805 cmp r0, #5 draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part); 42d2: 7320 strb r0, [r4, #12] if(draw_dsc->bg_opa > LV_OPA_MIN) { 42d4: d921 bls.n 431a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 42d6: 2229 movs r2, #41 ; 0x29 42d8: 4631 mov r1, r6 42da: f8df a294 ldr.w sl, [pc, #660] ; 4570 42de: 4628 mov r0, r5 42e0: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) 42e2: 2223 movs r2, #35 ; 0x23 draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part); 42e4: 8060 strh r0, [r4, #2] 42e6: 4631 mov r1, r6 42e8: 4628 mov r0, r5 42ea: 47b8 blx r7 42ec: b2c0 uxtb r0, r0 draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part); 42ee: 71a0 strb r0, [r4, #6] if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) { 42f0: b170 cbz r0, 4310 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) 42f2: 222a movs r2, #42 ; 0x2a 42f4: 4631 mov r1, r6 42f6: 4628 mov r0, r5 42f8: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) 42fa: 2221 movs r2, #33 ; 0x21 draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part); 42fc: 80a0 strh r0, [r4, #4] 42fe: 4631 mov r1, r6 4300: 4628 mov r0, r5 4302: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) 4304: 2222 movs r2, #34 ; 0x22 draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part); 4306: 8120 strh r0, [r4, #8] 4308: 4631 mov r1, r6 430a: 4628 mov r0, r5 430c: 47b8 blx r7 draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part); 430e: 8160 strh r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 4310: 2220 movs r2, #32 4312: 4631 mov r1, r6 4314: 4628 mov r0, r5 4316: 47b8 blx r7 4318: 7360 strb r0, [r4, #13] if(draw_dsc->border_opa != LV_OPA_TRANSP) { 431a: 7d23 ldrb r3, [r4, #20] 431c: b1eb cbz r3, 435a _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 431e: 2230 movs r2, #48 ; 0x30 4320: 4631 mov r1, r6 4322: 4628 mov r0, r5 4324: 47b8 blx r7 draw_dsc->border_width = lv_obj_get_style_border_width(obj, part); 4326: 8220 strh r0, [r4, #16] if(draw_dsc->border_width) { 4328: b1b8 cbz r0, 435a _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 432a: 223c movs r2, #60 ; 0x3c 432c: 4631 mov r1, r6 432e: 4628 mov r0, r5 4330: 47c0 blx r8 if(draw_dsc->border_opa > LV_OPA_MIN) { 4332: 2805 cmp r0, #5 draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part); 4334: 7520 strb r0, [r4, #20] if(draw_dsc->border_opa > LV_OPA_MIN) { 4336: d90b bls.n 4350 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 4338: 2231 movs r2, #49 ; 0x31 433a: 4631 mov r1, r6 433c: 4628 mov r0, r5 433e: 47b8 blx r7 draw_dsc->border_side = lv_obj_get_style_border_side(obj, part); 4340: b2c0 uxtb r0, r0 4342: 8260 strh r0, [r4, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 4344: 4b8a ldr r3, [pc, #552] ; (4570 ) 4346: 2239 movs r2, #57 ; 0x39 4348: 4631 mov r1, r6 434a: 4628 mov r0, r5 434c: 4798 blx r3 draw_dsc->border_color = lv_obj_get_style_border_color(obj, part); 434e: 81e0 strh r0, [r4, #14] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 4350: 2232 movs r2, #50 ; 0x32 4352: 4631 mov r1, r6 4354: 4628 mov r0, r5 4356: 47b8 blx r7 4358: 7560 strb r0, [r4, #21] if(draw_dsc->outline_opa != LV_OPA_TRANSP) { 435a: 7f23 ldrb r3, [r4, #28] 435c: b1e3 cbz r3, 4398 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 435e: 2240 movs r2, #64 ; 0x40 4360: 4631 mov r1, r6 4362: 4628 mov r0, r5 4364: 47b8 blx r7 draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part); 4366: 8320 strh r0, [r4, #24] if(draw_dsc->outline_width) { 4368: b1b0 cbz r0, 4398 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 436a: 224c movs r2, #76 ; 0x4c 436c: 4631 mov r1, r6 436e: 4628 mov r0, r5 4370: 47c0 blx r8 if(draw_dsc->outline_opa > LV_OPA_MIN) { 4372: 2805 cmp r0, #5 draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part); 4374: 7720 strb r0, [r4, #28] if(draw_dsc->outline_opa > LV_OPA_MIN) { 4376: d90a bls.n 438e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 4378: 2241 movs r2, #65 ; 0x41 437a: 4631 mov r1, r6 437c: 4628 mov r0, r5 437e: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 4380: 4b7b ldr r3, [pc, #492] ; (4570 ) draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part); 4382: 8360 strh r0, [r4, #26] 4384: 2249 movs r2, #73 ; 0x49 4386: 4631 mov r1, r6 4388: 4628 mov r0, r5 438a: 4798 blx r3 draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part); 438c: 82e0 strh r0, [r4, #22] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar) 438e: 2242 movs r2, #66 ; 0x42 4390: 4631 mov r1, r6 4392: 4628 mov r0, r5 4394: 47b8 blx r7 4396: 7760 strb r0, [r4, #29] if(draw_dsc->pattern_opa != LV_OPA_TRANSP) { 4398: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 439c: 2b00 cmp r3, #0 439e: d03b beq.n 4418 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 43a0: f8df a1d8 ldr.w sl, [pc, #472] ; 457c 43a4: 226e movs r2, #110 ; 0x6e 43a6: 4631 mov r1, r6 43a8: 4628 mov r0, r5 43aa: 47d0 blx sl draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part); 43ac: 62e0 str r0, [r4, #44] ; 0x2c if(draw_dsc->pattern_image) { 43ae: 2800 cmp r0, #0 43b0: d032 beq.n 4418 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar) 43b2: 226c movs r2, #108 ; 0x6c 43b4: 4631 mov r1, r6 43b6: 4628 mov r0, r5 43b8: 47c0 blx r8 if(draw_dsc->pattern_opa > LV_OPA_MIN) { 43ba: 2805 cmp r0, #5 draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part); 43bc: f884 0036 strb.w r0, [r4, #54] ; 0x36 if(draw_dsc->pattern_opa > LV_OPA_MIN) { 43c0: d92a bls.n 4418 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar) 43c2: 226d movs r2, #109 ; 0x6d 43c4: 4631 mov r1, r6 43c6: 4628 mov r0, r5 43c8: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar) 43ca: 2261 movs r2, #97 ; 0x61 draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part); 43cc: f884 0037 strb.w r0, [r4, #55] ; 0x37 43d0: 4631 mov r1, r6 43d2: 4628 mov r0, r5 43d4: 47b8 blx r7 draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part); 43d6: f894 3038 ldrb.w r3, [r4, #56] ; 0x38 43da: 3800 subs r0, #0 43dc: bf18 it ne 43de: 2001 movne r0, #1 43e0: f360 0300 bfi r3, r0, #0, #1 43e4: f884 3038 strb.w r3, [r4, #56] ; 0x38 if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) { 43e8: 6ae0 ldr r0, [r4, #44] ; 0x2c 43ea: 4b62 ldr r3, [pc, #392] ; (4574 ) 43ec: 4798 blx r3 43ee: 2802 cmp r0, #2 43f0: f040 80af bne.w 4552 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 43f4: 4b5e ldr r3, [pc, #376] ; (4570 ) 43f6: 2269 movs r2, #105 ; 0x69 43f8: 4631 mov r1, r6 43fa: 4628 mov r0, r5 43fc: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 43fe: f248 028e movw r2, #32910 ; 0x808e draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 4402: 86a0 strh r0, [r4, #52] ; 0x34 4404: 4631 mov r1, r6 4406: 4628 mov r0, r5 4408: 47d0 blx sl draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part); 440a: 6320 str r0, [r4, #48] ; 0x30 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar) 440c: 2260 movs r2, #96 ; 0x60 440e: 4631 mov r1, r6 4410: 4628 mov r0, r5 4412: 47b8 blx r7 4414: f884 0039 strb.w r0, [r4, #57] ; 0x39 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 4418: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 441c: 2b05 cmp r3, #5 441e: d928 bls.n 4472 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 4420: 2250 movs r2, #80 ; 0x50 4422: 4631 mov r1, r6 4424: 4628 mov r0, r5 4426: 47b8 blx r7 draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part); 4428: 8420 strh r0, [r4, #32] if(draw_dsc->shadow_width) { 442a: b310 cbz r0, 4472 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 442c: 225c movs r2, #92 ; 0x5c 442e: 4631 mov r1, r6 4430: 4628 mov r0, r5 4432: 47c0 blx r8 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 4434: 2805 cmp r0, #5 draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part); 4436: f884 0028 strb.w r0, [r4, #40] ; 0x28 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 443a: d91a bls.n 4472 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 443c: 2251 movs r2, #81 ; 0x51 443e: 4631 mov r1, r6 4440: 4628 mov r0, r5 4442: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4444: 2252 movs r2, #82 ; 0x52 draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part); 4446: 8460 strh r0, [r4, #34] ; 0x22 4448: 4631 mov r1, r6 444a: 4628 mov r0, r5 444c: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 444e: 2253 movs r2, #83 ; 0x53 draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part); 4450: 84a0 strh r0, [r4, #36] ; 0x24 4452: 4631 mov r1, r6 4454: 4628 mov r0, r5 4456: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 4458: 4b45 ldr r3, [pc, #276] ; (4570 ) draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part); 445a: 84e0 strh r0, [r4, #38] ; 0x26 445c: 2259 movs r2, #89 ; 0x59 445e: 4631 mov r1, r6 4460: 4628 mov r0, r5 4462: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar) 4464: 2254 movs r2, #84 ; 0x54 draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part); 4466: 83e0 strh r0, [r4, #30] 4468: 4631 mov r1, r6 446a: 4628 mov r0, r5 446c: 47b8 blx r7 446e: f884 0029 strb.w r0, [r4, #41] ; 0x29 if(draw_dsc->value_opa > LV_OPA_MIN) { 4472: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 4476: 2b05 cmp r3, #5 4478: d940 bls.n 44fc _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 447a: f8df a100 ldr.w sl, [pc, #256] ; 457c 447e: 227f movs r2, #127 ; 0x7f 4480: 4631 mov r1, r6 4482: 4628 mov r0, r5 4484: 47d0 blx sl draw_dsc->value_str = lv_obj_get_style_value_str(obj, part); 4486: 63e0 str r0, [r4, #60] ; 0x3c if(draw_dsc->value_str) { 4488: 2800 cmp r0, #0 448a: d037 beq.n 44fc _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 448c: 227c movs r2, #124 ; 0x7c 448e: 4631 mov r1, r6 4490: 4628 mov r0, r5 4492: 47c0 blx r8 if(draw_dsc->value_opa > LV_OPA_MIN) { 4494: 2805 cmp r0, #5 draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part); 4496: f884 0044 strb.w r0, [r4, #68] ; 0x44 if(draw_dsc->value_opa > LV_OPA_MIN) { 449a: d92f bls.n 44fc _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 449c: 2273 movs r2, #115 ; 0x73 449e: 4631 mov r1, r6 44a0: 4628 mov r0, r5 44a2: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 44a4: 2274 movs r2, #116 ; 0x74 draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part); 44a6: f8a4 0048 strh.w r0, [r4, #72] ; 0x48 44aa: 4631 mov r1, r6 44ac: 4628 mov r0, r5 44ae: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 44b0: 4b2f ldr r3, [pc, #188] ; (4570 ) draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part); 44b2: f8a4 004a strh.w r0, [r4, #74] ; 0x4a 44b6: 2279 movs r2, #121 ; 0x79 44b8: 4631 mov r1, r6 44ba: 4628 mov r0, r5 44bc: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 44be: 227e movs r2, #126 ; 0x7e draw_dsc->value_color = lv_obj_get_style_value_color(obj, part); 44c0: f8a4 0046 strh.w r0, [r4, #70] ; 0x46 44c4: 4631 mov r1, r6 44c6: 4628 mov r0, r5 44c8: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 44ca: 2270 movs r2, #112 ; 0x70 draw_dsc->value_font = lv_obj_get_style_value_font(obj, part); 44cc: 6420 str r0, [r4, #64] ; 0x40 44ce: 4631 mov r1, r6 44d0: 4628 mov r0, r5 44d2: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t, _int, scalar) 44d4: 2271 movs r2, #113 ; 0x71 draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part); 44d6: f8a4 004c strh.w r0, [r4, #76] ; 0x4c 44da: 4631 mov r1, r6 44dc: 4628 mov r0, r5 44de: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 44e0: 2275 movs r2, #117 ; 0x75 draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part); 44e2: f8a4 004e strh.w r0, [r4, #78] ; 0x4e 44e6: 4631 mov r1, r6 44e8: 4628 mov r0, r5 44ea: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t, _int, scalar) 44ec: 2272 movs r2, #114 ; 0x72 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 44ee: f884 0050 strb.w r0, [r4, #80] ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t, _int, scalar) 44f2: 4631 mov r1, r6 44f4: 4628 mov r0, r5 44f6: 47b8 blx r7 44f8: f884 0051 strb.w r0, [r4, #81] ; 0x51 if(opa_scale < LV_OPA_MAX) { 44fc: f1b9 0ff9 cmp.w r9, #249 ; 0xf9 4500: f63f aede bhi.w 42c0 draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8; 4504: 7b23 ldrb r3, [r4, #12] 4506: fa1f f089 uxth.w r0, r9 450a: fb13 f300 smulbb r3, r3, r0 450e: f3c3 2307 ubfx r3, r3, #8, #8 4512: 7323 strb r3, [r4, #12] draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8; 4514: 7d23 ldrb r3, [r4, #20] 4516: fb13 f300 smulbb r3, r3, r0 451a: f3c3 2307 ubfx r3, r3, #8, #8 451e: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8; 4520: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 4524: fb13 f300 smulbb r3, r3, r0 4528: f3c3 2307 ubfx r3, r3, #8, #8 452c: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8; 4530: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 4534: fb13 f300 smulbb r3, r3, r0 4538: f3c3 2307 ubfx r3, r3, #8, #8 453c: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 4540: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 4544: fb13 f000 smulbb r0, r3, r0 4548: f3c0 2007 ubfx r0, r0, #8, #8 454c: f884 0044 strb.w r0, [r4, #68] ; 0x44 4550: e6b6 b.n 42c0 else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) { 4552: f894 3037 ldrb.w r3, [r4, #55] ; 0x37 4556: 2b05 cmp r3, #5 4558: f67f af58 bls.w 440c _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 455c: 4b04 ldr r3, [pc, #16] ; (4570 ) 455e: 2269 movs r2, #105 ; 0x69 4560: 4631 mov r1, r6 4562: 4628 mov r0, r5 4564: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 4566: 86a0 strh r0, [r4, #52] ; 0x34 4568: e750 b.n 440c 456a: bf00 nop 456c: 000036f1 .word 0x000036f1 4570: 00003795 .word 0x00003795 4574: 00007811 .word 0x00007811 4578: 00003819 .word 0x00003819 457c: 000038a9 .word 0x000038a9 00004580 : { 4580: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(mode == LV_DESIGN_COVER_CHK) { 4584: 2a02 cmp r2, #2 { 4586: b099 sub sp, #100 ; 0x64 4588: 4604 mov r4, r0 458a: 460f mov r7, r1 458c: 4615 mov r5, r2 if(mode == LV_DESIGN_COVER_CHK) { 458e: d159 bne.n 4644 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 4590: f8df 9214 ldr.w r9, [pc, #532] ; 47a8 4594: 2100 movs r1, #0 4596: 47c8 blx r9 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 4598: 4606 mov r6, r0 459a: 2800 cmp r0, #0 459c: d150 bne.n 4640 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 459e: 4601 mov r1, r0 45a0: 2201 movs r2, #1 45a2: 4620 mov r0, r4 45a4: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 45a6: 2204 movs r2, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 45a8: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 45aa: 4631 mov r1, r6 45ac: 4620 mov r0, r4 45ae: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 45b0: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 45b2: 4683 mov fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 45b4: 4631 mov r1, r6 45b6: 4620 mov r0, r4 45b8: 47c8 blx r9 lv_area_copy(&coords, &obj->coords); 45ba: 4b77 ldr r3, [pc, #476] ; (4798 ) 45bc: 4680 mov r8, r0 45be: f104 0110 add.w r1, r4, #16 45c2: a803 add r0, sp, #12 45c4: 4798 blx r3 coords.x1 -= w; 45c6: f8bd 300c ldrh.w r3, [sp, #12] coords.y1 -= h; 45ca: f8bd 200e ldrh.w r2, [sp, #14] coords.x1 -= w; 45ce: fa1f f08b uxth.w r0, fp 45d2: 1a1b subs r3, r3, r0 45d4: f8ad 300c strh.w r3, [sp, #12] coords.x2 += w; 45d8: f8bd 3010 ldrh.w r3, [sp, #16] 45dc: 4418 add r0, r3 45de: f8ad 0010 strh.w r0, [sp, #16] coords.y2 += h; 45e2: f8bd 0012 ldrh.w r0, [sp, #18] coords.y1 -= h; 45e6: fa1f f388 uxth.w r3, r8 45ea: 1ad2 subs r2, r2, r3 coords.y2 += h; 45ec: 4403 add r3, r0 coords.y1 -= h; 45ee: f8ad 200e strh.w r2, [sp, #14] coords.y2 += h; 45f2: f8ad 3012 strh.w r3, [sp, #18] if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER; 45f6: 4652 mov r2, sl 45f8: 4b68 ldr r3, [pc, #416] ; (479c ) 45fa: a903 add r1, sp, #12 45fc: 4638 mov r0, r7 45fe: 4798 blx r3 4600: b1d0 cbz r0, 4638 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 4602: 4f67 ldr r7, [pc, #412] ; (47a0 ) 4604: 222c movs r2, #44 ; 0x2c 4606: 4631 mov r1, r6 4608: 4620 mov r0, r4 460a: 47b8 blx r7 if(lv_obj_get_style_bg_opa(obj, LV_OBJ_PART_MAIN) < LV_OPA_MAX) return LV_DESIGN_RES_NOT_COVER; 460c: 28f9 cmp r0, #249 ; 0xf9 460e: d913 bls.n 4638 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 4610: 4631 mov r1, r6 4612: 2220 movs r2, #32 4614: 4620 mov r0, r4 4616: 47c8 blx r9 if(lv_obj_get_style_bg_blend_mode(obj, LV_OBJ_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER; 4618: f010 01ff ands.w r1, r0, #255 ; 0xff 461c: d10c bne.n 4638 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 461e: 2232 movs r2, #50 ; 0x32 4620: 4620 mov r0, r4 4622: 47c8 blx r9 if(lv_obj_get_style_border_blend_mode(obj, LV_OBJ_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER; 4624: f010 01ff ands.w r1, r0, #255 ; 0xff 4628: d106 bne.n 4638 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 462a: f248 020c movw r2, #32780 ; 0x800c 462e: 4620 mov r0, r4 4630: 47b8 blx r7 return LV_DESIGN_RES_COVER; 4632: 28f9 cmp r0, #249 ; 0xf9 4634: bf88 it hi 4636: 2501 movhi r5, #1 } 4638: 4628 mov r0, r5 463a: b019 add sp, #100 ; 0x64 463c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 4640: 2503 movs r5, #3 4642: e7f9 b.n 4638 else if(mode == LV_DESIGN_DRAW_MAIN) { 4644: 2a00 cmp r2, #0 4646: d156 bne.n 46f6 lv_draw_rect_dsc_init(&draw_dsc); 4648: 4b56 ldr r3, [pc, #344] ; (47a4 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 464a: 4e57 ldr r6, [pc, #348] ; (47a8 ) 464c: a803 add r0, sp, #12 464e: 4798 blx r3 4650: 2233 movs r2, #51 ; 0x33 4652: 4629 mov r1, r5 4654: 4620 mov r0, r4 4656: 47b0 blx r6 4658: 46b0 mov r8, r6 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 465a: b108 cbz r0, 4660 draw_dsc.border_opa = LV_OPA_TRANSP; 465c: f88d 5020 strb.w r5, [sp, #32] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 4660: 4b52 ldr r3, [pc, #328] ; (47ac ) 4662: aa03 add r2, sp, #12 4664: 2100 movs r1, #0 4666: 4620 mov r0, r4 4668: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 466a: 2204 movs r2, #4 466c: 2100 movs r1, #0 466e: 4620 mov r0, r4 4670: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4672: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4674: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4676: 2100 movs r1, #0 4678: 4620 mov r0, r4 467a: 47c0 blx r8 lv_area_copy(&coords, &obj->coords); 467c: f104 0910 add.w r9, r4, #16 4680: 4b45 ldr r3, [pc, #276] ; (4798 ) 4682: 4682 mov sl, r0 4684: 4649 mov r1, r9 4686: a801 add r0, sp, #4 4688: 4798 blx r3 coords.x2 += w; 468a: f8bd 0008 ldrh.w r0, [sp, #8] coords.x1 -= w; 468e: f8bd 2004 ldrh.w r2, [sp, #4] 4692: b2b3 uxth r3, r6 4694: 1ad2 subs r2, r2, r3 coords.x2 += w; 4696: 4403 add r3, r0 4698: f8ad 3008 strh.w r3, [sp, #8] coords.y1 -= h; 469c: f8bd 3006 ldrh.w r3, [sp, #6] coords.x1 -= w; 46a0: f8ad 2004 strh.w r2, [sp, #4] coords.y1 -= h; 46a4: fa1f f08a uxth.w r0, sl 46a8: 1a1b subs r3, r3, r0 46aa: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 46ae: f8bd 300a ldrh.w r3, [sp, #10] 46b2: 4418 add r0, r3 46b4: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 46b8: aa03 add r2, sp, #12 46ba: 4639 mov r1, r7 46bc: a801 add r0, sp, #4 46be: 4b3c ldr r3, [pc, #240] ; (47b0 ) 46c0: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 46c2: 2202 movs r2, #2 46c4: 2100 movs r1, #0 46c6: 4620 mov r0, r4 46c8: 47c0 blx r8 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 46ca: 2800 cmp r0, #0 46cc: d0b4 beq.n 4638 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 46ce: 4b39 ldr r3, [pc, #228] ; (47b4 ) lv_draw_mask_radius_init(mp, &obj->coords, r, false); 46d0: 4f39 ldr r7, [pc, #228] ; (47b8 ) lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 46d2: 201c movs r0, #28 46d4: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 46d6: 2201 movs r2, #1 46d8: 4606 mov r6, r0 46da: 2100 movs r1, #0 46dc: 4620 mov r0, r4 46de: 47c0 blx r8 lv_draw_mask_radius_init(mp, &obj->coords, r, false); 46e0: 4649 mov r1, r9 46e2: 4602 mov r2, r0 46e4: 2300 movs r3, #0 46e6: 4630 mov r0, r6 46e8: 47b8 blx r7 lv_draw_mask_add(mp, obj + 8); 46ea: 4b34 ldr r3, [pc, #208] ; (47bc ) 46ec: f504 7118 add.w r1, r4, #608 ; 0x260 46f0: 4630 mov r0, r6 46f2: 4798 blx r3 46f4: e7a0 b.n 4638 else if(mode == LV_DESIGN_DRAW_POST) { 46f6: 2a01 cmp r2, #1 46f8: d001 beq.n 46fe return LV_DESIGN_RES_OK; 46fa: 2500 movs r5, #0 46fc: e79c b.n 4638 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 46fe: 4d2a ldr r5, [pc, #168] ; (47a8 ) 4700: 2202 movs r2, #2 4702: 2100 movs r1, #0 4704: 47a8 blx r5 4706: 46a8 mov r8, r5 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 4708: b128 cbz r0, 4716 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); 470a: 4b2d ldr r3, [pc, #180] ; (47c0 ) 470c: f504 7018 add.w r0, r4, #608 ; 0x260 4710: 4798 blx r3 _lv_mem_buf_release(param); 4712: 4b2c ldr r3, [pc, #176] ; (47c4 ) 4714: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 4716: 2233 movs r2, #51 ; 0x33 4718: 2100 movs r1, #0 471a: 4620 mov r0, r4 471c: 47c0 blx r8 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 471e: 2800 cmp r0, #0 4720: d0eb beq.n 46fa draw_dsc.bg_opa = LV_OPA_TRANSP; 4722: 2500 movs r5, #0 lv_draw_rect_dsc_init(&draw_dsc); 4724: a803 add r0, sp, #12 4726: 4b1f ldr r3, [pc, #124] ; (47a4 ) 4728: 4798 blx r3 lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 472a: 4b20 ldr r3, [pc, #128] ; (47ac ) draw_dsc.bg_opa = LV_OPA_TRANSP; 472c: f88d 5018 strb.w r5, [sp, #24] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 4730: aa03 add r2, sp, #12 4732: 4629 mov r1, r5 4734: 4620 mov r0, r4 draw_dsc.pattern_opa = LV_OPA_TRANSP; 4736: f88d 5042 strb.w r5, [sp, #66] ; 0x42 draw_dsc.shadow_opa = LV_OPA_TRANSP; 473a: f88d 5034 strb.w r5, [sp, #52] ; 0x34 lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 473e: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4740: 4629 mov r1, r5 4742: 2204 movs r2, #4 4744: 4620 mov r0, r4 4746: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4748: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 474a: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 474c: 4629 mov r1, r5 474e: 4620 mov r0, r4 4750: 47c0 blx r8 lv_area_copy(&coords, &obj->coords); 4752: f104 0110 add.w r1, r4, #16 4756: 4680 mov r8, r0 4758: 4b0f ldr r3, [pc, #60] ; (4798 ) 475a: a801 add r0, sp, #4 475c: 4798 blx r3 coords.x2 += w; 475e: f8bd 0008 ldrh.w r0, [sp, #8] coords.x1 -= w; 4762: f8bd 2004 ldrh.w r2, [sp, #4] 4766: b2b3 uxth r3, r6 4768: 1ad2 subs r2, r2, r3 coords.x2 += w; 476a: 4403 add r3, r0 476c: f8ad 3008 strh.w r3, [sp, #8] coords.y1 -= h; 4770: f8bd 3006 ldrh.w r3, [sp, #6] coords.x1 -= w; 4774: f8ad 2004 strh.w r2, [sp, #4] coords.y1 -= h; 4778: fa1f f088 uxth.w r0, r8 477c: 1a1b subs r3, r3, r0 477e: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 4782: f8bd 300a ldrh.w r3, [sp, #10] 4786: 4418 add r0, r3 4788: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 478c: 4b08 ldr r3, [pc, #32] ; (47b0 ) 478e: aa03 add r2, sp, #12 4790: 4639 mov r1, r7 4792: a801 add r0, sp, #4 4794: 4798 blx r3 4796: e74f b.n 4638 4798: 00001cc9 .word 0x00001cc9 479c: 0000e0d9 .word 0x0000e0d9 47a0: 00003819 .word 0x00003819 47a4: 00009bb5 .word 0x00009bb5 47a8: 000036f1 .word 0x000036f1 47ac: 00004289 .word 0x00004289 47b0: 00009c01 .word 0x00009c01 47b4: 0000eefd .word 0x0000eefd 47b8: 00009925 .word 0x00009925 47bc: 00009719 .word 0x00009719 47c0: 000097d5 .word 0x000097d5 47c4: 0000ebb1 .word 0x0000ebb1 000047c8 : { 47c8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 47cc: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar) 47ce: 4f28 ldr r7, [pc, #160] ; (4870 ) 47d0: f248 028c movw r2, #32908 ; 0x808c 47d4: 4605 mov r5, r0 47d6: 460e mov r6, r1 47d8: 47b8 blx r7 if(draw_dsc->opa <= LV_OPA_MIN) return; 47da: 2805 cmp r0, #5 draw_dsc->opa = lv_obj_get_style_text_opa(obj, part); 47dc: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 47de: d945 bls.n 486c _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 47e0: f248 020c movw r2, #32780 ; 0x800c 47e4: 4631 mov r1, r6 47e6: 4628 mov r0, r5 47e8: 47b8 blx r7 if(opa_scale < LV_OPA_MAX) { 47ea: 28f9 cmp r0, #249 ; 0xf9 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 47ec: bf9f itttt ls 47ee: 7a23 ldrbls r3, [r4, #8] 47f0: fb13 f000 smulbbls r0, r3, r0 47f4: f3c0 2007 ubfxls r0, r0, #8, #8 47f8: 7220 strbls r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 47fa: 7a23 ldrb r3, [r4, #8] 47fc: 2b05 cmp r3, #5 47fe: d935 bls.n 486c _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 4800: f248 0289 movw r2, #32905 ; 0x8089 4804: 4631 mov r1, r6 4806: f8df 8074 ldr.w r8, [pc, #116] ; 487c _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 480a: 4f1a ldr r7, [pc, #104] ; (4874 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 480c: 4628 mov r0, r5 480e: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 4810: f248 0280 movw r2, #32896 ; 0x8080 draw_dsc->color = lv_obj_get_style_text_color(obj, part); 4814: 8020 strh r0, [r4, #0] 4816: 4631 mov r1, r6 4818: 4628 mov r0, r5 481a: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 481c: f248 0281 movw r2, #32897 ; 0x8081 draw_dsc->letter_space = lv_obj_get_style_text_letter_space(obj, part); 4820: 81a0 strh r0, [r4, #12] 4822: 4631 mov r1, r6 4824: 4628 mov r0, r5 4826: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 4828: f248 0282 movw r2, #32898 ; 0x8082 draw_dsc->line_space = lv_obj_get_style_text_line_space(obj, part); 482c: 8160 strh r0, [r4, #10] 482e: 4631 mov r1, r6 4830: 4628 mov r0, r5 4832: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 4834: f248 0283 movw r2, #32899 ; 0x8083 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 4838: 7620 strb r0, [r4, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 483a: 4631 mov r1, r6 483c: 4628 mov r0, r5 483e: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 4840: 4b0d ldr r3, [pc, #52] ; (4878 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 4842: 7660 strb r0, [r4, #25] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 4844: f248 028e movw r2, #32910 ; 0x808e 4848: 4631 mov r1, r6 484a: 4628 mov r0, r5 484c: 4798 blx r3 if(draw_dsc->sel_start != LV_DRAW_LABEL_NO_TXT_SEL && draw_dsc->sel_end != LV_DRAW_LABEL_NO_TXT_SEL) { 484e: 89e2 ldrh r2, [r4, #14] draw_dsc->font = lv_obj_get_style_text_font(obj, part); 4850: 6060 str r0, [r4, #4] if(draw_dsc->sel_start != LV_DRAW_LABEL_NO_TXT_SEL && draw_dsc->sel_end != LV_DRAW_LABEL_NO_TXT_SEL) { 4852: f64f 73ff movw r3, #65535 ; 0xffff 4856: 429a cmp r2, r3 4858: d008 beq.n 486c 485a: 8a22 ldrh r2, [r4, #16] 485c: 429a cmp r2, r3 485e: d005 beq.n 486c _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar) 4860: f248 028a movw r2, #32906 ; 0x808a 4864: 4631 mov r1, r6 4866: 4628 mov r0, r5 4868: 47c0 blx r8 draw_dsc->color = lv_obj_get_style_text_sel_color(obj, part); 486a: 8020 strh r0, [r4, #0] } 486c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 4870: 00003819 .word 0x00003819 4874: 000036f1 .word 0x000036f1 4878: 000038a9 .word 0x000038a9 487c: 00003795 .word 0x00003795 00004880 : { 4880: b5f8 push {r3, r4, r5, r6, r7, lr} 4882: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 4884: 4f23 ldr r7, [pc, #140] ; (4914 ) 4886: f248 02ac movw r2, #32940 ; 0x80ac 488a: 4605 mov r5, r0 488c: 460e mov r6, r1 488e: 47b8 blx r7 if(draw_dsc->opa <= LV_OPA_MIN) return; 4890: 2805 cmp r0, #5 draw_dsc->opa = lv_obj_get_style_image_opa(obj, part); 4892: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 4894: d93c bls.n 4910 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4896: f248 020c movw r2, #32780 ; 0x800c 489a: 4631 mov r1, r6 489c: 4628 mov r0, r5 489e: 47b8 blx r7 if(opa_scale < LV_OPA_MAX) { 48a0: 28f9 cmp r0, #249 ; 0xf9 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 48a2: bf9f itttt ls 48a4: 7823 ldrbls r3, [r4, #0] 48a6: fb13 f000 smulbbls r0, r3, r0 48aa: f3c0 2007 ubfxls r0, r0, #8, #8 48ae: 7020 strbls r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 48b0: 7823 ldrb r3, [r4, #0] 48b2: 2b05 cmp r3, #5 48b4: d92c bls.n 4910 draw_dsc->angle = 0; 48b6: 2300 movs r3, #0 48b8: 8063 strh r3, [r4, #2] draw_dsc->zoom = LV_IMG_ZOOM_NONE; 48ba: f44f 7380 mov.w r3, #256 ; 0x100 48be: 8123 strh r3, [r4, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 48c0: 8aab ldrh r3, [r5, #20] 48c2: 8a2a ldrh r2, [r5, #16] 48c4: 3301 adds r3, #1 48c6: 1a9b subs r3, r3, r2 draw_dsc->pivot.x = lv_area_get_width(&obj->coords) / 2; 48c8: f3c3 32c0 ubfx r2, r3, #15, #1 48cc: fa02 f383 sxtah r3, r2, r3 48d0: 105b asrs r3, r3, #1 48d2: 80a3 strh r3, [r4, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 48d4: 8aeb ldrh r3, [r5, #22] 48d6: 8a6a ldrh r2, [r5, #18] 48d8: 3301 adds r3, #1 48da: 1a9b subs r3, r3, r2 draw_dsc->pivot.y = lv_area_get_height(&obj->coords) / 2; 48dc: f3c3 32c0 ubfx r2, r3, #15, #1 48e0: fa02 f383 sxtah r3, r2, r3 48e4: 105b asrs r3, r3, #1 48e6: 80e3 strh r3, [r4, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) 48e8: f248 02ad movw r2, #32941 ; 0x80ad 48ec: 4631 mov r1, r6 48ee: 4628 mov r0, r5 48f0: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 48f2: 4b09 ldr r3, [pc, #36] ; (4918 ) draw_dsc->recolor_opa = lv_obj_get_style_image_recolor_opa(obj, part); 48f4: 72a0 strb r0, [r4, #10] 48f6: f248 02a9 movw r2, #32937 ; 0x80a9 48fa: 4631 mov r1, r6 48fc: 4628 mov r0, r5 48fe: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) 4900: 4b06 ldr r3, [pc, #24] ; (491c ) draw_dsc->recolor = lv_obj_get_style_image_recolor(obj, part); 4902: 81a0 strh r0, [r4, #12] 4904: f248 02a0 movw r2, #32928 ; 0x80a0 4908: 4631 mov r1, r6 490a: 4628 mov r0, r5 490c: 4798 blx r3 490e: 73a0 strb r0, [r4, #14] } 4910: bdf8 pop {r3, r4, r5, r6, r7, pc} 4912: bf00 nop 4914: 00003819 .word 0x00003819 4918: 00003795 .word 0x00003795 491c: 000036f1 .word 0x000036f1 00004920 : { 4920: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 4924: 2250 movs r2, #80 ; 0x50 4926: 4f77 ldr r7, [pc, #476] ; (4b04 ) 4928: b08a sub sp, #40 ; 0x28 492a: 4604 mov r4, r0 492c: 460e mov r6, r1 492e: 47b8 blx r7 if(sh_width) { 4930: 4605 mov r5, r0 4932: 2800 cmp r0, #0 4934: f040 80b7 bne.w 4aa6 lv_coord_t s = 0; 4938: 2500 movs r5, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 493a: f8df 91d0 ldr.w r9, [pc, #464] ; 4b0c 493e: 227f movs r2, #127 ; 0x7f 4940: 4631 mov r1, r6 4942: 4620 mov r0, r4 4944: 47c8 blx r9 if(value_str) { 4946: 4680 mov r8, r0 4948: 2800 cmp r0, #0 494a: f000 8081 beq.w 4a50 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 494e: 4b6e ldr r3, [pc, #440] ; (4b08 ) 4950: 227c movs r2, #124 ; 0x7c 4952: 4631 mov r1, r6 4954: 4620 mov r0, r4 4956: 4798 blx r3 if(value_opa > LV_OPA_MIN) { 4958: 2805 cmp r0, #5 495a: d979 bls.n 4a50 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 495c: 2270 movs r2, #112 ; 0x70 495e: 4631 mov r1, r6 4960: 4620 mov r0, r4 4962: 47b8 blx r7 4964: 2270 movs r2, #112 ; 0x70 4966: 9005 str r0, [sp, #20] 4968: 4631 mov r1, r6 496a: 4620 mov r0, r4 496c: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 496e: 227e movs r2, #126 ; 0x7e _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 4970: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 4972: 4631 mov r1, r6 4974: 4620 mov r0, r4 4976: 47c8 blx r9 _lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE); 4978: f04f 0900 mov.w r9, #0 497c: f647 4118 movw r1, #31768 ; 0x7c18 4980: e9cd 1901 strd r1, r9, [sp, #4] 4984: 4602 mov r2, r0 4986: 4641 mov r1, r8 4988: 9b05 ldr r3, [sp, #20] 498a: f8df 8184 ldr.w r8, [pc, #388] ; 4b10 498e: f8cd a000 str.w sl, [sp] 4992: a806 add r0, sp, #24 4994: 47c0 blx r8 value_area.x2 = txt_size.x - 1; 4996: f8bd 3018 ldrh.w r3, [sp, #24] value_area.x1 = 0; 499a: f8ad 9020 strh.w r9, [sp, #32] value_area.x2 = txt_size.x - 1; 499e: 3b01 subs r3, #1 49a0: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 value_area.y2 = txt_size.y - 1; 49a4: f8bd 301a ldrh.w r3, [sp, #26] value_area.y1 = 0; 49a8: f8ad 9022 strh.w r9, [sp, #34] ; 0x22 value_area.y2 = txt_size.y - 1; 49ac: 3b01 subs r3, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 49ae: 2275 movs r2, #117 ; 0x75 49b0: 4631 mov r1, r6 49b2: 4620 mov r0, r4 49b4: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 49b8: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49ba: 2273 movs r2, #115 ; 0x73 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 49bc: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49be: 4631 mov r1, r6 49c0: 4620 mov r0, r4 49c2: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 49c4: 2274 movs r2, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49c6: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 49c8: 4631 mov r1, r6 49ca: 4620 mov r0, r4 49cc: 47b8 blx r7 _lv_area_align(&obj->coords, &value_area, align, &p_align); 49ce: fa5f f28a uxtb.w r2, sl 49d2: 4680 mov r8, r0 49d4: ab07 add r3, sp, #28 49d6: a908 add r1, sp, #32 49d8: f104 0010 add.w r0, r4, #16 49dc: f8df a134 ldr.w sl, [pc, #308] ; 4b14 49e0: 47d0 blx sl value_area.x1 += p_align.x + xofs; 49e2: f8bd 301c ldrh.w r3, [sp, #28] 49e6: f8bd 1020 ldrh.w r1, [sp, #32] s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 49ea: f9b4 2010 ldrsh.w r2, [r4, #16] value_area.y1 += p_align.y + yofs; 49ee: f8bd 001e ldrh.w r0, [sp, #30] value_area.x1 += p_align.x + xofs; 49f2: 444b add r3, r9 49f4: fa11 f183 uxtah r1, r1, r3 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 49f8: b209 sxth r1, r1 49fa: 1a52 subs r2, r2, r1 49fc: 42aa cmp r2, r5 49fe: bfb8 it lt 4a00: 462a movlt r2, r5 value_area.y1 += p_align.y + yofs; 4a02: f8bd 5022 ldrh.w r5, [sp, #34] ; 0x22 4a06: 4440 add r0, r8 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 4a08: 4611 mov r1, r2 value_area.y1 += p_align.y + yofs; 4a0a: fa15 f580 uxtah r5, r5, r0 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 4a0e: f9b4 2012 ldrsh.w r2, [r4, #18] 4a12: b22d sxth r5, r5 4a14: 1b55 subs r5, r2, r5 4a16: b20a sxth r2, r1 4a18: 4295 cmp r5, r2 4a1a: bfb8 it lt 4a1c: 4615 movlt r5, r2 value_area.x2 += p_align.x + xofs; 4a1e: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 4a22: fa12 f383 uxtah r3, r2, r3 s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2); 4a26: f9b4 2014 ldrsh.w r2, [r4, #20] 4a2a: b21b sxth r3, r3 4a2c: 1a9b subs r3, r3, r2 4a2e: b22d sxth r5, r5 4a30: 42ab cmp r3, r5 4a32: bfb8 it lt 4a34: 462b movlt r3, r5 value_area.y2 += p_align.y + yofs; 4a36: f8bd 5026 ldrh.w r5, [sp, #38] ; 0x26 4a3a: fa15 f580 uxtah r5, r5, r0 s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2); 4a3e: f9b4 0016 ldrsh.w r0, [r4, #22] 4a42: b22d sxth r5, r5 4a44: 1a2d subs r5, r5, r0 4a46: b21b sxth r3, r3 4a48: 42ab cmp r3, r5 4a4a: bfb8 it lt 4a4c: 462b movlt r3, r5 4a4e: b21d sxth r5, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 4a50: 2240 movs r2, #64 ; 0x40 4a52: 4631 mov r1, r6 4a54: 4620 mov r0, r4 4a56: 47b8 blx r7 if(outline_width) { 4a58: 4680 mov r8, r0 4a5a: b178 cbz r0, 4a7c _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 4a5c: 4b2a ldr r3, [pc, #168] ; (4b08 ) 4a5e: 224c movs r2, #76 ; 0x4c 4a60: 4631 mov r1, r6 4a62: 4620 mov r0, r4 4a64: 4798 blx r3 if(outline_opa > LV_OPA_MIN) { 4a66: 2805 cmp r0, #5 4a68: d908 bls.n 4a7c _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 4a6a: 2241 movs r2, #65 ; 0x41 4a6c: 4631 mov r1, r6 4a6e: 4620 mov r0, r4 4a70: 47b8 blx r7 s = LV_MATH_MAX(s, outline_pad + outline_width); 4a72: 4440 add r0, r8 4a74: 4285 cmp r5, r0 4a76: bfb8 it lt 4a78: 4605 movlt r5, r0 4a7a: b22d sxth r5, r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4a7c: 4631 mov r1, r6 4a7e: 2204 movs r2, #4 4a80: 4620 mov r0, r4 4a82: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4a84: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4a86: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4a88: 4631 mov r1, r6 4a8a: 4620 mov r0, r4 4a8c: 47b8 blx r7 lv_coord_t wh = LV_MATH_MAX(w, h); 4a8e: 4540 cmp r0, r8 4a90: bfb8 it lt 4a92: 4640 movlt r0, r8 4a94: b200 sxth r0, r0 if(wh > 0) s += wh; 4a96: 2800 cmp r0, #0 4a98: bfc4 itt gt 4a9a: 182d addgt r5, r5, r0 4a9c: b22d sxthgt r5, r5 } 4a9e: 4628 mov r0, r5 4aa0: b00a add sp, #40 ; 0x28 4aa2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 4aa6: 4b18 ldr r3, [pc, #96] ; (4b08 ) 4aa8: 225c movs r2, #92 ; 0x5c 4aaa: 4631 mov r1, r6 4aac: 4620 mov r0, r4 4aae: 4798 blx r3 if(sh_opa > LV_OPA_MIN) { 4ab0: 2805 cmp r0, #5 4ab2: f67f af41 bls.w 4938 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 4ab6: 2253 movs r2, #83 ; 0x53 4ab8: 4631 mov r1, r6 4aba: 4620 mov r0, r4 4abc: 47b8 blx r7 sh_width = sh_width / 2; /*THe blur adds only half width*/ 4abe: eb05 75d5 add.w r5, r5, r5, lsr #31 sh_width++; 4ac2: eb00 0565 add.w r5, r0, r5, asr #1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 4ac6: 2251 movs r2, #81 ; 0x51 4ac8: 4631 mov r1, r6 4aca: 4620 mov r0, r4 4acc: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4ace: 2252 movs r2, #82 ; 0x52 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 4ad0: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4ad2: 4631 mov r1, r6 4ad4: 4620 mov r0, r4 4ad6: 47b8 blx r7 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 4ad8: 2800 cmp r0, #0 4ada: bfb8 it lt 4adc: 4240 neglt r0, r0 4ade: f1b8 0f00 cmp.w r8, #0 4ae2: bfb8 it lt 4ae4: f1c8 0800 rsblt r8, r8, #0 sh_width += lv_obj_get_style_shadow_spread(obj, part); 4ae8: 3501 adds r5, #1 4aea: b2ad uxth r5, r5 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 4aec: b280 uxth r0, r0 4aee: fa1f f888 uxth.w r8, r8 4af2: 4540 cmp r0, r8 4af4: bf2c ite cs 4af6: 182d addcs r5, r5, r0 4af8: 4445 addcc r5, r8 s = LV_MATH_MAX(s, sh_width); 4afa: b22d sxth r5, r5 4afc: ea25 75e5 bic.w r5, r5, r5, asr #31 4b00: e71b b.n 493a 4b02: bf00 nop 4b04: 000036f1 .word 0x000036f1 4b08: 00003819 .word 0x00003819 4b0c: 000038a9 .word 0x000038a9 4b10: 000101fd .word 0x000101fd 4b14: 0000e179 .word 0x0000e179 00004b18 : if(sign == LV_SIGNAL_GET_STYLE) { 4b18: 2908 cmp r1, #8 { 4b1a: b510 push {r4, lr} 4b1c: 4604 mov r4, r0 if(sign == LV_SIGNAL_GET_STYLE) { 4b1e: d108 bne.n 4b32 if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list; 4b20: 7813 ldrb r3, [r2, #0] 4b22: b91b cbnz r3, 4b2c 4b24: 3428 adds r4, #40 ; 0x28 4b26: 6054 str r4, [r2, #4] lv_res_t res = LV_RES_OK; 4b28: 2401 movs r4, #1 4b2a: e011 b.n 4b50 else info->result = NULL; 4b2c: 2300 movs r3, #0 4b2e: 6053 str r3, [r2, #4] 4b30: e7fa b.n 4b28 else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 4b32: 2907 cmp r1, #7 4b34: d105 bne.n 4b42 } 4b36: e8bd 4010 ldmia.w sp!, {r4, lr} else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 4b3a: 4927 ldr r1, [pc, #156] ; (4bd8 ) 4b3c: 4b27 ldr r3, [pc, #156] ; (4bdc ) 4b3e: 4610 mov r0, r2 4b40: 4718 bx r3 if(sign == LV_SIGNAL_CHILD_CHG) { 4b42: 2901 cmp r1, #1 4b44: d106 bne.n 4b54 if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV; 4b46: 4b26 ldr r3, [pc, #152] ; (4be0 ) 4b48: 4798 blx r3 4b4a: f080 0001 eor.w r0, r0, #1 return LV_RES_OK; 4b4e: b2c4 uxtb r4, r0 } 4b50: 4620 mov r0, r4 4b52: bd10 pop {r4, pc} else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 4b54: 2906 cmp r1, #6 4b56: d109 bne.n 4b6c lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN); 4b58: 4b22 ldr r3, [pc, #136] ; (4be4 ) 4b5a: 2100 movs r1, #0 4b5c: 4798 blx r3 obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d); 4b5e: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 4b62: 4298 cmp r0, r3 4b64: bfb8 it lt 4b66: 4618 movlt r0, r3 4b68: 8660 strh r0, [r4, #50] ; 0x32 4b6a: e7dd b.n 4b28 else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) { 4b6c: 2903 cmp r1, #3 4b6e: d107 bne.n 4b80 if(obj->realign.auto_realign) { 4b70: f890 4049 ldrb.w r4, [r0, #73] ; 0x49 4b74: f014 0401 ands.w r4, r4, #1 4b78: d0d6 beq.n 4b28 lv_obj_realign(obj); 4b7a: 4b1b ldr r3, [pc, #108] ; (4be8 ) 4b7c: 4798 blx r3 4b7e: e7e7 b.n 4b50 else if(sign == LV_SIGNAL_STYLE_CHG) { 4b80: 2904 cmp r1, #4 4b82: d102 bne.n 4b8a lv_obj_refresh_ext_draw_pad(obj); 4b84: 4b19 ldr r3, [pc, #100] ; (4bec ) 4b86: 4798 blx r3 4b88: e7ce b.n 4b28 else if(sign == LV_SIGNAL_PRESSED) { 4b8a: 290b cmp r1, #11 4b8c: d103 bne.n 4b96 lv_obj_add_state(obj, LV_STATE_PRESSED); 4b8e: 4b18 ldr r3, [pc, #96] ; (4bf0 ) 4b90: 2110 movs r1, #16 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 4b92: 4798 blx r3 4b94: e7c8 b.n 4b28 else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { 4b96: f1a1 020d sub.w r2, r1, #13 4b9a: 2a01 cmp r2, #1 4b9c: d802 bhi.n 4ba4 lv_obj_clear_state(obj, LV_STATE_PRESSED); 4b9e: 2110 movs r1, #16 lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 4ba0: 4b14 ldr r3, [pc, #80] ; (4bf4 ) 4ba2: e7f6 b.n 4b92 else if(sign == LV_SIGNAL_FOCUS) { 4ba4: 2916 cmp r1, #22 4ba6: d10e bne.n 4bc6 if(lv_group_get_editing(lv_obj_get_group(obj))) { 4ba8: 4b13 ldr r3, [pc, #76] ; (4bf8 ) 4baa: 4798 blx r3 4bac: 4b13 ldr r3, [pc, #76] ; (4bfc ) 4bae: 4798 blx r3 4bb0: 4b0f ldr r3, [pc, #60] ; (4bf0 ) 4bb2: b110 cbz r0, 4bba lv_obj_add_state(obj, state); 4bb4: 2106 movs r1, #6 4bb6: 4620 mov r0, r4 4bb8: e7eb b.n 4b92 lv_obj_add_state(obj, LV_STATE_FOCUSED); 4bba: 2102 movs r1, #2 4bbc: 4620 mov r0, r4 4bbe: 4798 blx r3 lv_obj_clear_state(obj, LV_STATE_EDITED); 4bc0: 2104 movs r1, #4 lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 4bc2: 4620 mov r0, r4 4bc4: e7ec b.n 4ba0 else if(sign == LV_SIGNAL_DEFOCUS) { 4bc6: 2917 cmp r1, #23 4bc8: d101 bne.n 4bce lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 4bca: 2106 movs r1, #6 4bcc: e7f9 b.n 4bc2 else if(sign == LV_SIGNAL_CLEANUP) { 4bce: 2900 cmp r1, #0 4bd0: d1aa bne.n 4b28 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 4bd2: 4b0b ldr r3, [pc, #44] ; (4c00 ) 4bd4: e7dd b.n 4b92 4bd6: bf00 nop 4bd8: 0001f09f .word 0x0001f09f 4bdc: 0000426d .word 0x0000426d 4be0: 00003631 .word 0x00003631 4be4: 00004921 .word 0x00004921 4be8: 00002c91 .word 0x00002c91 4bec: 00002081 .word 0x00002081 4bf0: 00003e79 .word 0x00003e79 4bf4: 00003edd .word 0x00003edd 4bf8: 00003fd1 .word 0x00003fd1 4bfc: 00001bcf .word 0x00001bcf 4c00: 000024f9 .word 0x000024f9 00004c04 : /** * Flush the content of the VDB */ static void lv_refr_vdb_flush(void) { 4c04: b538 push {r3, r4, r5, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4c06: 4d17 ldr r5, [pc, #92] ; (4c64 ) 4c08: 4b17 ldr r3, [pc, #92] ; (4c68 ) 4c0a: 6828 ldr r0, [r5, #0] 4c0c: 4798 blx r3 /*In double buffered mode wait until the other buffer is flushed before flushing the current * one*/ if(lv_disp_is_double_buf(disp_refr)) { 4c0e: 4b17 ldr r3, [pc, #92] ; (4c6c ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4c10: 4604 mov r4, r0 if(lv_disp_is_double_buf(disp_refr)) { 4c12: 6828 ldr r0, [r5, #0] 4c14: 4798 blx r3 4c16: b958 cbnz r0, 4c30 } } vdb->flushing = 1; if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c18: 6828 ldr r0, [r5, #0] vdb->flushing = 1; 4c1a: 2301 movs r3, #1 if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c1c: 6842 ldr r2, [r0, #4] vdb->flushing = 1; 4c1e: 61a3 str r3, [r4, #24] if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c20: 6a11 ldr r1, [r2, #32] 4c22: 07c9 lsls r1, r1, #31 4c24: d409 bmi.n 4c3a else vdb->flushing_last = 0; 4c26: 2300 movs r3, #0 4c28: e00a b.n 4c40 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 4c2a: 69c3 ldr r3, [r0, #28] 4c2c: b10b cbz r3, 4c32 4c2e: 4798 blx r3 4c30: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 4c32: 69a3 ldr r3, [r4, #24] 4c34: 2b00 cmp r3, #0 4c36: d1f8 bne.n 4c2a 4c38: e7ee b.n 4c18 if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c3a: 6a12 ldr r2, [r2, #32] 4c3c: 0792 lsls r2, r2, #30 4c3e: d5f2 bpl.n 4c26 else vdb->flushing_last = 0; 4c40: 61e3 str r3, [r4, #28] /*Flush the rendered content to the display*/ lv_disp_t * disp = _lv_refr_get_disp_refreshing(); if(disp->driver.flush_cb) disp->driver.flush_cb(&disp->driver, &vdb->area, vdb->buf_act); 4c42: 68c3 ldr r3, [r0, #12] 4c44: b11b cbz r3, 4c4e 4c46: 68a2 ldr r2, [r4, #8] 4c48: f104 0110 add.w r1, r4, #16 4c4c: 4798 blx r3 if(vdb->buf1 && vdb->buf2) { 4c4e: 6822 ldr r2, [r4, #0] 4c50: b132 cbz r2, 4c60 4c52: 6863 ldr r3, [r4, #4] 4c54: b123 cbz r3, 4c60 if(vdb->buf_act == vdb->buf1) 4c56: 68a1 ldr r1, [r4, #8] vdb->buf_act = vdb->buf2; 4c58: 428a cmp r2, r1 4c5a: bf18 it ne 4c5c: 4613 movne r3, r2 4c5e: 60a3 str r3, [r4, #8] else vdb->buf_act = vdb->buf1; } } 4c60: bd38 pop {r3, r4, r5, pc} 4c62: bf00 nop 4c64: 20008100 .word 0x20008100 4c68: 0000da25 .word 0x0000da25 4c6c: 0000da29 .word 0x0000da29 00004c70 : { 4c70: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 4c74: 2200 movs r2, #0 { 4c76: 460c mov r4, r1 if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 4c78: 4b17 ldr r3, [pc, #92] ; (4cd8 ) 4c7a: 3110 adds r1, #16 { 4c7c: 4607 mov r7, r0 if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 4c7e: 4798 blx r3 4c80: b910 cbnz r0, 4c88 lv_obj_t * found_p = NULL; 4c82: 2000 movs r0, #0 } 4c84: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 4c88: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 4c8c: 06db lsls r3, r3, #27 4c8e: d4f8 bmi.n 4c82 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 4c90: 6a23 ldr r3, [r4, #32] 4c92: b19b cbz r3, 4cbc 4c94: 2202 movs r2, #2 4c96: 4639 mov r1, r7 4c98: 4620 mov r0, r4 4c9a: 4798 blx r3 if(design_res == LV_DESIGN_RES_MASKED) return NULL; 4c9c: 2803 cmp r0, #3 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 4c9e: 4606 mov r6, r0 if(design_res == LV_DESIGN_RES_MASKED) return NULL; 4ca0: d0ef beq.n 4c82 _LV_LL_READ(obj->child_ll, i) { 4ca2: f104 0804 add.w r8, r4, #4 4ca6: 4b0d ldr r3, [pc, #52] ; (4cdc ) 4ca8: f8df 9034 ldr.w r9, [pc, #52] ; 4ce0 4cac: 4640 mov r0, r8 4cae: 4798 blx r3 4cb0: 4605 mov r5, r0 4cb2: b92d cbnz r5, 4cc0 if(design_res == LV_DESIGN_RES_COVER) { 4cb4: 2e01 cmp r6, #1 4cb6: d1e4 bne.n 4c82 4cb8: 4620 mov r0, r4 4cba: e7e3 b.n 4c84 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 4cbc: 2602 movs r6, #2 4cbe: e7f0 b.n 4ca2 found_p = lv_refr_get_top_obj(area_p, i); 4cc0: 4629 mov r1, r5 4cc2: 4638 mov r0, r7 4cc4: f7ff ffd4 bl 4c70 if(found_p != NULL) { 4cc8: 2800 cmp r0, #0 4cca: d1db bne.n 4c84 _LV_LL_READ(obj->child_ll, i) { 4ccc: 4629 mov r1, r5 4cce: 4640 mov r0, r8 4cd0: 47c8 blx r9 4cd2: 4605 mov r5, r0 4cd4: e7ed b.n 4cb2 4cd6: bf00 nop 4cd8: 0000e0d9 .word 0x0000e0d9 4cdc: 0000e6f1 .word 0x0000e6f1 4ce0: 0000e6fd .word 0x0000e6fd 00004ce4 : { 4ce4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if(obj->hidden != 0) return; 4ce8: f890 9034 ldrb.w r9, [r0, #52] ; 0x34 4cec: f019 0910 ands.w r9, r9, #16 { 4cf0: b08b sub sp, #44 ; 0x2c 4cf2: 4604 mov r4, r0 4cf4: 4688 mov r8, r1 if(obj->hidden != 0) return; 4cf6: d13c bne.n 4d72 lv_coord_t ext_size = obj->ext_draw_pad; 4cf8: f9b0 5032 ldrsh.w r5, [r0, #50] ; 0x32 lv_obj_get_coords(obj, &obj_area); 4cfc: 4e31 ldr r6, [pc, #196] ; (4dc4 ) union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4cfe: 4f32 ldr r7, [pc, #200] ; (4dc8 ) lv_obj_get_coords(obj, &obj_area); 4d00: a904 add r1, sp, #16 4d02: 47b0 blx r6 obj_area.x1 -= ext_size; 4d04: f8bd 2010 ldrh.w r2, [sp, #16] 4d08: b2ab uxth r3, r5 4d0a: 1ad2 subs r2, r2, r3 4d0c: f8ad 2010 strh.w r2, [sp, #16] obj_area.y1 -= ext_size; 4d10: f8bd 2012 ldrh.w r2, [sp, #18] 4d14: 1ad2 subs r2, r2, r3 4d16: f8ad 2012 strh.w r2, [sp, #18] obj_area.x2 += ext_size; 4d1a: f8bd 2014 ldrh.w r2, [sp, #20] 4d1e: 441a add r2, r3 4d20: f8ad 2014 strh.w r2, [sp, #20] obj_area.y2 += ext_size; 4d24: f8bd 2016 ldrh.w r2, [sp, #22] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d28: 4641 mov r1, r8 obj_area.y2 += ext_size; 4d2a: 4413 add r3, r2 union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d2c: a802 add r0, sp, #8 4d2e: aa04 add r2, sp, #16 obj_area.y2 += ext_size; 4d30: f8ad 3016 strh.w r3, [sp, #22] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d34: 47b8 blx r7 if(union_ok != false) { 4d36: b1e0 cbz r0, 4d72 if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); 4d38: 6a23 ldr r3, [r4, #32] 4d3a: b11b cbz r3, 4d44 4d3c: 464a mov r2, r9 4d3e: a902 add r1, sp, #8 4d40: 4620 mov r0, r4 4d42: 4798 blx r3 lv_obj_get_coords(obj, &obj_area); 4d44: a904 add r1, sp, #16 4d46: 4620 mov r0, r4 4d48: 47b0 blx r6 union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area); 4d4a: aa04 add r2, sp, #16 4d4c: 4641 mov r1, r8 4d4e: 4668 mov r0, sp 4d50: 47b8 blx r7 if(union_ok != false) { 4d52: b140 cbz r0, 4d66 _LV_LL_READ_BACK(obj->child_ll, child_p) { 4d54: f104 0804 add.w r8, r4, #4 4d58: 4b1c ldr r3, [pc, #112] ; (4dcc ) 4d5a: f8df 9074 ldr.w r9, [pc, #116] ; 4dd0 4d5e: 4640 mov r0, r8 4d60: 4798 blx r3 4d62: 4605 mov r5, r0 4d64: b945 cbnz r5, 4d78 if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST); 4d66: 6a23 ldr r3, [r4, #32] 4d68: b11b cbz r3, 4d72 4d6a: 2201 movs r2, #1 4d6c: a902 add r1, sp, #8 4d6e: 4620 mov r0, r4 4d70: 4798 blx r3 } 4d72: b00b add sp, #44 ; 0x2c 4d74: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} lv_obj_get_coords(child_p, &child_area); 4d78: a908 add r1, sp, #32 4d7a: 4628 mov r0, r5 4d7c: 47b0 blx r6 child_area.x1 -= ext_size; 4d7e: 8e6b ldrh r3, [r5, #50] ; 0x32 4d80: f8bd 2020 ldrh.w r2, [sp, #32] 4d84: 1ad2 subs r2, r2, r3 4d86: f8ad 2020 strh.w r2, [sp, #32] child_area.y1 -= ext_size; 4d8a: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 4d8e: 1ad2 subs r2, r2, r3 4d90: f8ad 2022 strh.w r2, [sp, #34] ; 0x22 child_area.x2 += ext_size; 4d94: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 4d98: 441a add r2, r3 4d9a: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 child_area.y2 += ext_size; 4d9e: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 4da2: 4669 mov r1, sp child_area.y2 += ext_size; 4da4: 4413 add r3, r2 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 4da6: a806 add r0, sp, #24 4da8: aa08 add r2, sp, #32 child_area.y2 += ext_size; 4daa: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 4dae: 47b8 blx r7 if(union_ok) { 4db0: b118 cbz r0, 4dba lv_refr_obj(child_p, &mask_child); 4db2: a906 add r1, sp, #24 4db4: 4628 mov r0, r5 4db6: f7ff ff95 bl 4ce4 _LV_LL_READ_BACK(obj->child_ll, child_p) { 4dba: 4629 mov r1, r5 4dbc: 4640 mov r0, r8 4dbe: 47c8 blx r9 4dc0: 4605 mov r5, r0 4dc2: e7cf b.n 4d64 4dc4: 00002285 .word 0x00002285 4dc8: 0000ded1 .word 0x0000ded1 4dcc: 0000e6f7 .word 0x0000e6f7 4dd0: 0000e71d .word 0x0000e71d 00004dd4 : { 4dd4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 4dd8: 460e mov r6, r1 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 4dda: 4604 mov r4, r0 4ddc: b928 cbnz r0, 4dea 4dde: 4b15 ldr r3, [pc, #84] ; (4e34 ) 4de0: 6818 ldr r0, [r3, #0] 4de2: 4b15 ldr r3, [pc, #84] ; (4e38 ) 4de4: 4798 blx r3 if(top_p == NULL) return; /*Shouldn't happen*/ 4de6: 4604 mov r4, r0 4de8: b158 cbz r0, 4e02 lv_refr_obj(top_p, mask_p); 4dea: 4631 mov r1, r6 4dec: 4620 mov r0, r4 4dee: 4f13 ldr r7, [pc, #76] ; (4e3c ) par = lv_obj_get_parent(top_p); 4df0: f8df 804c ldr.w r8, [pc, #76] ; 4e40 lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 4df4: f8df 904c ldr.w r9, [pc, #76] ; 4e44 lv_refr_obj(top_p, mask_p); 4df8: 47b8 blx r7 par = lv_obj_get_parent(top_p); 4dfa: 4620 mov r0, r4 4dfc: 47c0 blx r8 4dfe: 4605 mov r5, r0 while(par != NULL) { 4e00: b90d cbnz r5, 4e06 } 4e02: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 4e06: f105 0a04 add.w sl, r5, #4 i = _lv_ll_get_prev(&(par->child_ll), i); 4e0a: 4621 mov r1, r4 4e0c: 4650 mov r0, sl 4e0e: 47c8 blx r9 4e10: 4604 mov r4, r0 while(i != NULL) { 4e12: b950 cbnz r0, 4e2a if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST); 4e14: 6a2b ldr r3, [r5, #32] 4e16: b11b cbz r3, 4e20 4e18: 2201 movs r2, #1 4e1a: 4631 mov r1, r6 4e1c: 4628 mov r0, r5 4e1e: 4798 blx r3 par = lv_obj_get_parent(par); 4e20: 4628 mov r0, r5 4e22: 47c0 blx r8 4e24: 462c mov r4, r5 4e26: 4605 mov r5, r0 4e28: e7ea b.n 4e00 lv_refr_obj(i, mask_p); 4e2a: 4631 mov r1, r6 4e2c: 4620 mov r0, r4 4e2e: 47b8 blx r7 4e30: e7eb b.n 4e0a 4e32: bf00 nop 4e34: 20008100 .word 0x20008100 4e38: 00001825 .word 0x00001825 4e3c: 00004ce5 .word 0x00004ce5 4e40: 000020d5 .word 0x000020d5 4e44: 0000e71d .word 0x0000e71d 00004e48 : { 4e48: b573 push {r0, r1, r4, r5, r6, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4e4a: 4c1a ldr r4, [pc, #104] ; (4eb4 ) 4e4c: 4b1a ldr r3, [pc, #104] ; (4eb8 ) { 4e4e: 4606 mov r6, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4e50: 6820 ldr r0, [r4, #0] 4e52: 4798 blx r3 if(lv_disp_is_double_buf(disp_refr) == false) { 4e54: 4b19 ldr r3, [pc, #100] ; (4ebc ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4e56: 4605 mov r5, r0 if(lv_disp_is_double_buf(disp_refr) == false) { 4e58: 6820 ldr r0, [r4, #0] 4e5a: 4798 blx r3 4e5c: b320 cbz r0, 4ea8 _lv_area_intersect(&start_mask, area_p, &vdb->area); 4e5e: f105 0210 add.w r2, r5, #16 4e62: 4631 mov r1, r6 4e64: 4b16 ldr r3, [pc, #88] ; (4ec0 ) lv_refr_obj_and_children(top_p, &start_mask); 4e66: 4d17 ldr r5, [pc, #92] ; (4ec4 ) _lv_area_intersect(&start_mask, area_p, &vdb->area); 4e68: 4668 mov r0, sp 4e6a: 4798 blx r3 top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr)); 4e6c: 4b16 ldr r3, [pc, #88] ; (4ec8 ) 4e6e: 6820 ldr r0, [r4, #0] 4e70: 4798 blx r3 4e72: 4b16 ldr r3, [pc, #88] ; (4ecc ) 4e74: 4601 mov r1, r0 4e76: 4668 mov r0, sp 4e78: 4798 blx r3 lv_refr_obj_and_children(top_p, &start_mask); 4e7a: 4669 mov r1, sp 4e7c: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask); 4e7e: 4b14 ldr r3, [pc, #80] ; (4ed0 ) 4e80: 6820 ldr r0, [r4, #0] 4e82: 4798 blx r3 4e84: 4669 mov r1, sp 4e86: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask); 4e88: 4b12 ldr r3, [pc, #72] ; (4ed4 ) 4e8a: 6820 ldr r0, [r4, #0] 4e8c: 4798 blx r3 4e8e: 4669 mov r1, sp 4e90: 47a8 blx r5 if(lv_disp_is_true_double_buf(disp_refr) == false) { 4e92: 6820 ldr r0, [r4, #0] 4e94: 4b10 ldr r3, [pc, #64] ; (4ed8 ) 4e96: 4798 blx r3 4e98: b908 cbnz r0, 4e9e lv_refr_vdb_flush(); 4e9a: 4b10 ldr r3, [pc, #64] ; (4edc ) 4e9c: 4798 blx r3 } 4e9e: b002 add sp, #8 4ea0: bd70 pop {r4, r5, r6, pc} if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 4ea2: 69c3 ldr r3, [r0, #28] 4ea4: b10b cbz r3, 4eaa 4ea6: 4798 blx r3 4ea8: 6820 ldr r0, [r4, #0] while(vdb->flushing) { 4eaa: 69ab ldr r3, [r5, #24] 4eac: 2b00 cmp r3, #0 4eae: d1f8 bne.n 4ea2 4eb0: e7d5 b.n 4e5e 4eb2: bf00 nop 4eb4: 20008100 .word 0x20008100 4eb8: 0000da25 .word 0x0000da25 4ebc: 0000da29 .word 0x0000da29 4ec0: 0000ded1 .word 0x0000ded1 4ec4: 00004dd5 .word 0x00004dd5 4ec8: 00001825 .word 0x00001825 4ecc: 00004c71 .word 0x00004c71 4ed0: 00001861 .word 0x00001861 4ed4: 0000189d .word 0x0000189d 4ed8: 0000da39 .word 0x0000da39 4edc: 00004c05 .word 0x00004c05 00004ee0 : 4ee0: 3901 subs r1, #1 4ee2: f100 0308 add.w r3, r0, #8 *d8 = *s8; 4ee6: f811 2f01 ldrb.w r2, [r1, #1]! 4eea: f800 2b01 strb.w r2, [r0], #1 while(len) { 4eee: 4298 cmp r0, r3 4ef0: d1f9 bne.n 4ee6 } 4ef2: 4770 bx lr 00004ef4 <_lv_refr_init>: } 4ef4: 4770 bx lr ... 00004ef8 <_lv_inv_area>: { 4ef8: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} 4efc: 460d mov r5, r1 if(!disp) disp = lv_disp_get_default(); 4efe: 4604 mov r4, r0 4f00: b918 cbnz r0, 4f0a <_lv_inv_area+0x12> 4f02: 4b2f ldr r3, [pc, #188] ; (4fc0 <_lv_inv_area+0xc8>) 4f04: 4798 blx r3 if(!disp) return; 4f06: 4604 mov r4, r0 4f08: b130 cbz r0, 4f18 <_lv_inv_area+0x20> if(area_p == NULL) { 4f0a: b945 cbnz r5, 4f1e <_lv_inv_area+0x26> disp->inv_p = 0; 4f0c: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 4f10: f365 0309 bfi r3, r5, #0, #10 4f14: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 } 4f18: b004 add sp, #16 4f1a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} scr_area.x1 = 0; 4f1e: 2300 movs r3, #0 4f20: f8ad 3000 strh.w r3, [sp] scr_area.y1 = 0; 4f24: f8ad 3002 strh.w r3, [sp, #2] scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 4f28: 4620 mov r0, r4 4f2a: 4b26 ldr r3, [pc, #152] ; (4fc4 <_lv_inv_area+0xcc>) 4f2c: 4798 blx r3 4f2e: 3801 subs r0, #1 scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 4f30: 4b25 ldr r3, [pc, #148] ; (4fc8 <_lv_inv_area+0xd0>) scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 4f32: f8ad 0004 strh.w r0, [sp, #4] scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 4f36: 4620 mov r0, r4 4f38: 4798 blx r3 4f3a: 3801 subs r0, #1 4f3c: f8ad 0006 strh.w r0, [sp, #6] suc = _lv_area_intersect(&com_area, area_p, &scr_area); 4f40: 4b22 ldr r3, [pc, #136] ; (4fcc <_lv_inv_area+0xd4>) 4f42: 466a mov r2, sp 4f44: 4629 mov r1, r5 4f46: a802 add r0, sp, #8 4f48: 4798 blx r3 if(suc != false) { 4f4a: 2800 cmp r0, #0 4f4c: d0e4 beq.n 4f18 <_lv_inv_area+0x20> if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area); 4f4e: 6923 ldr r3, [r4, #16] 4f50: b113 cbz r3, 4f58 <_lv_inv_area+0x60> 4f52: a902 add r1, sp, #8 4f54: 4620 mov r0, r4 4f56: 4798 blx r3 4f58: f104 0548 add.w r5, r4, #72 ; 0x48 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 4f5c: f8df 8078 ldr.w r8, [pc, #120] ; 4fd8 <_lv_inv_area+0xe0> { 4f60: 2600 movs r6, #0 4f62: 462f mov r7, r5 for(i = 0; i < disp->inv_p; i++) { 4f64: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 4f68: b2b2 uxth r2, r6 4f6a: f3c3 0009 ubfx r0, r3, #0, #10 4f6e: 4290 cmp r0, r2 4f70: d81c bhi.n 4fac <_lv_inv_area+0xb4> if(disp->inv_p < LV_INV_BUF_SIZE) { 4f72: 281f cmp r0, #31 lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 4f74: bf9b ittet ls 4f76: 3009 addls r0, #9 4f78: f3c0 0009 ubfxls r0, r0, #0, #10 disp->inv_p = 0; 4f7c: f36f 0309 bfchi r3, #0, #10 lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 4f80: a902 addls r1, sp, #8 4f82: bf91 iteee ls 4f84: eb04 00c0 addls.w r0, r4, r0, lsl #3 disp->inv_p = 0; 4f88: f8a4 3168 strhhi.w r3, [r4, #360] ; 0x168 lv_area_copy(&disp->inv_areas[disp->inv_p], &scr_area); 4f8c: 4669 movhi r1, sp 4f8e: 4638 movhi r0, r7 4f90: 4a0f ldr r2, [pc, #60] ; (4fd0 <_lv_inv_area+0xd8>) 4f92: 4790 blx r2 disp->inv_p++; 4f94: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 4f98: 6ae0 ldr r0, [r4, #44] ; 0x2c disp->inv_p++; 4f9a: 1c5a adds r2, r3, #1 4f9c: f362 0309 bfi r3, r2, #0, #10 4fa0: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 4fa4: 2103 movs r1, #3 4fa6: 4b0b ldr r3, [pc, #44] ; (4fd4 <_lv_inv_area+0xdc>) 4fa8: 4798 blx r3 4faa: e7b5 b.n 4f18 <_lv_inv_area+0x20> if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 4fac: 4629 mov r1, r5 4fae: 2200 movs r2, #0 4fb0: a802 add r0, sp, #8 4fb2: 47c0 blx r8 4fb4: 3601 adds r6, #1 4fb6: 3508 adds r5, #8 4fb8: 2800 cmp r0, #0 4fba: d0d3 beq.n 4f64 <_lv_inv_area+0x6c> 4fbc: e7ac b.n 4f18 <_lv_inv_area+0x20> 4fbe: bf00 nop 4fc0: 0000d941 .word 0x0000d941 4fc4: 0000d94d .word 0x0000d94d 4fc8: 0000d971 .word 0x0000d971 4fcc: 0000ded1 .word 0x0000ded1 4fd0: 00004ee1 .word 0x00004ee1 4fd4: 0000fbc9 .word 0x0000fbc9 4fd8: 0000e0d9 .word 0x0000e0d9 00004fdc <_lv_refr_get_disp_refreshing>: } 4fdc: 4b01 ldr r3, [pc, #4] ; (4fe4 <_lv_refr_get_disp_refreshing+0x8>) 4fde: 6818 ldr r0, [r3, #0] 4fe0: 4770 bx lr 4fe2: bf00 nop 4fe4: 20008100 .word 0x20008100 00004fe8 <_lv_disp_refr_task>: { 4fe8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 4fec: ed2d 8b02 vpush {d8} uint32_t start = lv_tick_get(); 4ff0: 4b83 ldr r3, [pc, #524] ; (5200 <_lv_disp_refr_task+0x218>) disp_refr = task->user_data; 4ff2: 4c84 ldr r4, [pc, #528] ; (5204 <_lv_disp_refr_task+0x21c>) { 4ff4: b08b sub sp, #44 ; 0x2c 4ff6: 4605 mov r5, r0 uint32_t start = lv_tick_get(); 4ff8: 4798 blx r3 disp_refr = task->user_data; 4ffa: 68eb ldr r3, [r5, #12] 4ffc: 6023 str r3, [r4, #0] lv_task_set_prio(task, LV_TASK_PRIO_OFF); 4ffe: 2100 movs r1, #0 5000: 4b81 ldr r3, [pc, #516] ; (5208 <_lv_disp_refr_task+0x220>) uint32_t start = lv_tick_get(); 5002: ee08 0a90 vmov s17, r0 lv_task_set_prio(task, LV_TASK_PRIO_OFF); 5006: 4628 mov r0, r5 5008: 4798 blx r3 if(disp_refr->act_scr == NULL) { 500a: 6823 ldr r3, [r4, #0] 500c: 6bd9 ldr r1, [r3, #60] ; 0x3c 500e: 2900 cmp r1, #0 5010: f040 808b bne.w 512a <_lv_disp_refr_task+0x142> disp_refr->inv_p = 0; 5014: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 5018: f361 0209 bfi r2, r1, #0, #10 501c: f8a3 2168 strh.w r2, [r3, #360] ; 0x168 } 5020: b00b add sp, #44 ; 0x2c 5022: ecbd 8b02 vpop {d8} 5026: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(disp_refr->inv_area_joined[join_in] != 0) continue; 502a: 4433 add r3, r6 502c: f893 5148 ldrb.w r5, [r3, #328] ; 0x148 5030: 2d00 cmp r5, #0 5032: d03c beq.n 50ae <_lv_disp_refr_task+0xc6> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 5034: 3601 adds r6, #1 5036: 6823 ldr r3, [r4, #0] 5038: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 503c: f3c2 0109 ubfx r1, r2, #0, #10 5040: 428e cmp r6, r1 5042: d3f2 bcc.n 502a <_lv_disp_refr_task+0x42> px_num = 0; 5044: 2000 movs r0, #0 5046: 6060 str r0, [r4, #4] if(disp_refr->inv_p == 0) return; 5048: 2900 cmp r1, #0 504a: d171 bne.n 5130 <_lv_disp_refr_task+0x148> if(disp_refr->inv_p != 0) { 504c: 4f6d ldr r7, [pc, #436] ; (5204 <_lv_disp_refr_task+0x21c>) 504e: 6838 ldr r0, [r7, #0] 5050: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5054: f3c3 0309 ubfx r3, r3, #0, #10 5058: b303 cbz r3, 509c <_lv_disp_refr_task+0xb4> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 505a: 4b6c ldr r3, [pc, #432] ; (520c <_lv_disp_refr_task+0x224>) 505c: 4798 blx r3 505e: 2800 cmp r0, #0 5060: f040 81a5 bne.w 53ae <_lv_disp_refr_task+0x3c6> _lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas)); 5064: 6820 ldr r0, [r4, #0] 5066: 4d6a ldr r5, [pc, #424] ; (5210 <_lv_disp_refr_task+0x228>) 5068: f44f 7180 mov.w r1, #256 ; 0x100 506c: 3048 adds r0, #72 ; 0x48 506e: 47a8 blx r5 _lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined)); 5070: 6820 ldr r0, [r4, #0] 5072: 2120 movs r1, #32 5074: f500 70a4 add.w r0, r0, #328 ; 0x148 5078: 47a8 blx r5 disp_refr->inv_p = 0; 507a: 6823 ldr r3, [r4, #0] 507c: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 5080: f36f 0209 bfc r2, #0, #10 5084: f8a3 2168 strh.w r2, [r3, #360] ; 0x168 elaps = lv_tick_elaps(start); 5088: ee18 0a90 vmov r0, s17 508c: 4b61 ldr r3, [pc, #388] ; (5214 <_lv_disp_refr_task+0x22c>) 508e: 4798 blx r3 5090: 4601 mov r1, r0 if(disp_refr->driver.monitor_cb) { 5092: 6820 ldr r0, [r4, #0] 5094: 6983 ldr r3, [r0, #24] 5096: 2b00 cmp r3, #0 5098: f040 81e1 bne.w 545e <_lv_disp_refr_task+0x476> _lv_mem_buf_free_all(); 509c: 4b5e ldr r3, [pc, #376] ; (5218 <_lv_disp_refr_task+0x230>) 509e: 4798 blx r3 _lv_font_clean_up_fmt_txt(); 50a0: 4b5e ldr r3, [pc, #376] ; (521c <_lv_disp_refr_task+0x234>) } 50a2: b00b add sp, #44 ; 0x2c 50a4: ecbd 8b02 vpop {d8} 50a8: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} _lv_font_clean_up_fmt_txt(); 50ac: 4718 bx r3 50ae: ea4f 09c6 mov.w r9, r6, lsl #3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 50b2: f8df a188 ldr.w sl, [pc, #392] ; 523c <_lv_disp_refr_task+0x254> 50b6: f109 0948 add.w r9, r9, #72 ; 0x48 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 50ba: 6820 ldr r0, [r4, #0] 50bc: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 50c0: f3c3 0309 ubfx r3, r3, #0, #10 50c4: 429d cmp r5, r3 50c6: d2b5 bcs.n 5034 <_lv_disp_refr_task+0x4c> if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) { 50c8: 1943 adds r3, r0, r5 50ca: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 50ce: bb53 cbnz r3, 5126 <_lv_disp_refr_task+0x13e> 50d0: 42ae cmp r6, r5 50d2: d028 beq.n 5126 <_lv_disp_refr_task+0x13e> if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 50d4: ea4f 0bc5 mov.w fp, r5, lsl #3 50d8: f10b 0b48 add.w fp, fp, #72 ; 0x48 50dc: eb00 010b add.w r1, r0, fp 50e0: 4448 add r0, r9 50e2: 47b8 blx r7 50e4: b1f8 cbz r0, 5126 <_lv_disp_refr_task+0x13e> _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 50e6: 6821 ldr r1, [r4, #0] 50e8: 4b4d ldr r3, [pc, #308] ; (5220 <_lv_disp_refr_task+0x238>) 50ea: eb01 020b add.w r2, r1, fp 50ee: a808 add r0, sp, #32 50f0: 4449 add r1, r9 50f2: 4798 blx r3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 50f4: a808 add r0, sp, #32 50f6: 47d0 blx sl 50f8: 4680 mov r8, r0 50fa: 6820 ldr r0, [r4, #0] 50fc: 4448 add r0, r9 50fe: 47d0 blx sl 5100: 9003 str r0, [sp, #12] lv_area_get_size(&disp_refr->inv_areas[join_from]))) { 5102: 6820 ldr r0, [r4, #0] 5104: 4458 add r0, fp 5106: 47d0 blx sl if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5108: 9b03 ldr r3, [sp, #12] 510a: 4418 add r0, r3 510c: 4580 cmp r8, r0 510e: d20a bcs.n 5126 <_lv_disp_refr_task+0x13e> lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 5110: f8d4 b000 ldr.w fp, [r4] 5114: 4b43 ldr r3, [pc, #268] ; (5224 <_lv_disp_refr_task+0x23c>) 5116: eb0b 0009 add.w r0, fp, r9 511a: a908 add r1, sp, #32 disp_refr->inv_area_joined[join_from] = 1; 511c: 44ab add fp, r5 lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 511e: 4798 blx r3 disp_refr->inv_area_joined[join_from] = 1; 5120: 2301 movs r3, #1 5122: f88b 3148 strb.w r3, [fp, #328] ; 0x148 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 5126: 3501 adds r5, #1 5128: e7c7 b.n 50ba <_lv_disp_refr_task+0xd2> if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 512a: 4f3f ldr r7, [pc, #252] ; (5228 <_lv_disp_refr_task+0x240>) for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 512c: 2600 movs r6, #0 512e: e782 b.n 5036 <_lv_disp_refr_task+0x4e> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 5130: 1e4f subs r7, r1, #1 if(disp_refr->inv_area_joined[i] == 0) { 5132: f503 72a4 add.w r2, r3, #328 ; 0x148 for(i = disp_refr->inv_p - 1; i >= 0; i--) { 5136: 1c79 adds r1, r7, #1 5138: d15c bne.n 51f4 <_lv_disp_refr_task+0x20c> int32_t last_i = 0; 513a: 2700 movs r7, #0 disp_refr->driver.buffer->last_area = 0; 513c: 685b ldr r3, [r3, #4] for(i = 0; i < disp_refr->inv_p; i++) { 513e: f8df 80c4 ldr.w r8, [pc, #196] ; 5204 <_lv_disp_refr_task+0x21c> disp_refr->driver.buffer->last_area = 0; 5142: f893 2020 ldrb.w r2, [r3, #32] 5146: f36f 0200 bfc r2, #0, #1 514a: f883 2020 strb.w r2, [r3, #32] disp_refr->driver.buffer->last_part = 0; 514e: f893 2020 ldrb.w r2, [r3, #32] 5152: f36f 0241 bfc r2, #1, #1 5156: f883 2020 strb.w r2, [r3, #32] for(i = 0; i < disp_refr->inv_p; i++) { 515a: f04f 0b00 mov.w fp, #0 515e: f8d8 9000 ldr.w r9, [r8] 5162: f8b9 3168 ldrh.w r3, [r9, #360] ; 0x168 5166: f3c3 0309 ubfx r3, r3, #0, #10 516a: 459b cmp fp, r3 516c: f6bf af6e bge.w 504c <_lv_disp_refr_task+0x64> if(disp_refr->inv_area_joined[i] == 0) { 5170: eb09 030b add.w r3, r9, fp 5174: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 5178: 2b00 cmp r3, #0 517a: f040 80ca bne.w 5312 <_lv_disp_refr_task+0x32a> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 517e: f8d9 3004 ldr.w r3, [r9, #4] 5182: 45bb cmp fp, r7 5184: bf02 ittt eq 5186: f893 2020 ldrbeq.w r2, [r3, #32] 518a: f042 0201 orreq.w r2, r2, #1 518e: f883 2020 strbeq.w r2, [r3, #32] disp_refr->driver.buffer->last_part = 0; 5192: f893 2020 ldrb.w r2, [r3, #32] 5196: ea4f 05cb mov.w r5, fp, lsl #3 519a: f36f 0241 bfc r2, #1, #1 519e: f883 2020 strb.w r2, [r3, #32] lv_refr_area(&disp_refr->inv_areas[i]); 51a2: f105 0348 add.w r3, r5, #72 ; 0x48 51a6: 9304 str r3, [sp, #16] 51a8: 444b add r3, r9 51aa: ee08 3a10 vmov s16, r3 if(lv_disp_is_true_double_buf(disp_refr)) { 51ae: 4648 mov r0, r9 51b0: 4b16 ldr r3, [pc, #88] ; (520c <_lv_disp_refr_task+0x224>) 51b2: 4798 blx r3 51b4: 4b1d ldr r3, [pc, #116] ; (522c <_lv_disp_refr_task+0x244>) 51b6: 2800 cmp r0, #0 51b8: d042 beq.n 5240 <_lv_disp_refr_task+0x258> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 51ba: 6820 ldr r0, [r4, #0] 51bc: 4798 blx r3 vdb->area.x1 = 0; 51be: 2600 movs r6, #0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 51c0: 4605 mov r5, r0 vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 51c2: 4b1b ldr r3, [pc, #108] ; (5230 <_lv_disp_refr_task+0x248>) vdb->area.x1 = 0; 51c4: 8206 strh r6, [r0, #16] vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 51c6: 6820 ldr r0, [r4, #0] 51c8: 4798 blx r3 51ca: 3801 subs r0, #1 vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51cc: 4b19 ldr r3, [pc, #100] ; (5234 <_lv_disp_refr_task+0x24c>) vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 51ce: 82a8 strh r0, [r5, #20] vdb->area.y1 = 0; 51d0: 826e strh r6, [r5, #18] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51d2: 6820 ldr r0, [r4, #0] 51d4: 4798 blx r3 disp_refr->driver.buffer->last_part = 1; 51d6: 6823 ldr r3, [r4, #0] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51d8: 3801 subs r0, #1 disp_refr->driver.buffer->last_part = 1; 51da: 685a ldr r2, [r3, #4] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51dc: 82e8 strh r0, [r5, #22] disp_refr->driver.buffer->last_part = 1; 51de: f892 3020 ldrb.w r3, [r2, #32] 51e2: f043 0302 orr.w r3, r3, #2 51e6: f882 3020 strb.w r3, [r2, #32] lv_refr_area_part(area_p); 51ea: ee18 0a10 vmov r0, s16 51ee: 4b12 ldr r3, [pc, #72] ; (5238 <_lv_disp_refr_task+0x250>) 51f0: 4798 blx r3 51f2: e081 b.n 52f8 <_lv_disp_refr_task+0x310> if(disp_refr->inv_area_joined[i] == 0) { 51f4: 5dd1 ldrb r1, [r2, r7] 51f6: 2900 cmp r1, #0 51f8: d0a0 beq.n 513c <_lv_disp_refr_task+0x154> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 51fa: 3f01 subs r7, #1 51fc: e79b b.n 5136 <_lv_disp_refr_task+0x14e> 51fe: bf00 nop 5200: 0000da8d .word 0x0000da8d 5204: 20008100 .word 0x20008100 5208: 0000fbc9 .word 0x0000fbc9 520c: 0000da39 .word 0x0000da39 5210: 0000f061 .word 0x0000f061 5214: 0000daa1 .word 0x0000daa1 5218: 0000ec25 .word 0x0000ec25 521c: 0000d785 .word 0x0000d785 5220: 0000df25 .word 0x0000df25 5224: 00004ee1 .word 0x00004ee1 5228: 0000e09d .word 0x0000e09d 522c: 0000da25 .word 0x0000da25 5230: 0000d94d .word 0x0000d94d 5234: 0000d971 .word 0x0000d971 5238: 00004e49 .word 0x00004e49 523c: 0000deb5 .word 0x0000deb5 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5240: 444d add r5, r9 5242: 6820 ldr r0, [r4, #0] 5244: 4798 blx r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 5246: f8b5 904c ldrh.w r9, [r5, #76] ; 0x4c 524a: f8b5 3048 ldrh.w r3, [r5, #72] ; 0x48 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 524e: f9b5 204e ldrsh.w r2, [r5, #78] ; 0x4e 5252: 9203 str r2, [sp, #12] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 5254: f109 0901 add.w r9, r9, #1 5258: eba9 0903 sub.w r9, r9, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 525c: f8b5 304a ldrh.w r3, [r5, #74] ; 0x4a 5260: f102 0a01 add.w sl, r2, #1 5264: ebaa 0a03 sub.w sl, sl, r3 5268: 4606 mov r6, r0 area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 526a: 4b7e ldr r3, [pc, #504] ; (5464 <_lv_disp_refr_task+0x47c>) 526c: 6820 ldr r0, [r4, #0] 526e: 4798 blx r3 lv_coord_t y2 = 5270: 9a03 ldr r2, [sp, #12] 5272: 4b7c ldr r3, [pc, #496] ; (5464 <_lv_disp_refr_task+0x47c>) 5274: 4282 cmp r2, r0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 5276: fa0f f989 sxth.w r9, r9 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 527a: fa0f fa8a sxth.w sl, sl 527e: db4b blt.n 5318 <_lv_disp_refr_task+0x330> area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 5280: 6820 ldr r0, [r4, #0] 5282: 4798 blx r3 5284: 3801 subs r0, #1 lv_coord_t y2 = 5286: b203 sxth r3, r0 int32_t max_row = (uint32_t)vdb->size / w; 5288: 68f2 ldr r2, [r6, #12] 528a: fbb2 f9f9 udiv r9, r2, r9 if(disp_refr->driver.rounder_cb) { 528e: f8d8 2000 ldr.w r2, [r8] 5292: 6912 ldr r2, [r2, #16] 5294: 45ca cmp sl, r9 5296: bfa8 it ge 5298: 46ca movge sl, r9 529a: 2a00 cmp r2, #0 529c: d043 beq.n 5326 <_lv_disp_refr_task+0x33e> tmp.x1 = 0; 529e: 2200 movs r2, #0 52a0: f8ad 2020 strh.w r2, [sp, #32] tmp.x2 = 0; 52a4: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 tmp.y1 = 0; 52a8: f8ad 2022 strh.w r2, [sp, #34] ; 0x22 lv_coord_t h_tmp = max_row; 52ac: fa0f f98a sxth.w r9, sl disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 52b0: f8d8 0000 ldr.w r0, [r8] 52b4: f8cd 900c str.w r9, [sp, #12] 52b8: f109 39ff add.w r9, r9, #4294967295 ; 0xffffffff 52bc: fa0f f989 sxth.w r9, r9 52c0: 6902 ldr r2, [r0, #16] tmp.y2 = h_tmp - 1; 52c2: f8ad 9026 strh.w r9, [sp, #38] ; 0x26 disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 52c6: a908 add r1, sp, #32 52c8: 9305 str r3, [sp, #20] 52ca: 4790 blx r2 52cc: f9bd 1026 ldrsh.w r1, [sp, #38] ; 0x26 52d0: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 if(lv_area_get_height(&tmp) <= max_row) break; 52d4: 9b05 ldr r3, [sp, #20] 52d6: 3101 adds r1, #1 52d8: 1a8a subs r2, r1, r2 52da: b212 sxth r2, r2 52dc: 4592 cmp sl, r2 52de: da1e bge.n 531e <_lv_disp_refr_task+0x336> } while(h_tmp > 0); 52e0: f1b9 0f00 cmp.w r9, #0 52e4: dce4 bgt.n 52b0 <_lv_disp_refr_task+0x2c8> LV_LOG_WARN("Can't set VDB height using the round function. (Wrong round_cb or to " 52e6: 4b60 ldr r3, [pc, #384] ; (5468 <_lv_disp_refr_task+0x480>) 52e8: 9300 str r3, [sp, #0] 52ea: 4960 ldr r1, [pc, #384] ; (546c <_lv_disp_refr_task+0x484>) 52ec: 4b60 ldr r3, [pc, #384] ; (5470 <_lv_disp_refr_task+0x488>) 52ee: 4d61 ldr r5, [pc, #388] ; (5474 <_lv_disp_refr_task+0x48c>) 52f0: f44f 72cf mov.w r2, #414 ; 0x19e 52f4: 2002 movs r0, #2 52f6: 47a8 blx r5 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 52f8: f8d8 0000 ldr.w r0, [r8] 52fc: 6983 ldr r3, [r0, #24] 52fe: b143 cbz r3, 5312 <_lv_disp_refr_task+0x32a> 5300: 9b04 ldr r3, [sp, #16] 5302: 4418 add r0, r3 5304: 4b5c ldr r3, [pc, #368] ; (5478 <_lv_disp_refr_task+0x490>) 5306: 4798 blx r3 5308: f8d8 3004 ldr.w r3, [r8, #4] 530c: 4418 add r0, r3 530e: f8c8 0004 str.w r0, [r8, #4] for(i = 0; i < disp_refr->inv_p; i++) { 5312: f10b 0b01 add.w fp, fp, #1 5316: e722 b.n 515e <_lv_disp_refr_task+0x176> lv_coord_t y2 = 5318: f9b5 304e ldrsh.w r3, [r5, #78] ; 0x4e 531c: e7b4 b.n 5288 <_lv_disp_refr_task+0x2a0> if(h_tmp <= 0) { 531e: 9a03 ldr r2, [sp, #12] 5320: 2a00 cmp r2, #0 5322: dde0 ble.n 52e6 <_lv_disp_refr_task+0x2fe> max_row = tmp.y2 + 1; 5324: 468a mov sl, r1 vdb->area.y2 = row + max_row - 1; 5326: fa1f f18a uxth.w r1, sl 532a: 1e48 subs r0, r1, #1 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 532c: f9b5 204a ldrsh.w r2, [r5, #74] ; 0x4a 5330: 9005 str r0, [sp, #20] lv_coord_t row_last = 0; 5332: f04f 0900 mov.w r9, #0 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 5336: eb02 000a add.w r0, r2, sl 533a: 3801 subs r0, #1 533c: 4298 cmp r0, r3 533e: dd0c ble.n 535a <_lv_disp_refr_task+0x372> if(y2 != row_last) { 5340: 454b cmp r3, r9 5342: d0d9 beq.n 52f8 <_lv_disp_refr_task+0x310> vdb->area.x1 = area_p->x1; 5344: f9b5 0048 ldrsh.w r0, [r5, #72] ; 0x48 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 5348: 6821 ldr r1, [r4, #0] vdb->area.x1 = area_p->x1; 534a: 8230 strh r0, [r6, #16] vdb->area.x2 = area_p->x2; 534c: f9b5 004c ldrsh.w r0, [r5, #76] ; 0x4c 5350: 82b0 strh r0, [r6, #20] vdb->area.y1 = row; 5352: 8272 strh r2, [r6, #18] vdb->area.y2 = y2; 5354: 82f3 strh r3, [r6, #22] disp_refr->driver.buffer->last_part = 1; 5356: 684a ldr r2, [r1, #4] 5358: e741 b.n 51de <_lv_disp_refr_task+0x1f6> vdb->area.x1 = area_p->x1; 535a: f9b5 0048 ldrsh.w r0, [r5, #72] ; 0x48 535e: 8230 strh r0, [r6, #16] vdb->area.x2 = area_p->x2; 5360: f9b5 004c ldrsh.w r0, [r5, #76] ; 0x4c 5364: 82b0 strh r0, [r6, #20] vdb->area.y1 = row; 5366: b290 uxth r0, r2 5368: 9003 str r0, [sp, #12] 536a: 9805 ldr r0, [sp, #20] 536c: 8272 strh r2, [r6, #18] vdb->area.y2 = row + max_row - 1; 536e: fa10 f982 uxtah r9, r0, r2 5372: fa0f f989 sxth.w r9, r9 5376: 4599 cmp r9, r3 5378: bfa8 it ge 537a: 4699 movge r9, r3 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 537c: 454b cmp r3, r9 vdb->area.y2 = row + max_row - 1; 537e: f8a6 9016 strh.w r9, [r6, #22] if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 5382: d108 bne.n 5396 <_lv_disp_refr_task+0x3ae> 5384: f8d8 2000 ldr.w r2, [r8] 5388: 6850 ldr r0, [r2, #4] 538a: f890 2020 ldrb.w r2, [r0, #32] 538e: f042 0202 orr.w r2, r2, #2 5392: f880 2020 strb.w r2, [r0, #32] lv_refr_area_part(area_p); 5396: 4a39 ldr r2, [pc, #228] ; (547c <_lv_disp_refr_task+0x494>) 5398: ee18 0a10 vmov r0, s16 539c: e9cd 3106 strd r3, r1, [sp, #24] 53a0: 4790 blx r2 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 53a2: 9a03 ldr r2, [sp, #12] 53a4: 9907 ldr r1, [sp, #28] 53a6: 9b06 ldr r3, [sp, #24] 53a8: 440a add r2, r1 53aa: b212 sxth r2, r2 53ac: e7c3 b.n 5336 <_lv_disp_refr_task+0x34e> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 53ae: 6838 ldr r0, [r7, #0] 53b0: 6943 ldr r3, [r0, #20] 53b2: 2b00 cmp r3, #0 53b4: f47f ae56 bne.w 5064 <_lv_disp_refr_task+0x7c> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 53b8: 4b31 ldr r3, [pc, #196] ; (5480 <_lv_disp_refr_task+0x498>) 53ba: 4798 blx r3 lv_refr_vdb_flush(); 53bc: 4b31 ldr r3, [pc, #196] ; (5484 <_lv_disp_refr_task+0x49c>) lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 53be: 4605 mov r5, r0 lv_refr_vdb_flush(); 53c0: 4798 blx r3 while(vdb->flushing) 53c2: 69ab ldr r3, [r5, #24] 53c4: 2b00 cmp r3, #0 53c6: d1fc bne.n 53c2 <_lv_disp_refr_task+0x3da> uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 53c8: f8d5 9000 ldr.w r9, [r5] uint8_t * buf_act = (uint8_t *)vdb->buf_act; 53cc: f8d5 b008 ldr.w fp, [r5, #8] lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 53d0: 4b2d ldr r3, [pc, #180] ; (5488 <_lv_disp_refr_task+0x4a0>) 53d2: 6838 ldr r0, [r7, #0] uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 53d4: 45d9 cmp r9, fp 53d6: bf08 it eq 53d8: f8d5 9004 ldreq.w r9, [r5, #4] lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 53dc: 4798 blx r3 for(a = 0; a < disp_refr->inv_p; a++) { 53de: 2500 movs r5, #0 lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 53e0: 4680 mov r8, r0 start_offs += hres * sizeof(lv_color_t); 53e2: 0043 lsls r3, r0, #1 for(a = 0; a < disp_refr->inv_p; a++) { 53e4: 683a ldr r2, [r7, #0] 53e6: f8b2 1168 ldrh.w r1, [r2, #360] ; 0x168 53ea: b2a8 uxth r0, r5 53ec: f3c1 0109 ubfx r1, r1, #0, #10 53f0: 4281 cmp r1, r0 53f2: f67f ae37 bls.w 5064 <_lv_disp_refr_task+0x7c> if(disp_refr->inv_area_joined[a] == 0) { 53f6: 1951 adds r1, r2, r5 53f8: f891 1148 ldrb.w r1, [r1, #328] ; 0x148 53fc: b109 cbz r1, 5402 <_lv_disp_refr_task+0x41a> for(a = 0; a < disp_refr->inv_p; a++) { 53fe: 3501 adds r5, #1 5400: e7f0 b.n 53e4 <_lv_disp_refr_task+0x3fc> uint32_t start_offs = 5402: eb02 02c5 add.w r2, r2, r5, lsl #3 (hres * disp_refr->inv_areas[a].y1 + disp_refr->inv_areas[a].x1) * sizeof(lv_color_t); 5406: f9b2 0048 ldrsh.w r0, [r2, #72] ; 0x48 540a: f9b2 604a ldrsh.w r6, [r2, #74] ; 0x4a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 540e: f8b2 204c ldrh.w r2, [r2, #76] ; 0x4c 5412: 3201 adds r2, #1 5414: fb08 0106 mla r1, r8, r6, r0 5418: 1a12 subs r2, r2, r0 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 541a: f105 0009 add.w r0, r5, #9 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 541e: b212 sxth r2, r2 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 5420: 00c0 lsls r0, r0, #3 5422: eb0b 0a41 add.w sl, fp, r1, lsl #1 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 5426: ea4f 0c42 mov.w ip, r2, lsl #1 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 542a: eb09 0141 add.w r1, r9, r1, lsl #1 542e: 9003 str r0, [sp, #12] 5430: 6838 ldr r0, [r7, #0] 5432: 9a03 ldr r2, [sp, #12] 5434: 4410 add r0, r2 5436: f9b0 0006 ldrsh.w r0, [r0, #6] 543a: 42b0 cmp r0, r6 543c: dbdf blt.n 53fe <_lv_disp_refr_task+0x416> 543e: 9306 str r3, [sp, #24] _lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length); 5440: 4662 mov r2, ip 5442: 4b12 ldr r3, [pc, #72] ; (548c <_lv_disp_refr_task+0x4a4>) 5444: 4650 mov r0, sl 5446: e9cd 1c04 strd r1, ip, [sp, #16] 544a: 4798 blx r3 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 544c: 9b06 ldr r3, [sp, #24] 544e: 9904 ldr r1, [sp, #16] 5450: f8dd c014 ldr.w ip, [sp, #20] 5454: 3601 adds r6, #1 5456: b236 sxth r6, r6 5458: 449a add sl, r3 545a: 4419 add r1, r3 545c: e7e8 b.n 5430 <_lv_disp_refr_task+0x448> disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num); 545e: 6862 ldr r2, [r4, #4] 5460: 4798 blx r3 5462: e61b b.n 509c <_lv_disp_refr_task+0xb4> 5464: 0000d971 .word 0x0000d971 5468: 0001f7cd .word 0x0001f7cd 546c: 0001f79d .word 0x0001f79d 5470: 0001f81d .word 0x0001f81d 5474: 0000e931 .word 0x0000e931 5478: 0000deb5 .word 0x0000deb5 547c: 00004e49 .word 0x00004e49 5480: 0000da25 .word 0x0000da25 5484: 00004c05 .word 0x00004c05 5488: 0000d94d .word 0x0000d94d 548c: 0000ec79 .word 0x0000ec79 00005490 : if(list->has_trans && list->skip_trans) id++; 5490: 7943 ldrb r3, [r0, #5] 5492: f003 0306 and.w r3, r3, #6 5496: 2b06 cmp r3, #6 5498: bf08 it eq 549a: 3101 addeq r1, #1 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 549c: 7903 ldrb r3, [r0, #4] if(list->has_trans && list->skip_trans) id++; 549e: bf08 it eq 54a0: b2c9 uxtbeq r1, r1 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 54a2: 428b cmp r3, r1 return list->style_list[id]; 54a4: bf86 itte hi 54a6: 6803 ldrhi r3, [r0, #0] 54a8: f853 0021 ldrhi.w r0, [r3, r1, lsl #2] if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 54ac: 2000 movls r0, #0 } 54ae: 4770 bx lr 000054b0 : * @param style pointer to a style * @param prop a style property ORed with a state. * E.g. `LV_STYLE_TEXT_FONT | (LV_STATE_PRESSED << LV_STYLE_STATE_POS)` * @return */ LV_ATTRIBUTE_FAST_MEM static inline int32_t get_property_index(const lv_style_t * style, lv_style_property_t prop) 54b0: b5f0 push {r4, r5, r6, r7, lr} { LV_ASSERT_STYLE(style); if(style->map == NULL) return -1; 54b2: b378 cbz r0, 5514 uint8_t id_to_find = prop & 0xFF; lv_style_attr_t attr; attr.full = (prop >> 8) & 0xFF; int16_t weight = -1; int16_t id_guess = -1; 54b4: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff uint8_t id_to_find = prop & 0xFF; 54b8: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 54ba: ea4f 2c11 mov.w ip, r1, lsr #8 size_t i = 0; 54be: 2300 movs r3, #0 int16_t weight = -1; 54c0: 4616 mov r6, r2 if(attr_i.bits.state == attr.bits.state) { return i; } /* Be sure the property not specifies other state than the requested. * E.g. For HOVER+PRESS, HOVER only is OK, but HOVER+FOCUS not*/ else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 54c2: f3c1 2406 ubfx r4, r1, #8, #7 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 54c6: 5cc1 ldrb r1, [r0, r3] 54c8: 29ff cmp r1, #255 ; 0xff 54ca: d101 bne.n 54d0 else i += sizeof(const void *); i += sizeof(lv_style_property_t); } return id_guess; 54cc: 4610 mov r0, r2 54ce: e009 b.n 54e4 if(style->map[i] == id_to_find) { 54d0: 428f cmp r7, r1 54d2: d111 bne.n 54f8 attr_i.full = style->map[i + 1]; 54d4: 18c5 adds r5, r0, r3 54d6: 786d ldrb r5, [r5, #1] if(attr_i.bits.state == attr.bits.state) { 54d8: ea8c 0e05 eor.w lr, ip, r5 54dc: f01e 0f7f tst.w lr, #127 ; 0x7f 54e0: d101 bne.n 54e6 return i; 54e2: 4618 mov r0, r3 } 54e4: bdf0 pop {r4, r5, r6, r7, pc} else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 54e6: f005 057f and.w r5, r5, #127 ; 0x7f 54ea: ea35 0e04 bics.w lr, r5, r4 54ee: d103 bne.n 54f8 if(attr_i.bits.state > weight) { 54f0: 42b5 cmp r5, r6 weight = attr_i.bits.state; 54f2: bfc4 itt gt 54f4: b22e sxthgt r6, r5 id_guess = i; 54f6: b21a sxthgt r2, r3 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 54f8: f001 010f and.w r1, r1, #15 54fc: 2908 cmp r1, #8 54fe: d802 bhi.n 5506 else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 5500: 3302 adds r3, #2 i += sizeof(lv_style_property_t); 5502: 3302 adds r3, #2 5504: e7df b.n 54c6 else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 5506: 290b cmp r1, #11 5508: d9fa bls.n 5500 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 550a: 290d cmp r1, #13 550c: bf94 ite ls 550e: 3301 addls r3, #1 else i += sizeof(const void *); 5510: 3304 addhi r3, #4 5512: e7f6 b.n 5502 if(style->map == NULL) return -1; 5514: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5518: e7e4 b.n 54e4 0000551a <_lv_memcpy_small.isra.0>: 551a: 3901 subs r1, #1 551c: 4402 add r2, r0 *d8 = *s8; 551e: f811 3f01 ldrb.w r3, [r1, #1]! 5522: f800 3b01 strb.w r3, [r0], #1 while(len) { 5526: 4290 cmp r0, r2 5528: d1f9 bne.n 551e <_lv_memcpy_small.isra.0+0x4> s8++; len--; } return dst; } 552a: 4770 bx lr 0000552c : _lv_memset_00(style, sizeof(lv_style_t)); 552c: 4b01 ldr r3, [pc, #4] ; (5534 ) 552e: 2104 movs r1, #4 5530: 4718 bx r3 5532: bf00 nop 5534: 0000f061 .word 0x0000f061 00005538 : _lv_memset_00(list, sizeof(lv_style_list_t)); 5538: 4b01 ldr r3, [pc, #4] ; (5540 ) 553a: 2108 movs r1, #8 553c: 4718 bx r3 553e: bf00 nop 5540: 0000f061 .word 0x0000f061 00005544 <_lv_style_list_remove_style>: { 5544: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} if(list->style_cnt == 0) return; 5546: 7903 ldrb r3, [r0, #4] { 5548: 4604 mov r4, r0 554a: 460e mov r6, r1 if(list->style_cnt == 0) return; 554c: b14b cbz r3, 5562 <_lv_style_list_remove_style+0x1e> if(list->style_list[i] == style) { 554e: 6800 ldr r0, [r0, #0] 5550: 2200 movs r2, #0 5552: f850 1022 ldr.w r1, [r0, r2, lsl #2] 5556: 42b1 cmp r1, r6 5558: d03c beq.n 55d4 <_lv_style_list_remove_style+0x90> for(i = 0; i < list->style_cnt; i++) { 555a: 3201 adds r2, #1 555c: b2d1 uxtb r1, r2 555e: 428b cmp r3, r1 5560: d8f7 bhi.n 5552 <_lv_style_list_remove_style+0xe> } 5562: b003 add sp, #12 5564: bdf0 pop {r4, r5, r6, r7, pc} lv_style_t ** new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt - 1)); 5566: 3b01 subs r3, #1 5568: 0099 lsls r1, r3, #2 556a: 4b21 ldr r3, [pc, #132] ; (55f0 <_lv_style_list_remove_style+0xac>) 556c: 4798 blx r3 LV_ASSERT_MEM(new_classes); 556e: 4b21 ldr r3, [pc, #132] ; (55f4 <_lv_style_list_remove_style+0xb0>) lv_style_t ** new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt - 1)); 5570: 4605 mov r5, r0 LV_ASSERT_MEM(new_classes); 5572: 4798 blx r3 5574: 4607 mov r7, r0 5576: b968 cbnz r0, 5594 <_lv_style_list_remove_style+0x50> 5578: 4b1f ldr r3, [pc, #124] ; (55f8 <_lv_style_list_remove_style+0xb4>) 557a: 4920 ldr r1, [pc, #128] ; (55fc <_lv_style_list_remove_style+0xb8>) 557c: 9300 str r3, [sp, #0] 557e: f44f 7282 mov.w r2, #260 ; 0x104 5582: 2003 movs r0, #3 5584: 4c1e ldr r4, [pc, #120] ; (5600 <_lv_style_list_remove_style+0xbc>) 5586: 47a0 blx r4 5588: 481e ldr r0, [pc, #120] ; (5604 <_lv_style_list_remove_style+0xc0>) 558a: 491f ldr r1, [pc, #124] ; (5608 <_lv_style_list_remove_style+0xc4>) 558c: 462a mov r2, r5 558e: 463b mov r3, r7 5590: 4788 blx r1 5592: e7fe b.n 5592 <_lv_style_list_remove_style+0x4e> if(new_classes == NULL) { 5594: b14d cbz r5, 55aa <_lv_style_list_remove_style+0x66> for(i = 0, j = 0; i < list->style_cnt; i++) { 5596: 2300 movs r3, #0 5598: 7921 ldrb r1, [r4, #4] 559a: 461a mov r2, r3 559c: b2d8 uxtb r0, r3 559e: 4288 cmp r0, r1 55a0: d30d bcc.n 55be <_lv_style_list_remove_style+0x7a> list->style_cnt--; 55a2: 3901 subs r1, #1 55a4: 7121 strb r1, [r4, #4] list->style_list = new_classes; 55a6: 6025 str r5, [r4, #0] 55a8: e7db b.n 5562 <_lv_style_list_remove_style+0x1e> LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list"); 55aa: 4b18 ldr r3, [pc, #96] ; (560c <_lv_style_list_remove_style+0xc8>) 55ac: 9300 str r3, [sp, #0] 55ae: 4913 ldr r1, [pc, #76] ; (55fc <_lv_style_list_remove_style+0xb8>) 55b0: 4b11 ldr r3, [pc, #68] ; (55f8 <_lv_style_list_remove_style+0xb4>) 55b2: 4c13 ldr r4, [pc, #76] ; (5600 <_lv_style_list_remove_style+0xbc>) 55b4: f44f 7283 mov.w r2, #262 ; 0x106 55b8: 2002 movs r0, #2 55ba: 47a0 blx r4 return; 55bc: e7d1 b.n 5562 <_lv_style_list_remove_style+0x1e> if(list->style_list[i] == style) continue; 55be: 6820 ldr r0, [r4, #0] 55c0: f850 0023 ldr.w r0, [r0, r3, lsl #2] 55c4: 42b0 cmp r0, r6 new_classes[j] = list->style_list[i]; 55c6: bf1e ittt ne 55c8: f845 0022 strne.w r0, [r5, r2, lsl #2] j++; 55cc: 3201 addne r2, #1 55ce: b2d2 uxtbne r2, r2 for(i = 0, j = 0; i < list->style_cnt; i++) { 55d0: 3301 adds r3, #1 55d2: e7e3 b.n 559c <_lv_style_list_remove_style+0x58> if(list->style_cnt == 1) { 55d4: 2b01 cmp r3, #1 55d6: d1c6 bne.n 5566 <_lv_style_list_remove_style+0x22> lv_mem_free(list->style_list); 55d8: 4b0d ldr r3, [pc, #52] ; (5610 <_lv_style_list_remove_style+0xcc>) 55da: 4798 blx r3 list->style_list = NULL; 55dc: 2300 movs r3, #0 55de: 6023 str r3, [r4, #0] list->style_cnt = 0; 55e0: 88a3 ldrh r3, [r4, #4] 55e2: f423 73ff bic.w r3, r3, #510 ; 0x1fe 55e6: f023 0301 bic.w r3, r3, #1 55ea: 80a3 strh r3, [r4, #4] return; 55ec: e7b9 b.n 5562 <_lv_style_list_remove_style+0x1e> 55ee: bf00 nop 55f0: 0000ee5d .word 0x0000ee5d 55f4: 00001795 .word 0x00001795 55f8: 0001f933 .word 0x0001f933 55fc: 0001f82a .word 0x0001f82a 5600: 0000e931 .word 0x0000e931 5604: 0001ee02 .word 0x0001ee02 5608: 0000179d .word 0x0000179d 560c: 0001f85b .word 0x0001f85b 5610: 0000eb2d .word 0x0000eb2d 00005614 <_lv_style_list_add_style>: { 5614: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 5618: 460f mov r7, r1 if(list == NULL) return; 561a: 4605 mov r5, r0 561c: b338 cbz r0, 566e <_lv_style_list_add_style+0x5a> _lv_style_list_remove_style(list, style); 561e: 4b29 ldr r3, [pc, #164] ; (56c4 <_lv_style_list_add_style+0xb0>) 5620: 4798 blx r3 if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *)); 5622: 7929 ldrb r1, [r5, #4] 5624: b9a1 cbnz r1, 5650 <_lv_style_list_add_style+0x3c> 5626: 4b28 ldr r3, [pc, #160] ; (56c8 <_lv_style_list_add_style+0xb4>) 5628: 2004 movs r0, #4 562a: 4798 blx r3 LV_ASSERT_MEM(new_classes); 562c: 4b27 ldr r3, [pc, #156] ; (56cc <_lv_style_list_add_style+0xb8>) else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 562e: 4604 mov r4, r0 LV_ASSERT_MEM(new_classes); 5630: 4798 blx r3 5632: 4606 mov r6, r0 5634: b990 cbnz r0, 565c <_lv_style_list_add_style+0x48> 5636: 4b26 ldr r3, [pc, #152] ; (56d0 <_lv_style_list_add_style+0xbc>) 5638: 4926 ldr r1, [pc, #152] ; (56d4 <_lv_style_list_add_style+0xc0>) 563a: 9300 str r3, [sp, #0] 563c: 22d0 movs r2, #208 ; 0xd0 563e: 2003 movs r0, #3 5640: 4d25 ldr r5, [pc, #148] ; (56d8 <_lv_style_list_add_style+0xc4>) 5642: 47a8 blx r5 5644: 4825 ldr r0, [pc, #148] ; (56dc <_lv_style_list_add_style+0xc8>) 5646: 4926 ldr r1, [pc, #152] ; (56e0 <_lv_style_list_add_style+0xcc>) 5648: 4622 mov r2, r4 564a: 4633 mov r3, r6 564c: 4788 blx r1 564e: e7fe b.n 564e <_lv_style_list_add_style+0x3a> else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 5650: 3101 adds r1, #1 5652: 6828 ldr r0, [r5, #0] 5654: 4b23 ldr r3, [pc, #140] ; (56e4 <_lv_style_list_add_style+0xd0>) 5656: 0089 lsls r1, r1, #2 5658: 4798 blx r3 565a: e7e7 b.n 562c <_lv_style_list_add_style+0x18> if(new_classes == NULL) { 565c: b954 cbnz r4, 5674 <_lv_style_list_add_style+0x60> LV_LOG_WARN("lv_style_list_add_style: couldn't add the class"); 565e: 4b22 ldr r3, [pc, #136] ; (56e8 <_lv_style_list_add_style+0xd4>) 5660: 9300 str r3, [sp, #0] 5662: 491c ldr r1, [pc, #112] ; (56d4 <_lv_style_list_add_style+0xc0>) 5664: 4b1a ldr r3, [pc, #104] ; (56d0 <_lv_style_list_add_style+0xbc>) 5666: 4c1c ldr r4, [pc, #112] ; (56d8 <_lv_style_list_add_style+0xc4>) 5668: 22d2 movs r2, #210 ; 0xd2 566a: 2002 movs r0, #2 566c: 47a0 blx r4 } 566e: b002 add sp, #8 5670: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(list->has_trans) first_style++; 5674: 796b ldrb r3, [r5, #5] for(i = list->style_cnt; i > first_style; i--) { 5676: 792e ldrb r6, [r5, #4] if(list->has_trans) first_style++; 5678: f3c3 0840 ubfx r8, r3, #1, #1 if(list->has_local) first_style++; 567c: 07db lsls r3, r3, #31 567e: bf48 it mi 5680: f108 0801 addmi.w r8, r8, #1 new_classes[i] = new_classes[i - 1]; 5684: eba6 0208 sub.w r2, r6, r8 5688: b2d2 uxtb r2, r2 568a: 4546 cmp r6, r8 568c: f1c2 0001 rsb r0, r2, #1 5690: f106 4180 add.w r1, r6, #1073741824 ; 0x40000000 5694: ea4f 0080 mov.w r0, r0, lsl #2 5698: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff 569c: bf38 it cc 569e: 2004 movcc r0, #4 56a0: eb00 0181 add.w r1, r0, r1, lsl #2 56a4: eb00 0086 add.w r0, r0, r6, lsl #2 56a8: ea4f 0282 mov.w r2, r2, lsl #2 56ac: 4b0f ldr r3, [pc, #60] ; (56ec <_lv_style_list_add_style+0xd8>) 56ae: bf38 it cc 56b0: 2200 movcc r2, #0 56b2: 4421 add r1, r4 56b4: 4420 add r0, r4 list->style_cnt++; 56b6: 3601 adds r6, #1 new_classes[i] = new_classes[i - 1]; 56b8: 4798 blx r3 new_classes[first_style] = style; 56ba: f844 7028 str.w r7, [r4, r8, lsl #2] list->style_cnt++; 56be: 712e strb r6, [r5, #4] list->style_list = new_classes; 56c0: 602c str r4, [r5, #0] 56c2: e7d4 b.n 566e <_lv_style_list_add_style+0x5a> 56c4: 00005545 .word 0x00005545 56c8: 0000ea75 .word 0x0000ea75 56cc: 00001795 .word 0x00001795 56d0: 0001f94f .word 0x0001f94f 56d4: 0001f82a .word 0x0001f82a 56d8: 0000e931 .word 0x0000e931 56dc: 0001ee02 .word 0x0001ee02 56e0: 0000179d .word 0x0000179d 56e4: 0000ee5d .word 0x0000ee5d 56e8: 0001f896 .word 0x0001f896 56ec: 00016315 .word 0x00016315 000056f0 : */ static lv_style_t * get_alloc_local_style(lv_style_list_t * list) { LV_ASSERT_STYLE_LIST(list); if(list->has_local) return lv_style_list_get_style(list, 0); 56f0: 7943 ldrb r3, [r0, #5] 56f2: 07db lsls r3, r3, #31 { 56f4: b573 push {r0, r1, r4, r5, r6, lr} 56f6: 4605 mov r5, r0 if(list->has_local) return lv_style_list_get_style(list, 0); 56f8: d505 bpl.n 5706 56fa: 4b1a ldr r3, [pc, #104] ; (5764 ) 56fc: 2100 movs r1, #0 /*Add the local style to the furst place*/ _lv_style_list_add_style(list, local_style); list->has_local = 1; return local_style; } 56fe: b002 add sp, #8 5700: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} if(list->has_local) return lv_style_list_get_style(list, 0); 5704: 4718 bx r3 lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 5706: 4b18 ldr r3, [pc, #96] ; (5768 ) 5708: 2004 movs r0, #4 570a: 4798 blx r3 LV_ASSERT_MEM(local_style); 570c: 4b17 ldr r3, [pc, #92] ; (576c ) lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 570e: 4604 mov r4, r0 LV_ASSERT_MEM(local_style); 5710: 4798 blx r3 5712: 4606 mov r6, r0 5714: b968 cbnz r0, 5732 5716: 4b16 ldr r3, [pc, #88] ; (5770 ) 5718: 4916 ldr r1, [pc, #88] ; (5774 ) 571a: 9300 str r3, [sp, #0] 571c: f240 4235 movw r2, #1077 ; 0x435 5720: 2003 movs r0, #3 5722: 4d15 ldr r5, [pc, #84] ; (5778 ) 5724: 47a8 blx r5 5726: 4815 ldr r0, [pc, #84] ; (577c ) 5728: 4915 ldr r1, [pc, #84] ; (5780 ) 572a: 4622 mov r2, r4 572c: 4633 mov r3, r6 572e: 4788 blx r1 5730: e7fe b.n 5730 if(local_style == NULL) { 5732: b95c cbnz r4, 574c LV_LOG_WARN("get_local_style: couldn't create local style"); 5734: 4b13 ldr r3, [pc, #76] ; (5784 ) 5736: 9300 str r3, [sp, #0] 5738: 490e ldr r1, [pc, #56] ; (5774 ) 573a: 4b0d ldr r3, [pc, #52] ; (5770 ) 573c: 4d0e ldr r5, [pc, #56] ; (5778 ) 573e: f240 4237 movw r2, #1079 ; 0x437 5742: 2002 movs r0, #2 5744: 47a8 blx r5 } 5746: 4620 mov r0, r4 5748: b002 add sp, #8 574a: bd70 pop {r4, r5, r6, pc} lv_style_init(local_style); 574c: 4b0e ldr r3, [pc, #56] ; (5788 ) 574e: 4620 mov r0, r4 5750: 4798 blx r3 _lv_style_list_add_style(list, local_style); 5752: 4b0e ldr r3, [pc, #56] ; (578c ) 5754: 4621 mov r1, r4 5756: 4628 mov r0, r5 5758: 4798 blx r3 list->has_local = 1; 575a: 796b ldrb r3, [r5, #5] 575c: f043 0301 orr.w r3, r3, #1 5760: 716b strb r3, [r5, #5] return local_style; 5762: e7f0 b.n 5746 5764: 00005491 .word 0x00005491 5768: 0000ea75 .word 0x0000ea75 576c: 00001795 .word 0x00001795 5770: 0001f968 .word 0x0001f968 5774: 0001f82a .word 0x0001f82a 5778: 0000e931 .word 0x0000e931 577c: 0001ee02 .word 0x0001ee02 5780: 0000179d .word 0x0000179d 5784: 0001f8c6 .word 0x0001f8c6 5788: 0000552d .word 0x0000552d 578c: 00005615 .word 0x00005615 00005790 : { 5790: b510 push {r4, lr} lv_mem_free(style->map); 5792: 4b03 ldr r3, [pc, #12] ; (57a0 ) { 5794: 4604 mov r4, r0 lv_mem_free(style->map); 5796: 6800 ldr r0, [r0, #0] 5798: 4798 blx r3 style->map = NULL; 579a: 2300 movs r3, #0 579c: 6023 str r3, [r4, #0] } 579e: bd10 pop {r4, pc} 57a0: 0000eb2d .word 0x0000eb2d 000057a4 <_lv_style_get_mem_size>: if(style->map == NULL) return 0; 57a4: 6800 ldr r0, [r0, #0] 57a6: b128 cbz r0, 57b4 <_lv_style_get_mem_size+0x10> size_t i = 0; 57a8: 2300 movs r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 57aa: 5cc2 ldrb r2, [r0, r3] 57ac: 2aff cmp r2, #255 ; 0xff 57ae: d102 bne.n 57b6 <_lv_style_get_mem_size+0x12> return i + sizeof(lv_style_property_t); 57b0: 3302 adds r3, #2 57b2: b298 uxth r0, r3 } 57b4: 4770 bx lr if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 57b6: f002 020f and.w r2, r2, #15 57ba: 2a08 cmp r2, #8 57bc: d802 bhi.n 57c4 <_lv_style_get_mem_size+0x20> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 57be: 3302 adds r3, #2 i += sizeof(lv_style_property_t); 57c0: 3302 adds r3, #2 57c2: e7f2 b.n 57aa <_lv_style_get_mem_size+0x6> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 57c4: 2a0b cmp r2, #11 57c6: d9fa bls.n 57be <_lv_style_get_mem_size+0x1a> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 57c8: 2a0d cmp r2, #13 57ca: bf94 ite ls 57cc: 3301 addls r3, #1 else i += sizeof(const void *); 57ce: 3304 addhi r3, #4 57d0: e7f6 b.n 57c0 <_lv_style_get_mem_size+0x1c> ... 000057d4 : { 57d4: b537 push {r0, r1, r2, r4, r5, lr} 57d6: 4605 mov r5, r0 if(style_src == NULL) return; 57d8: 460c mov r4, r1 57da: b179 cbz r1, 57fc if(style_src->map == NULL) return; 57dc: 680b ldr r3, [r1, #0] 57de: b16b cbz r3, 57fc uint16_t size = _lv_style_get_mem_size(style_src); 57e0: 4608 mov r0, r1 57e2: 4b07 ldr r3, [pc, #28] ; (5800 ) 57e4: 4798 blx r3 style_dest->map = lv_mem_alloc(size); 57e6: 4b07 ldr r3, [pc, #28] ; (5804 ) uint16_t size = _lv_style_get_mem_size(style_src); 57e8: 9001 str r0, [sp, #4] style_dest->map = lv_mem_alloc(size); 57ea: 4798 blx r3 57ec: 6028 str r0, [r5, #0] _lv_memcpy(style_dest->map, style_src->map, size); 57ee: 9a01 ldr r2, [sp, #4] 57f0: 6821 ldr r1, [r4, #0] 57f2: 4b05 ldr r3, [pc, #20] ; (5808 ) } 57f4: b003 add sp, #12 57f6: e8bd 4030 ldmia.w sp!, {r4, r5, lr} _lv_memcpy(style_dest->map, style_src->map, size); 57fa: 4718 bx r3 } 57fc: b003 add sp, #12 57fe: bd30 pop {r4, r5, pc} 5800: 000057a5 .word 0x000057a5 5804: 0000ea75 .word 0x0000ea75 5808: 0000ec79 .word 0x0000ec79 0000580c : { 580c: b5f8 push {r3, r4, r5, r6, r7, lr} 580e: 460f mov r7, r1 if(style == NULL) return false; 5810: 4604 mov r4, r0 5812: b330 cbz r0, 5862 int32_t id = get_property_index(style, prop); 5814: 6806 ldr r6, [r0, #0] 5816: 4b14 ldr r3, [pc, #80] ; (5868 ) 5818: 4630 mov r0, r6 581a: 4798 blx r3 if(id >= 0) { 581c: 1e05 subs r5, r0, #0 581e: db20 blt.n 5862 attr_found.full = *(style->map + id + 1); 5820: 442e add r6, r5 if(attr_found.bits.state == attr_goal.bits.state) { 5822: 7873 ldrb r3, [r6, #1] 5824: ea83 2317 eor.w r3, r3, r7, lsr #8 5828: 065b lsls r3, r3, #25 582a: d11a bne.n 5862 uint32_t map_size = _lv_style_get_mem_size(style); 582c: 4b0f ldr r3, [pc, #60] ; (586c ) 582e: 4620 mov r0, r4 5830: f007 010f and.w r1, r7, #15 5834: 4798 blx r3 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 5836: 290b cmp r1, #11 5838: d90c bls.n 5854 else prop_size += sizeof(const void *); 583a: 290e cmp r1, #14 583c: bf34 ite cc 583e: 2303 movcc r3, #3 5840: 2306 movcs r3, #6 for(i = id; i < map_size - prop_size; i++) { 5842: 1ac1 subs r1, r0, r3 5844: 42a9 cmp r1, r5 style->map[i] = style->map[i + prop_size]; 5846: 6820 ldr r0, [r4, #0] for(i = id; i < map_size - prop_size; i++) { 5848: d806 bhi.n 5858 style->map = lv_mem_realloc(style->map, map_size - prop_size); 584a: 4b09 ldr r3, [pc, #36] ; (5870 ) 584c: 4798 blx r3 584e: 6020 str r0, [r4, #0] return true; 5850: 2001 movs r0, #1 } 5852: bdf8 pop {r3, r4, r5, r6, r7, pc} else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 5854: 2304 movs r3, #4 5856: e7f4 b.n 5842 style->map[i] = style->map[i + prop_size]; 5858: 1942 adds r2, r0, r5 585a: 5cd2 ldrb r2, [r2, r3] 585c: 5542 strb r2, [r0, r5] for(i = id; i < map_size - prop_size; i++) { 585e: 3501 adds r5, #1 5860: e7f0 b.n 5844 if(style == NULL) return false; 5862: 2000 movs r0, #0 5864: e7f5 b.n 5852 5866: bf00 nop 5868: 000054b1 .word 0x000054b1 586c: 000057a5 .word 0x000057a5 5870: 0000ee5d .word 0x0000ee5d 00005874 <_lv_style_set_int>: { 5874: b570 push {r4, r5, r6, lr} 5876: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 5878: 4b28 ldr r3, [pc, #160] ; (591c <_lv_style_set_int+0xa8>) { 587a: b086 sub sp, #24 587c: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 587e: 4630 mov r0, r6 { 5880: f8ad 100e strh.w r1, [sp, #14] 5884: f8ad 200c strh.w r2, [sp, #12] int32_t id = get_property_index(style, prop); 5888: 460c mov r4, r1 588a: 4798 blx r3 if(id >= 0) { 588c: 2800 cmp r0, #0 588e: db0d blt.n 58ac <_lv_style_set_int+0x38> attr_found.full = *(style->map + id + 1); 5890: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5892: 785b ldrb r3, [r3, #1] 5894: ea83 2314 eor.w r3, r3, r4, lsr #8 5898: 065b lsls r3, r3, #25 589a: d107 bne.n 58ac <_lv_style_set_int+0x38> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t)); 589c: 3002 adds r0, #2 589e: 4b20 ldr r3, [pc, #128] ; (5920 <_lv_style_set_int+0xac>) 58a0: 2202 movs r2, #2 58a2: a903 add r1, sp, #12 58a4: 4430 add r0, r6 58a6: 4798 blx r3 } 58a8: b006 add sp, #24 58aa: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 58ac: 23ff movs r3, #255 ; 0xff 58ae: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 58b2: 4628 mov r0, r5 58b4: 4b1b ldr r3, [pc, #108] ; (5924 <_lv_style_set_int+0xb0>) 58b6: 4798 blx r3 if(size == 0) size += end_mark_size; 58b8: 1e04 subs r4, r0, #0 58ba: bf08 it eq 58bc: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t); 58be: 3404 adds r4, #4 style->map = lv_mem_realloc(style->map, size); 58c0: b2a4 uxth r4, r4 58c2: 4b19 ldr r3, [pc, #100] ; (5928 <_lv_style_set_int+0xb4>) 58c4: 4621 mov r1, r4 58c6: 4630 mov r0, r6 58c8: 4798 blx r3 LV_ASSERT_MEM(style->map); 58ca: 4b18 ldr r3, [pc, #96] ; (592c <_lv_style_set_int+0xb8>) style->map = lv_mem_realloc(style->map, size); 58cc: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 58ce: 4798 blx r3 58d0: 4606 mov r6, r0 58d2: b968 cbnz r0, 58f0 <_lv_style_set_int+0x7c> 58d4: 4b16 ldr r3, [pc, #88] ; (5930 <_lv_style_set_int+0xbc>) 58d6: 4917 ldr r1, [pc, #92] ; (5934 <_lv_style_set_int+0xc0>) 58d8: 9300 str r3, [sp, #0] 58da: f44f 72c3 mov.w r2, #390 ; 0x186 58de: 2003 movs r0, #3 58e0: 4c15 ldr r4, [pc, #84] ; (5938 <_lv_style_set_int+0xc4>) 58e2: 47a0 blx r4 58e4: 682a ldr r2, [r5, #0] 58e6: 4815 ldr r0, [pc, #84] ; (593c <_lv_style_set_int+0xc8>) 58e8: 4915 ldr r1, [pc, #84] ; (5940 <_lv_style_set_int+0xcc>) 58ea: 4633 mov r3, r6 58ec: 4788 blx r1 58ee: e7fe b.n 58ee <_lv_style_set_int+0x7a> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 58f0: 6828 ldr r0, [r5, #0] 58f2: 4e0b ldr r6, [pc, #44] ; (5920 <_lv_style_set_int+0xac>) 58f4: 1fa3 subs r3, r4, #6 58f6: f10d 010e add.w r1, sp, #14 58fa: 4418 add r0, r3 58fc: 2202 movs r2, #2 58fe: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(lv_style_int_t) - end_mark_size, &value, sizeof(lv_style_int_t)); 5900: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5902: 1f23 subs r3, r4, #4 _lv_memcpy_small(style->map + size - sizeof(lv_style_int_t) - end_mark_size, &value, sizeof(lv_style_int_t)); 5904: a903 add r1, sp, #12 5906: 4418 add r0, r3 5908: 2202 movs r2, #2 590a: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 590c: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(lv_style_int_t) - end_mark_size, &value, sizeof(lv_style_int_t)); 590e: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5910: 2202 movs r2, #2 5912: f10d 0116 add.w r1, sp, #22 5916: 4420 add r0, r4 5918: 47b0 blx r6 591a: e7c5 b.n 58a8 <_lv_style_set_int+0x34> 591c: 000054b1 .word 0x000054b1 5920: 0000551b .word 0x0000551b 5924: 000057a5 .word 0x000057a5 5928: 0000ee5d .word 0x0000ee5d 592c: 00001795 .word 0x00001795 5930: 0001f97e .word 0x0001f97e 5934: 0001f82a .word 0x0001f82a 5938: 0000e931 .word 0x0000e931 593c: 0001ee02 .word 0x0001ee02 5940: 0000179d .word 0x0000179d 00005944 <_lv_style_set_color>: { 5944: b570 push {r4, r5, r6, lr} 5946: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 5948: 4b28 ldr r3, [pc, #160] ; (59ec <_lv_style_set_color+0xa8>) { 594a: b086 sub sp, #24 594c: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 594e: 4630 mov r0, r6 { 5950: f8ad 200c strh.w r2, [sp, #12] 5954: f8ad 100e strh.w r1, [sp, #14] int32_t id = get_property_index(style, prop); 5958: 460c mov r4, r1 595a: 4798 blx r3 if(id >= 0) { 595c: 2800 cmp r0, #0 595e: db0d blt.n 597c <_lv_style_set_color+0x38> attr_found.full = *(style->map + id + 1); 5960: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5962: 785b ldrb r3, [r3, #1] 5964: ea83 2314 eor.w r3, r3, r4, lsr #8 5968: 065b lsls r3, r3, #25 596a: d107 bne.n 597c <_lv_style_set_color+0x38> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t)); 596c: 3002 adds r0, #2 596e: 4b20 ldr r3, [pc, #128] ; (59f0 <_lv_style_set_color+0xac>) 5970: 2202 movs r2, #2 5972: a903 add r1, sp, #12 5974: 4430 add r0, r6 5976: 4798 blx r3 } 5978: b006 add sp, #24 597a: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 597c: 23ff movs r3, #255 ; 0xff 597e: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 5982: 4628 mov r0, r5 5984: 4b1b ldr r3, [pc, #108] ; (59f4 <_lv_style_set_color+0xb0>) 5986: 4798 blx r3 if(size == 0) size += end_mark_size; 5988: 1e04 subs r4, r0, #0 598a: bf08 it eq 598c: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(lv_color_t); 598e: 3404 adds r4, #4 style->map = lv_mem_realloc(style->map, size); 5990: b2a4 uxth r4, r4 5992: 4b19 ldr r3, [pc, #100] ; (59f8 <_lv_style_set_color+0xb4>) 5994: 4621 mov r1, r4 5996: 4630 mov r0, r6 5998: 4798 blx r3 LV_ASSERT_MEM(style->map); 599a: 4b18 ldr r3, [pc, #96] ; (59fc <_lv_style_set_color+0xb8>) style->map = lv_mem_realloc(style->map, size); 599c: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 599e: 4798 blx r3 59a0: 4606 mov r6, r0 59a2: b968 cbnz r0, 59c0 <_lv_style_set_color+0x7c> 59a4: 4b16 ldr r3, [pc, #88] ; (5a00 <_lv_style_set_color+0xbc>) 59a6: 4917 ldr r1, [pc, #92] ; (5a04 <_lv_style_set_color+0xc0>) 59a8: 9300 str r3, [sp, #0] 59aa: f240 12b5 movw r2, #437 ; 0x1b5 59ae: 2003 movs r0, #3 59b0: 4c15 ldr r4, [pc, #84] ; (5a08 <_lv_style_set_color+0xc4>) 59b2: 47a0 blx r4 59b4: 682a ldr r2, [r5, #0] 59b6: 4815 ldr r0, [pc, #84] ; (5a0c <_lv_style_set_color+0xc8>) 59b8: 4915 ldr r1, [pc, #84] ; (5a10 <_lv_style_set_color+0xcc>) 59ba: 4633 mov r3, r6 59bc: 4788 blx r1 59be: e7fe b.n 59be <_lv_style_set_color+0x7a> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 59c0: 6828 ldr r0, [r5, #0] 59c2: 4e0b ldr r6, [pc, #44] ; (59f0 <_lv_style_set_color+0xac>) 59c4: 1fa3 subs r3, r4, #6 59c6: f10d 010e add.w r1, sp, #14 59ca: 4418 add r0, r3 59cc: 2202 movs r2, #2 59ce: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 59d0: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 59d2: 1f23 subs r3, r4, #4 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 59d4: a903 add r1, sp, #12 59d6: 4418 add r0, r3 59d8: 2202 movs r2, #2 59da: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 59dc: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 59de: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 59e0: 2202 movs r2, #2 59e2: f10d 0116 add.w r1, sp, #22 59e6: 4420 add r0, r4 59e8: 47b0 blx r6 59ea: e7c5 b.n 5978 <_lv_style_set_color+0x34> 59ec: 000054b1 .word 0x000054b1 59f0: 0000551b .word 0x0000551b 59f4: 000057a5 .word 0x000057a5 59f8: 0000ee5d .word 0x0000ee5d 59fc: 00001795 .word 0x00001795 5a00: 0001f990 .word 0x0001f990 5a04: 0001f82a .word 0x0001f82a 5a08: 0000e931 .word 0x0000e931 5a0c: 0001ee02 .word 0x0001ee02 5a10: 0000179d .word 0x0000179d 00005a14 <_lv_style_set_opa>: { 5a14: b570 push {r4, r5, r6, lr} 5a16: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 5a18: 4b29 ldr r3, [pc, #164] ; (5ac0 <_lv_style_set_opa+0xac>) { 5a1a: b086 sub sp, #24 5a1c: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 5a1e: 4630 mov r0, r6 { 5a20: f8ad 100e strh.w r1, [sp, #14] 5a24: f88d 200d strb.w r2, [sp, #13] int32_t id = get_property_index(style, prop); 5a28: 460c mov r4, r1 5a2a: 4798 blx r3 if(id >= 0) { 5a2c: 2800 cmp r0, #0 5a2e: db0e blt.n 5a4e <_lv_style_set_opa+0x3a> attr_found.full = *(style->map + id + 1); 5a30: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5a32: 785b ldrb r3, [r3, #1] 5a34: ea83 2314 eor.w r3, r3, r4, lsr #8 5a38: 065b lsls r3, r3, #25 5a3a: d108 bne.n 5a4e <_lv_style_set_opa+0x3a> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &opa, sizeof(lv_opa_t)); 5a3c: 3002 adds r0, #2 5a3e: 4b21 ldr r3, [pc, #132] ; (5ac4 <_lv_style_set_opa+0xb0>) 5a40: 2201 movs r2, #1 5a42: f10d 010d add.w r1, sp, #13 5a46: 4430 add r0, r6 5a48: 4798 blx r3 } 5a4a: b006 add sp, #24 5a4c: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 5a4e: 23ff movs r3, #255 ; 0xff 5a50: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 5a54: 4628 mov r0, r5 5a56: 4b1c ldr r3, [pc, #112] ; (5ac8 <_lv_style_set_opa+0xb4>) 5a58: 4798 blx r3 if(size == 0) size += end_mark_size; 5a5a: 1e04 subs r4, r0, #0 5a5c: bf08 it eq 5a5e: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(lv_opa_t); 5a60: 3403 adds r4, #3 style->map = lv_mem_realloc(style->map, size); 5a62: b2a4 uxth r4, r4 5a64: 4b19 ldr r3, [pc, #100] ; (5acc <_lv_style_set_opa+0xb8>) 5a66: 4621 mov r1, r4 5a68: 4630 mov r0, r6 5a6a: 4798 blx r3 LV_ASSERT_MEM(style->map); 5a6c: 4b18 ldr r3, [pc, #96] ; (5ad0 <_lv_style_set_opa+0xbc>) style->map = lv_mem_realloc(style->map, size); 5a6e: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 5a70: 4798 blx r3 5a72: 4606 mov r6, r0 5a74: b968 cbnz r0, 5a92 <_lv_style_set_opa+0x7e> 5a76: 4b17 ldr r3, [pc, #92] ; (5ad4 <_lv_style_set_opa+0xc0>) 5a78: 4917 ldr r1, [pc, #92] ; (5ad8 <_lv_style_set_opa+0xc4>) 5a7a: 9300 str r3, [sp, #0] 5a7c: f44f 72f2 mov.w r2, #484 ; 0x1e4 5a80: 2003 movs r0, #3 5a82: 4c16 ldr r4, [pc, #88] ; (5adc <_lv_style_set_opa+0xc8>) 5a84: 47a0 blx r4 5a86: 682a ldr r2, [r5, #0] 5a88: 4815 ldr r0, [pc, #84] ; (5ae0 <_lv_style_set_opa+0xcc>) 5a8a: 4916 ldr r1, [pc, #88] ; (5ae4 <_lv_style_set_opa+0xd0>) 5a8c: 4633 mov r3, r6 5a8e: 4788 blx r1 5a90: e7fe b.n 5a90 <_lv_style_set_opa+0x7c> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5a92: 6828 ldr r0, [r5, #0] 5a94: 4e0b ldr r6, [pc, #44] ; (5ac4 <_lv_style_set_opa+0xb0>) 5a96: 1f63 subs r3, r4, #5 5a98: f10d 010e add.w r1, sp, #14 5a9c: 4418 add r0, r3 5a9e: 2202 movs r2, #2 5aa0: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 5aa2: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5aa4: 1ee3 subs r3, r4, #3 _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 5aa6: f10d 010d add.w r1, sp, #13 5aaa: 4418 add r0, r3 5aac: 2201 movs r2, #1 5aae: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5ab0: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 5ab2: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5ab4: 2202 movs r2, #2 5ab6: f10d 0116 add.w r1, sp, #22 5aba: 4420 add r0, r4 5abc: 47b0 blx r6 5abe: e7c4 b.n 5a4a <_lv_style_set_opa+0x36> 5ac0: 000054b1 .word 0x000054b1 5ac4: 0000551b .word 0x0000551b 5ac8: 000057a5 .word 0x000057a5 5acc: 0000ee5d .word 0x0000ee5d 5ad0: 00001795 .word 0x00001795 5ad4: 0001f9a4 .word 0x0001f9a4 5ad8: 0001f82a .word 0x0001f82a 5adc: 0000e931 .word 0x0000e931 5ae0: 0001ee02 .word 0x0001ee02 5ae4: 0000179d .word 0x0000179d 00005ae8 <_lv_style_set_ptr>: { 5ae8: b570 push {r4, r5, r6, lr} 5aea: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 5aec: 4b28 ldr r3, [pc, #160] ; (5b90 <_lv_style_set_ptr+0xa8>) { 5aee: b086 sub sp, #24 5af0: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 5af2: 4630 mov r0, r6 { 5af4: 9202 str r2, [sp, #8] 5af6: f8ad 100e strh.w r1, [sp, #14] int32_t id = get_property_index(style, prop); 5afa: 460c mov r4, r1 5afc: 4798 blx r3 if(id >= 0) { 5afe: 2800 cmp r0, #0 5b00: db0d blt.n 5b1e <_lv_style_set_ptr+0x36> attr_found.full = *(style->map + id + 1); 5b02: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5b04: 785b ldrb r3, [r3, #1] 5b06: ea83 2314 eor.w r3, r3, r4, lsr #8 5b0a: 065b lsls r3, r3, #25 5b0c: d107 bne.n 5b1e <_lv_style_set_ptr+0x36> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *)); 5b0e: 3002 adds r0, #2 5b10: 4b20 ldr r3, [pc, #128] ; (5b94 <_lv_style_set_ptr+0xac>) 5b12: 2204 movs r2, #4 5b14: a902 add r1, sp, #8 5b16: 4430 add r0, r6 5b18: 4798 blx r3 } 5b1a: b006 add sp, #24 5b1c: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 5b1e: 23ff movs r3, #255 ; 0xff 5b20: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 5b24: 4628 mov r0, r5 5b26: 4b1c ldr r3, [pc, #112] ; (5b98 <_lv_style_set_ptr+0xb0>) 5b28: 4798 blx r3 if(size == 0) size += end_mark_size; 5b2a: 1e04 subs r4, r0, #0 5b2c: bf08 it eq 5b2e: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(const void *); 5b30: 3406 adds r4, #6 style->map = lv_mem_realloc(style->map, size); 5b32: b2a4 uxth r4, r4 5b34: 4b19 ldr r3, [pc, #100] ; (5b9c <_lv_style_set_ptr+0xb4>) 5b36: 4621 mov r1, r4 5b38: 4630 mov r0, r6 5b3a: 4798 blx r3 LV_ASSERT_MEM(style->map); 5b3c: 4b18 ldr r3, [pc, #96] ; (5ba0 <_lv_style_set_ptr+0xb8>) style->map = lv_mem_realloc(style->map, size); 5b3e: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 5b40: 4798 blx r3 5b42: 4606 mov r6, r0 5b44: b968 cbnz r0, 5b62 <_lv_style_set_ptr+0x7a> 5b46: 4b17 ldr r3, [pc, #92] ; (5ba4 <_lv_style_set_ptr+0xbc>) 5b48: 4917 ldr r1, [pc, #92] ; (5ba8 <_lv_style_set_ptr+0xc0>) 5b4a: 9300 str r3, [sp, #0] 5b4c: f240 2213 movw r2, #531 ; 0x213 5b50: 2003 movs r0, #3 5b52: 4c16 ldr r4, [pc, #88] ; (5bac <_lv_style_set_ptr+0xc4>) 5b54: 47a0 blx r4 5b56: 682a ldr r2, [r5, #0] 5b58: 4815 ldr r0, [pc, #84] ; (5bb0 <_lv_style_set_ptr+0xc8>) 5b5a: 4916 ldr r1, [pc, #88] ; (5bb4 <_lv_style_set_ptr+0xcc>) 5b5c: 4633 mov r3, r6 5b5e: 4788 blx r1 5b60: e7fe b.n 5b60 <_lv_style_set_ptr+0x78> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5b62: 6828 ldr r0, [r5, #0] 5b64: 4e0b ldr r6, [pc, #44] ; (5b94 <_lv_style_set_ptr+0xac>) 5b66: f1a4 0308 sub.w r3, r4, #8 5b6a: f10d 010e add.w r1, sp, #14 5b6e: 4418 add r0, r3 5b70: 2202 movs r2, #2 5b72: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 5b74: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5b76: 1fa3 subs r3, r4, #6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 5b78: a902 add r1, sp, #8 5b7a: 4418 add r0, r3 5b7c: 2204 movs r2, #4 5b7e: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5b80: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 5b82: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5b84: 2202 movs r2, #2 5b86: f10d 0116 add.w r1, sp, #22 5b8a: 4420 add r0, r4 5b8c: 47b0 blx r6 5b8e: e7c4 b.n 5b1a <_lv_style_set_ptr+0x32> 5b90: 000054b1 .word 0x000054b1 5b94: 0000551b .word 0x0000551b 5b98: 000057a5 .word 0x000057a5 5b9c: 0000ee5d .word 0x0000ee5d 5ba0: 00001795 .word 0x00001795 5ba4: 0001f9b6 .word 0x0001f9b6 5ba8: 0001f82a .word 0x0001f82a 5bac: 0000e931 .word 0x0000e931 5bb0: 0001ee02 .word 0x0001ee02 5bb4: 0000179d .word 0x0000179d 00005bb8 <_lv_style_get_int>: { 5bb8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5bbc: 460e mov r6, r1 5bbe: 4617 mov r7, r2 if(style == NULL) return -1; 5bc0: 4605 mov r5, r0 5bc2: b1c0 cbz r0, 5bf6 <_lv_style_get_int+0x3e> if(style->map == NULL) return -1; 5bc4: f8d0 8000 ldr.w r8, [r0] 5bc8: f1b8 0f00 cmp.w r8, #0 5bcc: d013 beq.n 5bf6 <_lv_style_get_int+0x3e> int32_t id = get_property_index(style, prop); 5bce: 4b0b ldr r3, [pc, #44] ; (5bfc <_lv_style_get_int+0x44>) 5bd0: 4640 mov r0, r8 5bd2: 4798 blx r3 if(id < 0) { 5bd4: 1e04 subs r4, r0, #0 5bd6: db0e blt.n 5bf6 <_lv_style_get_int+0x3e> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t)); 5bd8: 1ca1 adds r1, r4, #2 5bda: 4b09 ldr r3, [pc, #36] ; (5c00 <_lv_style_get_int+0x48>) 5bdc: 4638 mov r0, r7 5bde: 2202 movs r2, #2 5be0: 4441 add r1, r8 5be2: 4798 blx r3 attr_act.full = style->map[id + 1]; 5be4: 6828 ldr r0, [r5, #0] 5be6: 4404 add r4, r0 5be8: 7863 ldrb r3, [r4, #1] return attr_act.bits.state & attr_goal.bits.state; 5bea: f3c3 0306 ubfx r3, r3, #0, #7 5bee: ea03 2016 and.w r0, r3, r6, lsr #8 } 5bf2: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(style == NULL) return -1; 5bf6: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5bfa: e7fa b.n 5bf2 <_lv_style_get_int+0x3a> 5bfc: 000054b1 .word 0x000054b1 5c00: 0000551b .word 0x0000551b 00005c04 <_lv_style_get_opa>: { 5c04: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5c08: 460e mov r6, r1 5c0a: 4617 mov r7, r2 if(style == NULL) return -1; 5c0c: 4605 mov r5, r0 5c0e: b1c0 cbz r0, 5c42 <_lv_style_get_opa+0x3e> if(style->map == NULL) return -1; 5c10: f8d0 8000 ldr.w r8, [r0] 5c14: f1b8 0f00 cmp.w r8, #0 5c18: d013 beq.n 5c42 <_lv_style_get_opa+0x3e> int32_t id = get_property_index(style, prop); 5c1a: 4b0b ldr r3, [pc, #44] ; (5c48 <_lv_style_get_opa+0x44>) 5c1c: 4640 mov r0, r8 5c1e: 4798 blx r3 if(id < 0) { 5c20: 1e04 subs r4, r0, #0 5c22: db0e blt.n 5c42 <_lv_style_get_opa+0x3e> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_opa_t)); 5c24: 1ca1 adds r1, r4, #2 5c26: 4b09 ldr r3, [pc, #36] ; (5c4c <_lv_style_get_opa+0x48>) 5c28: 4638 mov r0, r7 5c2a: 2201 movs r2, #1 5c2c: 4441 add r1, r8 5c2e: 4798 blx r3 attr_act.full = style->map[id + 1]; 5c30: 6828 ldr r0, [r5, #0] 5c32: 4404 add r4, r0 5c34: 7863 ldrb r3, [r4, #1] return attr_act.bits.state & attr_goal.bits.state; 5c36: f3c3 0306 ubfx r3, r3, #0, #7 5c3a: ea03 2016 and.w r0, r3, r6, lsr #8 } 5c3e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(style == NULL) return -1; 5c42: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5c46: e7fa b.n 5c3e <_lv_style_get_opa+0x3a> 5c48: 000054b1 .word 0x000054b1 5c4c: 0000551b .word 0x0000551b 00005c50 <_lv_style_get_ptr>: { 5c50: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5c54: 460e mov r6, r1 5c56: 4617 mov r7, r2 if(style == NULL) return -1; 5c58: 4605 mov r5, r0 5c5a: b1c0 cbz r0, 5c8e <_lv_style_get_ptr+0x3e> if(style->map == NULL) return -1; 5c5c: f8d0 8000 ldr.w r8, [r0] 5c60: f1b8 0f00 cmp.w r8, #0 5c64: d013 beq.n 5c8e <_lv_style_get_ptr+0x3e> int32_t id = get_property_index(style, prop); 5c66: 4b0b ldr r3, [pc, #44] ; (5c94 <_lv_style_get_ptr+0x44>) 5c68: 4640 mov r0, r8 5c6a: 4798 blx r3 if(id < 0) { 5c6c: 1e04 subs r4, r0, #0 5c6e: db0e blt.n 5c8e <_lv_style_get_ptr+0x3e> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *)); 5c70: 1ca1 adds r1, r4, #2 5c72: 4b09 ldr r3, [pc, #36] ; (5c98 <_lv_style_get_ptr+0x48>) 5c74: 4638 mov r0, r7 5c76: 2204 movs r2, #4 5c78: 4441 add r1, r8 5c7a: 4798 blx r3 attr_act.full = style->map[id + 1]; 5c7c: 6828 ldr r0, [r5, #0] 5c7e: 4404 add r4, r0 5c80: 7863 ldrb r3, [r4, #1] return attr_act.bits.state & attr_goal.bits.state; 5c82: f3c3 0306 ubfx r3, r3, #0, #7 5c86: ea03 2016 and.w r0, r3, r6, lsr #8 } 5c8a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(style == NULL) return -1; 5c8e: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5c92: e7fa b.n 5c8a <_lv_style_get_ptr+0x3a> 5c94: 000054b1 .word 0x000054b1 5c98: 0000551b .word 0x0000551b 00005c9c : if(!list->has_local) return NULL; 5c9c: 7942 ldrb r2, [r0, #5] 5c9e: f012 0301 ands.w r3, r2, #1 5ca2: d005 beq.n 5cb0 if(list->has_trans) return list->style_list[1]; 5ca4: 6803 ldr r3, [r0, #0] 5ca6: 0792 lsls r2, r2, #30 5ca8: bf4c ite mi 5caa: 6858 ldrmi r0, [r3, #4] else return list->style_list[0]; 5cac: 6818 ldrpl r0, [r3, #0] 5cae: 4770 bx lr if(!list->has_local) return NULL; 5cb0: 4618 mov r0, r3 } 5cb2: 4770 bx lr 00005cb4 <_lv_style_list_get_transition_style>: if(!list->has_trans) return NULL; 5cb4: 7943 ldrb r3, [r0, #5] 5cb6: f013 0302 ands.w r3, r3, #2 return list->style_list[0]; 5cba: bf1a itte ne 5cbc: 6803 ldrne r3, [r0, #0] 5cbe: 6818 ldrne r0, [r3, #0] if(!list->has_trans) return NULL; 5cc0: 4618 moveq r0, r3 } 5cc2: 4770 bx lr 00005cc4 <_lv_style_list_reset>: { 5cc4: b538 push {r3, r4, r5, lr} if(list == NULL) return; 5cc6: 4604 mov r4, r0 5cc8: b328 cbz r0, 5d16 <_lv_style_list_reset+0x52> if(list->has_local) { 5cca: 7943 ldrb r3, [r0, #5] 5ccc: 07da lsls r2, r3, #31 5cce: d508 bpl.n 5ce2 <_lv_style_list_reset+0x1e> lv_style_t * local = lv_style_list_get_local_style(list); 5cd0: 4b11 ldr r3, [pc, #68] ; (5d18 <_lv_style_list_reset+0x54>) 5cd2: 4798 blx r3 if(local) { 5cd4: 4605 mov r5, r0 5cd6: b120 cbz r0, 5ce2 <_lv_style_list_reset+0x1e> lv_style_reset(local); 5cd8: 4b10 ldr r3, [pc, #64] ; (5d1c <_lv_style_list_reset+0x58>) 5cda: 4798 blx r3 lv_mem_free(local); 5cdc: 4b10 ldr r3, [pc, #64] ; (5d20 <_lv_style_list_reset+0x5c>) 5cde: 4628 mov r0, r5 5ce0: 4798 blx r3 if(list->has_trans) { 5ce2: 7963 ldrb r3, [r4, #5] 5ce4: 079b lsls r3, r3, #30 5ce6: d509 bpl.n 5cfc <_lv_style_list_reset+0x38> lv_style_t * trans = _lv_style_list_get_transition_style(list); 5ce8: 4b0e ldr r3, [pc, #56] ; (5d24 <_lv_style_list_reset+0x60>) 5cea: 4620 mov r0, r4 5cec: 4798 blx r3 if(trans) { 5cee: 4605 mov r5, r0 5cf0: b120 cbz r0, 5cfc <_lv_style_list_reset+0x38> lv_style_reset(trans); 5cf2: 4b0a ldr r3, [pc, #40] ; (5d1c <_lv_style_list_reset+0x58>) 5cf4: 4798 blx r3 lv_mem_free(trans); 5cf6: 4b0a ldr r3, [pc, #40] ; (5d20 <_lv_style_list_reset+0x5c>) 5cf8: 4628 mov r0, r5 5cfa: 4798 blx r3 if(list->style_cnt > 0) lv_mem_free(list->style_list); 5cfc: 7923 ldrb r3, [r4, #4] 5cfe: b113 cbz r3, 5d06 <_lv_style_list_reset+0x42> 5d00: 6820 ldr r0, [r4, #0] 5d02: 4b07 ldr r3, [pc, #28] ; (5d20 <_lv_style_list_reset+0x5c>) 5d04: 4798 blx r3 list->style_list = NULL; 5d06: 2300 movs r3, #0 5d08: 6023 str r3, [r4, #0] list->style_cnt = 0; 5d0a: 88a3 ldrh r3, [r4, #4] 5d0c: f423 63ff bic.w r3, r3, #2040 ; 0x7f8 5d10: f023 0307 bic.w r3, r3, #7 5d14: 80a3 strh r3, [r4, #4] } 5d16: bd38 pop {r3, r4, r5, pc} 5d18: 00005c9d .word 0x00005c9d 5d1c: 00005791 .word 0x00005791 5d20: 0000eb2d .word 0x0000eb2d 5d24: 00005cb5 .word 0x00005cb5 00005d28 : { 5d28: b570 push {r4, r5, r6, lr} 5d2a: 460c mov r4, r1 _lv_style_list_reset(list_dest); 5d2c: 4b26 ldr r3, [pc, #152] ; (5dc8 ) { 5d2e: 4605 mov r5, r0 _lv_style_list_reset(list_dest); 5d30: 4798 blx r3 if(list_src->style_list == NULL) return; 5d32: 6823 ldr r3, [r4, #0] 5d34: b1b3 cbz r3, 5d64 if(list_src->has_local == 0) { 5d36: 7963 ldrb r3, [r4, #5] list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5d38: 7920 ldrb r0, [r4, #4] 5d3a: 4e24 ldr r6, [pc, #144] ; (5dcc ) if(list_src->has_local == 0) { 5d3c: f013 0f01 tst.w r3, #1 if(list_src->has_trans) { 5d40: f003 0202 and.w r2, r3, #2 5d44: 4b22 ldr r3, [pc, #136] ; (5dd0 ) if(list_src->has_local == 0) { 5d46: d117 bne.n 5d78 if(list_src->has_trans) { 5d48: b16a cbz r2, 5d66 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5d4a: 3801 subs r0, #1 5d4c: 0080 lsls r0, r0, #2 5d4e: 4798 blx r3 5d50: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list + 1, (list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5d52: 7922 ldrb r2, [r4, #4] 5d54: 6821 ldr r1, [r4, #0] 5d56: 3a01 subs r2, #1 5d58: 0092 lsls r2, r2, #2 5d5a: 3104 adds r1, #4 5d5c: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt - 1; 5d5e: 7923 ldrb r3, [r4, #4] 5d60: 3b01 subs r3, #1 list_dest->style_cnt = list_src->style_cnt; 5d62: 712b strb r3, [r5, #4] } 5d64: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *)); 5d66: 0080 lsls r0, r0, #2 5d68: 4798 blx r3 5d6a: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *)); 5d6c: 7922 ldrb r2, [r4, #4] 5d6e: 6821 ldr r1, [r4, #0] 5d70: 0092 lsls r2, r2, #2 5d72: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt; 5d74: 7923 ldrb r3, [r4, #4] 5d76: e7f4 b.n 5d62 if(list_src->has_trans) { 5d78: b1c2 cbz r2, 5dac list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *)); 5d7a: 3802 subs r0, #2 5d7c: 0080 lsls r0, r0, #2 5d7e: 4798 blx r3 5d80: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list + 2, (list_src->style_cnt - 2) * sizeof(lv_style_t *)); 5d82: 7922 ldrb r2, [r4, #4] 5d84: 6821 ldr r1, [r4, #0] 5d86: 3a02 subs r2, #2 5d88: 0092 lsls r2, r2, #2 5d8a: 3108 adds r1, #8 5d8c: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt - 2; 5d8e: 7923 ldrb r3, [r4, #4] 5d90: 3b02 subs r3, #2 list_dest->style_cnt = list_src->style_cnt - 1; 5d92: 712b strb r3, [r5, #4] lv_style_t * local_style = get_alloc_local_style(list_dest); 5d94: 4e0f ldr r6, [pc, #60] ; (5dd4 ) 5d96: 4628 mov r0, r5 5d98: 47b0 blx r6 5d9a: 4605 mov r5, r0 lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 5d9c: 4620 mov r0, r4 5d9e: 47b0 blx r6 5da0: 4b0d ldr r3, [pc, #52] ; (5dd8 ) 5da2: 4601 mov r1, r0 5da4: 4628 mov r0, r5 } 5da6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 5daa: 4718 bx r3 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5dac: 3801 subs r0, #1 5dae: 0080 lsls r0, r0, #2 5db0: 4798 blx r3 5db2: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list + 1, (list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5db4: 7922 ldrb r2, [r4, #4] 5db6: 6821 ldr r1, [r4, #0] 5db8: 3a01 subs r2, #1 5dba: 0092 lsls r2, r2, #2 5dbc: 3104 adds r1, #4 5dbe: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt - 1; 5dc0: 7923 ldrb r3, [r4, #4] 5dc2: 3b01 subs r3, #1 5dc4: e7e5 b.n 5d92 5dc6: bf00 nop 5dc8: 00005cc5 .word 0x00005cc5 5dcc: 0000ec79 .word 0x0000ec79 5dd0: 0000ea75 .word 0x0000ea75 5dd4: 000056f1 .word 0x000056f1 5dd8: 000057d5 .word 0x000057d5 00005ddc <_lv_style_list_add_trans_style>: if(list->has_trans) return _lv_style_list_get_transition_style(list); 5ddc: 7943 ldrb r3, [r0, #5] 5dde: 079a lsls r2, r3, #30 { 5de0: b573 push {r0, r1, r4, r5, r6, lr} 5de2: 4605 mov r5, r0 if(list->has_trans) return _lv_style_list_get_transition_style(list); 5de4: d504 bpl.n 5df0 <_lv_style_list_add_trans_style+0x14> 5de6: 4b1d ldr r3, [pc, #116] ; (5e5c <_lv_style_list_add_trans_style+0x80>) } 5de8: b002 add sp, #8 5dea: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} if(list->has_trans) return _lv_style_list_get_transition_style(list); 5dee: 4718 bx r3 lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 5df0: 4b1b ldr r3, [pc, #108] ; (5e60 <_lv_style_list_add_trans_style+0x84>) 5df2: 2004 movs r0, #4 5df4: 4798 blx r3 LV_ASSERT_MEM(trans_style); 5df6: 4b1b ldr r3, [pc, #108] ; (5e64 <_lv_style_list_add_trans_style+0x88>) lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 5df8: 4604 mov r4, r0 LV_ASSERT_MEM(trans_style); 5dfa: 4798 blx r3 5dfc: 4606 mov r6, r0 5dfe: b968 cbnz r0, 5e1c <_lv_style_list_add_trans_style+0x40> 5e00: 4b19 ldr r3, [pc, #100] ; (5e68 <_lv_style_list_add_trans_style+0x8c>) 5e02: 491a ldr r1, [pc, #104] ; (5e6c <_lv_style_list_add_trans_style+0x90>) 5e04: 9300 str r3, [sp, #0] 5e06: f240 22cd movw r2, #717 ; 0x2cd 5e0a: 2003 movs r0, #3 5e0c: 4d18 ldr r5, [pc, #96] ; (5e70 <_lv_style_list_add_trans_style+0x94>) 5e0e: 47a8 blx r5 5e10: 4818 ldr r0, [pc, #96] ; (5e74 <_lv_style_list_add_trans_style+0x98>) 5e12: 4919 ldr r1, [pc, #100] ; (5e78 <_lv_style_list_add_trans_style+0x9c>) 5e14: 4622 mov r2, r4 5e16: 4633 mov r3, r6 5e18: 4788 blx r1 5e1a: e7fe b.n 5e1a <_lv_style_list_add_trans_style+0x3e> if(trans_style == NULL) { 5e1c: b95c cbnz r4, 5e36 <_lv_style_list_add_trans_style+0x5a> LV_LOG_WARN("lv_style_list_add_trans_style: couldn't create transition style"); 5e1e: 4b17 ldr r3, [pc, #92] ; (5e7c <_lv_style_list_add_trans_style+0xa0>) 5e20: 9300 str r3, [sp, #0] 5e22: 4912 ldr r1, [pc, #72] ; (5e6c <_lv_style_list_add_trans_style+0x90>) 5e24: 4b10 ldr r3, [pc, #64] ; (5e68 <_lv_style_list_add_trans_style+0x8c>) 5e26: 4d12 ldr r5, [pc, #72] ; (5e70 <_lv_style_list_add_trans_style+0x94>) 5e28: f240 22cf movw r2, #719 ; 0x2cf 5e2c: 2002 movs r0, #2 5e2e: 47a8 blx r5 } 5e30: 4620 mov r0, r4 5e32: b002 add sp, #8 5e34: bd70 pop {r4, r5, r6, pc} lv_style_init(trans_style); 5e36: 4b12 ldr r3, [pc, #72] ; (5e80 <_lv_style_list_add_trans_style+0xa4>) 5e38: 4620 mov r0, r4 5e3a: 4798 blx r3 _lv_style_list_add_style(list, trans_style); 5e3c: 4621 mov r1, r4 5e3e: 4b11 ldr r3, [pc, #68] ; (5e84 <_lv_style_list_add_trans_style+0xa8>) 5e40: 4628 mov r0, r5 5e42: 4798 blx r3 list->has_trans = 1; 5e44: 796b ldrb r3, [r5, #5] 5e46: f043 0302 orr.w r3, r3, #2 5e4a: 716b strb r3, [r5, #5] if(list->has_local) { 5e4c: 07db lsls r3, r3, #31 lv_style_t * tmp = list->style_list[0]; 5e4e: bf42 ittt mi 5e50: 682b ldrmi r3, [r5, #0] list->style_list[0] = list->style_list[1]; 5e52: e9d3 2100 ldrdmi r2, r1, [r3] list->style_list[1] = tmp; 5e56: e9c3 1200 strdmi r1, r2, [r3] 5e5a: e7e9 b.n 5e30 <_lv_style_list_add_trans_style+0x54> 5e5c: 00005cb5 .word 0x00005cb5 5e60: 0000ea75 .word 0x0000ea75 5e64: 00001795 .word 0x00001795 5e68: 0001f9c8 .word 0x0001f9c8 5e6c: 0001f82a .word 0x0001f82a 5e70: 0000e931 .word 0x0000e931 5e74: 0001ee02 .word 0x0001ee02 5e78: 0000179d .word 0x0000179d 5e7c: 0001f8f3 .word 0x0001f8f3 5e80: 0000552d .word 0x0000552d 5e84: 00005615 .word 0x00005615 00005e88 <_lv_style_list_get_int>: { 5e88: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 5e8c: 460f mov r7, r1 5e8e: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 5e90: 4605 mov r5, r0 5e92: b318 cbz r0, 5edc <_lv_style_list_get_int+0x54> if(list->style_list == NULL) return LV_RES_INV; 5e94: 6800 ldr r0, [r0, #0] 5e96: b308 cbz r0, 5edc <_lv_style_list_get_int+0x54> lv_style_int_t value_act = 0; 5e98: 2600 movs r6, #0 lv_style_t * class = lv_style_list_get_style(list, ci); 5e9a: 4b1b ldr r3, [pc, #108] ; (5f08 <_lv_style_list_get_int+0x80>) int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 5e9c: f8df b06c ldr.w fp, [pc, #108] ; 5f0c <_lv_style_list_get_int+0x84> lv_style_int_t value_act = 0; 5ea0: f8ad 6006 strh.w r6, [sp, #6] int16_t weight_goal = attr.full; 5ea4: ea4f 2a11 mov.w sl, r1, lsr #8 int16_t weight = -1; 5ea8: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 5eac: 792a ldrb r2, [r5, #4] 5eae: fa0f f986 sxth.w r9, r6 5eb2: 4591 cmp r9, r2 5eb4: db03 blt.n 5ebe <_lv_style_list_get_int+0x36> if(weight >= 0) return LV_RES_OK; 5eb6: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 5eb8: f3c0 30c0 ubfx r0, r0, #15, #1 5ebc: e00e b.n 5edc <_lv_style_list_get_int+0x54> lv_style_t * class = lv_style_list_get_style(list, ci); 5ebe: b2f1 uxtb r1, r6 5ec0: 4628 mov r0, r5 5ec2: 4798 blx r3 int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 5ec4: f10d 0206 add.w r2, sp, #6 5ec8: 4639 mov r1, r7 5eca: 47d8 blx fp if(weight_act == weight_goal) { 5ecc: 4582 cmp sl, r0 5ece: 4b0e ldr r3, [pc, #56] ; (5f08 <_lv_style_list_get_int+0x80>) 5ed0: d107 bne.n 5ee2 <_lv_style_list_get_int+0x5a> *res = value_act; 5ed2: f8bd 3006 ldrh.w r3, [sp, #6] 5ed6: f8a8 3000 strh.w r3, [r8] return LV_RES_OK; 5eda: 2001 movs r0, #1 } 5edc: b003 add sp, #12 5ede: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 5ee2: 796a ldrb r2, [r5, #5] 5ee4: 0791 lsls r1, r2, #30 5ee6: d506 bpl.n 5ef6 <_lv_style_list_get_int+0x6e> 5ee8: 2800 cmp r0, #0 5eea: db04 blt.n 5ef6 <_lv_style_list_get_int+0x6e> 5eec: f1b9 0f00 cmp.w r9, #0 5ef0: d101 bne.n 5ef6 <_lv_style_list_get_int+0x6e> 5ef2: 0752 lsls r2, r2, #29 5ef4: d5ed bpl.n 5ed2 <_lv_style_list_get_int+0x4a> else if(weight_act > weight) { 5ef6: 4284 cmp r4, r0 *res = value_act; 5ef8: bfbe ittt lt 5efa: f8bd 2006 ldrhlt.w r2, [sp, #6] 5efe: f8a8 2000 strhlt.w r2, [r8] 5f02: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 5f04: 3601 adds r6, #1 5f06: e7d1 b.n 5eac <_lv_style_list_get_int+0x24> 5f08: 00005491 .word 0x00005491 5f0c: 00005bb9 .word 0x00005bb9 00005f10 <_lv_style_list_get_color>: { 5f10: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 5f14: 460f mov r7, r1 5f16: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 5f18: 4605 mov r5, r0 5f1a: b310 cbz r0, 5f62 <_lv_style_list_get_color+0x52> if(list->style_list == NULL) return LV_RES_INV; 5f1c: 6800 ldr r0, [r0, #0] 5f1e: b300 cbz r0, 5f62 <_lv_style_list_get_color+0x52> lv_color_t value_act = { 0 }; 5f20: 2600 movs r6, #0 lv_style_t * class = lv_style_list_get_style(list, ci); 5f22: 4b1b ldr r3, [pc, #108] ; (5f90 <_lv_style_list_get_color+0x80>) int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 5f24: f8df b06c ldr.w fp, [pc, #108] ; 5f94 <_lv_style_list_get_color+0x84> lv_color_t value_act = { 0 }; 5f28: f8ad 6004 strh.w r6, [sp, #4] int16_t weight_goal = attr.full; 5f2c: ea4f 2a11 mov.w sl, r1, lsr #8 int16_t weight = -1; 5f30: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 5f34: 792a ldrb r2, [r5, #4] 5f36: fa0f f986 sxth.w r9, r6 5f3a: 4591 cmp r9, r2 5f3c: db03 blt.n 5f46 <_lv_style_list_get_color+0x36> if(weight >= 0) return LV_RES_OK; 5f3e: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 5f40: f3c0 30c0 ubfx r0, r0, #15, #1 5f44: e00d b.n 5f62 <_lv_style_list_get_color+0x52> lv_style_t * class = lv_style_list_get_style(list, ci); 5f46: b2f1 uxtb r1, r6 5f48: 4628 mov r0, r5 5f4a: 4798 blx r3 int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 5f4c: aa01 add r2, sp, #4 5f4e: 4639 mov r1, r7 5f50: 47d8 blx fp if(weight_act == weight_goal) { 5f52: 4582 cmp sl, r0 5f54: 4b0e ldr r3, [pc, #56] ; (5f90 <_lv_style_list_get_color+0x80>) 5f56: d107 bne.n 5f68 <_lv_style_list_get_color+0x58> *res = value_act; 5f58: f8bd 3004 ldrh.w r3, [sp, #4] 5f5c: f8a8 3000 strh.w r3, [r8] return LV_RES_OK; 5f60: 2001 movs r0, #1 } 5f62: b003 add sp, #12 5f64: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 5f68: 796a ldrb r2, [r5, #5] 5f6a: 0791 lsls r1, r2, #30 5f6c: d506 bpl.n 5f7c <_lv_style_list_get_color+0x6c> 5f6e: 2800 cmp r0, #0 5f70: db04 blt.n 5f7c <_lv_style_list_get_color+0x6c> 5f72: f1b9 0f00 cmp.w r9, #0 5f76: d101 bne.n 5f7c <_lv_style_list_get_color+0x6c> 5f78: 0752 lsls r2, r2, #29 5f7a: d5ed bpl.n 5f58 <_lv_style_list_get_color+0x48> else if(weight_act > weight) { 5f7c: 4284 cmp r4, r0 *res = value_act; 5f7e: bfbe ittt lt 5f80: f8bd 2004 ldrhlt.w r2, [sp, #4] 5f84: f8a8 2000 strhlt.w r2, [r8] 5f88: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 5f8a: 3601 adds r6, #1 5f8c: e7d2 b.n 5f34 <_lv_style_list_get_color+0x24> 5f8e: bf00 nop 5f90: 00005491 .word 0x00005491 5f94: 00005bb9 .word 0x00005bb9 00005f98 <_lv_style_list_get_opa>: { 5f98: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 5f9c: 460f mov r7, r1 5f9e: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 5fa0: 4605 mov r5, r0 5fa2: b318 cbz r0, 5fec <_lv_style_list_get_opa+0x54> if(list->style_list == NULL) return LV_RES_INV; 5fa4: 6800 ldr r0, [r0, #0] 5fa6: b308 cbz r0, 5fec <_lv_style_list_get_opa+0x54> lv_opa_t value_act = LV_OPA_TRANSP; 5fa8: 2600 movs r6, #0 lv_style_t * class = lv_style_list_get_style(list, ci); 5faa: 4b1b ldr r3, [pc, #108] ; (6018 <_lv_style_list_get_opa+0x80>) int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 5fac: f8df b06c ldr.w fp, [pc, #108] ; 601c <_lv_style_list_get_opa+0x84> lv_opa_t value_act = LV_OPA_TRANSP; 5fb0: f88d 6007 strb.w r6, [sp, #7] int16_t weight_goal = attr.full; 5fb4: ea4f 2a11 mov.w sl, r1, lsr #8 int16_t weight = -1; 5fb8: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 5fbc: 792a ldrb r2, [r5, #4] 5fbe: fa0f f986 sxth.w r9, r6 5fc2: 4591 cmp r9, r2 5fc4: db03 blt.n 5fce <_lv_style_list_get_opa+0x36> if(weight >= 0) return LV_RES_OK; 5fc6: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 5fc8: f3c0 30c0 ubfx r0, r0, #15, #1 5fcc: e00e b.n 5fec <_lv_style_list_get_opa+0x54> lv_style_t * class = lv_style_list_get_style(list, ci); 5fce: b2f1 uxtb r1, r6 5fd0: 4628 mov r0, r5 5fd2: 4798 blx r3 int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 5fd4: f10d 0207 add.w r2, sp, #7 5fd8: 4639 mov r1, r7 5fda: 47d8 blx fp if(weight_act == weight_goal) { 5fdc: 4582 cmp sl, r0 5fde: 4b0e ldr r3, [pc, #56] ; (6018 <_lv_style_list_get_opa+0x80>) 5fe0: d107 bne.n 5ff2 <_lv_style_list_get_opa+0x5a> *res = value_act; 5fe2: f89d 3007 ldrb.w r3, [sp, #7] 5fe6: f888 3000 strb.w r3, [r8] return LV_RES_OK; 5fea: 2001 movs r0, #1 } 5fec: b003 add sp, #12 5fee: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 5ff2: 796a ldrb r2, [r5, #5] 5ff4: 0791 lsls r1, r2, #30 5ff6: d506 bpl.n 6006 <_lv_style_list_get_opa+0x6e> 5ff8: 2800 cmp r0, #0 5ffa: db04 blt.n 6006 <_lv_style_list_get_opa+0x6e> 5ffc: f1b9 0f00 cmp.w r9, #0 6000: d101 bne.n 6006 <_lv_style_list_get_opa+0x6e> 6002: 0752 lsls r2, r2, #29 6004: d5ed bpl.n 5fe2 <_lv_style_list_get_opa+0x4a> else if(weight_act > weight) { 6006: 4284 cmp r4, r0 *res = value_act; 6008: bfbe ittt lt 600a: f89d 2007 ldrblt.w r2, [sp, #7] 600e: f888 2000 strblt.w r2, [r8] 6012: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 6014: 3601 adds r6, #1 6016: e7d1 b.n 5fbc <_lv_style_list_get_opa+0x24> 6018: 00005491 .word 0x00005491 601c: 00005c05 .word 0x00005c05 00006020 <_lv_style_list_get_ptr>: { 6020: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 6024: 460f mov r7, r1 6026: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 6028: 4605 mov r5, r0 602a: b1f8 cbz r0, 606c <_lv_style_list_get_ptr+0x4c> if(list->style_list == NULL) return LV_RES_INV; 602c: 6800 ldr r0, [r0, #0] 602e: b1e8 cbz r0, 606c <_lv_style_list_get_ptr+0x4c> lv_style_t * class = lv_style_list_get_style(list, ci); 6030: 4b19 ldr r3, [pc, #100] ; (6098 <_lv_style_list_get_ptr+0x78>) int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 6032: f8df b068 ldr.w fp, [pc, #104] ; 609c <_lv_style_list_get_ptr+0x7c> int16_t weight_goal = attr.full; 6036: ea4f 2a11 mov.w sl, r1, lsr #8 for(ci = 0; ci < list->style_cnt; ci++) { 603a: 2600 movs r6, #0 int16_t weight = -1; 603c: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 6040: 792a ldrb r2, [r5, #4] 6042: fa0f f986 sxth.w r9, r6 6046: 4591 cmp r9, r2 6048: db03 blt.n 6052 <_lv_style_list_get_ptr+0x32> if(weight >= 0) return LV_RES_OK; 604a: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 604c: f3c0 30c0 ubfx r0, r0, #15, #1 6050: e00c b.n 606c <_lv_style_list_get_ptr+0x4c> lv_style_t * class = lv_style_list_get_style(list, ci); 6052: b2f1 uxtb r1, r6 6054: 4628 mov r0, r5 6056: 4798 blx r3 int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 6058: aa01 add r2, sp, #4 605a: 4639 mov r1, r7 605c: 47d8 blx fp if(weight_act == weight_goal) { 605e: 4582 cmp sl, r0 6060: 4b0d ldr r3, [pc, #52] ; (6098 <_lv_style_list_get_ptr+0x78>) 6062: d106 bne.n 6072 <_lv_style_list_get_ptr+0x52> *res = value_act; 6064: 9b01 ldr r3, [sp, #4] 6066: f8c8 3000 str.w r3, [r8] return LV_RES_OK; 606a: 2001 movs r0, #1 } 606c: b003 add sp, #12 606e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 6072: 796a ldrb r2, [r5, #5] 6074: 0791 lsls r1, r2, #30 6076: d506 bpl.n 6086 <_lv_style_list_get_ptr+0x66> 6078: 2800 cmp r0, #0 607a: db04 blt.n 6086 <_lv_style_list_get_ptr+0x66> 607c: f1b9 0f00 cmp.w r9, #0 6080: d101 bne.n 6086 <_lv_style_list_get_ptr+0x66> 6082: 0752 lsls r2, r2, #29 6084: d5ee bpl.n 6064 <_lv_style_list_get_ptr+0x44> else if(weight_act > weight) { 6086: 4284 cmp r4, r0 *res = value_act; 6088: bfbe ittt lt 608a: 9a01 ldrlt r2, [sp, #4] 608c: f8c8 2000 strlt.w r2, [r8] 6090: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 6092: 3601 adds r6, #1 6094: e7d4 b.n 6040 <_lv_style_list_get_ptr+0x20> 6096: bf00 nop 6098: 00005491 .word 0x00005491 609c: 00005c51 .word 0x00005c51 000060a0 : * @param c2 the second color to mix (usually the background) * @param mix The ratio of the colors. 0: full `c2`, 255: full `c1`, 127: half `c1` and half`c2` * @return the mixed color */ LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { 60a0: b5f0 push {r4, r5, r6, r7, lr} lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 60a2: f1c2 03ff rsb r3, r2, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 60a6: f3c1 1445 ubfx r4, r1, #5, #6 60aa: f3c0 1545 ubfx r5, r0, #5, #6 60ae: 435c muls r4, r3 60b0: f248 0681 movw r6, #32897 ; 0x8081 60b4: fb05 4402 mla r4, r5, r2, r4 60b8: 4374 muls r4, r6 #else /*LV_COLOR_DEPTH == 1*/ ret.full = mix > LV_OPA_50 ? c1.full : c2.full; #endif return ret; 60ba: f3c4 55c5 ubfx r5, r4, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 60be: f001 041f and.w r4, r1, #31 60c2: f000 071f and.w r7, r0, #31 60c6: 435c muls r4, r3 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 60c8: f3c1 21c4 ubfx r1, r1, #11, #5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 60cc: fb07 4402 mla r4, r7, r2, r4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 60d0: f3c0 20c4 ubfx r0, r0, #11, #5 60d4: 4359 muls r1, r3 60d6: fb00 1302 mla r3, r0, r2, r1 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 60da: 4374 muls r4, r6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 60dc: 4373 muls r3, r6 return ret; 60de: f3c4 54c4 ubfx r4, r4, #23, #5 60e2: ea44 1445 orr.w r4, r4, r5, lsl #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 60e6: 0ddb lsrs r3, r3, #23 } 60e8: ea44 20c3 orr.w r0, r4, r3, lsl #11 60ec: bdf0 pop {r4, r5, r6, r7, pc} ... 000060f0 : } } } static inline lv_color_t color_blend_true_color_additive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 60f0: 460b mov r3, r1 if(opa <= LV_OPA_MIN) return bg; 60f2: 2a05 cmp r2, #5 { 60f4: b4f0 push {r4, r5, r6, r7} 60f6: f003 071f and.w r7, r3, #31 60fa: f3c3 1545 ubfx r5, r3, #5, #6 60fe: f3c3 24c4 ubfx r4, r3, #11, #5 if(opa <= LV_OPA_MIN) return bg; 6102: d802 bhi.n 610a 6104: 4608 mov r0, r1 #endif if(opa == LV_OPA_COVER) return fg; return lv_color_mix(fg, bg, opa); } 6106: bcf0 pop {r4, r5, r6, r7} 6108: 4770 bx lr tmp = bg.ch.red + fg.ch.red; 610a: f3c0 23c4 ubfx r3, r0, #11, #5 610e: 4423 add r3, r4 tmp = bg.ch.green + fg.ch.green; 6110: f3c0 1445 ubfx r4, r0, #5, #6 6114: 442c add r4, r5 fg.ch.red = LV_MATH_MIN(tmp, 31); 6116: 2b1f cmp r3, #31 tmp = bg.ch.blue + fg.ch.blue; 6118: f000 051f and.w r5, r0, #31 611c: 443d add r5, r7 fg.ch.red = LV_MATH_MIN(tmp, 31); 611e: bf28 it cs 6120: 231f movcs r3, #31 fg.ch.green = LV_MATH_MIN(tmp, 63); 6122: 2c3f cmp r4, #63 ; 0x3f 6124: bf28 it cs 6126: 243f movcs r4, #63 ; 0x3f fg.ch.blue = LV_MATH_MIN(tmp, 31); 6128: 2d1f cmp r5, #31 612a: bf28 it cs 612c: 251f movcs r5, #31 if(opa == LV_OPA_COVER) return fg; 612e: 2aff cmp r2, #255 ; 0xff fg.ch.red = LV_MATH_MIN(tmp, 31); 6130: f003 031f and.w r3, r3, #31 fg.ch.green = LV_MATH_MIN(tmp, 63); 6134: f004 043f and.w r4, r4, #63 ; 0x3f fg.ch.blue = LV_MATH_MIN(tmp, 31); 6138: f005 051f and.w r5, r5, #31 if(opa == LV_OPA_COVER) return fg; 613c: d108 bne.n 6150 613e: f04f 0000 mov.w r0, #0 6142: f365 0004 bfi r0, r5, #0, #5 6146: f364 104a bfi r0, r4, #5, #6 614a: f363 20cf bfi r0, r3, #11, #5 614e: e7da b.n 6106 return lv_color_mix(fg, bg, opa); 6150: f365 0004 bfi r0, r5, #0, #5 6154: f364 104a bfi r0, r4, #5, #6 6158: f363 20cf bfi r0, r3, #11, #5 } 615c: bcf0 pop {r4, r5, r6, r7} return lv_color_mix(fg, bg, opa); 615e: 4b01 ldr r3, [pc, #4] ; (6164 ) 6160: 4718 bx r3 6162: bf00 nop 6164: 000060a1 .word 0x000060a1 00006168 : static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 6168: 460b mov r3, r1 if(opa <= LV_OPA_MIN) return bg; 616a: 2a05 cmp r2, #5 { 616c: b4f0 push {r4, r5, r6, r7} 616e: f003 061f and.w r6, r3, #31 6172: f3c3 1545 ubfx r5, r3, #5, #6 6176: f3c3 24c4 ubfx r4, r3, #11, #5 if(opa <= LV_OPA_MIN) return bg; 617a: d802 bhi.n 6182 617c: 4608 mov r0, r1 fg.ch.blue = LV_MATH_MAX(tmp, 0); if(opa == LV_OPA_COVER) return fg; return lv_color_mix(fg, bg, opa); } 617e: bcf0 pop {r4, r5, r6, r7} 6180: 4770 bx lr tmp = bg.ch.red - fg.ch.red; 6182: f3c0 23c4 ubfx r3, r0, #11, #5 6186: 1ae3 subs r3, r4, r3 tmp = bg.ch.green - fg.ch.green; 6188: f3c0 1445 ubfx r4, r0, #5, #6 618c: 1b2c subs r4, r5, r4 tmp = bg.ch.blue - fg.ch.blue; 618e: f000 051f and.w r5, r0, #31 6192: 1b75 subs r5, r6, r5 fg.ch.red = LV_MATH_MAX(tmp, 0); 6194: ea23 73e3 bic.w r3, r3, r3, asr #31 fg.ch.green = LV_MATH_MAX(tmp, 0); 6198: ea24 74e4 bic.w r4, r4, r4, asr #31 fg.ch.blue = LV_MATH_MAX(tmp, 0); 619c: ea25 75e5 bic.w r5, r5, r5, asr #31 if(opa == LV_OPA_COVER) return fg; 61a0: 2aff cmp r2, #255 ; 0xff fg.ch.red = LV_MATH_MAX(tmp, 0); 61a2: f003 031f and.w r3, r3, #31 fg.ch.green = LV_MATH_MAX(tmp, 0); 61a6: f004 043f and.w r4, r4, #63 ; 0x3f fg.ch.blue = LV_MATH_MAX(tmp, 0); 61aa: f005 051f and.w r5, r5, #31 if(opa == LV_OPA_COVER) return fg; 61ae: d108 bne.n 61c2 61b0: f04f 0000 mov.w r0, #0 61b4: f365 0004 bfi r0, r5, #0, #5 61b8: f364 104a bfi r0, r4, #5, #6 61bc: f363 20cf bfi r0, r3, #11, #5 61c0: e7dd b.n 617e return lv_color_mix(fg, bg, opa); 61c2: f365 0004 bfi r0, r5, #0, #5 61c6: f364 104a bfi r0, r4, #5, #6 61ca: f363 20cf bfi r0, r3, #11, #5 } 61ce: bcf0 pop {r4, r5, r6, r7} return lv_color_mix(fg, bg, opa); 61d0: 4b00 ldr r3, [pc, #0] ; (61d4 ) 61d2: 4718 bx r3 61d4: 000060a1 .word 0x000060a1 000061d8 <_lv_blend_fill>: { 61d8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 61dc: b08d sub sp, #52 ; 0x34 61de: 4605 mov r5, r0 61e0: 9306 str r3, [sp, #24] 61e2: f89d 305c ldrb.w r3, [sp, #92] ; 0x5c 61e6: f89d 7058 ldrb.w r7, [sp, #88] ; 0x58 61ea: f89d b060 ldrb.w fp, [sp, #96] ; 0x60 61ee: 9305 str r3, [sp, #20] if(opa < LV_OPA_MIN) return; 61f0: 2b04 cmp r3, #4 { 61f2: 468a mov sl, r1 61f4: 4614 mov r4, r2 if(opa < LV_OPA_MIN) return; 61f6: f240 80a5 bls.w 6344 <_lv_blend_fill+0x16c> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 61fa: 2f00 cmp r7, #0 61fc: f000 80a2 beq.w 6344 <_lv_blend_fill+0x16c> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6200: 4ba4 ldr r3, [pc, #656] ; (6494 <_lv_blend_fill+0x2bc>) 6202: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6204: 4ba4 ldr r3, [pc, #656] ; (6498 <_lv_blend_fill+0x2c0>) lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6206: 4606 mov r6, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6208: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 620a: 4ba4 ldr r3, [pc, #656] ; (649c <_lv_blend_fill+0x2c4>) lv_color_t * disp_buf = vdb->buf_act; 620c: f8d0 9008 ldr.w r9, [r0, #8] lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6210: 4680 mov r8, r0 is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 6212: 4652 mov r2, sl 6214: 4629 mov r1, r5 6216: a80a add r0, sp, #40 ; 0x28 6218: 4798 blx r3 if(!is_common) return; 621a: 2800 cmp r0, #0 621c: f000 8092 beq.w 6344 <_lv_blend_fill+0x16c> draw_area.x1 -= disp_area->x1; 6220: f8bd 1028 ldrh.w r1, [sp, #40] ; 0x28 6224: f8b8 0010 ldrh.w r0, [r8, #16] draw_area.x2 -= disp_area->x1; 6228: f8bd 202c ldrh.w r2, [sp, #44] ; 0x2c draw_area.y1 -= disp_area->y1; 622c: f8b8 c012 ldrh.w ip, [r8, #18] 6230: f8bd 502a ldrh.w r5, [sp, #42] ; 0x2a draw_area.x1 -= disp_area->x1; 6234: 1a0b subs r3, r1, r0 draw_area.x2 -= disp_area->x1; 6236: 1a10 subs r0, r2, r0 6238: f8ad 002c strh.w r0, [sp, #44] ; 0x2c draw_area.y2 -= disp_area->y1; 623c: f8bd 002e ldrh.w r0, [sp, #46] ; 0x2e draw_area.y1 -= disp_area->y1; 6240: eba5 050c sub.w r5, r5, ip draw_area.y2 -= disp_area->y1; 6244: eba0 0c0c sub.w ip, r0, ip if(mask && disp->driver.antialiasing == 0) 6248: 9806 ldr r0, [sp, #24] draw_area.y2 -= disp_area->y1; 624a: f8ad c02e strh.w ip, [sp, #46] ; 0x2e draw_area.x1 -= disp_area->x1; 624e: b21b sxth r3, r3 draw_area.y1 -= disp_area->y1; 6250: b22d sxth r5, r5 draw_area.x1 -= disp_area->x1; 6252: 9307 str r3, [sp, #28] 6254: f8ad 3028 strh.w r3, [sp, #40] ; 0x28 draw_area.y1 -= disp_area->y1; 6258: f8ad 502a strh.w r5, [sp, #42] ; 0x2a if(mask && disp->driver.antialiasing == 0) 625c: 2800 cmp r0, #0 625e: d140 bne.n 62e2 <_lv_blend_fill+0x10a> if(disp->driver.set_px_cb) { 6260: 6970 ldr r0, [r6, #20] 6262: 2800 cmp r0, #0 6264: d15b bne.n 631e <_lv_blend_fill+0x146> else if(mode == LV_BLEND_MODE_NORMAL) { 6266: f1bb 0f00 cmp.w fp, #0 626a: f040 821d bne.w 66a8 <_lv_blend_fill+0x4d0> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 626e: 4b89 ldr r3, [pc, #548] ; (6494 <_lv_blend_fill+0x2bc>) 6270: 4798 blx r3 * @param area_p pointer to an area * @return the width of the area (if x1 == x2 -> width = 1) */ static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p) { return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6272: f8b8 6014 ldrh.w r6, [r8, #20] 6276: f8b8 3010 ldrh.w r3, [r8, #16] 627a: f9bd 2028 ldrsh.w r2, [sp, #40] ; 0x28 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 627e: f8bd 102e ldrh.w r1, [sp, #46] ; 0x2e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6282: 3601 adds r6, #1 6284: 1af6 subs r6, r6, r3 6286: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c 628a: 3301 adds r3, #1 628c: 1a9b subs r3, r3, r2 628e: b21b sxth r3, r3 6290: 9307 str r3, [sp, #28] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 6292: f9bd 302a ldrsh.w r3, [sp, #42] ; 0x2a 6296: 3101 adds r1, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6298: b236 sxth r6, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 629a: 1ac9 subs r1, r1, r3 int32_t draw_area_h = lv_area_get_height(draw_area); 629c: b209 sxth r1, r1 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 629e: fb06 2203 mla r2, r6, r3, r2 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 62a2: 2f01 cmp r7, #1 62a4: b2a5 uxth r5, r4 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 62a6: 4682 mov sl, r0 int32_t draw_area_h = lv_area_get_height(draw_area); 62a8: 9108 str r1, [sp, #32] lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 62aa: eb09 0842 add.w r8, r9, r2, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 62ae: f040 812f bne.w 6510 <_lv_blend_fill+0x338> if(opa > LV_OPA_MAX) { 62b2: 9b05 ldr r3, [sp, #20] 62b4: 2bfa cmp r3, #250 ; 0xfa 62b6: f240 80a4 bls.w 6402 <_lv_blend_fill+0x22a> if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 62ba: 6a43 ldr r3, [r0, #36] ; 0x24 62bc: 2b00 cmp r3, #0 62be: f000 809c beq.w 63fa <_lv_blend_fill+0x222> 62c2: 4b77 ldr r3, [pc, #476] ; (64a0 <_lv_blend_fill+0x2c8>) 62c4: a80a add r0, sp, #40 ; 0x28 62c6: 4798 blx r3 62c8: 28f0 cmp r0, #240 ; 0xf0 62ca: f240 8096 bls.w 63fa <_lv_blend_fill+0x222> disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color); 62ce: f8da 5024 ldr.w r5, [sl, #36] ; 0x24 62d2: f8ad 4000 strh.w r4, [sp] 62d6: ab0a add r3, sp, #40 ; 0x28 62d8: 4632 mov r2, r6 62da: 4649 mov r1, r9 62dc: 4650 mov r0, sl 62de: 47a8 blx r5 return; 62e0: e030 b.n 6344 <_lv_blend_fill+0x16c> if(mask && disp->driver.antialiasing == 0) 62e2: 7a30 ldrb r0, [r6, #8] 62e4: 07c3 lsls r3, r0, #31 62e6: d4bb bmi.n 6260 <_lv_blend_fill+0x88> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 62e8: 9806 ldr r0, [sp, #24] for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 62ea: 9b06 ldr r3, [sp, #24] 62ec: f102 0a01 add.w sl, r2, #1 62f0: ebaa 0a01 sub.w sl, sl, r1 int32_t mask_w = lv_area_get_width(&draw_area); 62f4: fa0f fa8a sxth.w sl, sl for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 62f8: 3801 subs r0, #1 62fa: f1c3 0e01 rsb lr, r3, #1 62fe: eb0e 0c00 add.w ip, lr, r0 6302: 45e2 cmp sl, ip 6304: ddac ble.n 6260 <_lv_blend_fill+0x88> 6306: f810 cf01 ldrb.w ip, [r0, #1]! 630a: f1bc 0f80 cmp.w ip, #128 ; 0x80 630e: f04f 3cff mov.w ip, #4294967295 ; 0xffffffff 6312: bf98 it ls 6314: f04f 0c00 movls.w ip, #0 6318: f880 c000 strb.w ip, [r0] 631c: e7ef b.n 62fe <_lv_blend_fill+0x126> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 631e: 4b5d ldr r3, [pc, #372] ; (6494 <_lv_blend_fill+0x2bc>) 6320: 4798 blx r3 6322: f8b8 2014 ldrh.w r2, [r8, #20] 6326: f8b8 3010 ldrh.w r3, [r8, #16] 632a: f9bd 502a ldrsh.w r5, [sp, #42] ; 0x2a 632e: 3201 adds r2, #1 6330: 1ad2 subs r2, r2, r3 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6332: 2f01 cmp r7, #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6334: 4606 mov r6, r0 6336: b212 sxth r2, r2 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6338: d121 bne.n 637e <_lv_blend_fill+0x1a6> for(y = draw_area->y1; y <= draw_area->y2; y++) { 633a: 46aa mov sl, r5 633c: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6340: 459a cmp sl, r3 6342: dd02 ble.n 634a <_lv_blend_fill+0x172> } 6344: b00d add sp, #52 ; 0x34 6346: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} for(x = draw_area->x1; x <= draw_area->x2; x++) { 634a: f9bd 7028 ldrsh.w r7, [sp, #40] ; 0x28 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 634e: fa0f f88a sxth.w r8, sl for(x = draw_area->x1; x <= draw_area->x2; x++) { 6352: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c 6356: 429f cmp r7, r3 6358: dd02 ble.n 6360 <_lv_blend_fill+0x188> for(y = draw_area->y1; y <= draw_area->y2; y++) { 635a: f10a 0a01 add.w sl, sl, #1 635e: e7ed b.n 633c <_lv_blend_fill+0x164> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 6360: 9b05 ldr r3, [sp, #20] 6362: 9302 str r3, [sp, #8] 6364: f8ad 4004 strh.w r4, [sp, #4] 6368: f8cd 8000 str.w r8, [sp] 636c: b23b sxth r3, r7 636e: 6975 ldr r5, [r6, #20] 6370: 9206 str r2, [sp, #24] 6372: 4649 mov r1, r9 6374: 4630 mov r0, r6 6376: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6378: 3701 adds r7, #1 637a: 9a06 ldr r2, [sp, #24] 637c: e7e9 b.n 6352 <_lv_blend_fill+0x17a> 637e: f8bd 802c ldrh.w r8, [sp, #44] ; 0x2c const lv_opa_t * mask_tmp = mask - draw_area->x1; 6382: f9bd 3028 ldrsh.w r3, [sp, #40] ; 0x28 6386: 9906 ldr r1, [sp, #24] 6388: f108 0801 add.w r8, r8, #1 638c: 1ac9 subs r1, r1, r3 638e: eba8 0803 sub.w r8, r8, r3 6392: 9106 str r1, [sp, #24] 6394: fa0f f888 sxth.w r8, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6398: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 639c: 429d cmp r5, r3 639e: dcd1 bgt.n 6344 <_lv_blend_fill+0x16c> for(x = draw_area->x1; x <= draw_area->x2; x++) { 63a0: f9bd a028 ldrsh.w sl, [sp, #40] ; 0x28 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 63a4: fa0f fb85 sxth.w fp, r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 63a8: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c 63ac: 459a cmp sl, r3 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 63ae: 9b06 ldr r3, [sp, #24] for(x = draw_area->x1; x <= draw_area->x2; x++) { 63b0: dd03 ble.n 63ba <_lv_blend_fill+0x1e2> mask_tmp += draw_area_w; 63b2: 4443 add r3, r8 63b4: 9306 str r3, [sp, #24] for(y = draw_area->y1; y <= draw_area->y2; y++) { 63b6: 3501 adds r5, #1 63b8: e7ee b.n 6398 <_lv_blend_fill+0x1c0> (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 63ba: f813 300a ldrb.w r3, [r3, sl] 63be: 9905 ldr r1, [sp, #20] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 63c0: f8ad 4004 strh.w r4, [sp, #4] (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 63c4: fb13 f301 smulbb r3, r3, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 63c8: 0a1b lsrs r3, r3, #8 63ca: 9302 str r3, [sp, #8] 63cc: f8cd b000 str.w fp, [sp] 63d0: fa0f f38a sxth.w r3, sl 63d4: 6977 ldr r7, [r6, #20] 63d6: 9207 str r2, [sp, #28] 63d8: 4649 mov r1, r9 63da: 4630 mov r0, r6 63dc: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 63de: f10a 0a01 add.w sl, sl, #1 63e2: 9a07 ldr r2, [sp, #28] 63e4: e7e0 b.n 63a8 <_lv_blend_fill+0x1d0> lv_color_fill(disp_buf_first, color, draw_area_w); 63e6: 4640 mov r0, r8 63e8: 9a07 ldr r2, [sp, #28] 63ea: 4629 mov r1, r5 63ec: 47b8 blx r7 disp_buf_first += disp_w; 63ee: 44b0 add r8, r6 for(y = 0; y < draw_area_h; y++) { 63f0: 3401 adds r4, #1 63f2: 9b08 ldr r3, [sp, #32] 63f4: 42a3 cmp r3, r4 63f6: dcf6 bgt.n 63e6 <_lv_blend_fill+0x20e> 63f8: e7a4 b.n 6344 <_lv_blend_fill+0x16c> lv_color_fill(disp_buf_first, color, draw_area_w); 63fa: 4f2a ldr r7, [pc, #168] ; (64a4 <_lv_blend_fill+0x2cc>) disp_buf_first += disp_w; 63fc: 0076 lsls r6, r6, #1 63fe: 2400 movs r4, #0 6400: e7f7 b.n 63f2 <_lv_blend_fill+0x21a> if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 6402: 6a03 ldr r3, [r0, #32] 6404: b30b cbz r3, 644a <_lv_blend_fill+0x272> 6406: 4b26 ldr r3, [pc, #152] ; (64a0 <_lv_blend_fill+0x2c8>) 6408: a80a add r0, sp, #40 ; 0x28 640a: 4798 blx r3 640c: 28f0 cmp r0, #240 ; 0xf0 640e: d91c bls.n 644a <_lv_blend_fill+0x272> 6410: 4b25 ldr r3, [pc, #148] ; (64a8 <_lv_blend_fill+0x2d0>) for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 6412: 9a07 ldr r2, [sp, #28] 6414: 455a cmp r2, fp 6416: dc13 bgt.n 6440 <_lv_blend_fill+0x268> for(y = draw_area->y1; y <= draw_area->y2; y++) { 6418: f9bd 502a ldrsh.w r5, [sp, #42] ; 0x2a disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 641c: 4f22 ldr r7, [pc, #136] ; (64a8 <_lv_blend_fill+0x2d0>) disp_buf_first += disp_w; 641e: 0076 lsls r6, r6, #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6420: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6424: 429d cmp r5, r3 6426: dc8d bgt.n 6344 <_lv_blend_fill+0x16c> disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 6428: 9b05 ldr r3, [sp, #20] 642a: 9300 str r3, [sp, #0] 642c: 4641 mov r1, r8 642e: f8da 4020 ldr.w r4, [sl, #32] 6432: 9b07 ldr r3, [sp, #28] 6434: 463a mov r2, r7 6436: 4650 mov r0, sl 6438: 47a0 blx r4 disp_buf_first += disp_w; 643a: 44b0 add r8, r6 for(y = draw_area->y1; y <= draw_area->y2; y++) { 643c: 3501 adds r5, #1 643e: e7ef b.n 6420 <_lv_blend_fill+0x248> for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 6440: f823 5b02 strh.w r5, [r3], #2 6444: f10b 0b01 add.w fp, fp, #1 6448: e7e3 b.n 6412 <_lv_blend_fill+0x23a> lv_color_t last_dest_color = LV_COLOR_BLACK; 644a: f04f 0700 mov.w r7, #0 lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 644e: 9a05 ldr r2, [sp, #20] 6450: 4b16 ldr r3, [pc, #88] ; (64ac <_lv_blend_fill+0x2d4>) 6452: 4620 mov r0, r4 6454: 4639 mov r1, r7 6456: 4798 blx r3 LV_ATTRIBUTE_FAST_MEM static inline void lv_color_premult(lv_color_t c, uint8_t mix, uint16_t * out) { #if LV_COLOR_DEPTH != 1 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 6458: f3c4 2bc4 ubfx fp, r4, #11, #5 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 645c: f3c4 1a45 ubfx sl, r4, #5, #6 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 6460: f004 041f and.w r4, r4, #31 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 6464: fb0b fb02 mul.w fp, fp, r2 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 6468: fb0a fa02 mul.w sl, sl, r2 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 646c: 4354 muls r4, r2 disp_buf_first += disp_w; 646e: 0073 lsls r3, r6, #1 lv_opa_t opa_inv = 255 - opa; 6470: 43d2 mvns r2, r2 lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 6472: f000 051f and.w r5, r0, #31 6476: f3c0 1c45 ubfx ip, r0, #5, #6 disp_buf_first += disp_w; 647a: 9305 str r3, [sp, #20] lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 647c: f3c0 20c4 ubfx r0, r0, #11, #5 for(y = 0; y < draw_area_h; y++) { 6480: f04f 0e00 mov.w lr, #0 LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix_premult(uint16_t * premult_c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 6484: b2d2 uxtb r2, r2 6486: 9b08 ldr r3, [sp, #32] 6488: 4573 cmp r3, lr 648a: f77f af5b ble.w 6344 <_lv_blend_fill+0x16c> 648e: 4643 mov r3, r8 for(x = 0; x < draw_area_w; x++) { 6490: 2600 movs r6, #0 6492: e035 b.n 6500 <_lv_blend_fill+0x328> 6494: 00004fdd .word 0x00004fdd 6498: 0000da25 .word 0x0000da25 649c: 0000ded1 .word 0x0000ded1 64a0: 0000deb5 .word 0x0000deb5 64a4: 0000e351 .word 0x0000e351 64a8: 20008108 .word 0x20008108 64ac: 000060a1 .word 0x000060a1 if(last_dest_color.full != disp_buf_first[x].full) { 64b0: 8819 ldrh r1, [r3, #0] 64b2: fa1f f987 uxth.w r9, r7 64b6: 4589 cmp r9, r1 64b8: d013 beq.n 64e2 <_lv_blend_fill+0x30a> 64ba: 7858 ldrb r0, [r3, #1] LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 64bc: 781d ldrb r5, [r3, #0] LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 64be: 08c0 lsrs r0, r0, #3 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 64c0: f3c1 1c45 ubfx ip, r1, #5, #6 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 64c4: f005 051f and.w r5, r5, #31 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 64c8: fb00 b002 mla r0, r0, r2, fp LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 64cc: fb0c ac02 mla ip, ip, r2, sl LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 64d0: fb05 4502 mla r5, r5, r2, r4 last_dest_color = disp_buf_first[x]; 64d4: 460f mov r7, r1 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 64d6: f3c0 2004 ubfx r0, r0, #8, #5 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 64da: f3cc 2c05 ubfx ip, ip, #8, #6 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 64de: f3c5 2504 ubfx r5, r5, #8, #5 disp_buf_first[x] = last_res_color; 64e2: 7819 ldrb r1, [r3, #0] 64e4: f365 0104 bfi r1, r5, #0, #5 64e8: 7019 strb r1, [r3, #0] 64ea: 8819 ldrh r1, [r3, #0] 64ec: f36c 114a bfi r1, ip, #5, #6 64f0: 8019 strh r1, [r3, #0] 64f2: f3c1 2107 ubfx r1, r1, #8, #8 64f6: f360 01c7 bfi r1, r0, #3, #5 64fa: 7059 strb r1, [r3, #1] for(x = 0; x < draw_area_w; x++) { 64fc: 3601 adds r6, #1 64fe: 3302 adds r3, #2 6500: 9907 ldr r1, [sp, #28] 6502: 42b1 cmp r1, r6 6504: dcd4 bgt.n 64b0 <_lv_blend_fill+0x2d8> disp_buf_first += disp_w; 6506: 9b05 ldr r3, [sp, #20] for(y = 0; y < draw_area_h; y++) { 6508: f10e 0e01 add.w lr, lr, #1 disp_buf_first += disp_w; 650c: 4498 add r8, r3 for(y = 0; y < draw_area_h; y++) { 650e: e7ba b.n 6486 <_lv_blend_fill+0x2ae> disp_buf_first += disp_w; 6510: 0071 lsls r1, r6, #1 6512: 9109 str r1, [sp, #36] ; 0x24 if(opa > LV_OPA_MAX) { 6514: 9905 ldr r1, [sp, #20] 6516: 29fa cmp r1, #250 ; 0xfa 6518: d810 bhi.n 653c <_lv_blend_fill+0x364> last_dest_color.full = disp_buf_first[0].full; 651a: f839 c012 ldrh.w ip, [r9, r2, lsl #1] else last_res_color = lv_color_mix(color, disp_buf_first[x], opa_tmp); 651e: f8df 9298 ldr.w r9, [pc, #664] ; 67b8 <_lv_blend_fill+0x5e0> last_res_color.full = disp_buf_first[0].full; 6522: 4660 mov r0, ip lv_opa_t opa_tmp = LV_OPA_TRANSP; 6524: 465a mov r2, fp for(y = draw_area->y1; y <= draw_area->y2; y++) { 6526: f9bd 102e ldrsh.w r1, [sp, #46] ; 0x2e 652a: 428b cmp r3, r1 652c: f73f af0a bgt.w 6344 <_lv_blend_fill+0x16c> 6530: 9906 ldr r1, [sp, #24] 6532: 4644 mov r4, r8 6534: 1e4e subs r6, r1, #1 for(x = 0; x < draw_area_w; x++) { 6536: f1c1 0a01 rsb sl, r1, #1 653a: e0a9 b.n 6690 <_lv_blend_fill+0x4b8> int32_t x_end4 = draw_area_w - 4; 653c: 9b07 ldr r3, [sp, #28] FILL_NORMAL_MASK_PX(x, color) 653e: 4f9e ldr r7, [pc, #632] ; (67b8 <_lv_blend_fill+0x5e0>) int32_t x_end4 = draw_area_w - 4; 6540: 3b04 subs r3, #4 6542: 9305 str r3, [sp, #20] for(y = 0; y < draw_area_h; y++) { 6544: 9b08 ldr r3, [sp, #32] 6546: 455b cmp r3, fp 6548: f77f aefc ble.w 6344 <_lv_blend_fill+0x16c> 654c: f8dd a018 ldr.w sl, [sp, #24] 6550: 46c1 mov r9, r8 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6552: 2400 movs r4, #0 6554: e009 b.n 656a <_lv_blend_fill+0x392> FILL_NORMAL_MASK_PX(x, color) 6556: f81a 2b01 ldrb.w r2, [sl], #1 655a: b11a cbz r2, 6564 <_lv_blend_fill+0x38c> 655c: 2aff cmp r2, #255 ; 0xff 655e: d11f bne.n 65a0 <_lv_blend_fill+0x3c8> 6560: f8a9 5000 strh.w r5, [r9] for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6564: 3401 adds r4, #1 6566: f109 0902 add.w r9, r9, #2 656a: 9b07 ldr r3, [sp, #28] 656c: 42a3 cmp r3, r4 656e: 4656 mov r6, sl 6570: dd02 ble.n 6578 <_lv_blend_fill+0x3a0> 6572: f01a 0f03 tst.w sl, #3 6576: d1ee bne.n 6556 <_lv_blend_fill+0x37e> 6578: eb08 0944 add.w r9, r8, r4, lsl #1 for(; x <= x_end4; x += 4) { 657c: 9b05 ldr r3, [sp, #20] 657e: 42a3 cmp r3, r4 6580: da15 bge.n 65ae <_lv_blend_fill+0x3d6> 6582: eb08 0944 add.w r9, r8, r4, lsl #1 6586: 3e01 subs r6, #1 for(; x < draw_area_w ; x++) { 6588: 9b07 ldr r3, [sp, #28] 658a: 42a3 cmp r3, r4 658c: dc53 bgt.n 6636 <_lv_blend_fill+0x45e> disp_buf_first += disp_w; 658e: 9b09 ldr r3, [sp, #36] ; 0x24 6590: 4498 add r8, r3 mask += draw_area_w; 6592: e9dd 3206 ldrd r3, r2, [sp, #24] 6596: 4413 add r3, r2 6598: 9306 str r3, [sp, #24] for(y = 0; y < draw_area_h; y++) { 659a: f10b 0b01 add.w fp, fp, #1 659e: e7d1 b.n 6544 <_lv_blend_fill+0x36c> FILL_NORMAL_MASK_PX(x, color) 65a0: f8b9 1000 ldrh.w r1, [r9] 65a4: 4628 mov r0, r5 65a6: 47b8 blx r7 65a8: f8a9 0000 strh.w r0, [r9] 65ac: e7da b.n 6564 <_lv_blend_fill+0x38c> if(*mask32) { 65ae: 6833 ldr r3, [r6, #0] 65b0: b14b cbz r3, 65c6 <_lv_blend_fill+0x3ee> if((*mask32) == 0xFFFFFFFF) { 65b2: 3301 adds r3, #1 65b4: d10c bne.n 65d0 <_lv_blend_fill+0x3f8> disp_buf_first[x] = color; 65b6: f8a9 5000 strh.w r5, [r9] disp_buf_first[x + 1] = color; 65ba: f8a9 5002 strh.w r5, [r9, #2] disp_buf_first[x + 2] = color; 65be: f8a9 5004 strh.w r5, [r9, #4] FILL_NORMAL_MASK_PX(x + 3, color) 65c2: f8a9 5006 strh.w r5, [r9, #6] mask32++; 65c6: 3604 adds r6, #4 for(; x <= x_end4; x += 4) { 65c8: 3404 adds r4, #4 65ca: f109 0908 add.w r9, r9, #8 65ce: e7d5 b.n 657c <_lv_blend_fill+0x3a4> FILL_NORMAL_MASK_PX(x, color) 65d0: 7832 ldrb r2, [r6, #0] 65d2: b11a cbz r2, 65dc <_lv_blend_fill+0x404> 65d4: 2aff cmp r2, #255 ; 0xff 65d6: d119 bne.n 660c <_lv_blend_fill+0x434> 65d8: f8a9 5000 strh.w r5, [r9] FILL_NORMAL_MASK_PX(x + 1, color) 65dc: 7872 ldrb r2, [r6, #1] 65de: b11a cbz r2, 65e8 <_lv_blend_fill+0x410> 65e0: 2aff cmp r2, #255 ; 0xff 65e2: d11a bne.n 661a <_lv_blend_fill+0x442> 65e4: f8a9 5002 strh.w r5, [r9, #2] FILL_NORMAL_MASK_PX(x + 2, color) 65e8: 78b2 ldrb r2, [r6, #2] 65ea: b11a cbz r2, 65f4 <_lv_blend_fill+0x41c> 65ec: 2aff cmp r2, #255 ; 0xff 65ee: d11b bne.n 6628 <_lv_blend_fill+0x450> 65f0: f8a9 5004 strh.w r5, [r9, #4] FILL_NORMAL_MASK_PX(x + 3, color) 65f4: 78f2 ldrb r2, [r6, #3] 65f6: 2a00 cmp r2, #0 65f8: d0e5 beq.n 65c6 <_lv_blend_fill+0x3ee> 65fa: 2aff cmp r2, #255 ; 0xff 65fc: d0e1 beq.n 65c2 <_lv_blend_fill+0x3ea> 65fe: f8b9 1006 ldrh.w r1, [r9, #6] 6602: 4628 mov r0, r5 6604: 47b8 blx r7 6606: f8a9 0006 strh.w r0, [r9, #6] 660a: e7dc b.n 65c6 <_lv_blend_fill+0x3ee> FILL_NORMAL_MASK_PX(x, color) 660c: f8b9 1000 ldrh.w r1, [r9] 6610: 4628 mov r0, r5 6612: 47b8 blx r7 6614: f8a9 0000 strh.w r0, [r9] 6618: e7e0 b.n 65dc <_lv_blend_fill+0x404> FILL_NORMAL_MASK_PX(x + 1, color) 661a: f8b9 1002 ldrh.w r1, [r9, #2] 661e: 4628 mov r0, r5 6620: 47b8 blx r7 6622: f8a9 0002 strh.w r0, [r9, #2] 6626: e7df b.n 65e8 <_lv_blend_fill+0x410> FILL_NORMAL_MASK_PX(x + 2, color) 6628: f8b9 1004 ldrh.w r1, [r9, #4] 662c: 4628 mov r0, r5 662e: 47b8 blx r7 6630: f8a9 0004 strh.w r0, [r9, #4] 6634: e7de b.n 65f4 <_lv_blend_fill+0x41c> FILL_NORMAL_MASK_PX(x, color) 6636: f816 2f01 ldrb.w r2, [r6, #1]! 663a: b11a cbz r2, 6644 <_lv_blend_fill+0x46c> 663c: 2aff cmp r2, #255 ; 0xff 663e: d105 bne.n 664c <_lv_blend_fill+0x474> 6640: f8a9 5000 strh.w r5, [r9] for(; x < draw_area_w ; x++) { 6644: 3401 adds r4, #1 6646: f109 0902 add.w r9, r9, #2 664a: e79d b.n 6588 <_lv_blend_fill+0x3b0> FILL_NORMAL_MASK_PX(x, color) 664c: f8b9 1000 ldrh.w r1, [r9] 6650: 4628 mov r0, r5 6652: 47b8 blx r7 6654: f8a9 0000 strh.w r0, [r9] 6658: e7f4 b.n 6644 <_lv_blend_fill+0x46c> if(*mask_tmp_x) { 665a: f816 1f01 ldrb.w r1, [r6, #1]! 665e: b1b1 cbz r1, 668e <_lv_blend_fill+0x4b6> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 6660: 4559 cmp r1, fp 6662: d010 beq.n 6686 <_lv_blend_fill+0x4ae> 6664: 29ff cmp r1, #255 ; 0xff (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 6666: 9a05 ldr r2, [sp, #20] if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 6668: d002 beq.n 6670 <_lv_blend_fill+0x498> (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 666a: fb11 f202 smulbb r2, r1, r2 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 666e: 0a12 lsrs r2, r2, #8 else last_res_color = lv_color_mix(color, disp_buf_first[x], opa_tmp); 6670: 8821 ldrh r1, [r4, #0] 6672: 9308 str r3, [sp, #32] 6674: 4628 mov r0, r5 6676: 47c8 blx r9 last_mask = *mask_tmp_x; 6678: f896 b000 ldrb.w fp, [r6] last_dest_color.full = disp_buf_first[x].full; 667c: f8b4 c000 ldrh.w ip, [r4] 6680: 9b08 ldr r3, [sp, #32] else last_res_color = lv_color_mix(color, disp_buf_first[x], opa_tmp); 6682: b280 uxth r0, r0 last_dest_color.full = disp_buf_first[x].full; 6684: e002 b.n 668c <_lv_blend_fill+0x4b4> if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 6686: 8821 ldrh r1, [r4, #0] 6688: 4561 cmp r1, ip 668a: d1f1 bne.n 6670 <_lv_blend_fill+0x498> disp_buf_first[x] = last_res_color; 668c: 8020 strh r0, [r4, #0] for(x = 0; x < draw_area_w; x++) { 668e: 3402 adds r4, #2 6690: 9f07 ldr r7, [sp, #28] 6692: eb0a 0106 add.w r1, sl, r6 6696: 428f cmp r7, r1 6698: dcdf bgt.n 665a <_lv_blend_fill+0x482> disp_buf_first += disp_w; 669a: 9909 ldr r1, [sp, #36] ; 0x24 669c: 4488 add r8, r1 mask += draw_area_w; 669e: 9906 ldr r1, [sp, #24] 66a0: 4439 add r1, r7 66a2: 9106 str r1, [sp, #24] for(y = draw_area->y1; y <= draw_area->y2; y++) { 66a4: 3301 adds r3, #1 66a6: e73e b.n 6526 <_lv_blend_fill+0x34e> switch(mode) { 66a8: f1bb 0f01 cmp.w fp, #1 66ac: f9b8 0010 ldrsh.w r0, [r8, #16] 66b0: f9b8 6014 ldrsh.w r6, [r8, #20] 66b4: d00c beq.n 66d0 <_lv_blend_fill+0x4f8> 66b6: f1bb 0f02 cmp.w fp, #2 66ba: d02f beq.n 671c <_lv_blend_fill+0x544> LV_LOG_WARN("fill_blended: unsupported blend mode"); 66bc: 4b3f ldr r3, [pc, #252] ; (67bc <_lv_blend_fill+0x5e4>) 66be: 9300 str r3, [sp, #0] 66c0: 493f ldr r1, [pc, #252] ; (67c0 <_lv_blend_fill+0x5e8>) 66c2: 4b40 ldr r3, [pc, #256] ; (67c4 <_lv_blend_fill+0x5ec>) 66c4: 4c40 ldr r4, [pc, #256] ; (67c8 <_lv_blend_fill+0x5f0>) 66c6: f44f 7204 mov.w r2, #528 ; 0x210 66ca: 2002 movs r0, #2 66cc: 47a0 blx r4 return; 66ce: e639 b.n 6344 <_lv_blend_fill+0x16c> blend_fp = color_blend_true_color_additive; 66d0: f8df b0f8 ldr.w fp, [pc, #248] ; 67cc <_lv_blend_fill+0x5f4> 66d4: 3601 adds r6, #1 66d6: 1a36 subs r6, r6, r0 66d8: b236 sxth r6, r6 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 66da: fb06 f005 mul.w r0, r6, r5 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 66de: 2f01 cmp r7, #1 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 66e0: eb09 0a40 add.w sl, r9, r0, lsl #1 disp_buf_tmp += disp_w; 66e4: ea4f 0646 mov.w r6, r6, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 66e8: d129 bne.n 673e <_lv_blend_fill+0x566> lv_color_t last_dest_color = LV_COLOR_BLACK; 66ea: f04f 0800 mov.w r8, #0 lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 66ee: 9a05 ldr r2, [sp, #20] 66f0: 4b31 ldr r3, [pc, #196] ; (67b8 <_lv_blend_fill+0x5e0>) 66f2: 4641 mov r1, r8 66f4: 4620 mov r0, r4 66f6: 4798 blx r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 66f8: f9bd 702a ldrsh.w r7, [sp, #42] ; 0x2a 66fc: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6700: 429f cmp r7, r3 6702: f73f ae1f bgt.w 6344 <_lv_blend_fill+0x16c> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6706: f9bd 5028 ldrsh.w r5, [sp, #40] ; 0x28 670a: eb0a 0945 add.w r9, sl, r5, lsl #1 670e: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c 6712: 429d cmp r5, r3 6714: dd05 ble.n 6722 <_lv_blend_fill+0x54a> disp_buf_tmp += disp_w; 6716: 44b2 add sl, r6 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6718: 3701 adds r7, #1 671a: e7ef b.n 66fc <_lv_blend_fill+0x524> switch(mode) { 671c: f8df b0b0 ldr.w fp, [pc, #176] ; 67d0 <_lv_blend_fill+0x5f8> 6720: e7d8 b.n 66d4 <_lv_blend_fill+0x4fc> if(last_dest_color.full != disp_buf_tmp[x].full) { 6722: f8b9 1000 ldrh.w r1, [r9] 6726: fa1f f388 uxth.w r3, r8 672a: 428b cmp r3, r1 672c: d003 beq.n 6736 <_lv_blend_fill+0x55e> last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 672e: 9a05 ldr r2, [sp, #20] 6730: 4620 mov r0, r4 last_dest_color = disp_buf_tmp[x]; 6732: 4688 mov r8, r1 last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 6734: 47d8 blx fp disp_buf_tmp[x] = last_res_color; 6736: f829 0b02 strh.w r0, [r9], #2 for(x = draw_area->x1; x <= draw_area->x2; x++) { 673a: 3501 adds r5, #1 673c: e7e7 b.n 670e <_lv_blend_fill+0x536> 673e: f1c1 0801 rsb r8, r1, #1 6742: 4490 add r8, r2 const lv_opa_t * mask_tmp = mask - draw_area->x1; 6744: e9dd 3206 ldrd r3, r2, [sp, #24] last_dest_color.full = disp_buf_tmp[0].full; 6748: f839 1010 ldrh.w r1, [r9, r0, lsl #1] 674c: fa0f f888 sxth.w r8, r8 const lv_opa_t * mask_tmp = mask - draw_area->x1; 6750: 1a9f subs r7, r3, r2 last_res_color.full = disp_buf_tmp[0].full; 6752: 4608 mov r0, r1 lv_opa_t last_mask = LV_OPA_TRANSP; 6754: f04f 0c00 mov.w ip, #0 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6758: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 675c: 429d cmp r5, r3 675e: f73f adf1 bgt.w 6344 <_lv_blend_fill+0x16c> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6762: f9bd 9028 ldrsh.w r9, [sp, #40] ; 0x28 6766: eb0a 0349 add.w r3, sl, r9, lsl #1 676a: f9bd 202c ldrsh.w r2, [sp, #44] ; 0x2c 676e: 4591 cmp r9, r2 6770: dd03 ble.n 677a <_lv_blend_fill+0x5a2> disp_buf_tmp += disp_w; 6772: 44b2 add sl, r6 mask_tmp += draw_area_w; 6774: 4447 add r7, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6776: 3501 adds r5, #1 6778: e7ee b.n 6758 <_lv_blend_fill+0x580> if(mask_tmp[x] == 0) continue; 677a: f817 2009 ldrb.w r2, [r7, r9] 677e: b1ba cbz r2, 67b0 <_lv_blend_fill+0x5d8> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 6780: 4562 cmp r2, ip 6782: d103 bne.n 678c <_lv_blend_fill+0x5b4> 6784: f8b3 e000 ldrh.w lr, [r3] 6788: 458e cmp lr, r1 678a: d010 beq.n 67ae <_lv_blend_fill+0x5d6> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 678c: 2af9 cmp r2, #249 ; 0xf9 678e: bf94 ite ls 6790: 9905 ldrls r1, [sp, #20] 6792: 9a05 ldrhi r2, [sp, #20] last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 6794: 9306 str r3, [sp, #24] lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 6796: bf9c itt ls 6798: fb12 f201 smulbbls r2, r2, r1 679c: 0a12 lsrls r2, r2, #8 last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 679e: 8819 ldrh r1, [r3, #0] 67a0: 4620 mov r0, r4 67a2: 47d8 blx fp last_dest_color.full = disp_buf_tmp[x].full; 67a4: 9b06 ldr r3, [sp, #24] last_mask = mask_tmp[x]; 67a6: f817 c009 ldrb.w ip, [r7, r9] last_dest_color.full = disp_buf_tmp[x].full; 67aa: 8819 ldrh r1, [r3, #0] last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 67ac: b280 uxth r0, r0 disp_buf_tmp[x] = last_res_color; 67ae: 8018 strh r0, [r3, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 67b0: f109 0901 add.w r9, r9, #1 67b4: 3302 adds r3, #2 67b6: e7d8 b.n 676a <_lv_blend_fill+0x592> 67b8: 000060a1 .word 0x000060a1 67bc: 0001fa1d .word 0x0001fa1d 67c0: 0001f9e7 .word 0x0001f9e7 67c4: 0001fa42 .word 0x0001fa42 67c8: 0000e931 .word 0x0000e931 67cc: 000060f1 .word 0x000060f1 67d0: 00006169 .word 0x00006169 000067d4 <_lv_blend_map>: { 67d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 67d8: b08f sub sp, #60 ; 0x3c 67da: 468b mov fp, r1 67dc: f89d a064 ldrb.w sl, [sp, #100] ; 0x64 67e0: 9305 str r3, [sp, #20] if(opa < LV_OPA_MIN) return; 67e2: f1ba 0f04 cmp.w sl, #4 { 67e6: f89d 3060 ldrb.w r3, [sp, #96] ; 0x60 67ea: f89d 9068 ldrb.w r9, [sp, #104] ; 0x68 67ee: 9208 str r2, [sp, #32] 67f0: 930a str r3, [sp, #40] ; 0x28 if(opa < LV_OPA_MIN) return; 67f2: f240 80d9 bls.w 69a8 <_lv_blend_map+0x1d4> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 67f6: 2b00 cmp r3, #0 67f8: f000 80d6 beq.w 69a8 <_lv_blend_map+0x1d4> is_common = _lv_area_intersect(&draw_area, clip_area, map_area); 67fc: 460a mov r2, r1 67fe: 4bb7 ldr r3, [pc, #732] ; (6adc <_lv_blend_map+0x308>) 6800: 4601 mov r1, r0 6802: a80c add r0, sp, #48 ; 0x30 6804: 4798 blx r3 if(!is_common) return; 6806: 2800 cmp r0, #0 6808: f000 80ce beq.w 69a8 <_lv_blend_map+0x1d4> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 680c: 4bb4 ldr r3, [pc, #720] ; (6ae0 <_lv_blend_map+0x30c>) 680e: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6810: 4bb4 ldr r3, [pc, #720] ; (6ae4 <_lv_blend_map+0x310>) lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6812: 4606 mov r6, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6814: 4798 blx r3 6816: 4604 mov r4, r0 lv_color_t * disp_buf = vdb->buf_act; 6818: 6883 ldr r3, [r0, #8] draw_area.y1 -= disp_area->y1; 681a: f8bd e032 ldrh.w lr, [sp, #50] ; 0x32 draw_area.y2 -= disp_area->y1; 681e: f8bd 1036 ldrh.w r1, [sp, #54] ; 0x36 lv_color_t * disp_buf = vdb->buf_act; 6822: 9307 str r3, [sp, #28] draw_area.y1 -= disp_area->y1; 6824: 8a63 ldrh r3, [r4, #18] draw_area.x1 -= disp_area->x1; 6826: f8bd 5030 ldrh.w r5, [sp, #48] ; 0x30 682a: 8a00 ldrh r0, [r0, #16] draw_area.x2 -= disp_area->x1; 682c: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 draw_area.y1 -= disp_area->y1; 6830: ebae 0803 sub.w r8, lr, r3 draw_area.y2 -= disp_area->y1; 6834: 1acb subs r3, r1, r3 draw_area.x1 -= disp_area->x1; 6836: eba5 0c00 sub.w ip, r5, r0 draw_area.y2 -= disp_area->y1; 683a: f8ad 3036 strh.w r3, [sp, #54] ; 0x36 if(mask && disp->driver.antialiasing == 0) 683e: 9b05 ldr r3, [sp, #20] draw_area.x1 -= disp_area->x1; 6840: fa0f fc8c sxth.w ip, ip draw_area.y1 -= disp_area->y1; 6844: fa0f f888 sxth.w r8, r8 draw_area.x2 -= disp_area->x1; 6848: 1a10 subs r0, r2, r0 draw_area.x1 -= disp_area->x1; 684a: f8ad c030 strh.w ip, [sp, #48] ; 0x30 draw_area.y1 -= disp_area->y1; 684e: f8ad 8032 strh.w r8, [sp, #50] ; 0x32 draw_area.x2 -= disp_area->x1; 6852: f8ad 0034 strh.w r0, [sp, #52] ; 0x34 if(mask && disp->driver.antialiasing == 0) 6856: 2b00 cmp r3, #0 6858: d15c bne.n 6914 <_lv_blend_map+0x140> if(disp->driver.set_px_cb) { 685a: 6973 ldr r3, [r6, #20] 685c: 2b00 cmp r3, #0 685e: d172 bne.n 6946 <_lv_blend_map+0x172> 6860: f1c5 0501 rsb r5, r5, #1 6864: 4415 add r5, r2 6866: b22a sxth r2, r5 6868: 8aa6 ldrh r6, [r4, #20] 686a: f8bb 7004 ldrh.w r7, [fp, #4] 686e: f9b4 3010 ldrsh.w r3, [r4, #16] 6872: f9bb 0000 ldrsh.w r0, [fp] const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6876: f9b4 4012 ldrsh.w r4, [r4, #18] 687a: 9206 str r2, [sp, #24] 687c: f9bb 2002 ldrsh.w r2, [fp, #2] 6880: 3601 adds r6, #1 6882: 3701 adds r7, #1 6884: 1af6 subs r6, r6, r3 6886: 1a3f subs r7, r7, r0 6888: 1b14 subs r4, r2, r4 688a: b236 sxth r6, r6 688c: b23f sxth r7, r7 688e: eba8 0404 sub.w r4, r8, r4 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 6892: fb06 f508 mul.w r5, r6, r8 const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6896: 437c muls r4, r7 else if(mode == LV_BLEND_MODE_NORMAL) { 6898: f1b9 0f00 cmp.w r9, #0 689c: f040 81f8 bne.w 6c90 <_lv_blend_map+0x4bc> return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 68a0: f1ce 0201 rsb r2, lr, #1 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68a4: 1ac3 subs r3, r0, r3 68a6: 440a add r2, r1 int32_t draw_area_h = lv_area_get_height(draw_area); 68a8: b212 sxth r2, r2 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 68aa: 4465 add r5, ip map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68ac: ebac 0c03 sub.w ip, ip, r3 68b0: 9b08 ldr r3, [sp, #32] int32_t draw_area_h = lv_area_get_height(draw_area); 68b2: 9209 str r2, [sp, #36] ; 0x24 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68b4: 4464 add r4, ip lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 68b6: 9a07 ldr r2, [sp, #28] map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68b8: eb03 0444 add.w r4, r3, r4, lsl #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 68bc: 4b88 ldr r3, [pc, #544] ; (6ae0 <_lv_blend_map+0x30c>) lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 68be: eb02 0545 add.w r5, r2, r5, lsl #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 68c2: 4798 blx r3 disp_buf_first += disp_w; 68c4: 0073 lsls r3, r6, #1 68c6: 9307 str r3, [sp, #28] map_buf_first += map_w; 68c8: 007b lsls r3, r7, #1 68ca: 9308 str r3, [sp, #32] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 68cc: 9b0a ldr r3, [sp, #40] ; 0x28 68ce: 2b01 cmp r3, #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 68d0: 4680 mov r8, r0 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 68d2: f040 80ed bne.w 6ab0 <_lv_blend_map+0x2dc> if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) { 68d6: 6a03 ldr r3, [r0, #32] 68d8: 2b00 cmp r3, #0 68da: f000 80ba beq.w 6a52 <_lv_blend_map+0x27e> 68de: 4b82 ldr r3, [pc, #520] ; (6ae8 <_lv_blend_map+0x314>) 68e0: a80c add r0, sp, #48 ; 0x30 68e2: 4798 blx r3 68e4: 28f0 cmp r0, #240 ; 0xf0 68e6: f240 80b4 bls.w 6a52 <_lv_blend_map+0x27e> for(y = draw_area->y1; y <= draw_area->y2; y++) { 68ea: f9bd 7032 ldrsh.w r7, [sp, #50] ; 0x32 68ee: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 68f2: 429f cmp r7, r3 68f4: dc58 bgt.n 69a8 <_lv_blend_map+0x1d4> disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa); 68f6: f8cd a000 str.w sl, [sp] 68fa: 9b06 ldr r3, [sp, #24] 68fc: f8d8 6020 ldr.w r6, [r8, #32] 6900: 4622 mov r2, r4 6902: 4629 mov r1, r5 6904: 4640 mov r0, r8 6906: 47b0 blx r6 disp_buf_first += disp_w; 6908: 9b07 ldr r3, [sp, #28] 690a: 441d add r5, r3 map_buf_first += map_w; 690c: 9b08 ldr r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 690e: 3701 adds r7, #1 map_buf_first += map_w; 6910: 441c add r4, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6912: e7ec b.n 68ee <_lv_blend_map+0x11a> if(mask && disp->driver.antialiasing == 0) 6914: 7a33 ldrb r3, [r6, #8] 6916: 07db lsls r3, r3, #31 6918: d49f bmi.n 685a <_lv_blend_map+0x86> for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 691a: 9f05 ldr r7, [sp, #20] 691c: 9805 ldr r0, [sp, #20] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 691e: 1c53 adds r3, r2, #1 6920: 1b5b subs r3, r3, r5 6922: f1c7 0701 rsb r7, r7, #1 int32_t mask_w = lv_area_get_width(&draw_area); 6926: b21b sxth r3, r3 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 6928: 3801 subs r0, #1 692a: 9706 str r7, [sp, #24] 692c: 9f06 ldr r7, [sp, #24] 692e: 4407 add r7, r0 6930: 42bb cmp r3, r7 6932: dd92 ble.n 685a <_lv_blend_map+0x86> 6934: f810 7f01 ldrb.w r7, [r0, #1]! 6938: 2f80 cmp r7, #128 ; 0x80 693a: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff 693e: bf98 it ls 6940: 2700 movls r7, #0 6942: 7007 strb r7, [r0, #0] 6944: e7f2 b.n 692c <_lv_blend_map+0x158> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6946: 4b66 ldr r3, [pc, #408] ; (6ae0 <_lv_blend_map+0x30c>) 6948: 4798 blx r3 694a: f8bb 5004 ldrh.w r5, [fp, #4] 694e: f9b4 c010 ldrsh.w ip, [r4, #16] 6952: 8aa2 ldrh r2, [r4, #20] 6954: f9bb e000 ldrsh.w lr, [fp] const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6958: f9bb 8002 ldrsh.w r8, [fp, #2] 695c: f9b4 4012 ldrsh.w r4, [r4, #18] 6960: f9bd 6032 ldrsh.w r6, [sp, #50] ; 0x32 6964: f9bd 1030 ldrsh.w r1, [sp, #48] ; 0x30 6968: 3501 adds r5, #1 696a: eba8 0404 sub.w r4, r8, r4 696e: eba5 050e sub.w r5, r5, lr 6972: b22d sxth r5, r5 6974: eba6 0804 sub.w r8, r6, r4 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6978: 4607 mov r7, r0 map_buf_tmp -= draw_area->x1; 697a: ebac 040e sub.w r4, ip, lr 697e: 9808 ldr r0, [sp, #32] 6980: fb05 4408 mla r4, r5, r8, r4 6984: eb00 0444 add.w r4, r0, r4, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6988: 980a ldr r0, [sp, #40] ; 0x28 698a: 3201 adds r2, #1 698c: eba2 020c sub.w r2, r2, ip 6990: 2801 cmp r0, #1 6992: ea4f 0045 mov.w r0, r5, lsl #1 6996: b212 sxth r2, r2 6998: f1c1 0300 rsb r3, r1, #0 699c: 9006 str r0, [sp, #24] 699e: d125 bne.n 69ec <_lv_blend_map+0x218> for(y = draw_area->y1; y <= draw_area->y2; y++) { 69a0: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 69a4: 429e cmp r6, r3 69a6: dd02 ble.n 69ae <_lv_blend_map+0x1da> } 69a8: b00f add sp, #60 ; 0x3c 69aa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} for(x = draw_area->x1; x <= draw_area->x2; x++) { 69ae: f9bd 8030 ldrsh.w r8, [sp, #48] ; 0x30 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 69b2: fa0f f986 sxth.w r9, r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 69b6: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 69ba: 4598 cmp r8, r3 69bc: dd03 ble.n 69c6 <_lv_blend_map+0x1f2> map_buf_tmp += map_w; 69be: 9b06 ldr r3, [sp, #24] for(y = draw_area->y1; y <= draw_area->y2; y++) { 69c0: 3601 adds r6, #1 map_buf_tmp += map_w; 69c2: 441c add r4, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 69c4: e7ec b.n 69a0 <_lv_blend_map+0x1cc> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 69c6: f8cd a008 str.w sl, [sp, #8] 69ca: f834 3018 ldrh.w r3, [r4, r8, lsl #1] 69ce: f8ad 3004 strh.w r3, [sp, #4] 69d2: f8cd 9000 str.w r9, [sp] 69d6: fa0f f388 sxth.w r3, r8 69da: 9907 ldr r1, [sp, #28] 69dc: 697d ldr r5, [r7, #20] 69de: 9205 str r2, [sp, #20] 69e0: 4638 mov r0, r7 69e2: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 69e4: f108 0801 add.w r8, r8, #1 69e8: 9a05 ldr r2, [sp, #20] 69ea: e7e4 b.n 69b6 <_lv_blend_map+0x1e2> 69ec: f8bd 8034 ldrh.w r8, [sp, #52] ; 0x34 69f0: f108 0801 add.w r8, r8, #1 69f4: eba8 0801 sub.w r8, r8, r1 const lv_opa_t * mask_tmp = mask - draw_area->x1; 69f8: 9905 ldr r1, [sp, #20] 69fa: 4419 add r1, r3 69fc: fa0f f888 sxth.w r8, r8 6a00: 468b mov fp, r1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6a02: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6a06: 429e cmp r6, r3 6a08: dcce bgt.n 69a8 <_lv_blend_map+0x1d4> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a0a: b233 sxth r3, r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a0c: f9bd 9030 ldrsh.w r9, [sp, #48] ; 0x30 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a10: 9305 str r3, [sp, #20] for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a12: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 6a16: 4599 cmp r9, r3 6a18: dd04 ble.n 6a24 <_lv_blend_map+0x250> map_buf_tmp += map_w; 6a1a: 9b06 ldr r3, [sp, #24] mask_tmp += draw_area_w; 6a1c: 44c3 add fp, r8 map_buf_tmp += map_w; 6a1e: 441c add r4, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6a20: 3601 adds r6, #1 6a22: e7ee b.n 6a02 <_lv_blend_map+0x22e> (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 6a24: f81b 3009 ldrb.w r3, [fp, r9] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a28: 9907 ldr r1, [sp, #28] 6a2a: 9208 str r2, [sp, #32] (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 6a2c: fb13 f30a smulbb r3, r3, sl disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a30: 0a1b lsrs r3, r3, #8 6a32: 9302 str r3, [sp, #8] 6a34: f834 3019 ldrh.w r3, [r4, r9, lsl #1] 6a38: f8ad 3004 strh.w r3, [sp, #4] 6a3c: 9b05 ldr r3, [sp, #20] 6a3e: 9300 str r3, [sp, #0] 6a40: 697d ldr r5, [r7, #20] 6a42: fa0f f389 sxth.w r3, r9 6a46: 4638 mov r0, r7 6a48: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a4a: f109 0901 add.w r9, r9, #1 6a4e: 9a08 ldr r2, [sp, #32] 6a50: e7df b.n 6a12 <_lv_blend_map+0x23e> if(opa > LV_OPA_MAX) { 6a52: f1ba 0ffa cmp.w sl, #250 ; 0xfa 6a56: d927 bls.n 6aa8 <_lv_blend_map+0x2d4> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 6a58: 9b06 ldr r3, [sp, #24] 6a5a: f8df 8090 ldr.w r8, [pc, #144] ; 6aec <_lv_blend_map+0x318> 6a5e: 005f lsls r7, r3, #1 for(y = 0; y < draw_area_h; y++) { 6a60: 2600 movs r6, #0 6a62: 9b09 ldr r3, [sp, #36] ; 0x24 6a64: 42b3 cmp r3, r6 6a66: dd9f ble.n 69a8 <_lv_blend_map+0x1d4> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 6a68: 4621 mov r1, r4 6a6a: 4628 mov r0, r5 6a6c: 463a mov r2, r7 6a6e: 47c0 blx r8 disp_buf_first += disp_w; 6a70: 9b07 ldr r3, [sp, #28] 6a72: 441d add r5, r3 map_buf_first += map_w; 6a74: 9b08 ldr r3, [sp, #32] for(y = 0; y < draw_area_h; y++) { 6a76: 3601 adds r6, #1 map_buf_first += map_w; 6a78: 441c add r4, r3 for(y = 0; y < draw_area_h; y++) { 6a7a: e7f2 b.n 6a62 <_lv_blend_map+0x28e> disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 6a7c: f835 1016 ldrh.w r1, [r5, r6, lsl #1] 6a80: f834 0016 ldrh.w r0, [r4, r6, lsl #1] 6a84: 4652 mov r2, sl 6a86: 47c0 blx r8 6a88: f825 0016 strh.w r0, [r5, r6, lsl #1] for(x = 0; x < draw_area_w; x++) { 6a8c: 3601 adds r6, #1 6a8e: 9b06 ldr r3, [sp, #24] 6a90: 42b3 cmp r3, r6 6a92: dcf3 bgt.n 6a7c <_lv_blend_map+0x2a8> disp_buf_first += disp_w; 6a94: 9b07 ldr r3, [sp, #28] 6a96: 441d add r5, r3 map_buf_first += map_w; 6a98: 9b08 ldr r3, [sp, #32] for(y = 0; y < draw_area_h; y++) { 6a9a: 3701 adds r7, #1 map_buf_first += map_w; 6a9c: 441c add r4, r3 for(y = 0; y < draw_area_h; y++) { 6a9e: 9b09 ldr r3, [sp, #36] ; 0x24 6aa0: 42bb cmp r3, r7 6aa2: dd81 ble.n 69a8 <_lv_blend_map+0x1d4> for(x = 0; x < draw_area_w; x++) { 6aa4: 2600 movs r6, #0 6aa6: e7f2 b.n 6a8e <_lv_blend_map+0x2ba> disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 6aa8: f8df 8044 ldr.w r8, [pc, #68] ; 6af0 <_lv_blend_map+0x31c> for(y = 0; y < draw_area_h; y++) { 6aac: 2700 movs r7, #0 6aae: e7f6 b.n 6a9e <_lv_blend_map+0x2ca> if(opa > LV_OPA_MAX) { 6ab0: f1ba 0ffa cmp.w sl, #250 ; 0xfa 6ab4: f240 80ea bls.w 6c8c <_lv_blend_map+0x4b8> int32_t x_end4 = draw_area_w - 4; 6ab8: 9b06 ldr r3, [sp, #24] MAP_NORMAL_MASK_PX(x) 6aba: f8df 8034 ldr.w r8, [pc, #52] ; 6af0 <_lv_blend_map+0x31c> int32_t x_end4 = draw_area_w - 4; 6abe: 3b04 subs r3, #4 for(y = 0; y < draw_area_h; y++) { 6ac0: e9cd 930a strd r9, r3, [sp, #40] ; 0x28 6ac4: e9dd 3209 ldrd r3, r2, [sp, #36] ; 0x24 6ac8: 4293 cmp r3, r2 6aca: f77f af6d ble.w 69a8 <_lv_blend_map+0x1d4> 6ace: f8dd a014 ldr.w sl, [sp, #20] 6ad2: 46a9 mov r9, r5 6ad4: 46a3 mov fp, r4 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6ad6: 2600 movs r6, #0 6ad8: e01a b.n 6b10 <_lv_blend_map+0x33c> 6ada: bf00 nop 6adc: 0000ded1 .word 0x0000ded1 6ae0: 00004fdd .word 0x00004fdd 6ae4: 0000da25 .word 0x0000da25 6ae8: 0000deb5 .word 0x0000deb5 6aec: 0000ec79 .word 0x0000ec79 6af0: 000060a1 .word 0x000060a1 MAP_NORMAL_MASK_PX(x) 6af4: f81a 2b01 ldrb.w r2, [sl], #1 6af8: b12a cbz r2, 6b06 <_lv_blend_map+0x332> 6afa: 2aff cmp r2, #255 ; 0xff 6afc: d12a bne.n 6b54 <_lv_blend_map+0x380> 6afe: f8bb 3000 ldrh.w r3, [fp] 6b02: f8a9 3000 strh.w r3, [r9] for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6b06: 3601 adds r6, #1 6b08: f109 0902 add.w r9, r9, #2 6b0c: f10b 0b02 add.w fp, fp, #2 6b10: 9b06 ldr r3, [sp, #24] 6b12: 42b3 cmp r3, r6 6b14: 4657 mov r7, sl 6b16: dd02 ble.n 6b1e <_lv_blend_map+0x34a> 6b18: f01a 0f03 tst.w sl, #3 6b1c: d1ea bne.n 6af4 <_lv_blend_map+0x320> 6b1e: eb05 0946 add.w r9, r5, r6, lsl #1 6b22: eb04 0a46 add.w sl, r4, r6, lsl #1 for(; x < x_end4; x += 4) { 6b26: 9b0b ldr r3, [sp, #44] ; 0x2c 6b28: 42b3 cmp r3, r6 6b2a: dc1b bgt.n 6b64 <_lv_blend_map+0x390> 6b2c: eb05 0946 add.w r9, r5, r6, lsl #1 6b30: eb04 0a46 add.w sl, r4, r6, lsl #1 6b34: 3f01 subs r7, #1 for(; x < draw_area_w ; x++) { 6b36: 9b06 ldr r3, [sp, #24] 6b38: 42b3 cmp r3, r6 6b3a: dc6b bgt.n 6c14 <_lv_blend_map+0x440> disp_buf_first += disp_w; 6b3c: 9b07 ldr r3, [sp, #28] 6b3e: 441d add r5, r3 mask += draw_area_w; 6b40: e9dd 3205 ldrd r3, r2, [sp, #20] 6b44: 4413 add r3, r2 6b46: 9305 str r3, [sp, #20] map_buf_first += map_w; 6b48: 9b08 ldr r3, [sp, #32] 6b4a: 441c add r4, r3 for(y = 0; y < draw_area_h; y++) { 6b4c: 9b0a ldr r3, [sp, #40] ; 0x28 6b4e: 3301 adds r3, #1 6b50: 930a str r3, [sp, #40] ; 0x28 6b52: e7b7 b.n 6ac4 <_lv_blend_map+0x2f0> MAP_NORMAL_MASK_PX(x) 6b54: f8b9 1000 ldrh.w r1, [r9] 6b58: f8bb 0000 ldrh.w r0, [fp] 6b5c: 47c0 blx r8 6b5e: f8a9 0000 strh.w r0, [r9] 6b62: e7d0 b.n 6b06 <_lv_blend_map+0x332> if(*mask32) { 6b64: 683b ldr r3, [r7, #0] 6b66: b18b cbz r3, 6b8c <_lv_blend_map+0x3b8> if((*mask32) == 0xFFFFFFFF) { 6b68: 3301 adds r3, #1 6b6a: d116 bne.n 6b9a <_lv_blend_map+0x3c6> disp_buf_first[x] = map_buf_first[x]; 6b6c: f8ba 3000 ldrh.w r3, [sl] 6b70: f8a9 3000 strh.w r3, [r9] disp_buf_first[x + 1] = map_buf_first[x + 1]; 6b74: f8ba 3002 ldrh.w r3, [sl, #2] 6b78: f8a9 3002 strh.w r3, [r9, #2] disp_buf_first[x + 2] = map_buf_first[x + 2]; 6b7c: f8ba 3004 ldrh.w r3, [sl, #4] 6b80: f8a9 3004 strh.w r3, [r9, #4] MAP_NORMAL_MASK_PX(x + 3) 6b84: f8ba 3006 ldrh.w r3, [sl, #6] 6b88: f8a9 3006 strh.w r3, [r9, #6] mask32++; 6b8c: 3704 adds r7, #4 for(; x < x_end4; x += 4) { 6b8e: 3604 adds r6, #4 6b90: f109 0908 add.w r9, r9, #8 6b94: f10a 0a08 add.w sl, sl, #8 6b98: e7c5 b.n 6b26 <_lv_blend_map+0x352> MAP_NORMAL_MASK_PX(x) 6b9a: 783a ldrb r2, [r7, #0] 6b9c: b12a cbz r2, 6baa <_lv_blend_map+0x3d6> 6b9e: 2aff cmp r2, #255 ; 0xff 6ba0: d120 bne.n 6be4 <_lv_blend_map+0x410> 6ba2: f8ba 3000 ldrh.w r3, [sl] 6ba6: f8a9 3000 strh.w r3, [r9] MAP_NORMAL_MASK_PX(x + 1) 6baa: 787a ldrb r2, [r7, #1] 6bac: b12a cbz r2, 6bba <_lv_blend_map+0x3e6> 6bae: 2aff cmp r2, #255 ; 0xff 6bb0: d120 bne.n 6bf4 <_lv_blend_map+0x420> 6bb2: f8ba 3002 ldrh.w r3, [sl, #2] 6bb6: f8a9 3002 strh.w r3, [r9, #2] MAP_NORMAL_MASK_PX(x + 2) 6bba: 78ba ldrb r2, [r7, #2] 6bbc: b12a cbz r2, 6bca <_lv_blend_map+0x3f6> 6bbe: 2aff cmp r2, #255 ; 0xff 6bc0: d120 bne.n 6c04 <_lv_blend_map+0x430> 6bc2: f8ba 3004 ldrh.w r3, [sl, #4] 6bc6: f8a9 3004 strh.w r3, [r9, #4] MAP_NORMAL_MASK_PX(x + 3) 6bca: 78fa ldrb r2, [r7, #3] 6bcc: 2a00 cmp r2, #0 6bce: d0dd beq.n 6b8c <_lv_blend_map+0x3b8> 6bd0: 2aff cmp r2, #255 ; 0xff 6bd2: d0d7 beq.n 6b84 <_lv_blend_map+0x3b0> 6bd4: f8b9 1006 ldrh.w r1, [r9, #6] 6bd8: f8ba 0006 ldrh.w r0, [sl, #6] 6bdc: 47c0 blx r8 6bde: f8a9 0006 strh.w r0, [r9, #6] 6be2: e7d3 b.n 6b8c <_lv_blend_map+0x3b8> MAP_NORMAL_MASK_PX(x) 6be4: f8b9 1000 ldrh.w r1, [r9] 6be8: f8ba 0000 ldrh.w r0, [sl] 6bec: 47c0 blx r8 6bee: f8a9 0000 strh.w r0, [r9] 6bf2: e7da b.n 6baa <_lv_blend_map+0x3d6> MAP_NORMAL_MASK_PX(x + 1) 6bf4: f8b9 1002 ldrh.w r1, [r9, #2] 6bf8: f8ba 0002 ldrh.w r0, [sl, #2] 6bfc: 47c0 blx r8 6bfe: f8a9 0002 strh.w r0, [r9, #2] 6c02: e7da b.n 6bba <_lv_blend_map+0x3e6> MAP_NORMAL_MASK_PX(x + 2) 6c04: f8b9 1004 ldrh.w r1, [r9, #4] 6c08: f8ba 0004 ldrh.w r0, [sl, #4] 6c0c: 47c0 blx r8 6c0e: f8a9 0004 strh.w r0, [r9, #4] 6c12: e7da b.n 6bca <_lv_blend_map+0x3f6> MAP_NORMAL_MASK_PX(x) 6c14: f817 2f01 ldrb.w r2, [r7, #1]! 6c18: b12a cbz r2, 6c26 <_lv_blend_map+0x452> 6c1a: 2aff cmp r2, #255 ; 0xff 6c1c: d109 bne.n 6c32 <_lv_blend_map+0x45e> 6c1e: f8ba 3000 ldrh.w r3, [sl] 6c22: f8a9 3000 strh.w r3, [r9] for(; x < draw_area_w ; x++) { 6c26: 3601 adds r6, #1 6c28: f109 0902 add.w r9, r9, #2 6c2c: f10a 0a02 add.w sl, sl, #2 6c30: e781 b.n 6b36 <_lv_blend_map+0x362> MAP_NORMAL_MASK_PX(x) 6c32: f8b9 1000 ldrh.w r1, [r9] 6c36: f8ba 0000 ldrh.w r0, [sl] 6c3a: 47c0 blx r8 6c3c: f8a9 0000 strh.w r0, [r9] 6c40: e7f1 b.n 6c26 <_lv_blend_map+0x452> if(mask[x]) { 6c42: 9b05 ldr r3, [sp, #20] 6c44: 5d9a ldrb r2, [r3, r6] 6c46: b16a cbz r2, 6c64 <_lv_blend_map+0x490> lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 6c48: 2af9 cmp r2, #249 ; 0xf9 6c4a: bf98 it ls 6c4c: fb1a f202 smulbbls r2, sl, r2 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 6c50: f835 1016 ldrh.w r1, [r5, r6, lsl #1] 6c54: f834 0016 ldrh.w r0, [r4, r6, lsl #1] lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 6c58: bf94 ite ls 6c5a: 0a12 lsrls r2, r2, #8 6c5c: 4652 movhi r2, sl disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 6c5e: 47b8 blx r7 6c60: f825 0016 strh.w r0, [r5, r6, lsl #1] for(x = 0; x < draw_area_w; x++) { 6c64: 3601 adds r6, #1 6c66: 9b06 ldr r3, [sp, #24] 6c68: 42b3 cmp r3, r6 6c6a: dcea bgt.n 6c42 <_lv_blend_map+0x46e> disp_buf_first += disp_w; 6c6c: 9b07 ldr r3, [sp, #28] 6c6e: 441d add r5, r3 mask += draw_area_w; 6c70: e9dd 3205 ldrd r3, r2, [sp, #20] 6c74: 4413 add r3, r2 6c76: 9305 str r3, [sp, #20] map_buf_first += map_w; 6c78: 9b08 ldr r3, [sp, #32] for(y = 0; y < draw_area_h; y++) { 6c7a: f109 0901 add.w r9, r9, #1 map_buf_first += map_w; 6c7e: 441c add r4, r3 for(y = 0; y < draw_area_h; y++) { 6c80: 9b09 ldr r3, [sp, #36] ; 0x24 6c82: 454b cmp r3, r9 6c84: f77f ae90 ble.w 69a8 <_lv_blend_map+0x1d4> for(x = 0; x < draw_area_w; x++) { 6c88: 2600 movs r6, #0 6c8a: e7ec b.n 6c66 <_lv_blend_map+0x492> disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 6c8c: 4f38 ldr r7, [pc, #224] ; (6d70 <_lv_blend_map+0x59c>) 6c8e: e7f7 b.n 6c80 <_lv_blend_map+0x4ac> switch(mode) { 6c90: f1b9 0f01 cmp.w r9, #1 6c94: d00c beq.n 6cb0 <_lv_blend_map+0x4dc> 6c96: f1b9 0f02 cmp.w r9, #2 6c9a: d02b beq.n 6cf4 <_lv_blend_map+0x520> LV_LOG_WARN("fill_blended: unsupported blend mode"); 6c9c: 4b35 ldr r3, [pc, #212] ; (6d74 <_lv_blend_map+0x5a0>) 6c9e: 9300 str r3, [sp, #0] 6ca0: 4935 ldr r1, [pc, #212] ; (6d78 <_lv_blend_map+0x5a4>) 6ca2: 4b36 ldr r3, [pc, #216] ; (6d7c <_lv_blend_map+0x5a8>) 6ca4: 4c36 ldr r4, [pc, #216] ; (6d80 <_lv_blend_map+0x5ac>) 6ca6: f240 3253 movw r2, #851 ; 0x353 6caa: 2002 movs r0, #2 6cac: 47a0 blx r4 return; 6cae: e67b b.n 69a8 <_lv_blend_map+0x1d4> blend_fp = color_blend_true_color_additive; 6cb0: f8df b0d0 ldr.w fp, [pc, #208] ; 6d84 <_lv_blend_map+0x5b0> lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 6cb4: 9a07 ldr r2, [sp, #28] 6cb6: eb02 0545 add.w r5, r2, r5, lsl #1 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6cba: 9a08 ldr r2, [sp, #32] 6cbc: eb02 0444 add.w r4, r2, r4, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6cc0: 9a0a ldr r2, [sp, #40] ; 0x28 6cc2: 2a01 cmp r2, #1 disp_buf_first += disp_w; 6cc4: ea4f 0646 mov.w r6, r6, lsl #1 map_buf_first += map_w; 6cc8: ea4f 0747 mov.w r7, r7, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6ccc: d120 bne.n 6d10 <_lv_blend_map+0x53c> map_buf_tmp -= draw_area->x1; 6cce: 1a1b subs r3, r3, r0 6cd0: eb04 0443 add.w r4, r4, r3, lsl #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6cd4: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6cd8: 4598 cmp r8, r3 6cda: f73f ae65 bgt.w 69a8 <_lv_blend_map+0x1d4> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6cde: f9bd 9030 ldrsh.w r9, [sp, #48] ; 0x30 6ce2: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 6ce6: 4599 cmp r9, r3 6ce8: dd07 ble.n 6cfa <_lv_blend_map+0x526> disp_buf_tmp += disp_w; 6cea: 4435 add r5, r6 map_buf_tmp += map_w; 6cec: 443c add r4, r7 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6cee: f108 0801 add.w r8, r8, #1 6cf2: e7ef b.n 6cd4 <_lv_blend_map+0x500> switch(mode) { 6cf4: f8df b090 ldr.w fp, [pc, #144] ; 6d88 <_lv_blend_map+0x5b4> 6cf8: e7dc b.n 6cb4 <_lv_blend_map+0x4e0> disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa); 6cfa: f835 1019 ldrh.w r1, [r5, r9, lsl #1] 6cfe: f834 0019 ldrh.w r0, [r4, r9, lsl #1] 6d02: 4652 mov r2, sl 6d04: 47d8 blx fp 6d06: f825 0019 strh.w r0, [r5, r9, lsl #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 6d0a: f109 0901 add.w r9, r9, #1 6d0e: e7e8 b.n 6ce2 <_lv_blend_map+0x50e> const lv_opa_t * mask_tmp = mask - draw_area->x1; 6d10: 9b05 ldr r3, [sp, #20] 6d12: eba3 030c sub.w r3, r3, ip 6d16: 9305 str r3, [sp, #20] map_buf_tmp -= draw_area->x1; 6d18: eba4 044c sub.w r4, r4, ip, lsl #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6d1c: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6d20: 4598 cmp r8, r3 6d22: f73f ae41 bgt.w 69a8 <_lv_blend_map+0x1d4> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6d26: f9bd 9030 ldrsh.w r9, [sp, #48] ; 0x30 6d2a: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 6d2e: 4599 cmp r9, r3 6d30: dd08 ble.n 6d44 <_lv_blend_map+0x570> mask_tmp += draw_area_w; 6d32: e9dd 3205 ldrd r3, r2, [sp, #20] 6d36: 4413 add r3, r2 disp_buf_tmp += disp_w; 6d38: 4435 add r5, r6 mask_tmp += draw_area_w; 6d3a: 9305 str r3, [sp, #20] map_buf_tmp += map_w; 6d3c: 443c add r4, r7 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6d3e: f108 0801 add.w r8, r8, #1 6d42: e7eb b.n 6d1c <_lv_blend_map+0x548> if(mask_tmp[x] == 0) continue; 6d44: 9b05 ldr r3, [sp, #20] 6d46: f813 2009 ldrb.w r2, [r3, r9] 6d4a: b16a cbz r2, 6d68 <_lv_blend_map+0x594> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 6d4c: 2af9 cmp r2, #249 ; 0xf9 6d4e: bf98 it ls 6d50: fb1a f202 smulbbls r2, sl, r2 disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 6d54: f835 1019 ldrh.w r1, [r5, r9, lsl #1] 6d58: f834 0019 ldrh.w r0, [r4, r9, lsl #1] lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 6d5c: bf94 ite ls 6d5e: 0a12 lsrls r2, r2, #8 6d60: 4652 movhi r2, sl disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 6d62: 47d8 blx fp 6d64: f825 0019 strh.w r0, [r5, r9, lsl #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 6d68: f109 0901 add.w r9, r9, #1 6d6c: e7dd b.n 6d2a <_lv_blend_map+0x556> 6d6e: bf00 nop 6d70: 000060a1 .word 0x000060a1 6d74: 0001fa1d .word 0x0001fa1d 6d78: 0001f9e7 .word 0x0001f9e7 6d7c: 0001fa4f .word 0x0001fa4f 6d80: 0000e931 .word 0x0000e931 6d84: 000060f1 .word 0x000060f1 6d88: 00006169 .word 0x00006169 00006d8c : } } } static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg) { 6d8c: b530 push {r4, r5, lr} 6d8e: b0a1 sub sp, #132 ; 0x84 6d90: 4604 mov r4, r0 6d92: 9203 str r2, [sp, #12] lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); 6d94: a80b add r0, sp, #44 ; 0x2c 6d96: 4a0c ldr r2, [pc, #48] ; (6dc8 ) { 6d98: 9102 str r1, [sp, #8] lv_draw_rect_dsc_init(&rect_dsc); 6d9a: 4790 blx r2 rect_dsc.bg_color = LV_COLOR_WHITE; 6d9c: 4a0b ldr r2, [pc, #44] ; (6dcc ) lv_draw_rect(coords, clip_area, &rect_dsc); 6d9e: 9902 ldr r1, [sp, #8] rect_dsc.bg_color = LV_COLOR_WHITE; 6da0: 8812 ldrh r2, [r2, #0] 6da2: f8ad 202e strh.w r2, [sp, #46] ; 0x2e lv_draw_rect(coords, clip_area, &rect_dsc); 6da6: 4620 mov r0, r4 6da8: aa0b add r2, sp, #44 ; 0x2c 6daa: 4d09 ldr r5, [pc, #36] ; (6dd0 ) 6dac: 47a8 blx r5 lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); 6dae: a804 add r0, sp, #16 6db0: 4a08 ldr r2, [pc, #32] ; (6dd4 ) 6db2: 4790 blx r2 lv_draw_label(coords, clip_area, &label_dsc, msg, NULL); 6db4: 2200 movs r2, #0 6db6: 9200 str r2, [sp, #0] 6db8: 4620 mov r0, r4 6dba: 9b03 ldr r3, [sp, #12] 6dbc: 9902 ldr r1, [sp, #8] 6dbe: 4c06 ldr r4, [pc, #24] ; (6dd8 ) 6dc0: aa04 add r2, sp, #16 6dc2: 47a0 blx r4 } 6dc4: b021 add sp, #132 ; 0x84 6dc6: bd30 pop {r4, r5, pc} 6dc8: 00009bb5 .word 0x00009bb5 6dcc: 0001fae0 .word 0x0001fae0 6dd0: 00009c01 .word 0x00009c01 6dd4: 00007855 .word 0x00007855 6dd8: 00007885 .word 0x00007885 00006ddc : LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { 6ddc: 3901 subs r1, #1 6dde: f100 0308 add.w r3, r0, #8 *d8 = *s8; 6de2: f811 2f01 ldrb.w r2, [r1, #1]! 6de6: f800 2b01 strb.w r2, [r0], #1 while(len) { 6dea: 4298 cmp r0, r3 6dec: d1f9 bne.n 6de2 } 6dee: 4770 bx lr 00006df0 : { 6df0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 6df4: ed2d 8b02 vpush {d8} 6df8: b0b9 sub sp, #228 ; 0xe4 6dfa: 461c mov r4, r3 6dfc: f89d 3110 ldrb.w r3, [sp, #272] ; 0x110 6e00: 930c str r3, [sp, #48] ; 0x30 6e02: f89d 3114 ldrb.w r3, [sp, #276] ; 0x114 6e06: 9307 str r3, [sp, #28] 6e08: 4682 mov sl, r0 lv_area_copy(&draw_area, clip_area); 6e0a: 4b9d ldr r3, [pc, #628] ; (7080 ) 6e0c: a822 add r0, sp, #136 ; 0x88 { 6e0e: 4689 mov r9, r1 6e10: 4615 mov r5, r2 lv_area_copy(&draw_area, clip_area); 6e12: 4798 blx r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6e14: 4b9b ldr r3, [pc, #620] ; (7084 ) 6e16: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6e18: 4b9b ldr r3, [pc, #620] ; (7088 ) 6e1a: 4798 blx r3 draw_area.x1 -= disp_area->x1; 6e1c: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 6e20: 8a06 ldrh r6, [r0, #16] lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6e22: 9004 str r0, [sp, #16] draw_area.x1 -= disp_area->x1; 6e24: 1b9b subs r3, r3, r6 draw_area.y1 -= disp_area->y1; 6e26: 8a40 ldrh r0, [r0, #18] draw_area.x1 -= disp_area->x1; 6e28: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 draw_area.y2 -= disp_area->y1; 6e2c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e draw_area.y1 -= disp_area->y1; 6e30: f8bd 108a ldrh.w r1, [sp, #138] ; 0x8a draw_area.x2 -= disp_area->x1; 6e34: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c draw_area.y2 -= disp_area->y1; 6e38: 1a1b subs r3, r3, r0 draw_area.y1 -= disp_area->y1; 6e3a: 1a09 subs r1, r1, r0 draw_area.x2 -= disp_area->x1; 6e3c: 1b92 subs r2, r2, r6 draw_area.y2 -= disp_area->y1; 6e3e: f8ad 308e strh.w r3, [sp, #142] ; 0x8e uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 6e42: 4b92 ldr r3, [pc, #584] ; (708c ) draw_area.y1 -= disp_area->y1; 6e44: f8ad 108a strh.w r1, [sp, #138] ; 0x8a draw_area.x2 -= disp_area->x1; 6e48: f8ad 208c strh.w r2, [sp, #140] ; 0x8c uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 6e4c: 4798 blx r3 if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 6e4e: 900b str r0, [sp, #44] ; 0x2c 6e50: b9f8 cbnz r0, 6e92 6e52: 8863 ldrh r3, [r4, #2] 6e54: b9eb cbnz r3, 6e92 6e56: 8923 ldrh r3, [r4, #8] 6e58: f5b3 7f80 cmp.w r3, #256 ; 0x100 6e5c: d119 bne.n 6e92 6e5e: 9b0c ldr r3, [sp, #48] ; 0x30 6e60: b9bb cbnz r3, 6e92 chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 6e62: 9b07 ldr r3, [sp, #28] 6e64: 2b00 cmp r3, #0 6e66: f040 809b bne.w 6fa0 6e6a: 7aa3 ldrb r3, [r4, #10] 6e6c: 2b00 cmp r3, #0 6e6e: f040 8099 bne.w 6fa4 _lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa, 6e72: 7ba2 ldrb r2, [r4, #14] 6e74: 9202 str r2, [sp, #8] 6e76: 7822 ldrb r2, [r4, #0] 6e78: 9201 str r2, [sp, #4] 6e7a: 2201 movs r2, #1 6e7c: 9200 str r2, [sp, #0] 6e7e: 4c84 ldr r4, [pc, #528] ; (7090 ) 6e80: 462a mov r2, r5 6e82: 4651 mov r1, sl 6e84: 4648 mov r0, r9 6e86: 47a0 blx r4 } 6e88: b039 add sp, #228 ; 0xe4 6e8a: ecbd 8b02 vpop {d8} 6e8e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 6e92: 9b07 ldr r3, [sp, #28] 6e94: 2b00 cmp r3, #0 6e96: bf14 ite ne 6e98: 2303 movne r3, #3 6e9a: 2302 moveq r3, #2 6e9c: 9305 str r3, [sp, #20] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6e9e: 9b04 ldr r3, [sp, #16] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6ea0: f8ba 8004 ldrh.w r8, [sl, #4] 6ea4: f9b3 1012 ldrsh.w r1, [r3, #18] 6ea8: f9ba 2000 ldrsh.w r2, [sl] map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6eac: f9b3 3010 ldrsh.w r3, [r3, #16] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6eb0: f9ba 7002 ldrsh.w r7, [sl, #2] 6eb4: f9bd 008a ldrsh.w r0, [sp, #138] ; 0x8a map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6eb8: f9bd 6088 ldrsh.w r6, [sp, #136] ; 0x88 6ebc: f108 0801 add.w r8, r8, #1 6ec0: eba8 0802 sub.w r8, r8, r2 map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6ec4: 1a7f subs r7, r7, r1 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6ec6: 1ad2 subs r2, r2, r3 map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6ec8: 1bc7 subs r7, r0, r7 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6eca: 1ab2 subs r2, r6, r2 6ecc: fa0f f888 sxth.w r8, r8 6ed0: fb08 2207 mla r2, r8, r7, r2 6ed4: 9f05 ldr r7, [sp, #20] 6ed6: fb02 5207 mla r2, r2, r7, r5 6eda: 9208 str r2, [sp, #32] 6edc: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c 6ee0: 3201 adds r2, #1 blend_area.x1 = draw_area.x1 + disp_area->x1; 6ee2: fa13 f386 uxtah r3, r3, r6 6ee6: 1b96 subs r6, r2, r6 6ee8: b2b2 uxth r2, r6 6eea: b29b uxth r3, r3 blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 6eec: 3a01 subs r2, #1 blend_area.x1 = draw_area.x1 + disp_area->x1; 6eee: f8ad 3090 strh.w r3, [sp, #144] ; 0x90 blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 6ef2: 4413 add r3, r2 6ef4: f8ad 3094 strh.w r3, [sp, #148] ; 0x94 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 6ef8: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e 6efc: 3301 adds r3, #1 blend_area.y1 = disp_area->y1 + draw_area.y1; 6efe: fa11 f180 uxtah r1, r1, r0 6f02: 1a18 subs r0, r3, r0 6f04: b203 sxth r3, r0 6f06: 9317 str r3, [sp, #92] ; 0x5c bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 6f08: 8863 ldrh r3, [r4, #2] blend_area.y1 = disp_area->y1 + draw_area.y1; 6f0a: b209 sxth r1, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6f0c: b236 sxth r6, r6 6f0e: 9611 str r6, [sp, #68] ; 0x44 6f10: f8ad 1092 strh.w r1, [sp, #146] ; 0x92 blend_area.y2 = blend_area.y1; 6f14: f8ad 1096 strh.w r1, [sp, #150] ; 0x96 bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 6f18: 2b00 cmp r3, #0 6f1a: f040 8264 bne.w 73e6 6f1e: 8923 ldrh r3, [r4, #8] 6f20: f5b3 7280 subs.w r2, r3, #256 ; 0x100 6f24: bf18 it ne 6f26: 2201 movne r2, #1 6f28: 9215 str r2, [sp, #84] ; 0x54 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 6f2a: 9a0b ldr r2, [sp, #44] ; 0x2c 6f2c: 2a00 cmp r2, #0 6f2e: f040 825c bne.w 73ea 6f32: f5b3 7f80 cmp.w r3, #256 ; 0x100 6f36: f040 8258 bne.w 73ea 6f3a: 9b0c ldr r3, [sp, #48] ; 0x30 6f3c: 2b00 cmp r3, #0 6f3e: f040 8254 bne.w 73ea 6f42: 7aa3 ldrb r3, [r4, #10] 6f44: 2b00 cmp r3, #0 6f46: f040 8250 bne.w 73ea 6f4a: 9b07 ldr r3, [sp, #28] 6f4c: 2b00 cmp r3, #0 6f4e: f000 824c beq.w 73ea uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 6f52: 4d50 ldr r5, [pc, #320] ; (7094 ) 6f54: a822 add r0, sp, #136 ; 0x88 6f56: 47a8 blx r5 6f58: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 6f5c: d824 bhi.n 6fa8 6f5e: a822 add r0, sp, #136 ; 0x88 6f60: 47a8 blx r5 6f62: 4607 mov r7, r0 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 6f64: 4e4c ldr r6, [pc, #304] ; (7098 ) 6f66: 0078 lsls r0, r7, #1 6f68: 47b0 blx r6 6f6a: ee08 0a10 vmov s16, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 6f6e: 4638 mov r0, r7 6f70: 47b0 blx r6 map_buf_tmp += map_w * px_size_byte; 6f72: 9b05 ldr r3, [sp, #20] 6f74: 9a11 ldr r2, [sp, #68] ; 0x44 6f76: fb13 fa08 smulbb sl, r3, r8 6f7a: ea22 72e2 bic.w r2, r2, r2, asr #31 for(y = 0; y < draw_area_h; y++) { 6f7e: f04f 0800 mov.w r8, #0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 6f82: 4606 mov r6, r0 uint32_t px_i = 0; 6f84: 4643 mov r3, r8 6f86: 9204 str r2, [sp, #16] for(y = 0; y < draw_area_h; y++) { 6f88: 9a17 ldr r2, [sp, #92] ; 0x5c 6f8a: 4542 cmp r2, r8 6f8c: dd4e ble.n 702c 6f8e: ee18 2a10 vmov r2, s16 6f92: eb06 0c03 add.w ip, r6, r3 6f96: eb02 0e43 add.w lr, r2, r3, lsl #1 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 6f9a: 2100 movs r1, #0 map_px = map_buf_tmp; 6f9c: 9a08 ldr r2, [sp, #32] 6f9e: e014 b.n 6fca uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 6fa0: 2303 movs r3, #3 6fa2: e77b b.n 6e9c 6fa4: 2302 movs r3, #2 6fa6: e779 b.n 6e9c uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 6fa8: f44f 77f0 mov.w r7, #480 ; 0x1e0 6fac: e7da b.n 6f64 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 6fae: 7890 ldrb r0, [r2, #2] mask_buf[px_i] = px_opa; 6fb0: f80c 0b01 strb.w r0, [ip], #1 if(px_opa) { 6fb4: b130 cbz r0, 6fc4 map2[px_i].full = map_px[0] + (map_px[1] << 8); 6fb6: f892 b001 ldrb.w fp, [r2, #1] 6fba: 7810 ldrb r0, [r2, #0] 6fbc: eb00 200b add.w r0, r0, fp, lsl #8 6fc0: f82e 0011 strh.w r0, [lr, r1, lsl #1] for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 6fc4: 9805 ldr r0, [sp, #20] 6fc6: 3101 adds r1, #1 6fc8: 4402 add r2, r0 6fca: 9811 ldr r0, [sp, #68] ; 0x44 6fcc: 4288 cmp r0, r1 6fce: dcee bgt.n 6fae 6fd0: 9a04 ldr r2, [sp, #16] 6fd2: f8bd 1088 ldrh.w r1, [sp, #136] ; 0x88 6fd6: 4413 add r3, r2 map_buf_tmp += map_w * px_size_byte; 6fd8: 9a08 ldr r2, [sp, #32] 6fda: 4452 add r2, sl 6fdc: 9208 str r2, [sp, #32] 6fde: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c 6fe2: 3201 adds r2, #1 6fe4: 1a52 subs r2, r2, r1 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 6fe6: fa03 f282 sxtah r2, r3, r2 6fea: 42ba cmp r2, r7 6fec: d207 bcs.n 6ffe blend_area.y2 ++; 6fee: f8bd 2096 ldrh.w r2, [sp, #150] ; 0x96 6ff2: 3201 adds r2, #1 6ff4: f8ad 2096 strh.w r2, [sp, #150] ; 0x96 for(y = 0; y < draw_area_h; y++) { 6ff8: f108 0801 add.w r8, r8, #1 6ffc: e7c4 b.n 6f88 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 6ffe: 7ba3 ldrb r3, [r4, #14] 7000: 9302 str r3, [sp, #8] 7002: 7823 ldrb r3, [r4, #0] 7004: 9301 str r3, [sp, #4] 7006: 2302 movs r3, #2 7008: 9300 str r3, [sp, #0] 700a: ee18 2a10 vmov r2, s16 700e: 4633 mov r3, r6 7010: 4d1f ldr r5, [pc, #124] ; (7090 ) 7012: a924 add r1, sp, #144 ; 0x90 7014: 4648 mov r0, r9 7016: 47a8 blx r5 blend_area.y1 = blend_area.y2 + 1; 7018: f8bd 3096 ldrh.w r3, [sp, #150] ; 0x96 701c: 3301 adds r3, #1 701e: b21b sxth r3, r3 7020: f8ad 3092 strh.w r3, [sp, #146] ; 0x92 blend_area.y2 = blend_area.y1; 7024: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 px_i = 0; 7028: 2300 movs r3, #0 702a: e7e5 b.n 6ff8 if(blend_area.y1 != blend_area.y2) { 702c: f9bd 3096 ldrsh.w r3, [sp, #150] ; 0x96 7030: f9bd 2092 ldrsh.w r2, [sp, #146] ; 0x92 7034: 429a cmp r2, r3 7036: d00f beq.n 7058 blend_area.y2--; 7038: 3b01 subs r3, #1 703a: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 703e: 7ba3 ldrb r3, [r4, #14] 7040: 9302 str r3, [sp, #8] 7042: 7823 ldrb r3, [r4, #0] 7044: 9301 str r3, [sp, #4] 7046: 2302 movs r3, #2 7048: 9300 str r3, [sp, #0] 704a: ee18 2a10 vmov r2, s16 704e: 4c10 ldr r4, [pc, #64] ; (7090 ) 7050: 4633 mov r3, r6 7052: a924 add r1, sp, #144 ; 0x90 7054: 4648 mov r0, r9 7056: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 7058: 4630 mov r0, r6 _lv_mem_buf_release(mask_buf); 705a: 4c10 ldr r4, [pc, #64] ; (709c ) 705c: 47a0 blx r4 _lv_mem_buf_release(map2); 705e: ee18 0a10 vmov r0, s16 7062: 47a0 blx r4 } 7064: e710 b.n 6e88 uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 7066: f44f 73f0 mov.w r3, #480 ; 0x1e0 706a: 930a str r3, [sp, #40] ; 0x28 706c: e1c7 b.n 73fe if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 706e: 2205 movs r2, #5 7070: e1dd b.n 742e uint16_t recolor_premult[3] = {0}; 7072: 9310 str r3, [sp, #64] ; 0x40 7074: 9316 str r3, [sp, #88] ; 0x58 7076: 9319 str r3, [sp, #100] ; 0x64 7078: e212 b.n 74a0 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 707a: f04f 0b02 mov.w fp, #2 707e: e223 b.n 74c8 7080: 00006ddd .word 0x00006ddd 7084: 00004fdd .word 0x00004fdd 7088: 0000da25 .word 0x0000da25 708c: 000097fd .word 0x000097fd 7090: 000067d5 .word 0x000067d5 7094: 0000deb5 .word 0x0000deb5 7098: 0000eefd .word 0x0000eefd 709c: 0000ebb1 .word 0x0000ebb1 int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1; 70a0: 9b04 ldr r3, [sp, #16] 70a2: f9bd 2088 ldrsh.w r2, [sp, #136] ; 0x88 70a6: f9b3 3010 ldrsh.w r3, [r3, #16] 70aa: 4413 add r3, r2 70ac: f9ba 2000 ldrsh.w r2, [sl] 70b0: 1a9b subs r3, r3, r2 70b2: 931c str r3, [sp, #112] ; 0x70 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 70b4: eb07 0308 add.w r3, r7, r8 70b8: ee08 3a90 vmov s17, r3 70bc: 9306 str r3, [sp, #24] 70be: ee18 3a10 vmov r3, s16 70c2: eb03 0348 add.w r3, r3, r8, lsl #1 70c6: 931d str r3, [sp, #116] ; 0x74 map_px = map_buf_tmp; 70c8: 9b08 ldr r3, [sp, #32] 70ca: 930d str r3, [sp, #52] ; 0x34 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 70cc: 2300 movs r3, #0 { const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; /*Get the target point relative coordinates to the pivot*/ int32_t xt = x - dsc->cfg.pivot_x; int32_t yt = y - dsc->cfg.pivot_y; 70ce: 9a09 ldr r2, [sp, #36] ; 0x24 70d0: 930e str r3, [sp, #56] ; 0x38 70d2: 9b1b ldr r3, [sp, #108] ; 0x6c 70d4: 4413 add r3, r2 70d6: b21b sxth r3, r3 70d8: 931e str r3, [sp, #120] ; 0x78 70da: 9b11 ldr r3, [sp, #68] ; 0x44 70dc: 9a0e ldr r2, [sp, #56] ; 0x38 70de: 4293 cmp r3, r2 70e0: dc43 bgt.n 716a 70e2: 9b1f ldr r3, [sp, #124] ; 0x7c 70e4: 4498 add r8, r3 if(other_mask_cnt) { 70e6: 9b0b ldr r3, [sp, #44] ; 0x2c 70e8: b333 cbz r3, 7138 mask_res_sub = lv_draw_mask_apply(mask_buf + px_i_start, draw_area.x1 + vdb->area.x1, y + draw_area.y1 + vdb->area.y1, 70ea: 9804 ldr r0, [sp, #16] 70ec: f8bd 208a ldrh.w r2, [sp, #138] ; 0x8a 70f0: 8a40 ldrh r0, [r0, #18] 70f2: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c 70f6: f8bd 1088 ldrh.w r1, [sp, #136] ; 0x88 70fa: 4d9d ldr r5, [pc, #628] ; (7370 ) 70fc: 4402 add r2, r0 70fe: 9809 ldr r0, [sp, #36] ; 0x24 7100: 4402 add r2, r0 7102: 9804 ldr r0, [sp, #16] 7104: 8a00 ldrh r0, [r0, #16] 7106: 3301 adds r3, #1 7108: 1a5b subs r3, r3, r1 710a: 4401 add r1, r0 710c: b21b sxth r3, r3 710e: ee18 0a90 vmov r0, s17 7112: b212 sxth r2, r2 7114: b209 sxth r1, r1 7116: 47a8 blx r5 if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) { 7118: 2800 cmp r0, #0 711a: f040 8124 bne.w 7366 711e: f8bd 108c ldrh.w r1, [sp, #140] ; 0x8c 7122: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 7126: 3101 adds r1, #1 7128: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area)); 712a: ee18 0a90 vmov r0, s17 712e: 4b91 ldr r3, [pc, #580] ; (7374 ) 7130: b209 sxth r1, r1 7132: 4798 blx r3 mask_res = LV_DRAW_MASK_RES_CHANGED; 7134: f04f 0b02 mov.w fp, #2 map_buf_tmp += map_w * px_size_byte; 7138: 9b08 ldr r3, [sp, #32] 713a: 9a1a ldr r2, [sp, #104] ; 0x68 713c: 4413 add r3, r2 713e: 9308 str r3, [sp, #32] 7140: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c 7144: f8bd 2088 ldrh.w r2, [sp, #136] ; 0x88 7148: 3301 adds r3, #1 714a: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 714c: 9a0a ldr r2, [sp, #40] ; 0x28 714e: fa08 f383 sxtah r3, r8, r3 7152: 4293 cmp r3, r2 7154: f080 8116 bcs.w 7384 blend_area.y2 ++; 7158: f8bd 3096 ldrh.w r3, [sp, #150] ; 0x96 715c: 3301 adds r3, #1 715e: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 for(y = 0; y < draw_area_h; y++) { 7162: 9b09 ldr r3, [sp, #36] ; 0x24 7164: 3301 adds r3, #1 7166: 9309 str r3, [sp, #36] ; 0x24 7168: e1c9 b.n 74fe if(transform) { 716a: 9b15 ldr r3, [sp, #84] ; 0x54 716c: 2b00 cmp r3, #0 716e: f000 80d8 beq.w 7322 int32_t xt = x - dsc->cfg.pivot_x; 7172: 9a0e ldr r2, [sp, #56] ; 0x38 7174: 9b1c ldr r3, [sp, #112] ; 0x70 7176: f9bd 50a0 ldrsh.w r5, [sp, #160] ; 0xa0 717a: 4413 add r3, r2 717c: b21b sxth r3, r3 int32_t yt = y - dsc->cfg.pivot_y; 717e: 9a1e ldr r2, [sp, #120] ; 0x78 int32_t xt = x - dsc->cfg.pivot_x; 7180: 1b5b subs r3, r3, r5 int32_t yt = y - dsc->cfg.pivot_y; 7182: f9bd 50a2 ldrsh.w r5, [sp, #162] ; 0xa2 7186: 1b55 subs r5, r2, r5 int32_t xs; int32_t ys; if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 7188: f8bd 20a6 ldrh.w r2, [sp, #166] ; 0xa6 718c: f5b2 7f80 cmp.w r2, #256 ; 0x100 /*Get the source pixel from the upscaled image*/ xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 7190: e9dd 602f ldrd r6, r0, [sp, #188] ; 0xbc if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 7194: d119 bne.n 71ca xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 7196: e9dd c131 ldrd ip, r1, [sp, #196] ; 0xc4 719a: fb01 f203 mul.w r2, r1, r3 719e: fb0c 2215 mls r2, ip, r5, r2 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 71a2: 434d muls r5, r1 71a4: fb0c 5303 mla r3, ip, r3, r5 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 71a8: eb06 16e2 add.w r6, r6, r2, asr #7 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 71ac: eb00 13e3 add.w r3, r0, r3, asr #7 /*Get the integer part of the source pixel*/ int32_t xs_int = xs >> 8; int32_t ys_int = ys >> 8; if(xs_int >= dsc->cfg.src_w) return false; 71b0: f9bd 209c ldrsh.w r2, [sp, #156] ; 0x9c ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 71b4: 930f str r3, [sp, #60] ; 0x3c if(xs_int >= dsc->cfg.src_w) return false; 71b6: ebb2 2f26 cmp.w r2, r6, asr #8 int32_t xs_int = xs >> 8; 71ba: ea4f 2326 mov.w r3, r6, asr #8 71be: 9318 str r3, [sp, #96] ; 0x60 if(xs_int >= dsc->cfg.src_w) return false; 71c0: dc1c bgt.n 71fc mask_buf[px_i] = LV_OPA_TRANSP; 71c2: 9a06 ldr r2, [sp, #24] 71c4: 2300 movs r3, #0 71c6: 7013 strb r3, [r2, #0] continue; 71c8: e0b2 b.n 7330 xt *= dsc->tmp.zoom_inv; 71ca: f8bd 20ce ldrh.w r2, [sp, #206] ; 0xce else if(dsc->cfg.angle == 0) { 71ce: f9bd 10a4 ldrsh.w r1, [sp, #164] ; 0xa4 xt *= dsc->tmp.zoom_inv; 71d2: 4353 muls r3, r2 yt *= dsc->tmp.zoom_inv; 71d4: 436a muls r2, r5 else if(dsc->cfg.angle == 0) { 71d6: b911 cbnz r1, 71de xs = xt + dsc->tmp.pivot_x_256; 71d8: 441e add r6, r3 ys = yt + dsc->tmp.pivot_y_256; 71da: 1813 adds r3, r2, r0 71dc: e7e8 b.n 71b0 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 71de: e9dd c131 ldrd ip, r1, [sp, #196] ; 0xc4 71e2: fb03 f501 mul.w r5, r3, r1 71e6: fb02 551c mls r5, r2, ip, r5 71ea: eb06 36e5 add.w r6, r6, r5, asr #15 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 71ee: fb02 f501 mul.w r5, r2, r1 71f2: fb03 550c mla r5, r3, ip, r5 71f6: eb00 33e5 add.w r3, r0, r5, asr #15 71fa: e7d9 b.n 71b0 else if(xs_int < 0) return false; 71fc: 1233 asrs r3, r6, #8 71fe: 2b00 cmp r3, #0 7200: dbdf blt.n 71c2 int32_t ys_int = ys >> 8; 7202: 9b0f ldr r3, [sp, #60] ; 0x3c if(ys_int >= dsc->cfg.src_h) return false; 7204: 990f ldr r1, [sp, #60] ; 0x3c int32_t ys_int = ys >> 8; 7206: 121b asrs r3, r3, #8 7208: 9312 str r3, [sp, #72] ; 0x48 if(ys_int >= dsc->cfg.src_h) return false; 720a: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 720e: ebb3 2f21 cmp.w r3, r1, asr #8 7212: ddd6 ble.n 71c2 else if(ys_int < 0) return false; 7214: 9b12 ldr r3, [sp, #72] ; 0x48 7216: 2b00 cmp r3, #0 7218: dbd3 blt.n 71c2 uint8_t px_size; uint32_t pxi; if(dsc->tmp.native_color) { 721a: f89d 50cc ldrb.w r5, [sp, #204] ; 0xcc 721e: f015 0104 ands.w r1, r5, #4 7222: 9113 str r1, [sp, #76] ; 0x4c 7224: d067 beq.n 72f6 7226: 1230 asrs r0, r6, #8 7228: fb02 0203 mla r2, r2, r3, r0 if(dsc->tmp.has_alpha == 0) { 722c: f015 0f02 tst.w r5, #2 const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; 7230: 9926 ldr r1, [sp, #152] ; 0x98 if(dsc->tmp.has_alpha == 0) { 7232: ea4f 0342 mov.w r3, r2, lsl #1 7236: d151 bne.n 72dc *d8 = *s8; 7238: f811 2012 ldrb.w r2, [r1, r2, lsl #1] 723c: f88d 20ac strb.w r2, [sp, #172] ; 0xac px_size = LV_COLOR_SIZE >> 3; pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size); 7240: 18c8 adds r0, r1, r3 7242: 7842 ldrb r2, [r0, #1] 7244: f88d 20ad strb.w r2, [sp, #173] ; 0xad px_size = LV_COLOR_SIZE >> 3; 7248: 2202 movs r2, #2 } else { px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 724a: 9213 str r2, [sp, #76] ; 0x4c px_size = 0; /*unused*/ dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); } if(dsc->tmp.chroma_keyed) { 724c: f89d 20cc ldrb.w r2, [sp, #204] ; 0xcc 7250: 07d2 lsls r2, r2, #31 7252: d504 bpl.n 725e lv_color_t ct = LV_COLOR_TRANSP; if(dsc->res.color.full == ct.full) return false; 7254: f8bd 20ac ldrh.w r2, [sp, #172] ; 0xac 7258: f5b2 6ffc cmp.w r2, #2016 ; 0x7e0 725c: d0b1 beq.n 71c2 } if(dsc->cfg.antialias == false) return true; 725e: f89d 20ab ldrb.w r2, [sp, #171] ; 0xab 7262: b19a cbz r2, 728c dsc->tmp.xs = xs; dsc->tmp.ys = ys; 7264: 9a0f ldr r2, [sp, #60] ; 0x3c 7266: f8ad 20d2 strh.w r2, [sp, #210] ; 0xd2 dsc->tmp.xs_int = xs_int; dsc->tmp.ys_int = ys_int; dsc->tmp.pxi = pxi; 726a: 9336 str r3, [sp, #216] ; 0xd8 dsc->tmp.xs_int = xs_int; 726c: 9a18 ldr r2, [sp, #96] ; 0x60 dsc->tmp.px_size = px_size; 726e: 9b13 ldr r3, [sp, #76] ; 0x4c dsc->tmp.xs_int = xs_int; 7270: f8ad 20d4 strh.w r2, [sp, #212] ; 0xd4 dsc->tmp.px_size = px_size; 7274: f88d 30dc strb.w r3, [sp, #220] ; 0xdc dsc->tmp.ys_int = ys_int; 7278: 9a12 ldr r2, [sp, #72] ; 0x48 bool ret; ret = _lv_img_buf_transform_anti_alias(dsc); 727a: 4b3f ldr r3, [pc, #252] ; (7378 ) dsc->tmp.xs = xs; 727c: f8ad 60d0 strh.w r6, [sp, #208] ; 0xd0 ret = _lv_img_buf_transform_anti_alias(dsc); 7280: a826 add r0, sp, #152 ; 0x98 dsc->tmp.ys_int = ys_int; 7282: f8ad 20d6 strh.w r2, [sp, #214] ; 0xd6 ret = _lv_img_buf_transform_anti_alias(dsc); 7286: 4798 blx r3 if(ret == false) { 7288: 2800 cmp r0, #0 728a: d09a beq.n 71c2 mask_buf[px_i] = trans_dsc.res.opa; 728c: 9a06 ldr r2, [sp, #24] 728e: f89d 30ae ldrb.w r3, [sp, #174] ; 0xae 7292: 7013 strb r3, [r2, #0] c.full = trans_dsc.res.color.full; 7294: f8bd 30ac ldrh.w r3, [sp, #172] ; 0xac if(draw_dsc->recolor_opa != 0) { 7298: 7aa2 ldrb r2, [r4, #10] 729a: b1d2 cbz r2, 72d2 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 729c: 9916 ldr r1, [sp, #88] ; 0x58 729e: 9814 ldr r0, [sp, #80] ; 0x50 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 72a0: 9d14 ldr r5, [sp, #80] ; 0x50 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 72a2: f3c3 1245 ubfx r2, r3, #5, #6 72a6: fb02 1200 mla r2, r2, r0, r1 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 72aa: 9810 ldr r0, [sp, #64] ; 0x40 72ac: f003 011f and.w r1, r3, #31 72b0: 08d2 lsrs r2, r2, #3 72b2: fb01 0105 mla r1, r1, r5, r0 72b6: f3c1 2104 ubfx r1, r1, #8, #5 72ba: f402 62fc and.w r2, r2, #2016 ; 0x7e0 72be: 430a orrs r2, r1 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 72c0: 9919 ldr r1, [sp, #100] ; 0x64 72c2: 0adb lsrs r3, r3, #11 72c4: fb03 1305 mla r3, r3, r5, r1 72c8: f3c3 2307 ubfx r3, r3, #8, #8 72cc: ea42 23c3 orr.w r3, r2, r3, lsl #11 72d0: b29b uxth r3, r3 map2[px_i].full = c.full; 72d2: 9a1d ldr r2, [sp, #116] ; 0x74 72d4: 990e ldr r1, [sp, #56] ; 0x38 72d6: f822 3011 strh.w r3, [r2, r1, lsl #1] 72da: e029 b.n 7330 pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 72dc: 4413 add r3, r2 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1); 72de: 18ca adds r2, r1, r3 72e0: 5cc9 ldrb r1, [r1, r3] 72e2: f88d 10ac strb.w r1, [sp, #172] ; 0xac 72e6: 7851 ldrb r1, [r2, #1] 72e8: f88d 10ad strb.w r1, [sp, #173] ; 0xad dsc->res.opa = src_u8[pxi + px_size - 1]; 72ec: 7892 ldrb r2, [r2, #2] 72ee: f88d 20ae strb.w r2, [sp, #174] ; 0xae px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 72f2: 2203 movs r2, #3 72f4: e7a9 b.n 724a dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 72f6: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 72fa: f9bd 2048 ldrsh.w r2, [sp, #72] ; 0x48 72fe: f8bd 30a8 ldrh.w r3, [sp, #168] ; 0xa8 7302: 4d1e ldr r5, [pc, #120] ; (737c ) 7304: a82c add r0, sp, #176 ; 0xb0 7306: e9cd 1220 strd r1, r2, [sp, #128] ; 0x80 730a: 47a8 blx r5 dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 730c: 4b1c ldr r3, [pc, #112] ; (7380 ) dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 730e: f8ad 00ac strh.w r0, [sp, #172] ; 0xac dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 7312: e9dd 1220 ldrd r1, r2, [sp, #128] ; 0x80 7316: a82c add r0, sp, #176 ; 0xb0 7318: 4798 blx r3 pxi = 0; /*unused*/ 731a: 9b13 ldr r3, [sp, #76] ; 0x4c dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 731c: f88d 00ae strb.w r0, [sp, #174] ; 0xae 7320: e794 b.n 724c if(alpha_byte) { 7322: 9b07 ldr r3, [sp, #28] 7324: b17b cbz r3, 7346 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 7326: 9b0d ldr r3, [sp, #52] ; 0x34 mask_buf[px_i] = px_opa; 7328: 9a06 ldr r2, [sp, #24] lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 732a: 789b ldrb r3, [r3, #2] mask_buf[px_i] = px_opa; 732c: 7013 strb r3, [r2, #0] if(px_opa == 0) { 732e: b96b cbnz r3, 734c for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 7330: 9b0e ldr r3, [sp, #56] ; 0x38 7332: 9a05 ldr r2, [sp, #20] 7334: 3301 adds r3, #1 7336: 930e str r3, [sp, #56] ; 0x38 7338: 9b0d ldr r3, [sp, #52] ; 0x34 733a: 4413 add r3, r2 733c: 930d str r3, [sp, #52] ; 0x34 733e: 9b06 ldr r3, [sp, #24] 7340: 3301 adds r3, #1 7342: 9306 str r3, [sp, #24] 7344: e6c9 b.n 70da mask_buf[px_i] = 0xFF; 7346: 9a06 ldr r2, [sp, #24] 7348: 23ff movs r3, #255 ; 0xff 734a: 7013 strb r3, [r2, #0] c.full = map_px[0] + (map_px[1] << 8); 734c: 9b0d ldr r3, [sp, #52] ; 0x34 734e: 785a ldrb r2, [r3, #1] 7350: 781b ldrb r3, [r3, #0] 7352: eb03 2302 add.w r3, r3, r2, lsl #8 if(chroma_key) { 7356: 9a0c ldr r2, [sp, #48] ; 0x30 c.full = map_px[0] + (map_px[1] << 8); 7358: b29b uxth r3, r3 if(chroma_key) { 735a: 2a00 cmp r2, #0 735c: d09c beq.n 7298 if(c.full == chroma_keyed_color.full) { 735e: f5b3 6ffc cmp.w r3, #2016 ; 0x7e0 7362: d199 bne.n 7298 7364: e72d b.n 71c2 mask_res = LV_DRAW_MASK_RES_CHANGED; 7366: 2802 cmp r0, #2 7368: bf08 it eq 736a: f04f 0b02 moveq.w fp, #2 736e: e6e3 b.n 7138 7370: 00009769 .word 0x00009769 7374: 0000f061 .word 0x0000f061 7378: 0000c22d .word 0x0000c22d 737c: 0000bdc5 .word 0x0000bdc5 7380: 0000bebd .word 0x0000bebd _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 7384: 7ba3 ldrb r3, [r4, #14] 7386: 9302 str r3, [sp, #8] 7388: 7823 ldrb r3, [r4, #0] 738a: 4d6b ldr r5, [pc, #428] ; (7538 ) 738c: e9cd b300 strd fp, r3, [sp] 7390: ee18 2a10 vmov r2, s16 7394: 463b mov r3, r7 7396: a924 add r1, sp, #144 ; 0x90 7398: 4648 mov r0, r9 739a: 47a8 blx r5 blend_area.y1 = blend_area.y2 + 1; 739c: f8bd 3096 ldrh.w r3, [sp, #150] ; 0x96 73a0: 3301 adds r3, #1 73a2: b21b sxth r3, r3 73a4: f8ad 3092 strh.w r3, [sp, #146] ; 0x92 blend_area.y2 = blend_area.y1; 73a8: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 73ac: 9b07 ldr r3, [sp, #28] 73ae: b9a3 cbnz r3, 73da 73b0: 9b0c ldr r3, [sp, #48] ; 0x30 73b2: b993 cbnz r3, 73da 73b4: 8863 ldrh r3, [r4, #2] 73b6: b983 cbnz r3, 73da 73b8: 8923 ldrh r3, [r4, #8] 73ba: f5b3 7f80 cmp.w r3, #256 ; 0x100 73be: bf14 ite ne 73c0: f04f 0b02 movne.w fp, #2 73c4: f04f 0b01 moveq.w fp, #1 if(other_mask_cnt) { 73c8: 9b0b ldr r3, [sp, #44] ; 0x2c 73ca: b14b cbz r3, 73e0 _lv_memset_ff(mask_buf, mask_buf_size); 73cc: 990a ldr r1, [sp, #40] ; 0x28 73ce: 4b5b ldr r3, [pc, #364] ; (753c ) 73d0: 4638 mov r0, r7 73d2: 4798 blx r3 px_i = 0; 73d4: f04f 0800 mov.w r8, #0 73d8: e6c3 b.n 7162 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 73da: f04f 0b02 mov.w fp, #2 73de: e7f3 b.n 73c8 px_i = 0; 73e0: f8dd 802c ldr.w r8, [sp, #44] ; 0x2c 73e4: e6bd b.n 7162 bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 73e6: 2301 movs r3, #1 73e8: 9315 str r3, [sp, #84] ; 0x54 uint32_t mask_buf_size = lv_area_get_size(&draw_area) > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : lv_area_get_size(&draw_area); 73ea: 4e55 ldr r6, [pc, #340] ; (7540 ) 73ec: a822 add r0, sp, #136 ; 0x88 73ee: 47b0 blx r6 73f0: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 73f4: f63f ae37 bhi.w 7066 73f8: a822 add r0, sp, #136 ; 0x88 73fa: 47b0 blx r6 73fc: 900a str r0, [sp, #40] ; 0x28 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 73fe: 9b0a ldr r3, [sp, #40] ; 0x28 7400: 4e50 ldr r6, [pc, #320] ; (7544 ) 7402: 0058 lsls r0, r3, #1 7404: 47b0 blx r6 7406: ee08 0a10 vmov s16, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 740a: 980a ldr r0, [sp, #40] ; 0x28 740c: 47b0 blx r6 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 740e: 4b4e ldr r3, [pc, #312] ; (7548 ) lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7410: 4607 mov r7, r0 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 7412: 2148 movs r1, #72 ; 0x48 7414: a826 add r0, sp, #152 ; 0x98 7416: 4798 blx r3 if(transform) { 7418: 9b15 ldr r3, [sp, #84] ; 0x54 741a: b363 cbz r3, 7476 if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 741c: 9b07 ldr r3, [sp, #28] 741e: 2b00 cmp r3, #0 7420: f47f ae25 bne.w 706e else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; 7424: 9b0c ldr r3, [sp, #48] ; 0x30 7426: 2b00 cmp r3, #0 7428: bf0c ite eq 742a: 2204 moveq r2, #4 742c: 2206 movne r2, #6 trans_dsc.cfg.angle = draw_dsc->angle; 742e: 8863 ldrh r3, [r4, #2] 7430: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 trans_dsc.cfg.zoom = draw_dsc->zoom; 7434: 8923 ldrh r3, [r4, #8] 7436: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 743a: f8ba 3006 ldrh.w r3, [sl, #6] 743e: f8ba 1002 ldrh.w r1, [sl, #2] trans_dsc.cfg.src = map_p; 7442: 9526 str r5, [sp, #152] ; 0x98 7444: 3301 adds r3, #1 7446: 1a5b subs r3, r3, r1 trans_dsc.cfg.src_h = lv_area_get_height(map_area);; 7448: f8ad 309e strh.w r3, [sp, #158] ; 0x9e trans_dsc.cfg.pivot_x = draw_dsc->pivot.x; 744c: 88a3 ldrh r3, [r4, #4] 744e: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0 trans_dsc.cfg.pivot_y = draw_dsc->pivot.y; 7452: 88e3 ldrh r3, [r4, #6] 7454: f8ad 30a2 strh.w r3, [sp, #162] ; 0xa2 trans_dsc.cfg.color = draw_dsc->recolor; 7458: 89a3 ldrh r3, [r4, #12] 745a: f8ad 30a8 strh.w r3, [sp, #168] ; 0xa8 trans_dsc.cfg.antialias = draw_dsc->antialias; 745e: 7be3 ldrb r3, [r4, #15] trans_dsc.cfg.src_w = map_w; 7460: f8ad 809c strh.w r8, [sp, #156] ; 0x9c trans_dsc.cfg.antialias = draw_dsc->antialias; 7464: f3c3 0300 ubfx r3, r3, #0, #1 7468: f88d 30ab strb.w r3, [sp, #171] ; 0xab _lv_img_buf_transform_init(&trans_dsc); 746c: a826 add r0, sp, #152 ; 0x98 746e: 4b37 ldr r3, [pc, #220] ; (754c ) trans_dsc.cfg.cf = cf; 7470: f88d 20aa strb.w r2, [sp, #170] ; 0xaa _lv_img_buf_transform_init(&trans_dsc); 7474: 4798 blx r3 lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa; 7476: 7aa3 ldrb r3, [r4, #10] 7478: 43da mvns r2, r3 747a: b2d2 uxtb r2, r2 747c: 9214 str r2, [sp, #80] ; 0x50 if(draw_dsc->recolor_opa != 0) { 747e: 2b00 cmp r3, #0 7480: f43f adf7 beq.w 7072 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 7484: 7b62 ldrb r2, [r4, #13] 7486: 08d2 lsrs r2, r2, #3 7488: 435a muls r2, r3 748a: 9219 str r2, [sp, #100] ; 0x64 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 748c: 89a2 ldrh r2, [r4, #12] 748e: f3c2 1245 ubfx r2, r2, #5, #6 7492: 435a muls r2, r3 7494: 9216 str r2, [sp, #88] ; 0x58 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 7496: 7b22 ldrb r2, [r4, #12] 7498: f002 021f and.w r2, r2, #31 749c: 4353 muls r3, r2 749e: 9310 str r3, [sp, #64] ; 0x40 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 74a0: 9b07 ldr r3, [sp, #28] 74a2: 2b00 cmp r3, #0 74a4: f47f ade9 bne.w 707a 74a8: 9b0c ldr r3, [sp, #48] ; 0x30 74aa: 2b00 cmp r3, #0 74ac: f47f ade5 bne.w 707a 74b0: 8863 ldrh r3, [r4, #2] 74b2: 2b00 cmp r3, #0 74b4: f47f ade1 bne.w 707a 74b8: 8923 ldrh r3, [r4, #8] 74ba: f5b3 7f80 cmp.w r3, #256 ; 0x100 74be: bf14 ite ne 74c0: f04f 0b02 movne.w fp, #2 74c4: f04f 0b01 moveq.w fp, #1 if(other_mask_cnt) { 74c8: 9b0b ldr r3, [sp, #44] ; 0x2c 74ca: b11b cbz r3, 74d4 _lv_memset_ff(mask_buf, mask_buf_size); 74cc: 990a ldr r1, [sp, #40] ; 0x28 74ce: 4b1b ldr r3, [pc, #108] ; (753c ) 74d0: 4638 mov r0, r7 74d2: 4798 blx r3 int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1; 74d4: 9b04 ldr r3, [sp, #16] 74d6: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a 74da: f9b3 3012 ldrsh.w r3, [r3, #18] 74de: 4413 add r3, r2 74e0: f9ba 2002 ldrsh.w r2, [sl, #2] 74e4: 1a9b subs r3, r3, r2 74e6: 931b str r3, [sp, #108] ; 0x6c map_buf_tmp += map_w * px_size_byte; 74e8: 9b05 ldr r3, [sp, #20] 74ea: fb13 f308 smulbb r3, r3, r8 74ee: 931a str r3, [sp, #104] ; 0x68 for(y = 0; y < draw_area_h; y++) { 74f0: 2300 movs r3, #0 74f2: 9309 str r3, [sp, #36] ; 0x24 uint32_t px_i = 0; 74f4: 4698 mov r8, r3 74f6: 9b11 ldr r3, [sp, #68] ; 0x44 74f8: ea23 73e3 bic.w r3, r3, r3, asr #31 74fc: 931f str r3, [sp, #124] ; 0x7c for(y = 0; y < draw_area_h; y++) { 74fe: 9b17 ldr r3, [sp, #92] ; 0x5c 7500: 9a09 ldr r2, [sp, #36] ; 0x24 7502: 4293 cmp r3, r2 7504: f73f adcc bgt.w 70a0 if(blend_area.y1 != blend_area.y2) { 7508: f9bd 3096 ldrsh.w r3, [sp, #150] ; 0x96 750c: f9bd 2092 ldrsh.w r2, [sp, #146] ; 0x92 7510: 429a cmp r2, r3 7512: d00e beq.n 7532 blend_area.y2--; 7514: 3b01 subs r3, #1 7516: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 751a: 7ba3 ldrb r3, [r4, #14] 751c: 9302 str r3, [sp, #8] 751e: 7823 ldrb r3, [r4, #0] 7520: 4c05 ldr r4, [pc, #20] ; (7538 ) 7522: e9cd b300 strd fp, r3, [sp] 7526: ee18 2a10 vmov r2, s16 752a: 463b mov r3, r7 752c: a924 add r1, sp, #144 ; 0x90 752e: 4648 mov r0, r9 7530: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 7532: 4638 mov r0, r7 7534: e591 b.n 705a 7536: bf00 nop 7538: 000067d5 .word 0x000067d5 753c: 0000f0bd .word 0x0000f0bd 7540: 0000deb5 .word 0x0000deb5 7544: 0000eefd .word 0x0000eefd 7548: 0000f061 .word 0x0000f061 754c: 0000bfa9 .word 0x0000bfa9 00007550 : { 7550: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 7552: 4b08 ldr r3, [pc, #32] ; (7574 ) { 7554: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 7556: 2110 movs r1, #16 7558: 4798 blx r3 dsc->recolor = LV_COLOR_BLACK; 755a: 2300 movs r3, #0 755c: 81a3 strh r3, [r4, #12] dsc->opa = LV_OPA_COVER; 755e: 23ff movs r3, #255 ; 0xff 7560: 7023 strb r3, [r4, #0] dsc->zoom = LV_IMG_ZOOM_NONE; 7562: f44f 7380 mov.w r3, #256 ; 0x100 7566: 8123 strh r3, [r4, #8] dsc->antialias = LV_ANTIALIAS; 7568: 7be3 ldrb r3, [r4, #15] 756a: f043 0301 orr.w r3, r3, #1 756e: 73e3 strb r3, [r4, #15] } 7570: bd10 pop {r4, pc} 7572: bf00 nop 7574: 0000f061 .word 0x0000f061 00007578 : switch(cf) { 7578: 3804 subs r0, #4 757a: b2c0 uxtb r0, r0 757c: 280a cmp r0, #10 757e: bf9d ittte ls 7580: 4b02 ldrls r3, [pc, #8] ; (758c ) 7582: 18c0 addls r0, r0, r3 7584: 7880 ldrbls r0, [r0, #2] { 7586: 2000 movhi r0, #0 } 7588: 4770 bx lr 758a: bf00 nop 758c: 0001fae0 .word 0x0001fae0 00007590 : switch(cf) { 7590: 2803 cmp r0, #3 7592: d005 beq.n 75a0 7594: 3806 subs r0, #6 7596: 2804 cmp r0, #4 7598: bf8c ite hi 759a: 2000 movhi r0, #0 759c: 2001 movls r0, #1 759e: 4770 bx lr is_chroma_keyed = true; 75a0: 2001 movs r0, #1 } 75a2: 4770 bx lr 000075a4 : switch(cf) { 75a4: 280e cmp r0, #14 75a6: d809 bhi.n 75bc 75a8: 2301 movs r3, #1 75aa: fa03 f000 lsl.w r0, r3, r0 75ae: f647 73a4 movw r3, #32676 ; 0x7fa4 75b2: 4218 tst r0, r3 75b4: bf14 ite ne 75b6: 2001 movne r0, #1 75b8: 2000 moveq r0, #0 75ba: 4770 bx lr { 75bc: 2000 movs r0, #0 } 75be: 4770 bx lr 000075c0 : { 75c0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 75c4: ed2d 8b02 vpush {d8} 75c8: 4604 mov r4, r0 75ca: b08d sub sp, #52 ; 0x34 75cc: 4688 mov r8, r1 75ce: 461f mov r7, r3 if(src == NULL) { 75d0: 4610 mov r0, r2 75d2: b94a cbnz r2, 75e8 LV_LOG_WARN("Image draw: src is NULL"); 75d4: 4b79 ldr r3, [pc, #484] ; (77bc ) 75d6: 9300 str r3, [sp, #0] 75d8: 4b79 ldr r3, [pc, #484] ; (77c0 ) 75da: 224d movs r2, #77 ; 0x4d LV_LOG_WARN("Image draw error"); 75dc: 4979 ldr r1, [pc, #484] ; (77c4 ) 75de: 4d7a ldr r5, [pc, #488] ; (77c8 ) 75e0: 2002 movs r0, #2 75e2: 47a8 blx r5 show_error(coords, mask, "No\ndata"); 75e4: 4a79 ldr r2, [pc, #484] ; (77cc ) 75e6: e014 b.n 7612 if(dsc->opa <= LV_OPA_MIN) return; 75e8: 781b ldrb r3, [r3, #0] 75ea: 2b05 cmp r3, #5 75ec: d96a bls.n 76c4 lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor); 75ee: 89b9 ldrh r1, [r7, #12] 75f0: 4b77 ldr r3, [pc, #476] ; (77d0 ) 75f2: 4798 blx r3 if(cdsc == NULL) return LV_RES_INV; 75f4: 4605 mov r5, r0 75f6: 2800 cmp r0, #0 75f8: f000 80bf beq.w 777a if(cdsc->dec_dsc.error_msg != NULL) { 75fc: 6983 ldr r3, [r0, #24] 75fe: b18b cbz r3, 7624 LV_LOG_WARN("Image draw error"); 7600: 4b74 ldr r3, [pc, #464] ; (77d4 ) 7602: 9300 str r3, [sp, #0] 7604: 22f7 movs r2, #247 ; 0xf7 7606: 4b74 ldr r3, [pc, #464] ; (77d8 ) 7608: 496e ldr r1, [pc, #440] ; (77c4 ) 760a: 4e6f ldr r6, [pc, #444] ; (77c8 ) 760c: 2002 movs r0, #2 760e: 47b0 blx r6 show_error(coords, clip_area, cdsc->dec_dsc.error_msg); 7610: 69aa ldr r2, [r5, #24] show_error(coords, mask, "No\ndata"); 7612: 4b72 ldr r3, [pc, #456] ; (77dc ) 7614: 4641 mov r1, r8 7616: 4620 mov r0, r4 } 7618: b00d add sp, #52 ; 0x34 761a: ecbd 8b02 vpop {d8} 761e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} show_error(coords, mask, "No\ndata"); 7622: 4718 bx r3 bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 7624: 7b03 ldrb r3, [r0, #12] 7626: 4a6e ldr r2, [pc, #440] ; (77e0 ) 7628: f8df b1dc ldr.w fp, [pc, #476] ; 7808 762c: f003 031f and.w r3, r3, #31 7630: 4618 mov r0, r3 7632: 4790 blx r2 7634: 9003 str r0, [sp, #12] bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 7636: 4618 mov r0, r3 7638: 4b6a ldr r3, [pc, #424] ; (77e4 ) 763a: 4798 blx r3 else if(cdsc->dec_dsc.img_data) { 763c: 692b ldr r3, [r5, #16] bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 763e: 9004 str r0, [sp, #16] else if(cdsc->dec_dsc.img_data) { 7640: 2b00 cmp r3, #0 7642: d044 beq.n 76ce lv_area_copy(&map_area_rot, coords); 7644: 4b68 ldr r3, [pc, #416] ; (77e8 ) 7646: a808 add r0, sp, #32 7648: 4621 mov r1, r4 764a: 4798 blx r3 if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) { 764c: 887b ldrh r3, [r7, #2] 764e: 8938 ldrh r0, [r7, #8] 7650: b913 cbnz r3, 7658 7652: f5b0 7f80 cmp.w r0, #256 ; 0x100 7656: d026 beq.n 76a6 7658: 88e2 ldrh r2, [r4, #6] 765a: 8861 ldrh r1, [r4, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 765c: 8826 ldrh r6, [r4, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 765e: 3201 adds r2, #1 7660: 1a52 subs r2, r2, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 7662: 88a1 ldrh r1, [r4, #4] 7664: 3101 adds r1, #1 7666: 1b89 subs r1, r1, r6 _lv_img_buf_get_transformed_area(&map_area_rot, w, h, draw_dsc->angle, draw_dsc->zoom, &draw_dsc->pivot); 7668: 1d3e adds r6, r7, #4 766a: e9cd 0600 strd r0, r6, [sp] 766e: b21b sxth r3, r3 7670: b212 sxth r2, r2 7672: b209 sxth r1, r1 7674: 4e5d ldr r6, [pc, #372] ; (77ec ) 7676: a808 add r0, sp, #32 7678: 47b0 blx r6 map_area_rot.x1 += coords->x1; 767a: 8822 ldrh r2, [r4, #0] 767c: f8bd 3020 ldrh.w r3, [sp, #32] map_area_rot.y1 += coords->y1; 7680: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 map_area_rot.x1 += coords->x1; 7684: 4413 add r3, r2 7686: f8ad 3020 strh.w r3, [sp, #32] map_area_rot.y1 += coords->y1; 768a: 8863 ldrh r3, [r4, #2] 768c: 4419 add r1, r3 768e: f8ad 1022 strh.w r1, [sp, #34] ; 0x22 map_area_rot.x2 += coords->x1; 7692: f8bd 1024 ldrh.w r1, [sp, #36] ; 0x24 7696: 440a add r2, r1 7698: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 map_area_rot.y2 += coords->y1; 769c: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 76a0: 4413 add r3, r2 76a2: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot); 76a6: aa08 add r2, sp, #32 76a8: 4641 mov r1, r8 76aa: a80a add r0, sp, #40 ; 0x28 76ac: 47d8 blx fp if(union_ok == false) { 76ae: b148 cbz r0, 76c4 lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte); 76b0: 9b04 ldr r3, [sp, #16] 76b2: 9301 str r3, [sp, #4] 76b4: 9b03 ldr r3, [sp, #12] 76b6: 9300 str r3, [sp, #0] 76b8: 4620 mov r0, r4 76ba: 692a ldr r2, [r5, #16] 76bc: 4c4c ldr r4, [pc, #304] ; (77f0 ) 76be: 463b mov r3, r7 76c0: a90a add r1, sp, #40 ; 0x28 76c2: 47a0 blx r4 } 76c4: b00d add sp, #52 ; 0x34 76c6: ecbd 8b02 vpop {d8} 76ca: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} union_ok = _lv_area_intersect(&mask_com, clip_area, coords); 76ce: 4622 mov r2, r4 76d0: 4641 mov r1, r8 76d2: a806 add r0, sp, #24 76d4: 47d8 blx fp if(union_ok == false) { 76d6: 2800 cmp r0, #0 76d8: d0f4 beq.n 76c4 76da: f8bd 601c ldrh.w r6, [sp, #28] 76de: f8bd 3018 ldrh.w r3, [sp, #24] 76e2: 3601 adds r6, #1 76e4: 1af6 subs r6, r6, r3 76e6: b236 sxth r6, r6 uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 76e8: 4b42 ldr r3, [pc, #264] ; (77f4 ) 76ea: eb06 0046 add.w r0, r6, r6, lsl #1 76ee: 4798 blx r3 lv_area_copy(&line, &mask_com); 76f0: 4b3d ldr r3, [pc, #244] ; (77e8 ) 76f2: a906 add r1, sp, #24 uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 76f4: 4681 mov r9, r0 lv_area_copy(&line, &mask_com); 76f6: a808 add r0, sp, #32 76f8: 4798 blx r3 lv_area_set_height(&line, 1); 76fa: 4b3f ldr r3, [pc, #252] ; (77f8 ) 76fc: 2101 movs r1, #1 76fe: a808 add r0, sp, #32 7700: 4798 blx r3 int32_t x = mask_com.x1 - coords->x1; 7702: f9bd 3018 ldrsh.w r3, [sp, #24] 7706: f9b4 2000 ldrsh.w r2, [r4] int32_t y = mask_com.y1 - coords->y1; 770a: f9bd a01a ldrsh.w sl, [sp, #26] 770e: f9b4 1002 ldrsh.w r1, [r4, #2] union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 7712: f8cd b014 str.w fp, [sp, #20] read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 7716: 1a9b subs r3, r3, r2 7718: b21b sxth r3, r3 int32_t y = mask_com.y1 - coords->y1; 771a: ebaa 0101 sub.w r1, sl, r1 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 771e: ee08 3a10 vmov s16, r3 int32_t y = mask_com.y1 - coords->y1; 7722: 9102 str r1, [sp, #8] for(row = mask_com.y1; row <= mask_com.y2; row++) { 7724: f9bd 301e ldrsh.w r3, [sp, #30] 7728: 459a cmp sl, r3 772a: dd03 ble.n 7734 _lv_mem_buf_release(buf); 772c: 4b33 ldr r3, [pc, #204] ; (77fc ) 772e: 4648 mov r0, r9 7730: 4798 blx r3 if(res == LV_RES_INV) { 7732: e7c7 b.n 76c4 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 7734: 9b05 ldr r3, [sp, #20] 7736: aa08 add r2, sp, #32 7738: 4641 mov r1, r8 773a: a80a add r0, sp, #40 ; 0x28 773c: 4798 blx r3 if(union_ok == false) continue; 773e: 2800 cmp r0, #0 7740: d038 beq.n 77b4 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 7742: f9bd 2008 ldrsh.w r2, [sp, #8] 7746: f8df b0c4 ldr.w fp, [pc, #196] ; 780c 774a: f8cd 9000 str.w r9, [sp] 774e: ee18 1a10 vmov r1, s16 7752: 4633 mov r3, r6 7754: 4628 mov r0, r5 7756: 47d8 blx fp if(read_res != LV_RES_OK) { 7758: 2801 cmp r0, #1 775a: d013 beq.n 7784 lv_img_decoder_close(&cdsc->dec_dsc); 775c: 4628 mov r0, r5 775e: 4b28 ldr r3, [pc, #160] ; (7800 ) LV_LOG_WARN("Image draw can't read the line"); 7760: 4d19 ldr r5, [pc, #100] ; (77c8 ) lv_img_decoder_close(&cdsc->dec_dsc); 7762: 4798 blx r3 LV_LOG_WARN("Image draw can't read the line"); 7764: 4b27 ldr r3, [pc, #156] ; (7804 ) 7766: 9300 str r3, [sp, #0] 7768: 2002 movs r0, #2 776a: 4b1b ldr r3, [pc, #108] ; (77d8 ) 776c: 4915 ldr r1, [pc, #84] ; (77c4 ) 776e: f44f 729a mov.w r2, #308 ; 0x134 7772: 47a8 blx r5 _lv_mem_buf_release(buf); 7774: 4b21 ldr r3, [pc, #132] ; (77fc ) 7776: 4648 mov r0, r9 7778: 4798 blx r3 LV_LOG_WARN("Image draw error"); 777a: 4b16 ldr r3, [pc, #88] ; (77d4 ) 777c: 9300 str r3, [sp, #0] 777e: 2258 movs r2, #88 ; 0x58 7780: 4b0f ldr r3, [pc, #60] ; (77c0 ) 7782: e72b b.n 75dc lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte); 7784: 9b04 ldr r3, [sp, #16] 7786: 9301 str r3, [sp, #4] 7788: 9b03 ldr r3, [sp, #12] 778a: 9300 str r3, [sp, #0] 778c: f8df b060 ldr.w fp, [pc, #96] ; 77f0 7790: 463b mov r3, r7 7792: 464a mov r2, r9 7794: a90a add r1, sp, #40 ; 0x28 7796: a808 add r0, sp, #32 7798: 47d8 blx fp line.y1++; 779a: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 779e: 3301 adds r3, #1 77a0: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 line.y2++; 77a4: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 77a8: 3301 adds r3, #1 77aa: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 y++; 77ae: 9b02 ldr r3, [sp, #8] 77b0: 3301 adds r3, #1 77b2: 9302 str r3, [sp, #8] for(row = mask_com.y1; row <= mask_com.y2; row++) { 77b4: f10a 0a01 add.w sl, sl, #1 77b8: e7b4 b.n 7724 77ba: bf00 nop 77bc: 0001fa8f .word 0x0001fa8f 77c0: 0001faed .word 0x0001faed 77c4: 0001fa5b .word 0x0001fa5b 77c8: 0000e931 .word 0x0000e931 77cc: 0001faa7 .word 0x0001faa7 77d0: 0000c4ed .word 0x0000c4ed 77d4: 0001faaf .word 0x0001faaf 77d8: 0001faf9 .word 0x0001faf9 77dc: 00006d8d .word 0x00006d8d 77e0: 00007591 .word 0x00007591 77e4: 000075a5 .word 0x000075a5 77e8: 00006ddd .word 0x00006ddd 77ec: 0000c0a5 .word 0x0000c0a5 77f0: 00006df1 .word 0x00006df1 77f4: 0000eefd .word 0x0000eefd 77f8: 0000deab .word 0x0000deab 77fc: 0000ebb1 .word 0x0000ebb1 7800: 0000d091 .word 0x0000d091 7804: 0001fac0 .word 0x0001fac0 7808: 0000ded1 .word 0x0000ded1 780c: 0000d071 .word 0x0000d071 00007810 : if(src == NULL) return img_src_type; 7810: b150 cbz r0, 7828 if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 7812: 7803 ldrb r3, [r0, #0] 7814: f1a3 0220 sub.w r2, r3, #32 7818: 2a5f cmp r2, #95 ; 0x5f 781a: d907 bls.n 782c img_src_type = LV_IMG_SRC_SYMBOL; /*Symbols begins after 0x7F*/ 781c: f013 0f80 tst.w r3, #128 ; 0x80 7820: bf0c ite eq 7822: 2000 moveq r0, #0 7824: 2002 movne r0, #2 7826: 4770 bx lr if(src == NULL) return img_src_type; 7828: 2003 movs r0, #3 782a: 4770 bx lr img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/ 782c: 2001 movs r0, #1 } 782e: 4770 bx lr 00007830 : */ static uint8_t hex_char_to_num(char hex) { uint8_t result = 0; if(hex >= '0' && hex <= '9') { 7830: f1a0 0330 sub.w r3, r0, #48 ; 0x30 7834: b2db uxtb r3, r3 7836: 2b09 cmp r3, #9 7838: d90a bls.n 7850 result = hex - '0'; } else { if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/ 783a: 2860 cmp r0, #96 ; 0x60 783c: bf84 itt hi 783e: 3820 subhi r0, #32 7840: b2c0 uxtbhi r0, r0 switch(hex) { 7842: f1a0 0341 sub.w r3, r0, #65 ; 0x41 7846: 2b05 cmp r3, #5 7848: bf9a itte ls 784a: 3837 subls r0, #55 ; 0x37 784c: b2c3 uxtbls r3, r0 { 784e: 2300 movhi r3, #0 break; } } return result; } 7850: 4618 mov r0, r3 7852: 4770 bx lr 00007854 : { 7854: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 7856: 4b09 ldr r3, [pc, #36] ; (787c ) { 7858: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 785a: 211c movs r1, #28 785c: 4798 blx r3 dsc->opa = LV_OPA_COVER; 785e: 23ff movs r3, #255 ; 0xff 7860: 7223 strb r3, [r4, #8] dsc->font = LV_THEME_DEFAULT_FONT_NORMAL; 7862: 4b07 ldr r3, [pc, #28] ; (7880 ) 7864: 6063 str r3, [r4, #4] dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL; 7866: f64f 73ff movw r3, #65535 ; 0xffff 786a: 81e3 strh r3, [r4, #14] dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; 786c: 8223 strh r3, [r4, #16] dsc->color = LV_COLOR_BLACK; 786e: f44f 13f8 mov.w r3, #2031616 ; 0x1f0000 7872: 6023 str r3, [r4, #0] dsc->bidi_dir = LV_BIDI_DIR_LTR; 7874: 2300 movs r3, #0 7876: 75a3 strb r3, [r4, #22] } 7878: bd10 pop {r4, pc} 787a: bf00 nop 787c: 0000f061 .word 0x0000f061 7880: 20000010 .word 0x20000010 00007884 : { 7884: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7888: ed2d 8b04 vpush {d8-d9} 788c: b0d1 sub sp, #324 ; 0x144 788e: 468a mov sl, r1 7890: 930a str r3, [sp, #40] ; 0x28 7892: 2300 movs r3, #0 7894: 9321 str r3, [sp, #132] ; 0x84 if(dsc->opa <= LV_OPA_MIN) return; 7896: 7a13 ldrb r3, [r2, #8] { 7898: 9c5e ldr r4, [sp, #376] ; 0x178 789a: 9005 str r0, [sp, #20] if(dsc->opa <= LV_OPA_MIN) return; 789c: 2b05 cmp r3, #5 { 789e: 4693 mov fp, r2 if(dsc->opa <= LV_OPA_MIN) return; 78a0: f240 80db bls.w 7a5a if(txt[0] == '\0') return; 78a4: 9b0a ldr r3, [sp, #40] ; 0x28 78a6: 781b ldrb r3, [r3, #0] 78a8: 2b00 cmp r3, #0 78aa: f000 80d6 beq.w 7a5a const lv_font_t * font = dsc->font; 78ae: 6853 ldr r3, [r2, #4] bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 78b0: 460a mov r2, r1 const lv_font_t * font = dsc->font; 78b2: ee08 3a10 vmov s16, r3 bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 78b6: 4601 mov r1, r0 78b8: 4b9c ldr r3, [pc, #624] ; (7b2c ) 78ba: a831 add r0, sp, #196 ; 0xc4 78bc: 4798 blx r3 if(!clip_ok) return; 78be: 2800 cmp r0, #0 78c0: f000 80cb beq.w 7a5a if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) { 78c4: f89b 3017 ldrb.w r3, [fp, #23] 78c8: 079f lsls r7, r3, #30 78ca: f100 80cb bmi.w 7a64 78ce: 9b05 ldr r3, [sp, #20] 78d0: 9a05 ldr r2, [sp, #20] 78d2: 889b ldrh r3, [r3, #4] 78d4: 8812 ldrh r2, [r2, #0] 78d6: 3301 adds r3, #1 78d8: 1a9b subs r3, r3, r2 w = lv_area_get_width(coords); 78da: b21b sxth r3, r3 int32_t line_height_font = lv_font_get_line_height(font); 78dc: ee18 2a10 vmov r2, s16 78e0: f9b2 7008 ldrsh.w r7, [r2, #8] pos.x = coords->x1; 78e4: 9a05 ldr r2, [sp, #20] y_ofs = dsc->ofs_y; 78e6: f9bb 1014 ldrsh.w r1, [fp, #20] pos.x = coords->x1; 78ea: f9b2 2000 ldrsh.w r2, [r2] 78ee: 920b str r2, [sp, #44] ; 0x2c pos.y = coords->y1; 78f0: 9a05 ldr r2, [sp, #20] int32_t line_height = line_height_font + dsc->line_space; 78f2: f9bb 500a ldrsh.w r5, [fp, #10] pos.y = coords->y1; 78f6: f9b2 6002 ldrsh.w r6, [r2, #2] x_ofs = dsc->ofs_x; 78fa: f9bb 2012 ldrsh.w r2, [fp, #18] 78fe: 9225 str r2, [sp, #148] ; 0x94 pos.y += y_ofs; 7900: 1872 adds r2, r6, r1 7902: b290 uxth r0, r2 7904: b212 sxth r2, r2 int32_t line_height = line_height_font + dsc->line_space; 7906: 443d add r5, r7 pos.y += y_ofs; 7908: 9206 str r2, [sp, #24] if(hint && y_ofs == 0 && coords->y1 < 0) { 790a: 2c00 cmp r4, #0 790c: f000 80bc beq.w 7a88 7910: 2900 cmp r1, #0 7912: f040 80bd bne.w 7a90 7916: 2e00 cmp r6, #0 7918: f280 80b8 bge.w 7a8c if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) { 791c: 68a2 ldr r2, [r4, #8] 791e: 1b92 subs r2, r2, r6 7920: 2a00 cmp r2, #0 7922: bfb8 it lt 7924: 4252 neglt r2, r2 7926: f5c5 7100 rsb r1, r5, #512 ; 0x200 792a: ebb2 0f41 cmp.w r2, r1, lsl #1 hint->line_start = -1; 792e: bfc4 itt gt 7930: f04f 32ff movgt.w r2, #4294967295 ; 0xffffffff 7934: 6022 strgt r2, [r4, #0] last_line_start = hint->line_start; 7936: 6822 ldr r2, [r4, #0] if(hint && last_line_start >= 0) { 7938: 2a00 cmp r2, #0 793a: f2c0 80a9 blt.w 7a90 line_start = last_line_start; 793e: 9204 str r2, [sp, #16] pos.y += hint->y; 7940: 6862 ldr r2, [r4, #4] 7942: 4402 add r2, r0 7944: b212 sxth r2, r2 7946: 9206 str r2, [sp, #24] uint32_t line_end = line_start + _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7948: b21b sxth r3, r3 794a: 9e04 ldr r6, [sp, #16] 794c: 980a ldr r0, [sp, #40] ; 0x28 794e: f9bb 200c ldrsh.w r2, [fp, #12] 7952: ee09 3a10 vmov s18, r3 7956: f89b 3017 ldrb.w r3, [fp, #23] 795a: 9300 str r3, [sp, #0] 795c: 4430 add r0, r6 795e: ee19 3a10 vmov r3, s18 7962: ee18 1a10 vmov r1, s16 7966: 4e72 ldr r6, [pc, #456] ; (7b30 ) 7968: 47b0 blx r6 796a: 9b04 ldr r3, [sp, #16] 796c: 18c3 adds r3, r0, r3 796e: 9307 str r3, [sp, #28] while(pos.y + line_height_font < mask->y1) { 7970: 9a06 ldr r2, [sp, #24] 7972: f9ba 1002 ldrsh.w r1, [sl, #2] line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7976: f89b 3017 ldrb.w r3, [fp, #23] while(pos.y + line_height_font < mask->y1) { 797a: 443a add r2, r7 797c: 428a cmp r2, r1 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 797e: 9a0a ldr r2, [sp, #40] ; 0x28 while(pos.y + line_height_font < mask->y1) { 7980: f2c0 8089 blt.w 7a96 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7984: 9904 ldr r1, [sp, #16] if(dsc->flag & LV_TXT_FLAG_CENTER) { 7986: 075e lsls r6, r3, #29 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7988: eb02 0001 add.w r0, r2, r1 if(dsc->flag & LV_TXT_FLAG_CENTER) { 798c: f140 80ad bpl.w 7aea line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7990: 9a07 ldr r2, [sp, #28] 7992: 9300 str r3, [sp, #0] 7994: 1a51 subs r1, r2, r1 7996: f9bb 300c ldrsh.w r3, [fp, #12] 799a: 4c66 ldr r4, [pc, #408] ; (7b34 ) 799c: ee18 2a10 vmov r2, s16 79a0: b289 uxth r1, r1 79a2: 47a0 blx r4 79a4: 9b05 ldr r3, [sp, #20] 79a6: 9a05 ldr r2, [sp, #20] 79a8: 889b ldrh r3, [r3, #4] 79aa: 8812 ldrh r2, [r2, #0] 79ac: 3301 adds r3, #1 79ae: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 79b0: b21b sxth r3, r3 79b2: 1a18 subs r0, r3, r0 79b4: 9b0b ldr r3, [sp, #44] ; 0x2c 79b6: eb00 70d0 add.w r0, r0, r0, lsr #31 79ba: eb03 0060 add.w r0, r3, r0, asr #1 pos.x += lv_area_get_width(coords) - line_width; 79be: b203 sxth r3, r0 79c0: 930b str r3, [sp, #44] ; 0x2c lv_opa_t opa = dsc->opa; 79c2: f89b 3008 ldrb.w r3, [fp, #8] 79c6: 9320 str r3, [sp, #128] ; 0x80 uint16_t sel_start = dsc->sel_start; 79c8: f8bb 300e ldrh.w r3, [fp, #14] 79cc: 9311 str r3, [sp, #68] ; 0x44 uint16_t sel_end = dsc->sel_end; 79ce: f8bb 3010 ldrh.w r3, [fp, #16] 79d2: 9312 str r3, [sp, #72] ; 0x48 if(sel_start > sel_end) { 79d4: e9dd 3211 ldrd r3, r2, [sp, #68] ; 0x44 79d8: 4293 cmp r3, r2 79da: bf88 it hi 79dc: e9cd 2311 strdhi r2, r3, [sp, #68] ; 0x44 if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) { 79e0: f89b 3018 ldrb.w r3, [fp, #24] 79e4: 0799 lsls r1, r3, #30 79e6: d01c beq.n 7a22 lv_draw_line_dsc_init(&line_dsc); 79e8: 4b53 ldr r3, [pc, #332] ; (7b38 ) 79ea: a835 add r0, sp, #212 ; 0xd4 79ec: 4798 blx r3 line_dsc.color = dsc->color; 79ee: f8bb 3000 ldrh.w r3, [fp] 79f2: f8ad 30d4 strh.w r3, [sp, #212] ; 0xd4 line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/ 79f6: f8db 3004 ldr.w r3, [fp, #4] 79fa: f9b3 3008 ldrsh.w r3, [r3, #8] 79fe: 220a movs r2, #10 7a00: 3305 adds r3, #5 7a02: fb93 f3f2 sdiv r3, r3, r2 7a06: f8ad 30d6 strh.w r3, [sp, #214] ; 0xd6 line_dsc.opa = dsc->opa; 7a0a: f89b 3008 ldrb.w r3, [fp, #8] line_dsc.blend_mode = dsc->blend_mode; 7a0e: f89b 2019 ldrb.w r2, [fp, #25] line_dsc.opa = dsc->opa; 7a12: f88d 30dc strb.w r3, [sp, #220] ; 0xdc line_dsc.blend_mode = dsc->blend_mode; 7a16: f89d 30dd ldrb.w r3, [sp, #221] ; 0xdd 7a1a: f362 0301 bfi r3, r2, #0, #2 7a1e: f88d 30dd strb.w r3, [sp, #221] ; 0xdd lv_draw_rect_dsc_init(&draw_dsc_sel); 7a22: 4b46 ldr r3, [pc, #280] ; (7b3c ) 7a24: a83b add r0, sp, #236 ; 0xec 7a26: 4798 blx r3 draw_dsc_sel.bg_color = dsc->sel_color; 7a28: f8bb 3002 ldrh.w r3, [fp, #2] 7a2c: f8ad 30ee strh.w r3, [sp, #238] ; 0xee while(txt[line_start] != '\0') { 7a30: 9b20 ldr r3, [sp, #128] ; 0x80 7a32: 9c0b ldr r4, [sp, #44] ; 0x2c 7a34: 2bfa cmp r3, #250 ; 0xfa 7a36: bf88 it hi 7a38: 23ff movhi r3, #255 ; 0xff 7a3a: 9309 str r3, [sp, #36] ; 0x24 7a3c: b2ab uxth r3, r5 7a3e: 9322 str r3, [sp, #136] ; 0x88 7a40: f8bd 3018 ldrh.w r3, [sp, #24] 7a44: 931e str r3, [sp, #120] ; 0x78 uint16_t par_start = 0; 7a46: 2300 movs r3, #0 7a48: 931d str r3, [sp, #116] ; 0x74 while(txt[line_start] != '\0') { 7a4a: 9a04 ldr r2, [sp, #16] 7a4c: 9b0a ldr r3, [sp, #40] ; 0x28 7a4e: 4413 add r3, r2 7a50: 931c str r3, [sp, #112] ; 0x70 7a52: 9b0a ldr r3, [sp, #40] ; 0x28 7a54: 5c9b ldrb r3, [r3, r2] 7a56: 2b00 cmp r3, #0 7a58: d160 bne.n 7b1c } 7a5a: b051 add sp, #324 ; 0x144 7a5c: ecbd 8b04 vpop {d8-d9} 7a60: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} _lv_txt_get_size(&p, txt, dsc->font, dsc->letter_space, dsc->line_space, LV_COORD_MAX, 7a64: 9302 str r3, [sp, #8] 7a66: f647 4318 movw r3, #31768 ; 0x7c18 7a6a: 9301 str r3, [sp, #4] 7a6c: f9bb 300a ldrsh.w r3, [fp, #10] 7a70: 9300 str r3, [sp, #0] 7a72: f8db 2004 ldr.w r2, [fp, #4] 7a76: f9bb 300c ldrsh.w r3, [fp, #12] 7a7a: 990a ldr r1, [sp, #40] ; 0x28 7a7c: 4d30 ldr r5, [pc, #192] ; (7b40 ) 7a7e: a83b add r0, sp, #236 ; 0xec 7a80: 47a8 blx r5 w = p.x; 7a82: f9bd 30ec ldrsh.w r3, [sp, #236] ; 0xec 7a86: e729 b.n 78dc uint32_t line_start = 0; 7a88: 9404 str r4, [sp, #16] 7a8a: e75d b.n 7948 7a8c: 9104 str r1, [sp, #16] 7a8e: e75b b.n 7948 7a90: 2200 movs r2, #0 7a92: 9204 str r2, [sp, #16] 7a94: e758 b.n 7948 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7a96: 9907 ldr r1, [sp, #28] 7a98: 9300 str r3, [sp, #0] 7a9a: eb02 0801 add.w r8, r2, r1 7a9e: ee19 3a10 vmov r3, s18 7aa2: f9bb 200c ldrsh.w r2, [fp, #12] 7aa6: ee18 1a10 vmov r1, s16 7aaa: 4640 mov r0, r8 7aac: 47b0 blx r6 7aae: 9b07 ldr r3, [sp, #28] 7ab0: 4418 add r0, r3 pos.y += line_height; 7ab2: 9b06 ldr r3, [sp, #24] 7ab4: 442b add r3, r5 7ab6: b21b sxth r3, r3 7ab8: 9306 str r3, [sp, #24] if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 7aba: b174 cbz r4, 7ada 7abc: f513 6f80 cmn.w r3, #1024 ; 0x400 7ac0: db0b blt.n 7ada 7ac2: 6823 ldr r3, [r4, #0] 7ac4: 2b00 cmp r3, #0 7ac6: da08 bge.n 7ada hint->line_start = line_start; 7ac8: 9b07 ldr r3, [sp, #28] 7aca: 6023 str r3, [r4, #0] hint->y = pos.y - coords->y1; 7acc: 9b05 ldr r3, [sp, #20] 7ace: 9a06 ldr r2, [sp, #24] 7ad0: f9b3 3002 ldrsh.w r3, [r3, #2] 7ad4: 1ad2 subs r2, r2, r3 hint->coord_y = coords->y1; 7ad6: e9c4 2301 strd r2, r3, [r4, #4] if(txt[line_start] == '\0') return; 7ada: 9b07 ldr r3, [sp, #28] 7adc: 9304 str r3, [sp, #16] 7ade: f898 3000 ldrb.w r3, [r8] 7ae2: 2b00 cmp r3, #0 7ae4: d0b9 beq.n 7a5a line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7ae6: 9007 str r0, [sp, #28] 7ae8: e742 b.n 7970 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 7aea: 071c lsls r4, r3, #28 7aec: f57f af69 bpl.w 79c2 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7af0: 9a07 ldr r2, [sp, #28] 7af2: 9904 ldr r1, [sp, #16] 7af4: 9300 str r3, [sp, #0] 7af6: 1a51 subs r1, r2, r1 7af8: f9bb 300c ldrsh.w r3, [fp, #12] 7afc: 4c0d ldr r4, [pc, #52] ; (7b34 ) 7afe: ee18 2a10 vmov r2, s16 7b02: b289 uxth r1, r1 7b04: 47a0 blx r4 7b06: 9b05 ldr r3, [sp, #20] 7b08: 9a05 ldr r2, [sp, #20] 7b0a: 889b ldrh r3, [r3, #4] 7b0c: 8812 ldrh r2, [r2, #0] 7b0e: 3301 adds r3, #1 7b10: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 7b12: b21b sxth r3, r3 7b14: 1a18 subs r0, r3, r0 7b16: 9b0b ldr r3, [sp, #44] ; 0x2c 7b18: 4418 add r0, r3 7b1a: e750 b.n 79be pos.x += x_ofs; 7b1c: 9b25 ldr r3, [sp, #148] ; 0x94 7b1e: 441c add r4, r3 7b20: b223 sxth r3, r4 7b22: 930c str r3, [sp, #48] ; 0x30 i = 0; 7b24: 2300 movs r3, #0 7b26: 9330 str r3, [sp, #192] ; 0xc0 cmd_state = CMD_STATE_WAIT; 7b28: 9308 str r3, [sp, #32] 7b2a: e0bf b.n 7cac 7b2c: 0000ded1 .word 0x0000ded1 7b30: 00010025 .word 0x00010025 7b34: 0000ff7d .word 0x0000ff7d 7b38: 000085fd .word 0x000085fd 7b3c: 00009bb5 .word 0x00009bb5 7b40: 000101fd .word 0x000101fd if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 7b44: 9a11 ldr r2, [sp, #68] ; 0x44 7b46: f64f 73ff movw r3, #65535 ; 0xffff 7b4a: 429a cmp r2, r3 7b4c: d024 beq.n 7b98 7b4e: 9a12 ldr r2, [sp, #72] ; 0x48 7b50: 429a cmp r2, r3 7b52: d021 beq.n 7b98 logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 7b54: 9a04 ldr r2, [sp, #16] 7b56: 4ba1 ldr r3, [pc, #644] ; (7ddc ) 7b58: 980a ldr r0, [sp, #40] ; 0x28 7b5a: 681b ldr r3, [r3, #0] 7b5c: 4411 add r1, r2 7b5e: 4798 blx r3 7b60: b286 uxth r6, r0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 7b62: 4c9f ldr r4, [pc, #636] ; (7de0 ) 7b64: 981c ldr r0, [sp, #112] ; 0x70 7b66: 6823 ldr r3, [r4, #0] 7b68: a930 add r1, sp, #192 ; 0xc0 7b6a: 4798 blx r3 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 7b6c: 9a1c ldr r2, [sp, #112] ; 0x70 7b6e: 6823 ldr r3, [r4, #0] uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 7b70: 4605 mov r5, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 7b72: 9830 ldr r0, [sp, #192] ; 0xc0 7b74: 2100 movs r1, #0 7b76: 4410 add r0, r2 7b78: 4798 blx r3 7b7a: f89b 3017 ldrb.w r3, [fp, #23] if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 7b7e: f013 0301 ands.w r3, r3, #1 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 7b82: 4602 mov r2, r0 if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 7b84: f000 8122 beq.w 7dcc if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) { 7b88: 2d23 cmp r5, #35 ; 0x23 7b8a: d10f bne.n 7bac if(cmd_state == CMD_STATE_WAIT) { /*Start char*/ 7b8c: 9908 ldr r1, [sp, #32] 7b8e: b929 cbnz r1, 7b9c par_start = i; 7b90: f8bd 20c0 ldrh.w r2, [sp, #192] ; 0xc0 7b94: 921d str r2, [sp, #116] ; 0x74 continue; 7b96: e7c7 b.n 7b28 uint16_t logical_char_pos = 0; 7b98: 2600 movs r6, #0 7b9a: e7e2 b.n 7b62 else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */ 7b9c: 9b08 ldr r3, [sp, #32] 7b9e: 2b01 cmp r3, #1 7ba0: d045 beq.n 7c2e else if(cmd_state == CMD_STATE_IN) { /*Command end */ 7ba2: 2b02 cmp r3, #2 7ba4: f040 8112 bne.w 7dcc cmd_state = CMD_STATE_WAIT; 7ba8: 2300 movs r3, #0 7baa: e7bd b.n 7b28 if(cmd_state == CMD_STATE_PAR) { 7bac: 9b08 ldr r3, [sp, #32] 7bae: 2b01 cmp r3, #1 7bb0: f040 810c bne.w 7dcc if(letter == ' ') { 7bb4: 2d20 cmp r5, #32 7bb6: d179 bne.n 7cac if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) { 7bb8: 9b30 ldr r3, [sp, #192] ; 0xc0 7bba: 9a1d ldr r2, [sp, #116] ; 0x74 7bbc: 1a9b subs r3, r3, r2 7bbe: 2b07 cmp r3, #7 7bc0: d132 bne.n 7c28 _lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH); 7bc2: 9b1c ldr r3, [sp, #112] ; 0x70 7bc4: 991d ldr r1, [sp, #116] ; 0x74 7bc6: 189a adds r2, r3, r2 7bc8: 5858 ldr r0, [r3, r1] 7bca: 8893 ldrh r3, [r2, #4] 7bcc: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]); 7bd0: 4a84 ldr r2, [pc, #528] ; (7de4 ) 7bd2: 9038 str r0, [sp, #224] ; 0xe0 7bd4: f3c0 4507 ubfx r5, r0, #16, #8 7bd8: f3c0 6407 ubfx r4, r0, #24, #8 7bdc: f3c0 2607 ubfx r6, r0, #8, #8 7be0: b2c0 uxtb r0, r0 7be2: 4790 blx r2 7be4: 4601 mov r1, r0 7be6: b2f0 uxtb r0, r6 7be8: 4790 blx r2 7bea: eb00 1101 add.w r1, r0, r1, lsl #4 g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]); 7bee: b2e8 uxtb r0, r5 7bf0: 4790 blx r2 7bf2: 4605 mov r5, r0 7bf4: b2e0 uxtb r0, r4 7bf6: 4790 blx r2 7bf8: eb00 1405 add.w r4, r0, r5, lsl #4 b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]); 7bfc: f89d 00e4 ldrb.w r0, [sp, #228] ; 0xe4 7c00: 4790 blx r2 7c02: 4605 mov r5, r0 7c04: f89d 00e5 ldrb.w r0, [sp, #229] ; 0xe5 7c08: 4790 blx r2 7c0a: eb00 1005 add.w r0, r0, r5, lsl #4 7c0e: f3c0 00c4 ubfx r0, r0, #3, #5 7c12: f3c4 0485 ubfx r4, r4, #2, #6 7c16: ea40 1444 orr.w r4, r0, r4, lsl #5 7c1a: f3c1 01c4 ubfx r1, r1, #3, #5 7c1e: ea44 23c1 orr.w r3, r4, r1, lsl #11 recolor.full = dsc->color.full; 7c22: 9321 str r3, [sp, #132] ; 0x84 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 7c24: 2302 movs r3, #2 7c26: e77f b.n 7b28 recolor.full = dsc->color.full; 7c28: f8bb 3000 ldrh.w r3, [fp] 7c2c: e7f9 b.n 7c22 cmd_state = CMD_STATE_WAIT; 7c2e: 2300 movs r3, #0 lv_color_t color = dsc->color; 7c30: f8bb 4000 ldrh.w r4, [fp] cmd_state = CMD_STATE_WAIT; 7c34: 9308 str r3, [sp, #32] letter_w = lv_font_get_glyph_width(font, letter, letter_next); 7c36: 4b6c ldr r3, [pc, #432] ; (7de8 ) 7c38: ee18 0a10 vmov r0, s16 7c3c: 4629 mov r1, r5 7c3e: 4798 blx r3 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 7c40: 9a11 ldr r2, [sp, #68] ; 0x44 letter_w = lv_font_get_glyph_width(font, letter, letter_next); 7c42: 901f str r0, [sp, #124] ; 0x7c if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 7c44: f64f 73ff movw r3, #65535 ; 0xffff 7c48: 429a cmp r2, r3 7c4a: d020 beq.n 7c8e 7c4c: 9a12 ldr r2, [sp, #72] ; 0x48 7c4e: 429a cmp r2, r3 7c50: d01d beq.n 7c8e if(logical_char_pos >= sel_start && logical_char_pos < sel_end) { 7c52: 9b11 ldr r3, [sp, #68] ; 0x44 7c54: 42b3 cmp r3, r6 7c56: d81a bhi.n 7c8e 7c58: 42b2 cmp r2, r6 7c5a: d918 bls.n 7c8e sel_coords.x1 = pos.x; 7c5c: 9b0c ldr r3, [sp, #48] ; 0x30 7c5e: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 sel_coords.y1 = pos.y; 7c62: 9b06 ldr r3, [sp, #24] 7c64: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; 7c68: f8bb 300c ldrh.w r3, [fp, #12] 7c6c: 9a0c ldr r2, [sp, #48] ; 0x30 7c6e: 3b01 subs r3, #1 7c70: 4413 add r3, r2 7c72: 4403 add r3, r0 7c74: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 sel_coords.y2 = pos.y + line_height - 1; 7c78: 9b22 ldr r3, [sp, #136] ; 0x88 7c7a: 9a06 ldr r2, [sp, #24] 7c7c: 3b01 subs r3, #1 7c7e: 4413 add r3, r2 7c80: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 lv_draw_rect(&sel_coords, mask, &draw_dsc_sel); 7c84: aa3b add r2, sp, #236 ; 0xec 7c86: 4b59 ldr r3, [pc, #356] ; (7dec ) 7c88: 4651 mov r1, sl 7c8a: a838 add r0, sp, #224 ; 0xe0 7c8c: 4798 blx r3 if(opa < LV_OPA_MIN) return; 7c8e: 9b20 ldr r3, [sp, #128] ; 0x80 7c90: 2b04 cmp r3, #4 7c92: f200 848a bhi.w 85aa if(letter_w > 0) { 7c96: 9b1f ldr r3, [sp, #124] ; 0x7c 7c98: b143 cbz r3, 7cac pos.x += letter_w + dsc->letter_space; 7c9a: f8bb 400c ldrh.w r4, [fp, #12] 7c9e: 9b0c ldr r3, [sp, #48] ; 0x30 7ca0: 4423 add r3, r4 7ca2: 461c mov r4, r3 7ca4: 9b1f ldr r3, [sp, #124] ; 0x7c 7ca6: 4423 add r3, r4 7ca8: b21b sxth r3, r3 7caa: 930c str r3, [sp, #48] ; 0x30 while(i < line_end - line_start) { 7cac: 9b07 ldr r3, [sp, #28] 7cae: 9a04 ldr r2, [sp, #16] 7cb0: 9930 ldr r1, [sp, #192] ; 0xc0 7cb2: 1a9b subs r3, r3, r2 7cb4: 428b cmp r3, r1 7cb6: f63f af45 bhi.w 7b44 if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) { 7cba: f89b 3018 ldrb.w r3, [fp, #24] 7cbe: 079d lsls r5, r3, #30 7cc0: d51f bpl.n 7d02 p1.x = pos_x_start; 7cc2: 9b0b ldr r3, [sp, #44] ; 0x2c 7cc4: f8ad 30cc strh.w r3, [sp, #204] ; 0xcc p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 7cc8: f8db 3004 ldr.w r3, [fp, #4] 7ccc: f9bd 20d6 ldrsh.w r2, [sp, #214] ; 0xd6 7cd0: f9b3 3008 ldrsh.w r3, [r3, #8] lv_draw_line(&p1, &p2, mask, &line_dsc); 7cd4: 4c46 ldr r4, [pc, #280] ; (7df0 ) p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 7cd6: eb02 72d2 add.w r2, r2, r2, lsr #31 7cda: eb03 71d3 add.w r1, r3, r3, lsr #31 7cde: 1053 asrs r3, r2, #1 7ce0: 9a1e ldr r2, [sp, #120] ; 0x78 7ce2: eb03 0361 add.w r3, r3, r1, asr #1 7ce6: 4413 add r3, r2 7ce8: b21b sxth r3, r3 p2.x = pos.x; 7cea: 9a0c ldr r2, [sp, #48] ; 0x30 p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 7cec: f8ad 30ce strh.w r3, [sp, #206] ; 0xce p2.x = pos.x; 7cf0: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0 p2.y = p1.y; 7cf4: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 lv_draw_line(&p1, &p2, mask, &line_dsc); 7cf8: 4652 mov r2, sl 7cfa: ab35 add r3, sp, #212 ; 0xd4 7cfc: a938 add r1, sp, #224 ; 0xe0 7cfe: a833 add r0, sp, #204 ; 0xcc 7d00: 47a0 blx r4 if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) { 7d02: f89b 3018 ldrb.w r3, [fp, #24] 7d06: 07dc lsls r4, r3, #31 7d08: d51e bpl.n 7d48 p1.x = pos_x_start; 7d0a: 9b0b ldr r3, [sp, #44] ; 0x2c 7d0c: f8ad 30cc strh.w r3, [sp, #204] ; 0xcc p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; 7d10: f9bd 30d6 ldrsh.w r3, [sp, #214] ; 0xd6 7d14: f8db 2004 ldr.w r2, [fp, #4] lv_draw_line(&p1, &p2, mask, &line_dsc); 7d18: 4c35 ldr r4, [pc, #212] ; (7df0 ) p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; 7d1a: 8911 ldrh r1, [r2, #8] 7d1c: 8952 ldrh r2, [r2, #10] 7d1e: eb03 73d3 add.w r3, r3, r3, lsr #31 7d22: 105b asrs r3, r3, #1 7d24: 3301 adds r3, #1 7d26: 440b add r3, r1 7d28: 1a9b subs r3, r3, r2 7d2a: 9a1e ldr r2, [sp, #120] ; 0x78 7d2c: 4413 add r3, r2 7d2e: b21b sxth r3, r3 p2.x = pos.x; 7d30: 9a0c ldr r2, [sp, #48] ; 0x30 p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; 7d32: f8ad 30ce strh.w r3, [sp, #206] ; 0xce p2.x = pos.x; 7d36: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0 p2.y = p1.y; 7d3a: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 lv_draw_line(&p1, &p2, mask, &line_dsc); 7d3e: 4652 mov r2, sl 7d40: ab35 add r3, sp, #212 ; 0xd4 7d42: a938 add r1, sp, #224 ; 0xe0 7d44: a833 add r0, sp, #204 ; 0xcc 7d46: 47a0 blx r4 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7d48: 9b0a ldr r3, [sp, #40] ; 0x28 7d4a: 9a07 ldr r2, [sp, #28] 7d4c: 4c29 ldr r4, [pc, #164] ; (7df4 ) 7d4e: 189e adds r6, r3, r2 7d50: f89b 3017 ldrb.w r3, [fp, #23] 7d54: 9300 str r3, [sp, #0] 7d56: ee18 1a10 vmov r1, s16 7d5a: ee19 3a10 vmov r3, s18 7d5e: f9bb 200c ldrsh.w r2, [fp, #12] 7d62: 4630 mov r0, r6 7d64: 47a0 blx r4 7d66: 9b07 ldr r3, [sp, #28] 7d68: 18c5 adds r5, r0, r3 pos.x = coords->x1; 7d6a: 9b05 ldr r3, [sp, #20] 7d6c: f9b3 4000 ldrsh.w r4, [r3] if(dsc->flag & LV_TXT_FLAG_CENTER) { 7d70: f89b 3017 ldrb.w r3, [fp, #23] line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7d74: 4601 mov r1, r0 if(dsc->flag & LV_TXT_FLAG_CENTER) { 7d76: 0758 lsls r0, r3, #29 7d78: f140 8401 bpl.w 857e _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7d7c: ee18 2a10 vmov r2, s16 7d80: 9300 str r3, [sp, #0] 7d82: 4630 mov r0, r6 7d84: f9bb 300c ldrsh.w r3, [fp, #12] 7d88: 4e1b ldr r6, [pc, #108] ; (7df8 ) 7d8a: 47b0 blx r6 7d8c: 9b05 ldr r3, [sp, #20] 7d8e: 9a05 ldr r2, [sp, #20] 7d90: 889b ldrh r3, [r3, #4] 7d92: 8812 ldrh r2, [r2, #0] 7d94: 3301 adds r3, #1 7d96: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 7d98: b21b sxth r3, r3 7d9a: 1a18 subs r0, r3, r0 7d9c: eb00 70d0 add.w r0, r0, r0, lsr #31 7da0: eb04 0460 add.w r4, r4, r0, asr #1 pos.x += lv_area_get_width(coords) - line_width; 7da4: b224 sxth r4, r4 pos.y += line_height; 7da6: 9a22 ldr r2, [sp, #136] ; 0x88 7da8: 9b06 ldr r3, [sp, #24] 7daa: 4413 add r3, r2 7dac: b21b sxth r3, r3 7dae: 9306 str r3, [sp, #24] if(pos.y > mask->y2) return; 7db0: 9b1e ldr r3, [sp, #120] ; 0x78 7db2: 4413 add r3, r2 7db4: b29b uxth r3, r3 7db6: 931e str r3, [sp, #120] ; 0x78 line_start = line_end; 7db8: 9b07 ldr r3, [sp, #28] if(pos.y > mask->y2) return; 7dba: 9a06 ldr r2, [sp, #24] line_start = line_end; 7dbc: 9304 str r3, [sp, #16] if(pos.y > mask->y2) return; 7dbe: f9ba 3006 ldrsh.w r3, [sl, #6] 7dc2: 4293 cmp r3, r2 7dc4: f6ff ae49 blt.w 7a5a line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7dc8: 9507 str r5, [sp, #28] 7dca: e63e b.n 7a4a lv_color_t color = dsc->color; 7dcc: f8bb 4000 ldrh.w r4, [fp] if(cmd_state == CMD_STATE_IN) color = recolor; 7dd0: 9b21 ldr r3, [sp, #132] ; 0x84 7dd2: 9908 ldr r1, [sp, #32] 7dd4: 2902 cmp r1, #2 7dd6: bf08 it eq 7dd8: 461c moveq r4, r3 7dda: e72c b.n 7c36 7ddc: 20000064 .word 0x20000064 7de0: 20000058 .word 0x20000058 7de4: 00007831 .word 0x00007831 7de8: 0000d1b9 .word 0x0000d1b9 7dec: 00009c01 .word 0x00009c01 7df0: 00008619 .word 0x00008619 7df4: 00010025 .word 0x00010025 7df8: 0000ff7d .word 0x0000ff7d if((g.box_h == 0) && (g.box_w == 0)) return; 7dfc: f8bd 20e4 ldrh.w r2, [sp, #228] ; 0xe4 7e00: f8bd 30e2 ldrh.w r3, [sp, #226] ; 0xe2 7e04: ea52 0103 orrs.w r1, r2, r3 7e08: f43f af45 beq.w 7c96 int32_t pos_x = pos_p->x + g.ofs_x; 7e0c: f9bd 10e6 ldrsh.w r1, [sp, #230] ; 0xe6 7e10: 980c ldr r0, [sp, #48] ; 0x30 7e12: 4401 add r1, r0 if(pos_x + g.box_w < clip_area->x1 || 7e14: 440b add r3, r1 int32_t pos_x = pos_p->x + g.ofs_x; 7e16: 910d str r1, [sp, #52] ; 0x34 if(pos_x + g.box_w < clip_area->x1 || 7e18: f9ba 1000 ldrsh.w r1, [sl] 7e1c: 428b cmp r3, r1 7e1e: f6ff af3a blt.w 7c96 pos_x > clip_area->x2 || 7e22: f9ba 3004 ldrsh.w r3, [sl, #4] if(pos_x + g.box_w < clip_area->x1 || 7e26: 990d ldr r1, [sp, #52] ; 0x34 7e28: 4299 cmp r1, r3 7e2a: f73f af34 bgt.w 7c96 int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 7e2e: ee18 3a10 vmov r3, s16 7e32: ee18 1a10 vmov r1, s16 7e36: f9b3 3008 ldrsh.w r3, [r3, #8] 7e3a: f9b1 100a ldrsh.w r1, [r1, #10] 7e3e: 1a5b subs r3, r3, r1 7e40: 9906 ldr r1, [sp, #24] 7e42: 440b add r3, r1 7e44: f9bd 10e8 ldrsh.w r1, [sp, #232] ; 0xe8 7e48: 1a9b subs r3, r3, r2 7e4a: 1a5b subs r3, r3, r1 pos_y + g.box_h < clip_area->y1 || 7e4c: 441a add r2, r3 int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 7e4e: 9316 str r3, [sp, #88] ; 0x58 pos_y + g.box_h < clip_area->y1 || 7e50: f9ba 3002 ldrsh.w r3, [sl, #2] pos_x > clip_area->x2 || 7e54: 429a cmp r2, r3 7e56: f6ff af1e blt.w 7c96 pos_y > clip_area->y2) { 7e5a: f9ba 3006 ldrsh.w r3, [sl, #6] pos_y + g.box_h < clip_area->y1 || 7e5e: 9a16 ldr r2, [sp, #88] ; 0x58 7e60: 429a cmp r2, r3 7e62: f73f af18 bgt.w 7c96 const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); 7e66: ee18 0a10 vmov r0, s16 7e6a: 4ba9 ldr r3, [pc, #676] ; (8110 ) 7e6c: 4629 mov r1, r5 7e6e: 4798 blx r3 if(map_p == NULL) { 7e70: 4607 mov r7, r0 7e72: b928 cbnz r0, 7e80 LV_LOG_WARN("lv_draw_letter: character's bitmap not found"); 7e74: 4ba7 ldr r3, [pc, #668] ; (8114 ) 7e76: 9300 str r3, [sp, #0] 7e78: f240 12b7 movw r2, #439 ; 0x1b7 7e7c: 4ba6 ldr r3, [pc, #664] ; (8118 ) 7e7e: e3a9 b.n 85d4 if(font_p->subpx) { 7e80: ee18 2a10 vmov r2, s16 7e84: 7b12 ldrb r2, [r2, #12] draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 7e86: f9bd 6034 ldrsh.w r6, [sp, #52] ; 0x34 7e8a: f9bd 8058 ldrsh.w r8, [sp, #88] ; 0x58 uint32_t bpp = g->bpp; 7e8e: f89d 30ea ldrb.w r3, [sp, #234] ; 0xea if(font_p->subpx) { 7e92: 0792 lsls r2, r2, #30 7e94: f000 81fe beq.w 8294 draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 7e98: f004 021f and.w r2, r4, #31 7e9c: 922b str r2, [sp, #172] ; 0xac 7e9e: f3c4 1245 ubfx r2, r4, #5, #6 7ea2: 922a str r2, [sp, #168] ; 0xa8 if(bpp == 3) bpp = 4; 7ea4: 2b03 cmp r3, #3 7ea6: f3c4 22c4 ubfx r2, r4, #11, #5 7eaa: 9229 str r2, [sp, #164] ; 0xa4 7eac: f000 80e1 beq.w 8072 switch(bpp) { 7eb0: 3b01 subs r3, #1 7eb2: 2b07 cmp r3, #7 7eb4: f200 80d7 bhi.w 8066 7eb8: e8df f013 tbh [pc, r3, lsl #1] 7ebc: 00e00008 .word 0x00e00008 7ec0: 00db00d5 .word 0x00db00d5 7ec4: 00d500d5 .word 0x00d500d5 7ec8: 00d000d5 .word 0x00d000d5 7ecc: 2380 movs r3, #128 ; 0x80 7ece: 9314 str r3, [sp, #80] ; 0x50 7ed0: 4b92 ldr r3, [pc, #584] ; (811c ) 7ed2: 2401 movs r4, #1 bpp_opa_table = _lv_bpp2_opa_table; 7ed4: 9315 str r3, [sp, #84] ; 0x54 int32_t box_w = g->box_w; 7ed6: f8bd 30e2 ldrh.w r3, [sp, #226] ; 0xe2 7eda: 9317 str r3, [sp, #92] ; 0x5c int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 7edc: fb04 f103 mul.w r1, r4, r3 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 7ee0: f9ba 3000 ldrsh.w r3, [sl] int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3; 7ee4: 9d17 ldr r5, [sp, #92] ; 0x5c int32_t box_h = g->box_h; 7ee6: f8bd 20e4 ldrh.w r2, [sp, #228] ; 0xe4 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 7eea: 42b3 cmp r3, r6 7eec: bfc6 itte gt 7eee: 1b9b subgt r3, r3, r6 7ef0: eb03 0343 addgt.w r3, r3, r3, lsl #1 7ef4: 2300 movle r3, #0 7ef6: 9313 str r3, [sp, #76] ; 0x4c int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3; 7ef8: f9ba 3004 ldrsh.w r3, [sl, #4] 7efc: 2003 movs r0, #3 7efe: fbb5 f0f0 udiv r0, r5, r0 7f02: 4430 add r0, r6 7f04: 4298 cmp r0, r3 7f06: bfc5 ittet gt 7f08: 1b9b subgt r3, r3, r6 7f0a: 3301 addgt r3, #1 7f0c: 9b17 ldrle r3, [sp, #92] ; 0x5c 7f0e: eb03 0343 addgt.w r3, r3, r3, lsl #1 7f12: 9319 str r3, [sp, #100] ; 0x64 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 7f14: f9ba 3002 ldrsh.w r3, [sl, #2] 7f18: 4543 cmp r3, r8 7f1a: bfcc ite gt 7f1c: eba3 0308 subgt.w r3, r3, r8 7f20: 2300 movle r3, #0 7f22: 930e str r3, [sp, #56] ; 0x38 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 7f24: f9ba 3006 ldrsh.w r3, [sl, #6] 7f28: eb02 0008 add.w r0, r2, r8 7f2c: 4298 cmp r0, r3 7f2e: bfc2 ittt gt 7f30: eba3 0308 subgt.w r3, r3, r8 7f34: 3301 addgt r3, #1 7f36: 9324 strgt r3, [sp, #144] ; 0x90 int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 7f38: 9b13 ldr r3, [sp, #76] ; 0x4c 7f3a: 980e ldr r0, [sp, #56] ; 0x38 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 7f3c: bfd8 it le 7f3e: 9224 strle r2, [sp, #144] ; 0x90 int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 7f40: 4363 muls r3, r4 7f42: fb00 3301 mla r3, r0, r1, r3 map_p += bit_ofs >> 3; 7f46: eb07 01e3 add.w r1, r7, r3, asr #3 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 7f4a: f003 0307 and.w r3, r3, #7 7f4e: 930f str r3, [sp, #60] ; 0x3c int32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : g->box_w * g->box_h; 7f50: 9b17 ldr r3, [sp, #92] ; 0x5c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7f52: 4f73 ldr r7, [pc, #460] ; (8120 ) map_p += bit_ofs >> 3; 7f54: 911a str r1, [sp, #104] ; 0x68 int32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : g->box_w * g->box_h; 7f56: 4353 muls r3, r2 7f58: f5b3 7ff0 cmp.w r3, #480 ; 0x1e0 7f5c: bfa8 it ge 7f5e: f44f 73f0 movge.w r3, #480 ; 0x1e0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7f62: 4618 mov r0, r3 7f64: 9318 str r3, [sp, #96] ; 0x60 7f66: 47b8 blx r7 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7f68: 9b18 ldr r3, [sp, #96] ; 0x60 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7f6a: 4605 mov r5, r0 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7f6c: 0058 lsls r0, r3, #1 7f6e: 47b8 blx r7 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7f70: 4b6c ldr r3, [pc, #432] ; (8124 ) lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7f72: ee08 0a90 vmov s17, r0 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7f76: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 7f78: 4b6b ldr r3, [pc, #428] ; (8128 ) 7f7a: 4798 blx r3 7f7c: f8b0 9014 ldrh.w r9, [r0, #20] 7f80: f9b0 c010 ldrsh.w ip, [r0, #16] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7f84: 9b13 ldr r3, [sp, #76] ; 0x4c lv_color_t * vdb_buf_tmp = vdb->buf_act; 7f86: 6887 ldr r7, [r0, #8] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7f88: 2203 movs r2, #3 7f8a: f109 0901 add.w r9, r9, #1 7f8e: fb93 f1f2 sdiv r1, r3, r2 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 7f92: f9b0 3012 ldrsh.w r3, [r0, #18] map_area.x1 = col_start / 3 + pos_x; 7f96: 980d ldr r0, [sp, #52] ; 0x34 7f98: eba9 090c sub.w r9, r9, ip 7f9c: fa0f f989 sxth.w r9, r9 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 7fa0: eba8 0303 sub.w r3, r8, r3 7fa4: fb09 6303 mla r3, r9, r3, r6 7fa8: eba3 0c0c sub.w ip, r3, ip vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7fac: 9b0e ldr r3, [sp, #56] ; 0x38 7fae: fb09 1303 mla r3, r9, r3, r1 7fb2: 449c add ip, r3 7fb4: eb07 034c add.w r3, r7, ip, lsl #1 7fb8: 9310 str r3, [sp, #64] ; 0x40 map_area.x1 = col_start / 3 + pos_x; 7fba: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 7fbe: fa11 f180 uxtah r1, r1, r0 map_area.x2 = col_end / 3 + pos_x - 1; 7fc2: 3b01 subs r3, #1 map_area.x1 = col_start / 3 + pos_x; 7fc4: f8ad 10cc strh.w r1, [sp, #204] ; 0xcc map_area.x2 = col_end / 3 + pos_x - 1; 7fc8: 9919 ldr r1, [sp, #100] ; 0x64 7fca: fb91 f2f2 sdiv r2, r1, r2 7fce: 441a add r2, r3 7fd0: f8ad 20d0 strh.w r2, [sp, #208] ; 0xd0 map_area.y1 = row_start + pos_y; 7fd4: 9b16 ldr r3, [sp, #88] ; 0x58 7fd6: 9a0e ldr r2, [sp, #56] ; 0x38 7fd8: 4413 add r3, r2 7fda: b21b sxth r3, r3 7fdc: f8ad 30ce strh.w r3, [sp, #206] ; 0xce map_area.y2 = map_area.y1; 7fe0: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 7fe4: 4b51 ldr r3, [pc, #324] ; (812c ) 7fe6: 4798 blx r3 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { 7fe8: 9a13 ldr r2, [sp, #76] ; 0x4c 7fea: 9b19 ldr r3, [sp, #100] ; 0x64 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 7fec: 9026 str r0, [sp, #152] ; 0x98 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { 7fee: 1a9b subs r3, r3, r2 7ff0: 9323 str r3, [sp, #140] ; 0x8c col_bit += ((box_w - col_end) + col_start) * bpp; 7ff2: 9b17 ldr r3, [sp, #92] ; 0x5c 7ff4: 4413 add r3, r2 7ff6: 9a19 ldr r2, [sp, #100] ; 0x64 7ff8: 1a9b subs r3, r3, r2 7ffa: 4363 muls r3, r4 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 7ffc: 9a23 ldr r2, [sp, #140] ; 0x8c col_bit += ((box_w - col_end) + col_start) * bpp; 7ffe: 9327 str r3, [sp, #156] ; 0x9c vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 8000: f06f 0302 mvn.w r3, #2 8004: fb92 f3f3 sdiv r3, r2, r3 8008: 4499 add r9, r3 800a: ea4f 0349 mov.w r3, r9, lsl #1 800e: 9328 str r3, [sp, #160] ; 0xa0 if(col_bit < (int32_t) (8 - bpp)) { 8010: f1c4 0308 rsb r3, r4, #8 int32_t mask_p = 0; 8014: f04f 0800 mov.w r8, #0 if(col_bit < (int32_t) (8 - bpp)) { 8018: 932d str r3, [sp, #180] ; 0xb4 for(row = row_start ; row < row_end; row++) { 801a: 9b0e ldr r3, [sp, #56] ; 0x38 801c: 9a24 ldr r2, [sp, #144] ; 0x90 801e: 4293 cmp r3, r2 8020: db31 blt.n 8086 if(map_area.y1 != map_area.y2) { 8022: f9bd 30d2 ldrsh.w r3, [sp, #210] ; 0xd2 8026: f9bd 20ce ldrsh.w r2, [sp, #206] ; 0xce 802a: 429a cmp r2, r3 802c: d00f beq.n 804e map_area.y2--; 802e: 3b01 subs r3, #1 8030: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); 8034: 9b1b ldr r3, [sp, #108] ; 0x6c 8036: 9302 str r3, [sp, #8] 8038: 9b09 ldr r3, [sp, #36] ; 0x24 803a: 9301 str r3, [sp, #4] 803c: 2302 movs r3, #2 803e: 9300 str r3, [sp, #0] 8040: ee18 2a90 vmov r2, s17 8044: 4c3a ldr r4, [pc, #232] ; (8130 ) 8046: 462b mov r3, r5 8048: a933 add r1, sp, #204 ; 0xcc 804a: 4650 mov r0, sl 804c: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 804e: 4628 mov r0, r5 8050: 4c38 ldr r4, [pc, #224] ; (8134 ) 8052: 47a0 blx r4 _lv_mem_buf_release(color_buf); 8054: ee18 0a90 vmov r0, s17 8058: 47a0 blx r4 805a: e61c b.n 7c96 bitmask_init = 0xFF; 805c: 23ff movs r3, #255 ; 0xff 805e: 9314 str r3, [sp, #80] ; 0x50 break; /*No opa table, pixel value will be used directly*/ 8060: 2408 movs r4, #8 bpp_opa_table = _lv_bpp8_opa_table; 8062: 4b35 ldr r3, [pc, #212] ; (8138 ) 8064: e736 b.n 7ed4 LV_LOG_WARN("lv_draw_letter: invalid bpp not found"); 8066: 4b35 ldr r3, [pc, #212] ; (813c ) 8068: 9300 str r3, [sp, #0] 806a: f240 227a movw r2, #634 ; 0x27a 806e: 4b34 ldr r3, [pc, #208] ; (8140 ) 8070: e2b0 b.n 85d4 bitmask_init = 0xF0; 8072: 23f0 movs r3, #240 ; 0xf0 8074: 9314 str r3, [sp, #80] ; 0x50 if(bpp == 3) bpp = 4; 8076: 2404 movs r4, #4 bpp_opa_table = _lv_bpp4_opa_table; 8078: 4b32 ldr r3, [pc, #200] ; (8144 ) 807a: e72b b.n 7ed4 bitmask_init = 0xC0; 807c: 23c0 movs r3, #192 ; 0xc0 807e: 9314 str r3, [sp, #80] ; 0x50 switch(bpp) { 8080: 2402 movs r4, #2 bpp_opa_table = _lv_bpp2_opa_table; 8082: 4b31 ldr r3, [pc, #196] ; (8148 ) 8084: e726 b.n 7ed4 bitmask = bitmask_init >> col_bit; 8086: 9b14 ldr r3, [sp, #80] ; 0x50 8088: 9a0f ldr r2, [sp, #60] ; 0x3c 808a: fa23 fe02 lsr.w lr, r3, r2 for(col = col_start; col < col_end; col++) { 808e: 9b13 ldr r3, [sp, #76] ; 0x4c 8090: 930d str r3, [sp, #52] ; 0x34 8092: 4646 mov r6, r8 uint32_t subpx_cnt = 0; 8094: 2200 movs r2, #0 for(col = col_start; col < col_end; col++) { 8096: 9b19 ldr r3, [sp, #100] ; 0x64 8098: 990d ldr r1, [sp, #52] ; 0x34 809a: 428b cmp r3, r1 809c: dc5a bgt.n 8154 if(other_mask_cnt) { 809e: 9b26 ldr r3, [sp, #152] ; 0x98 80a0: b1bb cbz r3, 80d2 80a2: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2, 80a6: f9bd 10cc ldrsh.w r1, [sp, #204] ; 0xcc 80aa: f9bd 20d2 ldrsh.w r2, [sp, #210] ; 0xd2 80ae: 4f27 ldr r7, [pc, #156] ; (814c ) 80b0: 3301 adds r3, #1 80b2: 44a8 add r8, r5 80b4: 1a5b subs r3, r3, r1 80b6: b21b sxth r3, r3 80b8: 4640 mov r0, r8 80ba: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 80bc: b948 cbnz r0, 80d2 80be: f8bd 10d0 ldrh.w r1, [sp, #208] ; 0xd0 80c2: f8bd 30cc ldrh.w r3, [sp, #204] ; 0xcc 80c6: 3101 adds r1, #1 80c8: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area)); 80ca: b209 sxth r1, r1 80cc: 4b20 ldr r3, [pc, #128] ; (8150 ) 80ce: 4640 mov r0, r8 80d0: 4798 blx r3 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { 80d2: 9b23 ldr r3, [sp, #140] ; 0x8c 80d4: 9a18 ldr r2, [sp, #96] ; 0x60 80d6: 18f3 adds r3, r6, r3 80d8: 429a cmp r2, r3 80da: f340 80c4 ble.w 8266 map_area.y2 ++; 80de: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 80e2: 3301 adds r3, #1 80e4: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 col_bit += ((box_w - col_end) + col_start) * bpp; 80e8: 9b0f ldr r3, [sp, #60] ; 0x3c 80ea: 9a27 ldr r2, [sp, #156] ; 0x9c 80ec: 4413 add r3, r2 map_p += (col_bit >> 3); 80ee: 9a1a ldr r2, [sp, #104] ; 0x68 80f0: eb02 02e3 add.w r2, r2, r3, asr #3 col_bit = col_bit & 0x7; 80f4: f003 0307 and.w r3, r3, #7 map_p += (col_bit >> 3); 80f8: 921a str r2, [sp, #104] ; 0x68 col_bit = col_bit & 0x7; 80fa: 930f str r3, [sp, #60] ; 0x3c vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 80fc: 9a10 ldr r2, [sp, #64] ; 0x40 80fe: 9b28 ldr r3, [sp, #160] ; 0xa0 8100: 441a add r2, r3 for(row = row_start ; row < row_end; row++) { 8102: 9b0e ldr r3, [sp, #56] ; 0x38 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 8104: 9210 str r2, [sp, #64] ; 0x40 for(row = row_start ; row < row_end; row++) { 8106: 3301 adds r3, #1 8108: 930e str r3, [sp, #56] ; 0x38 810a: 46b0 mov r8, r6 810c: e785 b.n 801a 810e: bf00 nop 8110: 0000d1a9 .word 0x0000d1a9 8114: 0001fb65 .word 0x0001fb65 8118: 0001fcea .word 0x0001fcea 811c: 0001fce8 .word 0x0001fce8 8120: 0000eefd .word 0x0000eefd 8124: 00004fdd .word 0x00004fdd 8128: 0000da25 .word 0x0000da25 812c: 000097fd .word 0x000097fd 8130: 000067d5 .word 0x000067d5 8134: 0000ebb1 .word 0x0000ebb1 8138: 0001fbd4 .word 0x0001fbd4 813c: 0001fb92 .word 0x0001fb92 8140: 0001fcf9 .word 0x0001fcf9 8144: 0001fcd4 .word 0x0001fcd4 8148: 0001fce4 .word 0x0001fce4 814c: 00009769 .word 0x00009769 8150: 0000f061 .word 0x0000f061 letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); 8154: 9b0f ldr r3, [sp, #60] ; 0x3c 8156: 18e3 adds r3, r4, r3 8158: 9316 str r3, [sp, #88] ; 0x58 815a: 9b1a ldr r3, [sp, #104] ; 0x68 815c: 9916 ldr r1, [sp, #88] ; 0x58 815e: 781b ldrb r3, [r3, #0] 8160: f1c1 0108 rsb r1, r1, #8 8164: ea03 030e and.w r3, r3, lr 8168: 40cb lsrs r3, r1 if(letter_px != 0) { 816a: f013 03ff ands.w r3, r3, #255 ; 0xff 816e: d006 beq.n 817e if(opa == LV_OPA_COVER) { 8170: 9909 ldr r1, [sp, #36] ; 0x24 8172: 29ff cmp r1, #255 ; 0xff 8174: d161 bne.n 823a px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; 8176: 2c08 cmp r4, #8 8178: d001 beq.n 817e 817a: 9915 ldr r1, [sp, #84] ; 0x54 817c: 5ccb ldrb r3, [r1, r3] font_rgb[subpx_cnt] = px_opa; 817e: f502 71a0 add.w r1, r2, #320 ; 0x140 8182: 4469 add r1, sp subpx_cnt ++; 8184: 3201 adds r2, #1 if(subpx_cnt == 3) { 8186: 2a03 cmp r2, #3 font_rgb[subpx_cnt] = px_opa; 8188: f801 3c84 strb.w r3, [r1, #-132] if(subpx_cnt == 3) { 818c: d149 bne.n 8222 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 818e: 9b10 ldr r3, [sp, #64] ; 0x40 res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 8190: f89d 00bc ldrb.w r0, [sp, #188] ; 0xbc uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 8194: 785b ldrb r3, [r3, #1] res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 8196: 9929 ldr r1, [sp, #164] ; 0xa4 res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 8198: f89d 90be ldrb.w r9, [sp, #190] ; 0xbe res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 819c: f89d 70bd ldrb.w r7, [sp, #189] ; 0xbd res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 81a0: f1c0 02ff rsb r2, r0, #255 ; 0xff 81a4: fb10 fc01 smulbb ip, r0, r1 81a8: 08db lsrs r3, r3, #3 81aa: fb02 cc03 mla ip, r2, r3, ip uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 81ae: 9b10 ldr r3, [sp, #64] ; 0x40 res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 81b0: 992b ldr r1, [sp, #172] ; 0xac uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 81b2: 781b ldrb r3, [r3, #0] res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 81b4: f1c9 02ff rsb r2, r9, #255 ; 0xff 81b8: f003 031f and.w r3, r3, #31 81bc: fb19 f101 smulbb r1, r9, r1 81c0: fb02 1103 mla r1, r2, r3, r1 81c4: 0a0b lsrs r3, r1, #8 81c6: 9317 str r3, [sp, #92] ; 0x5c uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 81c8: 9b10 ldr r3, [sp, #64] ; 0x40 81ca: 881b ldrh r3, [r3, #0] res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81cc: f3c3 1345 ubfx r3, r3, #5, #6 81d0: 461a mov r2, r3 81d2: f1c7 03ff rsb r3, r7, #255 ; 0xff 81d6: 932c str r3, [sp, #176] ; 0xb0 81d8: 9b2a ldr r3, [sp, #168] ; 0xa8 81da: 4611 mov r1, r2 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81dc: ea40 0009 orr.w r0, r0, r9 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81e0: 9a2c ldr r2, [sp, #176] ; 0xb0 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81e2: 4338 orrs r0, r7 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81e4: fb17 f303 smulbb r3, r7, r3 81e8: fb02 3301 mla r3, r2, r1, r3 else mask_buf[mask_p] = LV_OPA_COVER; 81ec: bf1c itt ne 81ee: f04f 32ff movne.w r2, #4294967295 ; 0xffffffff 81f2: 55aa strbne r2, [r5, r6] color_buf[mask_p] = res_color; 81f4: 9a17 ldr r2, [sp, #92] ; 0x5c if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81f6: bf08 it eq 81f8: 55a8 strbeq r0, [r5, r6] res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81fa: 0a1b lsrs r3, r3, #8 color_buf[mask_p] = res_color; 81fc: f002 011f and.w r1, r2, #31 8200: f003 033f and.w r3, r3, #63 ; 0x3f 8204: ee18 2a90 vmov r2, s17 res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 8208: ea4f 2c1c mov.w ip, ip, lsr #8 color_buf[mask_p] = res_color; 820c: ea41 1343 orr.w r3, r1, r3, lsl #5 8210: ea43 23cc orr.w r3, r3, ip, lsl #11 8214: f822 3016 strh.w r3, [r2, r6, lsl #1] vdb_buf_tmp++; 8218: 9b10 ldr r3, [sp, #64] ; 0x40 821a: 3302 adds r3, #2 mask_p++; 821c: 3601 adds r6, #1 vdb_buf_tmp++; 821e: 9310 str r3, [sp, #64] ; 0x40 subpx_cnt = 0; 8220: 2200 movs r2, #0 if(col_bit < (int32_t) (8 - bpp)) { 8222: 9b0f ldr r3, [sp, #60] ; 0x3c 8224: 992d ldr r1, [sp, #180] ; 0xb4 8226: 428b cmp r3, r1 8228: da15 bge.n 8256 col_bit += bpp; 822a: 9b16 ldr r3, [sp, #88] ; 0x58 822c: 930f str r3, [sp, #60] ; 0x3c bitmask = bitmask >> bpp; 822e: fa2e fe04 lsr.w lr, lr, r4 for(col = col_start; col < col_end; col++) { 8232: 9b0d ldr r3, [sp, #52] ; 0x34 8234: 3301 adds r3, #1 8236: 930d str r3, [sp, #52] ; 0x34 8238: e72d b.n 8096 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 823a: 2c08 cmp r4, #8 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 823c: bf17 itett ne 823e: 9915 ldrne r1, [sp, #84] ; 0x54 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8240: 9909 ldreq r1, [sp, #36] ; 0x24 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 8242: 5ccb ldrbne r3, [r1, r3] 8244: 9909 ldrne r1, [sp, #36] ; 0x24 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8246: bf0b itete eq 8248: 434b muleq r3, r1 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 824a: fb13 f301 smulbbne r3, r3, r1 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 824e: f3c3 2307 ubfxeq r3, r3, #8, #8 8252: 0a1b lsrne r3, r3, #8 8254: e793 b.n 817e map_p++; 8256: 9b1a ldr r3, [sp, #104] ; 0x68 bitmask = bitmask_init; 8258: f8dd e050 ldr.w lr, [sp, #80] ; 0x50 map_p++; 825c: 3301 adds r3, #1 825e: 931a str r3, [sp, #104] ; 0x68 col_bit = 0; 8260: 2300 movs r3, #0 8262: 930f str r3, [sp, #60] ; 0x3c 8264: e7e5 b.n 8232 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); 8266: 9b1b ldr r3, [sp, #108] ; 0x6c 8268: 9302 str r3, [sp, #8] 826a: 9b09 ldr r3, [sp, #36] ; 0x24 826c: 9301 str r3, [sp, #4] 826e: 2302 movs r3, #2 8270: 4ea8 ldr r6, [pc, #672] ; (8514 ) 8272: 9300 str r3, [sp, #0] 8274: ee18 2a90 vmov r2, s17 8278: 462b mov r3, r5 827a: a933 add r1, sp, #204 ; 0xcc 827c: 4650 mov r0, sl 827e: 47b0 blx r6 map_area.y1 = map_area.y2 + 1; 8280: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 8284: 3301 adds r3, #1 8286: b21b sxth r3, r3 8288: f8ad 30ce strh.w r3, [sp, #206] ; 0xce map_area.y2 = map_area.y1; 828c: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 mask_p = 0; 8290: 2600 movs r6, #0 8292: e729 b.n 80e8 if(bpp == 3) bpp = 4; 8294: 2b03 cmp r3, #3 8296: ee09 4a90 vmov s19, r4 829a: f000 80ba beq.w 8412 switch(bpp) { 829e: 3b01 subs r3, #1 82a0: 2b07 cmp r3, #7 82a2: f200 80b0 bhi.w 8406 82a6: e8df f003 tbb [pc, r3] 82aa: ba04 .short 0xba04 82ac: aeaeb4ae .word 0xaeaeb4ae 82b0: a7ae .short 0xa7ae 82b2: 2280 movs r2, #128 ; 0x80 82b4: 9213 str r2, [sp, #76] ; 0x4c 82b6: 4a98 ldr r2, [pc, #608] ; (8518 ) 82b8: 2501 movs r5, #1 82ba: 2302 movs r3, #2 bpp_opa_table_p = _lv_bpp2_opa_table; 82bc: 920e str r2, [sp, #56] ; 0x38 if(opa < LV_OPA_MAX) { 82be: 9a09 ldr r2, [sp, #36] ; 0x24 82c0: 2af9 cmp r2, #249 ; 0xf9 82c2: d812 bhi.n 82ea if(prev_opa != opa || prev_bpp != bpp) { 82c4: 4a95 ldr r2, [pc, #596] ; (851c ) 82c6: 9809 ldr r0, [sp, #36] ; 0x24 82c8: f892 1100 ldrb.w r1, [r2, #256] ; 0x100 82cc: 4281 cmp r1, r0 82ce: f040 80ac bne.w 842a 82d2: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 82d6: 42aa cmp r2, r5 82d8: f040 80a7 bne.w 842a prev_opa = opa; 82dc: 4b8f ldr r3, [pc, #572] ; (851c ) 82de: 9a09 ldr r2, [sp, #36] ; 0x24 82e0: f883 2100 strb.w r2, [r3, #256] ; 0x100 prev_bpp = bpp; 82e4: f8c3 5104 str.w r5, [r3, #260] ; 0x104 bpp_opa_table_p = opa_table; 82e8: 930e str r3, [sp, #56] ; 0x38 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; 82ea: f9ba 3000 ldrsh.w r3, [sl] int32_t box_w = g->box_w; 82ee: f8bd 90e2 ldrh.w r9, [sp, #226] ; 0xe2 int32_t box_h = g->box_h; 82f2: f8bd 20e4 ldrh.w r2, [sp, #228] ; 0xe4 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; 82f6: 42b3 cmp r3, r6 82f8: bfcc ite gt 82fa: 1b9b subgt r3, r3, r6 82fc: 2300 movle r3, #0 82fe: 930f str r3, [sp, #60] ; 0x3c int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1; 8300: f9ba 3004 ldrsh.w r3, [sl, #4] 8304: eb09 0006 add.w r0, r9, r6 8308: 4298 cmp r0, r3 830a: bfc4 itt gt 830c: 1b9b subgt r3, r3, r6 830e: 3301 addgt r3, #1 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 8310: f9ba 6002 ldrsh.w r6, [sl, #2] int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1; 8314: bfc8 it gt 8316: 9310 strgt r3, [sp, #64] ; 0x40 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 8318: f9ba 3006 ldrsh.w r3, [sl, #6] int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1; 831c: bfd8 it le 831e: f8cd 9040 strle.w r9, [sp, #64] ; 0x40 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 8322: eb02 0008 add.w r0, r2, r8 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 8326: 4546 cmp r6, r8 8328: bfcc ite gt 832a: eba6 0608 subgt.w r6, r6, r8 832e: 2600 movle r6, #0 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 8330: 4298 cmp r0, r3 8332: bfc2 ittt gt 8334: eba3 0308 subgt.w r3, r3, r8 8338: 3301 addgt r3, #1 833a: 9317 strgt r3, [sp, #92] ; 0x5c uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 833c: 9b0f ldr r3, [sp, #60] ; 0x3c int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 833e: bfd8 it le 8340: 9217 strle r2, [sp, #92] ; 0x5c int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 8342: fb05 f109 mul.w r1, r5, r9 uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 8346: fb03 f405 mul.w r4, r3, r5 834a: fb06 4401 mla r4, r6, r1, r4 map_p += bit_ofs >> 3; 834e: eb07 03d4 add.w r3, r7, r4, lsr #3 8352: 9314 str r3, [sp, #80] ; 0x50 uint32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : box_w * box_h; 8354: fb02 f309 mul.w r3, r2, r9 8358: f5b3 7ff0 cmp.w r3, #480 ; 0x1e0 835c: bfa8 it ge 835e: f44f 73f0 movge.w r3, #480 ; 0x1e0 8362: 9315 str r3, [sp, #84] ; 0x54 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8364: 4618 mov r0, r3 8366: 4b6e ldr r3, [pc, #440] ; (8520 ) 8368: 4798 blx r3 fill_area.x1 = col_start + pos_x; 836a: 9a0d ldr r2, [sp, #52] ; 0x34 836c: 990f ldr r1, [sp, #60] ; 0x3c 836e: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 8372: fa11 f282 uxtah r2, r1, r2 8376: f8ad 20cc strh.w r2, [sp, #204] ; 0xcc fill_area.x2 = col_end + pos_x - 1; 837a: 9a10 ldr r2, [sp, #64] ; 0x40 837c: 3b01 subs r3, #1 837e: 4413 add r3, r2 8380: f8ad 30d0 strh.w r3, [sp, #208] ; 0xd0 fill_area.y1 = row_start + pos_y; 8384: 9b16 ldr r3, [sp, #88] ; 0x58 8386: 4433 add r3, r6 8388: b21b sxth r3, r3 838a: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; 838e: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8392: 4b64 ldr r3, [pc, #400] ; (8524 ) lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8394: ee08 0a90 vmov s17, r0 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8398: 4798 blx r3 uint32_t col_bit_max = 8 - bpp; 839a: f1c5 0308 rsb r3, r5, #8 839e: 930d str r3, [sp, #52] ; 0x34 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 83a0: 9b0f ldr r3, [sp, #60] ; 0x3c uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 83a2: 9019 str r0, [sp, #100] ; 0x64 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 83a4: 4499 add r9, r3 83a6: 9b10 ldr r3, [sp, #64] ; 0x40 83a8: eba9 0903 sub.w r9, r9, r3 83ac: fb05 f309 mul.w r3, r5, r9 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 83b0: f004 0407 and.w r4, r4, #7 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 83b4: 931a str r3, [sp, #104] ; 0x68 int32_t mask_p = 0; 83b6: f04f 0900 mov.w r9, #0 for(row = row_start ; row < row_end; row++) { 83ba: 9b17 ldr r3, [sp, #92] ; 0x5c 83bc: 429e cmp r6, r3 83be: db45 blt.n 844c if(fill_area.y1 != fill_area.y2) { 83c0: f9bd 30d2 ldrsh.w r3, [sp, #210] ; 0xd2 83c4: f9bd 20ce ldrsh.w r2, [sp, #206] ; 0xce 83c8: 429a cmp r2, r3 83ca: d010 beq.n 83ee fill_area.y2--; 83cc: 3b01 subs r3, #1 83ce: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 _lv_blend_fill(clip_area, &fill_area, 83d2: 9b1b ldr r3, [sp, #108] ; 0x6c 83d4: 9302 str r3, [sp, #8] 83d6: 26ff movs r6, #255 ; 0xff 83d8: 2302 movs r3, #2 83da: e9cd 3600 strd r3, r6, [sp] 83de: ee19 2a90 vmov r2, s19 83e2: ee18 3a90 vmov r3, s17 83e6: 4c50 ldr r4, [pc, #320] ; (8528 ) 83e8: a933 add r1, sp, #204 ; 0xcc 83ea: 4650 mov r0, sl 83ec: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 83ee: ee18 0a90 vmov r0, s17 83f2: 4b4e ldr r3, [pc, #312] ; (852c ) 83f4: 4798 blx r3 83f6: e44e b.n 7c96 bitmask_init = 0xFF; 83f8: 22ff movs r2, #255 ; 0xff 83fa: 9213 str r2, [sp, #76] ; 0x4c break; /*No opa table, pixel value will be used directly*/ 83fc: 2508 movs r5, #8 bpp_opa_table_p = _lv_bpp8_opa_table; 83fe: 4a4c ldr r2, [pc, #304] ; (8530 ) shades = 256; 8400: f44f 7380 mov.w r3, #256 ; 0x100 8404: e75a b.n 82bc LV_LOG_WARN("lv_draw_letter: invalid bpp"); 8406: 4b4b ldr r3, [pc, #300] ; (8534 ) 8408: 9300 str r3, [sp, #0] 840a: f240 12e5 movw r2, #485 ; 0x1e5 840e: 4b4a ldr r3, [pc, #296] ; (8538 ) 8410: e0e0 b.n 85d4 bitmask_init = 0xF0; 8412: 22f0 movs r2, #240 ; 0xf0 8414: 9213 str r2, [sp, #76] ; 0x4c if(bpp == 3) bpp = 4; 8416: 2504 movs r5, #4 bpp_opa_table_p = _lv_bpp4_opa_table; 8418: 4a48 ldr r2, [pc, #288] ; (853c ) shades = 16; 841a: 2310 movs r3, #16 841c: e74e b.n 82bc bitmask_init = 0xC0; 841e: 22c0 movs r2, #192 ; 0xc0 8420: 9213 str r2, [sp, #76] ; 0x4c switch(bpp) { 8422: 2502 movs r5, #2 bpp_opa_table_p = _lv_bpp2_opa_table; 8424: 4a46 ldr r2, [pc, #280] ; (8540 ) shades = 4; 8426: 2304 movs r3, #4 8428: e748 b.n 82bc 842a: 990e ldr r1, [sp, #56] ; 0x38 842c: 483b ldr r0, [pc, #236] ; (851c ) 842e: 440b add r3, r1 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 8430: f811 2b01 ldrb.w r2, [r1], #1 8434: 2aff cmp r2, #255 ; 0xff 8436: bf17 itett ne 8438: 9c09 ldrne r4, [sp, #36] ; 0x24 843a: 9a09 ldreq r2, [sp, #36] ; 0x24 843c: fb12 f204 smulbbne r2, r2, r4 8440: 0a12 lsrne r2, r2, #8 for(i = 0; i < shades; i++) { 8442: 4299 cmp r1, r3 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 8444: f800 2b01 strb.w r2, [r0], #1 for(i = 0; i < shades; i++) { 8448: d1f2 bne.n 8430 844a: e747 b.n 82dc bitmask = bitmask_init >> col_bit; 844c: 9b13 ldr r3, [sp, #76] ; 0x4c for(col = col_start; col < col_end; col++) { 844e: 980f ldr r0, [sp, #60] ; 0x3c 8450: f8cd 908c str.w r9, [sp, #140] ; 0x8c bitmask = bitmask_init >> col_bit; 8454: fa23 f104 lsr.w r1, r3, r4 for(col = col_start; col < col_end; col++) { 8458: ee18 3a90 vmov r3, s17 845c: eb03 0809 add.w r8, r3, r9 8460: 4642 mov r2, r8 8462: 9b10 ldr r3, [sp, #64] ; 0x40 8464: 4283 cmp r3, r0 8466: dc39 bgt.n 84dc 8468: 9a0f ldr r2, [sp, #60] ; 0x3c 846a: 9910 ldr r1, [sp, #64] ; 0x40 846c: 1a9b subs r3, r3, r2 846e: 9316 str r3, [sp, #88] ; 0x58 8470: 428a cmp r2, r1 8472: bfc8 it gt 8474: 2300 movgt r3, #0 8476: 9318 str r3, [sp, #96] ; 0x60 8478: 4499 add r9, r3 if(other_mask_cnt) { 847a: 9b19 ldr r3, [sp, #100] ; 0x64 847c: b1b3 cbz r3, 84ac 847e: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2, 8482: f9bd 10cc ldrsh.w r1, [sp, #204] ; 0xcc 8486: f9bd 20d2 ldrsh.w r2, [sp, #210] ; 0xd2 848a: 4f2e ldr r7, [pc, #184] ; (8544 ) 848c: 3301 adds r3, #1 848e: 1a5b subs r3, r3, r1 8490: b21b sxth r3, r3 8492: 4640 mov r0, r8 8494: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 8496: b948 cbnz r0, 84ac 8498: f8bd 10d0 ldrh.w r1, [sp, #208] ; 0xd0 849c: f8bd 30cc ldrh.w r3, [sp, #204] ; 0xcc 84a0: 3101 adds r1, #1 84a2: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area)); 84a4: b209 sxth r1, r1 84a6: 4b28 ldr r3, [pc, #160] ; (8548 ) 84a8: 4640 mov r0, r8 84aa: 4798 blx r3 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 84ac: 9b18 ldr r3, [sp, #96] ; 0x60 84ae: 9a16 ldr r2, [sp, #88] ; 0x58 84b0: 4413 add r3, r2 84b2: 4698 mov r8, r3 84b4: 9b23 ldr r3, [sp, #140] ; 0x8c 84b6: 4498 add r8, r3 84b8: 9b15 ldr r3, [sp, #84] ; 0x54 84ba: 4543 cmp r3, r8 84bc: d946 bls.n 854c fill_area.y2 ++; 84be: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 84c2: 3301 adds r3, #1 84c4: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 col_bit += col_bit_row_ofs; 84c8: 9b1a ldr r3, [sp, #104] ; 0x68 84ca: 441c add r4, r3 map_p += (col_bit >> 3); 84cc: 9b14 ldr r3, [sp, #80] ; 0x50 84ce: eb03 03d4 add.w r3, r3, r4, lsr #3 84d2: 9314 str r3, [sp, #80] ; 0x50 col_bit = col_bit & 0x7; 84d4: f004 0407 and.w r4, r4, #7 for(row = row_start ; row < row_end; row++) { 84d8: 3601 adds r6, #1 84da: e76e b.n 83ba letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit); 84dc: 9b14 ldr r3, [sp, #80] ; 0x50 84de: 9f0d ldr r7, [sp, #52] ; 0x34 84e0: 781b ldrb r3, [r3, #0] 84e2: eba7 0c04 sub.w ip, r7, r4 84e6: 400b ands r3, r1 84e8: fa23 f30c lsr.w r3, r3, ip if(letter_px) { 84ec: f013 03ff ands.w r3, r3, #255 ; 0xff mask_buf[mask_p] = bpp_opa_table_p[letter_px]; 84f0: bf1c itt ne 84f2: 9f0e ldrne r7, [sp, #56] ; 0x38 84f4: 5cfb ldrbne r3, [r7, r3] mask_buf[mask_p] = 0; 84f6: 7013 strb r3, [r2, #0] if(col_bit < col_bit_max) { 84f8: 9b0d ldr r3, [sp, #52] ; 0x34 84fa: 42a3 cmp r3, r4 map_p++; 84fc: bf9d ittte ls 84fe: 9b14 ldrls r3, [sp, #80] ; 0x50 bitmask = bitmask_init; 8500: 9913 ldrls r1, [sp, #76] ; 0x4c map_p++; 8502: 3301 addls r3, #1 col_bit += bpp; 8504: 1964 addhi r4, r4, r5 bitmask = bitmask >> bpp; 8506: bf8e itee hi 8508: 40e9 lsrhi r1, r5 map_p++; 850a: 9314 strls r3, [sp, #80] ; 0x50 col_bit = 0; 850c: 2400 movls r4, #0 for(col = col_start; col < col_end; col++) { 850e: 3001 adds r0, #1 8510: 3201 adds r2, #1 8512: e7a6 b.n 8462 8514: 000067d5 .word 0x000067d5 8518: 0001fce8 .word 0x0001fce8 851c: 200084c8 .word 0x200084c8 8520: 0000eefd .word 0x0000eefd 8524: 000097fd .word 0x000097fd 8528: 000061d9 .word 0x000061d9 852c: 0000ebb1 .word 0x0000ebb1 8530: 0001fbd4 .word 0x0001fbd4 8534: 0001fbb8 .word 0x0001fbb8 8538: 0001fd0b .word 0x0001fd0b 853c: 0001fcd4 .word 0x0001fcd4 8540: 0001fce4 .word 0x0001fce4 8544: 00009769 .word 0x00009769 8548: 0000f061 .word 0x0000f061 _lv_blend_fill(clip_area, &fill_area, 854c: 9b1b ldr r3, [sp, #108] ; 0x6c 854e: 9302 str r3, [sp, #8] 8550: 27ff movs r7, #255 ; 0xff 8552: 2302 movs r3, #2 8554: e9cd 3700 strd r3, r7, [sp] 8558: ee19 2a90 vmov r2, s19 855c: ee18 3a90 vmov r3, s17 8560: 4f1f ldr r7, [pc, #124] ; (85e0 ) 8562: a933 add r1, sp, #204 ; 0xcc 8564: 4650 mov r0, sl 8566: 47b8 blx r7 fill_area.y1 = fill_area.y2 + 1; 8568: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 856c: 3301 adds r3, #1 856e: b21b sxth r3, r3 8570: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; 8574: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 mask_p = 0; 8578: f04f 0900 mov.w r9, #0 857c: e7a4 b.n 84c8 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 857e: 071a lsls r2, r3, #28 8580: f57f ac11 bpl.w 7da6 _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 8584: ee18 2a10 vmov r2, s16 8588: 9300 str r3, [sp, #0] 858a: 4630 mov r0, r6 858c: f9bb 300c ldrsh.w r3, [fp, #12] 8590: 4e14 ldr r6, [pc, #80] ; (85e4 ) 8592: 47b0 blx r6 8594: 9b05 ldr r3, [sp, #20] 8596: 9a05 ldr r2, [sp, #20] 8598: 889b ldrh r3, [r3, #4] 859a: 8812 ldrh r2, [r2, #0] 859c: 3301 adds r3, #1 859e: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 85a0: b21b sxth r3, r3 85a2: 1a18 subs r0, r3, r0 85a4: 4404 add r4, r0 85a6: f7ff bbfd b.w 7da4 lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode); 85aa: f89b 3019 ldrb.w r3, [fp, #25] 85ae: 931b str r3, [sp, #108] ; 0x6c bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0'); 85b0: ee18 0a10 vmov r0, s16 85b4: 4e0c ldr r6, [pc, #48] ; (85e8 ) 85b6: 2300 movs r3, #0 85b8: 462a mov r2, r5 85ba: a938 add r1, sp, #224 ; 0xe0 85bc: 47b0 blx r6 if(g_ret == false) { 85be: 2800 cmp r0, #0 85c0: f47f ac1c bne.w 7dfc if(letter >= 0x20) { 85c4: 2d1f cmp r5, #31 85c6: f67f ab66 bls.w 7c96 LV_LOG_WARN("lv_draw_letter: glyph dsc. not found"); 85ca: 4b08 ldr r3, [pc, #32] ; (85ec ) 85cc: 9300 str r3, [sp, #0] 85ce: 4b08 ldr r3, [pc, #32] ; (85f0 ) 85d0: f240 12a1 movw r2, #417 ; 0x1a1 LV_LOG_WARN("lv_draw_letter: invalid bpp"); 85d4: 4907 ldr r1, [pc, #28] ; (85f4 ) 85d6: 4c08 ldr r4, [pc, #32] ; (85f8 ) 85d8: 2002 movs r0, #2 85da: 47a0 blx r4 return; /*Invalid bpp. Can't render the letter*/ 85dc: f7ff bb5b b.w 7c96 85e0: 000061d9 .word 0x000061d9 85e4: 0000ff7d .word 0x0000ff7d 85e8: 0000d1ad .word 0x0000d1ad 85ec: 0001fb40 .word 0x0001fb40 85f0: 0001fcea .word 0x0001fcea 85f4: 0001fb0a .word 0x0001fb0a 85f8: 0000e931 .word 0x0000e931 000085fc : /********************** * GLOBAL FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc) { 85fc: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); 85fe: 4b05 ldr r3, [pc, #20] ; (8614 ) { 8600: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); 8602: 210a movs r1, #10 8604: 4798 blx r3 dsc->width = 1; dsc->opa = LV_OPA_COVER; 8606: 23ff movs r3, #255 ; 0xff 8608: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 860a: 2300 movs r3, #0 860c: 8023 strh r3, [r4, #0] dsc->width = 1; 860e: 2301 movs r3, #1 8610: 8063 strh r3, [r4, #2] } 8612: bd10 pop {r4, pc} 8614: 0000f061 .word 0x0000f061 00008618 : * @param style pointer to a line's style * @param opa_scale scale down all opacities by the factor */ LV_ATTRIBUTE_FAST_MEM void lv_draw_line(const lv_point_t * point1, const lv_point_t * point2, const lv_area_t * clip, lv_draw_line_dsc_t * dsc) { 8618: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 861c: ed2d 8b04 vpush {d8-d9} 8620: 469b mov fp, r3 if(dsc->width == 0) return; 8622: f9b3 3002 ldrsh.w r3, [r3, #2] { 8626: b0c7 sub sp, #284 ; 0x11c 8628: e9cd 0105 strd r0, r1, [sp, #20] 862c: ee08 2a90 vmov s17, r2 if(dsc->width == 0) return; 8630: 2b00 cmp r3, #0 8632: f000 80e3 beq.w 87fc if(dsc->opa <= LV_OPA_MIN) return; 8636: f89b 2008 ldrb.w r2, [fp, #8] 863a: 2a05 cmp r2, #5 863c: f240 80de bls.w 87fc if(point1->x == point2->x && point1->y == point2->y) return; 8640: 9a05 ldr r2, [sp, #20] 8642: f9b0 4000 ldrsh.w r4, [r0] 8646: f9b1 0000 ldrsh.w r0, [r1] 864a: f9b2 1002 ldrsh.w r1, [r2, #2] 864e: 9a06 ldr r2, [sp, #24] 8650: 4284 cmp r4, r0 8652: f9b2 2002 ldrsh.w r2, [r2, #2] 8656: d102 bne.n 865e 8658: 4291 cmp r1, r2 865a: f000 80cf beq.w 87fc lv_area_t clip_line; clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2; 865e: eb03 73d3 add.w r3, r3, r3, lsr #31 8662: f3c3 034f ubfx r3, r3, #1, #16 8666: 4284 cmp r4, r0 8668: bfd4 ite le 866a: ebc3 0504 rsble r5, r3, r4 866e: ebc3 0500 rsbgt r5, r3, r0 8672: f8ad 5028 strh.w r5, [sp, #40] ; 0x28 clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; 8676: 4284 cmp r4, r0 8678: bfac ite ge 867a: 191d addge r5, r3, r4 867c: 181d addlt r5, r3, r0 clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; 867e: 4291 cmp r1, r2 8680: bfd4 ite le 8682: ebc3 0001 rsble r0, r3, r1 8686: ebc3 0002 rsbgt r0, r3, r2 clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; 868a: 4291 cmp r1, r2 868c: bfac ite ge 868e: 185b addge r3, r3, r1 8690: 189b addlt r3, r3, r2 bool is_common; is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 8692: a90a add r1, sp, #40 ; 0x28 clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; 8694: f8ad 002a strh.w r0, [sp, #42] ; 0x2a is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 8698: ee18 2a90 vmov r2, s17 869c: 4ca9 ldr r4, [pc, #676] ; (8944 ) clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; 869e: f8ad 502c strh.w r5, [sp, #44] ; 0x2c is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 86a2: 4608 mov r0, r1 clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; 86a4: f8ad 302e strh.w r3, [sp, #46] ; 0x2e is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 86a8: 47a0 blx r4 if(!is_common) return; 86aa: 2800 cmp r0, #0 86ac: f000 80a6 beq.w 87fc if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc); 86b0: 9b05 ldr r3, [sp, #20] 86b2: f9b3 9002 ldrsh.w r9, [r3, #2] 86b6: 9b06 ldr r3, [sp, #24] 86b8: f9b3 8002 ldrsh.w r8, [r3, #2] 86bc: 45c1 cmp r9, r8 86be: f040 8157 bne.w 8970 const lv_area_t * clip, lv_draw_line_dsc_t * dsc) { lv_opa_t opa = dsc->opa; lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 86c2: 4ba1 ldr r3, [pc, #644] ; (8948 ) lv_opa_t opa = dsc->opa; 86c4: f89b 4008 ldrb.w r4, [fp, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 86c8: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 86ca: 4ba0 ldr r3, [pc, #640] ; (894c ) 86cc: 4798 blx r3 const lv_area_t * disp_area = &vdb->area; int32_t w = dsc->width - 1; 86ce: f9bb 6002 ldrsh.w r6, [fp, #2] int32_t w_half0 = w >> 1; int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 86d2: f9bb 5006 ldrsh.w r5, [fp, #6] int32_t w = dsc->width - 1; 86d6: 1e73 subs r3, r6, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 86d8: f003 0601 and.w r6, r3, #1 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 86dc: 4680 mov r8, r0 int32_t w_half0 = w >> 1; 86de: 105f asrs r7, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 86e0: eb06 0663 add.w r6, r6, r3, asr #1 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 86e4: b125 cbz r5, 86f0 86e6: f9bb 5004 ldrsh.w r5, [fp, #4] 86ea: 3d00 subs r5, #0 86ec: bf18 it ne 86ee: 2501 movne r5, #1 bool simple_mode = true; if(lv_draw_mask_get_cnt()) simple_mode = false; 86f0: 4b97 ldr r3, [pc, #604] ; (8950 ) 86f2: 4798 blx r3 86f4: 2800 cmp r0, #0 86f6: f040 8086 bne.w 8806 else if(dashed) simple_mode = false; 86fa: f085 0201 eor.w r2, r5, #1 lv_area_t draw_area; draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); 86fe: 9b06 ldr r3, [sp, #24] 8700: 9905 ldr r1, [sp, #20] 8702: f9b3 3000 ldrsh.w r3, [r3] 8706: f9b1 1000 ldrsh.w r1, [r1] 870a: 428b cmp r3, r1 870c: 4618 mov r0, r3 870e: bfa8 it ge 8710: 4608 movge r0, r1 draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1; 8712: 428b cmp r3, r1 8714: bfb8 it lt 8716: 460b movlt r3, r1 8718: 3b01 subs r3, #1 871a: f8ad 309c strh.w r3, [sp, #156] ; 0x9c draw_area.y1 = point1->y - w_half1; 871e: 9b05 ldr r3, [sp, #20] draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); 8720: f8ad 0098 strh.w r0, [sp, #152] ; 0x98 draw_area.y1 = point1->y - w_half1; 8724: 885b ldrh r3, [r3, #2] 8726: 1b9e subs r6, r3, r6 draw_area.y2 = point1->y + w_half0; 8728: 443b add r3, r7 draw_area.y1 = point1->y - w_half1; 872a: f8ad 609a strh.w r6, [sp, #154] ; 0x9a draw_area.y2 = point1->y + w_half0; 872e: f8ad 309e strh.w r3, [sp, #158] ; 0x9e /*If there is no mask then simply draw a rectangle*/ if(simple_mode) { 8732: 2a00 cmp r2, #0 8734: d069 beq.n 880a _lv_blend_fill(clip, &draw_area, dsc->color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, dsc->blend_mode); 8736: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(clip, &draw_area, 873a: f003 0303 and.w r3, r3, #3 873e: e9cd 4301 strd r4, r3, [sp, #4] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; /*If there is no mask then simply draw a rectangle*/ if(simple_mode) { _lv_blend_fill(clip, &draw_area, 8742: 2301 movs r3, #1 8744: 9300 str r3, [sp, #0] 8746: f8bb 2000 ldrh.w r2, [fp] 874a: 4c82 ldr r4, [pc, #520] ; (8954 ) 874c: 2300 movs r3, #0 874e: a926 add r1, sp, #152 ; 0x98 8750: a80a add r0, sp, #40 ; 0x28 8752: 47a0 blx r4 if(dsc->round_end || dsc->round_start) { 8754: f89b 3009 ldrb.w r3, [fp, #9] 8758: f013 0f0c tst.w r3, #12 875c: d04e beq.n 87fc lv_draw_rect_dsc_init(&cir_dsc); 875e: 4b7e ldr r3, [pc, #504] ; (8958 ) 8760: a831 add r0, sp, #196 ; 0xc4 8762: 4798 blx r3 cir_dsc.bg_color = dsc->color; 8764: f8bb 3000 ldrh.w r3, [fp] 8768: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 cir_dsc.radius = LV_RADIUS_CIRCLE; 876c: f647 73ff movw r3, #32767 ; 0x7fff 8770: f8ad 30c4 strh.w r3, [sp, #196] ; 0xc4 cir_dsc.bg_opa = dsc->opa; 8774: f89b 3008 ldrb.w r3, [fp, #8] 8778: f88d 30d0 strb.w r3, [sp, #208] ; 0xd0 int32_t r = (dsc->width >> 1); 877c: f9bb 3002 ldrsh.w r3, [fp, #2] 8780: 105c asrs r4, r3, #1 int32_t r_corr = (dsc->width & 1) ? 0 : 1; 8782: 43db mvns r3, r3 8784: f003 0501 and.w r5, r3, #1 if(dsc->round_start) { 8788: f89b 3009 ldrb.w r3, [fp, #9] 878c: 075a lsls r2, r3, #29 878e: d518 bpl.n 87c2 cir_area.x1 = point1->x - r; 8790: 9b05 ldr r3, [sp, #20] 8792: 881a ldrh r2, [r3, #0] 8794: b2a3 uxth r3, r4 8796: 1ad1 subs r1, r2, r3 8798: f8ad 1098 strh.w r1, [sp, #152] ; 0x98 cir_area.y1 = point1->y - r; 879c: 9905 ldr r1, [sp, #20] 879e: 8849 ldrh r1, [r1, #2] cir_area.x2 = point1->x + r - r_corr; 87a0: 441a add r2, r3 cir_area.y1 = point1->y - r; 87a2: 1ac8 subs r0, r1, r3 cir_area.y2 = point1->y + r - r_corr ; 87a4: 440b add r3, r1 cir_area.x2 = point1->x + r - r_corr; 87a6: 1b52 subs r2, r2, r5 cir_area.y2 = point1->y + r - r_corr ; 87a8: 1b5b subs r3, r3, r5 cir_area.y1 = point1->y - r; 87aa: f8ad 009a strh.w r0, [sp, #154] ; 0x9a cir_area.x2 = point1->x + r - r_corr; 87ae: f8ad 209c strh.w r2, [sp, #156] ; 0x9c cir_area.y2 = point1->y + r - r_corr ; 87b2: f8ad 309e strh.w r3, [sp, #158] ; 0x9e lv_draw_rect(&cir_area, clip, &cir_dsc); 87b6: ee18 1a90 vmov r1, s17 87ba: 4b68 ldr r3, [pc, #416] ; (895c ) 87bc: aa31 add r2, sp, #196 ; 0xc4 87be: a826 add r0, sp, #152 ; 0x98 87c0: 4798 blx r3 if(dsc->round_end) { 87c2: f89b 3009 ldrb.w r3, [fp, #9] 87c6: 071b lsls r3, r3, #28 87c8: d518 bpl.n 87fc cir_area.x1 = point2->x - r; 87ca: 9b06 ldr r3, [sp, #24] 87cc: 881a ldrh r2, [r3, #0] 87ce: b2a3 uxth r3, r4 87d0: 1ad1 subs r1, r2, r3 87d2: f8ad 1098 strh.w r1, [sp, #152] ; 0x98 cir_area.y1 = point2->y - r; 87d6: 9906 ldr r1, [sp, #24] 87d8: 8849 ldrh r1, [r1, #2] cir_area.x2 = point2->x + r - r_corr; 87da: 441a add r2, r3 cir_area.y1 = point2->y - r; 87dc: 1ac8 subs r0, r1, r3 cir_area.y2 = point2->y + r - r_corr ; 87de: 440b add r3, r1 cir_area.x2 = point2->x + r - r_corr; 87e0: 1b52 subs r2, r2, r5 cir_area.y2 = point2->y + r - r_corr ; 87e2: 1b5b subs r3, r3, r5 cir_area.y1 = point2->y - r; 87e4: f8ad 009a strh.w r0, [sp, #154] ; 0x9a cir_area.x2 = point2->x + r - r_corr; 87e8: f8ad 209c strh.w r2, [sp, #156] ; 0x9c cir_area.y2 = point2->y + r - r_corr ; 87ec: f8ad 309e strh.w r3, [sp, #158] ; 0x9e lv_draw_rect(&cir_area, clip, &cir_dsc); 87f0: ee18 1a90 vmov r1, s17 87f4: 4b59 ldr r3, [pc, #356] ; (895c ) 87f6: aa31 add r2, sp, #196 ; 0xc4 87f8: a826 add r0, sp, #152 ; 0x98 87fa: 4798 blx r3 } 87fc: b047 add sp, #284 ; 0x11c 87fe: ecbd 8b04 vpop {d8-d9} 8802: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(lv_draw_mask_get_cnt()) simple_mode = false; 8806: 2200 movs r2, #0 8808: e779 b.n 86fe is_common = _lv_area_intersect(&draw_area, clip, &draw_area); 880a: aa26 add r2, sp, #152 ; 0x98 880c: 4b4d ldr r3, [pc, #308] ; (8944 ) 880e: a90a add r1, sp, #40 ; 0x28 8810: 4610 mov r0, r2 8812: 4798 blx r3 if(!is_common) return; 8814: 2800 cmp r0, #0 8816: d09d beq.n 8754 draw_area.y1 -= disp_area->y1; 8818: f8b8 4012 ldrh.w r4, [r8, #18] 881c: f9bd 009a ldrsh.w r0, [sp, #154] ; 0x9a draw_area.x1 -= disp_area->x1; 8820: f8b8 1010 ldrh.w r1, [r8, #16] 8824: f9b8 6010 ldrsh.w r6, [r8, #16] 8828: f8bd 7098 ldrh.w r7, [sp, #152] ; 0x98 draw_area.x2 -= disp_area->x1; 882c: f9bd c09c ldrsh.w ip, [sp, #156] ; 0x9c draw_area.x1 -= disp_area->x1; 8830: f9bd e098 ldrsh.w lr, [sp, #152] ; 0x98 fill_area.x1 = draw_area.x1 + disp_area->x1; 8834: f8ad e0c4 strh.w lr, [sp, #196] ; 0xc4 draw_area.y1 -= disp_area->y1; 8838: 1b03 subs r3, r0, r4 883a: f8ad 309a strh.w r3, [sp, #154] ; 0x9a draw_area.x2 -= disp_area->x1; 883e: f8bd 309c ldrh.w r3, [sp, #156] ; 0x9c fill_area.x2 = draw_area.x2 + disp_area->x1; 8842: f8ad c0c8 strh.w ip, [sp, #200] ; 0xc8 draw_area.x1 -= disp_area->x1; 8846: 1a7a subs r2, r7, r1 draw_area.x2 -= disp_area->x1; 8848: 1a59 subs r1, r3, r1 884a: f8ad 109c strh.w r1, [sp, #156] ; 0x9c draw_area.y2 -= disp_area->y1; 884e: f8bd 109e ldrh.w r1, [sp, #158] ; 0x9e fill_area.y1 = draw_area.y1 + disp_area->y1; 8852: f8ad 00c6 strh.w r0, [sp, #198] ; 0xc6 draw_area.y2 -= disp_area->y1; 8856: 1b09 subs r1, r1, r4 8858: 1c5c adds r4, r3, #1 draw_area.x1 -= disp_area->x1; 885a: b212 sxth r2, r2 885c: 1be4 subs r4, r4, r7 885e: f8ad 2098 strh.w r2, [sp, #152] ; 0x98 draw_area.y2 -= disp_area->y1; 8862: f8ad 109e strh.w r1, [sp, #158] ; 0x9e 8866: b224 sxth r4, r4 fill_area.y2 = fill_area.y1; 8868: f8ad 00ca strh.w r0, [sp, #202] ; 0xca if(dashed) { 886c: b1dd cbz r5, 88a6 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); 886e: 4416 add r6, r2 8870: f9bb 3004 ldrsh.w r3, [fp, #4] 8874: f9bb 2006 ldrsh.w r2, [fp, #6] 8878: 441a add r2, r3 887a: fb96 f3f2 sdiv r3, r6, r2 887e: fb02 6613 mls r6, r2, r3, r6 8882: b233 sxth r3, r6 8884: 9307 str r3, [sp, #28] lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8886: 4b36 ldr r3, [pc, #216] ; (8960 ) _lv_blend_fill(clip, &fill_area, 8888: f8df a0c8 ldr.w sl, [pc, #200] ; 8954 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 888c: 4620 mov r0, r4 888e: 4798 blx r3 for(h = draw_area.y1; h <= draw_area.y2; h++) { 8890: f9bd 909a ldrsh.w r9, [sp, #154] ; 0x9a lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8894: 4607 mov r7, r0 for(h = draw_area.y1; h <= draw_area.y2; h++) { 8896: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 889a: 4599 cmp r9, r3 889c: dd05 ble.n 88aa _lv_mem_buf_release(mask_buf); 889e: 4638 mov r0, r7 LV_BLEND_MODE_NORMAL); fill_area.y1++; fill_area.y2++; } _lv_mem_buf_release(mask_buf); 88a0: 4b30 ldr r3, [pc, #192] ; (8964 ) 88a2: 4798 blx r3 88a4: e756 b.n 8754 lv_style_int_t dash_start = 0; 88a6: 9507 str r5, [sp, #28] 88a8: e7ed b.n 8886 _lv_memset_ff(mask_buf, draw_area_w); 88aa: 4b2f ldr r3, [pc, #188] ; (8968 ) lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); 88ac: 4e2f ldr r6, [pc, #188] ; (896c ) _lv_memset_ff(mask_buf, draw_area_w); 88ae: 4621 mov r1, r4 88b0: 4638 mov r0, r7 88b2: 4798 blx r3 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); 88b4: f8bd 3098 ldrh.w r3, [sp, #152] ; 0x98 88b8: f8b8 2012 ldrh.w r2, [r8, #18] 88bc: f8b8 1010 ldrh.w r1, [r8, #16] 88c0: 444a add r2, r9 88c2: 4419 add r1, r3 88c4: b212 sxth r2, r2 88c6: 4623 mov r3, r4 88c8: b209 sxth r1, r1 88ca: 4638 mov r0, r7 88cc: 47b0 blx r6 88ce: 4602 mov r2, r0 if(dashed) { 88d0: b195 cbz r5, 88f8 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { 88d2: b188 cbz r0, 88f8 for(i = 0; i < draw_area_w; i++, dash_cnt++) { 88d4: 2300 movs r3, #0 lv_style_int_t dash_cnt = dash_start; 88d6: 9907 ldr r1, [sp, #28] 88d8: 4618 mov r0, r3 88da: e00a b.n 88f2 if(dash_cnt <= dsc->dash_width) { 88dc: f9bb 2004 ldrsh.w r2, [fp, #4] 88e0: 428a cmp r2, r1 88e2: db25 blt.n 8930 i += diff; 88e4: 4413 add r3, r2 88e6: 1a5b subs r3, r3, r1 88e8: b21b sxth r3, r3 for(i = 0; i < draw_area_w; i++, dash_cnt++) { 88ea: 3301 adds r3, #1 88ec: 3201 adds r2, #1 88ee: b21b sxth r3, r3 88f0: b211 sxth r1, r2 88f2: 429c cmp r4, r3 88f4: dcf2 bgt.n 88dc mask_res = LV_DRAW_MASK_RES_CHANGED; 88f6: 2202 movs r2, #2 dsc->blend_mode); 88f8: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(clip, &fill_area, 88fc: f003 0303 and.w r3, r3, #3 8900: 9302 str r3, [sp, #8] 8902: f89b 3008 ldrb.w r3, [fp, #8] 8906: a931 add r1, sp, #196 ; 0xc4 8908: e9cd 2300 strd r2, r3, [sp] 890c: a80a add r0, sp, #40 ; 0x28 890e: 463b mov r3, r7 8910: f8bb 2000 ldrh.w r2, [fp] 8914: 47d0 blx sl fill_area.y1++; 8916: f8bd 30c6 ldrh.w r3, [sp, #198] ; 0xc6 891a: 3301 adds r3, #1 891c: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 fill_area.y2++; 8920: f8bd 30ca ldrh.w r3, [sp, #202] ; 0xca 8924: 3301 adds r3, #1 8926: f8ad 30ca strh.w r3, [sp, #202] ; 0xca for(h = draw_area.y1; h <= draw_area.y2; h++) { 892a: f109 0901 add.w r9, r9, #1 892e: e7b2 b.n 8896 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 8930: f9bb c006 ldrsh.w ip, [fp, #6] 8934: 4462 add r2, ip 8936: 4291 cmp r1, r2 mask_buf[i] = 0x00; 8938: bfba itte lt 893a: 54f8 strblt r0, [r7, r3] 893c: 460a movlt r2, r1 dash_cnt = 0; 893e: 2200 movge r2, #0 8940: e7d3 b.n 88ea 8942: bf00 nop 8944: 0000ded1 .word 0x0000ded1 8948: 00004fdd .word 0x00004fdd 894c: 0000da25 .word 0x0000da25 8950: 000097fd .word 0x000097fd 8954: 000061d9 .word 0x000061d9 8958: 00009bb5 .word 0x00009bb5 895c: 00009c01 .word 0x00009c01 8960: 0000eefd .word 0x0000eefd 8964: 0000ebb1 .word 0x0000ebb1 8968: 0000f0bd .word 0x0000f0bd 896c: 00009769 .word 0x00009769 else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc); 8970: 9b05 ldr r3, [sp, #20] 8972: f9b3 7000 ldrsh.w r7, [r3] 8976: 9b06 ldr r3, [sp, #24] 8978: f9b3 6000 ldrsh.w r6, [r3] 897c: 42b7 cmp r7, r6 897e: f040 80db bne.w 8b38 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8982: 4b66 ldr r3, [pc, #408] ; (8b1c ) lv_opa_t opa = dsc->opa; 8984: f89b 6008 ldrb.w r6, [fp, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8988: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 898a: 4b65 ldr r3, [pc, #404] ; (8b20 ) 898c: 4798 blx r3 int32_t w = dsc->width - 1; 898e: f9bb 8002 ldrsh.w r8, [fp, #2] bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 8992: f9bb 5006 ldrsh.w r5, [fp, #6] int32_t w = dsc->width - 1; 8996: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 899a: f003 0801 and.w r8, r3, #1 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 899e: 4607 mov r7, r0 int32_t w_half0 = w >> 1; 89a0: ea4f 0963 mov.w r9, r3, asr #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 89a4: eb08 0863 add.w r8, r8, r3, asr #1 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 89a8: b125 cbz r5, 89b4 89aa: f9bb 5004 ldrsh.w r5, [fp, #4] 89ae: 3d00 subs r5, #0 89b0: bf18 it ne 89b2: 2501 movne r5, #1 if(lv_draw_mask_get_cnt()) simple_mode = false; 89b4: 4b5b ldr r3, [pc, #364] ; (8b24 ) 89b6: 4798 blx r3 89b8: bb20 cbnz r0, 8a04 else if(dashed) simple_mode = false; 89ba: f085 0201 eor.w r2, r5, #1 draw_area.x1 = point1->x - w_half1; 89be: 9b05 ldr r3, [sp, #20] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89c0: 9905 ldr r1, [sp, #20] draw_area.x1 = point1->x - w_half1; 89c2: 881b ldrh r3, [r3, #0] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89c4: f9b1 1002 ldrsh.w r1, [r1, #2] draw_area.x1 = point1->x - w_half1; 89c8: eba3 0808 sub.w r8, r3, r8 draw_area.x2 = point1->x + w_half0; 89cc: 444b add r3, r9 89ce: f8ad 309c strh.w r3, [sp, #156] ; 0x9c draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89d2: 9b06 ldr r3, [sp, #24] draw_area.x1 = point1->x - w_half1; 89d4: f8ad 8098 strh.w r8, [sp, #152] ; 0x98 draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89d8: f9b3 3002 ldrsh.w r3, [r3, #2] 89dc: 428b cmp r3, r1 89de: 4618 mov r0, r3 89e0: bfa8 it ge 89e2: 4608 movge r0, r1 draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; 89e4: 428b cmp r3, r1 89e6: bfb8 it lt 89e8: 460b movlt r3, r1 89ea: 3b01 subs r3, #1 draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89ec: f8ad 009a strh.w r0, [sp, #154] ; 0x9a draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; 89f0: f8ad 309e strh.w r3, [sp, #158] ; 0x9e if(simple_mode) { 89f4: b142 cbz r2, 8a08 dsc->blend_mode); 89f6: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(clip, &draw_area, 89fa: f003 0303 and.w r3, r3, #3 89fe: e9cd 6301 strd r6, r3, [sp, #4] 8a02: e69e b.n 8742 if(lv_draw_mask_get_cnt()) simple_mode = false; 8a04: 2200 movs r2, #0 8a06: e7da b.n 89be is_common = _lv_area_intersect(&draw_area, clip, &draw_area); 8a08: aa26 add r2, sp, #152 ; 0x98 8a0a: a90a add r1, sp, #40 ; 0x28 8a0c: 4610 mov r0, r2 8a0e: 47a0 blx r4 if(!is_common) return; 8a10: 2800 cmp r0, #0 8a12: f43f ae9f beq.w 8754 draw_area.x1 -= vdb->area.x1; 8a16: 8a3a ldrh r2, [r7, #16] 8a18: f8bd c098 ldrh.w ip, [sp, #152] ; 0x98 draw_area.y1 -= vdb->area.y1; 8a1c: 8a7e ldrh r6, [r7, #18] 8a1e: f9bd 109a ldrsh.w r1, [sp, #154] ; 0x9a draw_area.x1 -= vdb->area.x1; 8a22: f9bd 4098 ldrsh.w r4, [sp, #152] ; 0x98 draw_area.x2 -= vdb->area.x1; 8a26: f9bd 009c ldrsh.w r0, [sp, #156] ; 0x9c fill_area.x2 = draw_area.x2 + disp_area->x1; 8a2a: f8ad 00c8 strh.w r0, [sp, #200] ; 0xc8 draw_area.x1 -= vdb->area.x1; 8a2e: ebac 0302 sub.w r3, ip, r2 8a32: f8ad 3098 strh.w r3, [sp, #152] ; 0x98 draw_area.y1 -= vdb->area.y1; 8a36: 1b8b subs r3, r1, r6 8a38: f8ad 309a strh.w r3, [sp, #154] ; 0x9a draw_area.x2 -= vdb->area.x1; 8a3c: f8bd 309c ldrh.w r3, [sp, #156] ; 0x9c fill_area.x1 = draw_area.x1 + disp_area->x1; 8a40: f8ad 40c4 strh.w r4, [sp, #196] ; 0xc4 draw_area.x2 -= vdb->area.x1; 8a44: 1a9a subs r2, r3, r2 8a46: f8ad 209c strh.w r2, [sp, #156] ; 0x9c draw_area.y2 -= vdb->area.y1; 8a4a: f8bd 209e ldrh.w r2, [sp, #158] ; 0x9e fill_area.y1 = draw_area.y1 + disp_area->y1; 8a4e: f8ad 10c6 strh.w r1, [sp, #198] ; 0xc6 draw_area.y2 -= vdb->area.y1; 8a52: 1b92 subs r2, r2, r6 8a54: 1c5e adds r6, r3, #1 8a56: eba6 060c sub.w r6, r6, ip 8a5a: b233 sxth r3, r6 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8a5c: 4618 mov r0, r3 8a5e: ee08 3a10 vmov s16, r3 draw_area.y2 -= vdb->area.y1; 8a62: f8ad 209e strh.w r2, [sp, #158] ; 0x9e lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8a66: 4b30 ldr r3, [pc, #192] ; (8b28 ) fill_area.y2 = fill_area.y1; 8a68: f8ad 10ca strh.w r1, [sp, #202] ; 0xca lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8a6c: 4798 blx r3 8a6e: 4680 mov r8, r0 if(dashed) { 8a70: b1c5 cbz r5, 8aa4 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); 8a72: f9bd 3098 ldrsh.w r3, [sp, #152] ; 0x98 8a76: f9b7 4010 ldrsh.w r4, [r7, #16] 8a7a: f9bb 2004 ldrsh.w r2, [fp, #4] 8a7e: 441c add r4, r3 8a80: f9bb 3006 ldrsh.w r3, [fp, #6] 8a84: 4413 add r3, r2 8a86: fb94 f2f3 sdiv r2, r4, r3 8a8a: fb03 4412 mls r4, r3, r2, r4 8a8e: b224 sxth r4, r4 for(h = draw_area.y1; h <= draw_area.y2; h++) { 8a90: f9bd 909a ldrsh.w r9, [sp, #154] ; 0x9a _lv_blend_fill(clip, &fill_area, 8a94: f8df a09c ldr.w sl, [pc, #156] ; 8b34 for(h = draw_area.y1; h <= draw_area.y2; h++) { 8a98: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 8a9c: 4599 cmp r9, r3 8a9e: dd03 ble.n 8aa8 _lv_mem_buf_release(mask_buf); 8aa0: 4640 mov r0, r8 8aa2: e6fd b.n 88a0 lv_style_int_t dash_start = 0; 8aa4: 462c mov r4, r5 8aa6: e7f3 b.n 8a90 _lv_memset_ff(mask_buf, draw_area_w); 8aa8: ee18 1a10 vmov r1, s16 8aac: 4b1f ldr r3, [pc, #124] ; (8b2c ) lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); 8aae: 4e20 ldr r6, [pc, #128] ; (8b30 ) _lv_memset_ff(mask_buf, draw_area_w); 8ab0: 4640 mov r0, r8 8ab2: 4798 blx r3 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); 8ab4: f8bd 3098 ldrh.w r3, [sp, #152] ; 0x98 8ab8: 8a7a ldrh r2, [r7, #18] 8aba: 8a39 ldrh r1, [r7, #16] 8abc: 444a add r2, r9 8abe: 4419 add r1, r3 8ac0: b212 sxth r2, r2 8ac2: ee18 3a10 vmov r3, s16 8ac6: b209 sxth r1, r1 8ac8: 4640 mov r0, r8 8aca: 47b0 blx r6 if(dashed) { 8acc: b16d cbz r5, 8aea if(mask_res != LV_DRAW_MASK_RES_TRANSP) { 8ace: b150 cbz r0, 8ae6 if(dash_cnt > dsc->dash_width) { 8ad0: f9bb 2004 ldrsh.w r2, [fp, #4] if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 8ad4: f9bb 3006 ldrsh.w r3, [fp, #6] 8ad8: 4413 add r3, r2 mask_res = LV_DRAW_MASK_RES_TRANSP; 8ada: 42a2 cmp r2, r4 8adc: bfb8 it lt 8ade: 2000 movlt r0, #0 dash_cnt = 0; 8ae0: 429c cmp r4, r3 8ae2: bfa8 it ge 8ae4: 2400 movge r4, #0 dash_cnt ++; 8ae6: 3401 adds r4, #1 8ae8: b224 sxth r4, r4 _lv_blend_fill(clip, &fill_area, 8aea: 2300 movs r3, #0 8aec: 9302 str r3, [sp, #8] 8aee: f89b 3008 ldrb.w r3, [fp, #8] 8af2: f8bb 2000 ldrh.w r2, [fp] 8af6: e9cd 0300 strd r0, r3, [sp] 8afa: a931 add r1, sp, #196 ; 0xc4 8afc: 4643 mov r3, r8 8afe: a80a add r0, sp, #40 ; 0x28 8b00: 47d0 blx sl fill_area.y1++; 8b02: f8bd 30c6 ldrh.w r3, [sp, #198] ; 0xc6 8b06: 3301 adds r3, #1 8b08: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 fill_area.y2++; 8b0c: f8bd 30ca ldrh.w r3, [sp, #202] ; 0xca 8b10: 3301 adds r3, #1 8b12: f8ad 30ca strh.w r3, [sp, #202] ; 0xca for(h = draw_area.y1; h <= draw_area.y2; h++) { 8b16: f109 0901 add.w r9, r9, #1 8b1a: e7bd b.n 8a98 8b1c: 00004fdd .word 0x00004fdd 8b20: 0000da25 .word 0x0000da25 8b24: 000097fd .word 0x000097fd 8b28: 0000eefd .word 0x0000eefd 8b2c: 0000f0bd .word 0x0000f0bd 8b30: 00009769 .word 0x00009769 8b34: 000061d9 .word 0x000061d9 lv_draw_line_dsc_t * dsc) { /*Keep the great y in p1*/ lv_point_t p1; lv_point_t p2; if(point1->y < point2->y) { 8b38: 45c1 cmp r9, r8 8b3a: db05 blt.n 8b48 8b3c: 464b mov r3, r9 8b3e: 46c1 mov r9, r8 8b40: 4698 mov r8, r3 8b42: 463b mov r3, r7 8b44: 4637 mov r7, r6 8b46: 461e mov r6, r3 p2.y = point1->y; p1.x = point2->x; p2.x = point1->x; } int32_t xdiff = p2.x - p1.x; 8b48: 1bf3 subs r3, r6, r7 8b4a: 9309 str r3, [sp, #36] ; 0x24 int32_t ydiff = p2.y - p1.y; 8b4c: eba8 0309 sub.w r3, r8, r9 8b50: 9308 str r3, [sp, #32] bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false; 8b52: 1bf3 subs r3, r6, r7 8b54: ea83 72e3 eor.w r2, r3, r3, asr #31 8b58: eba2 72e3 sub.w r2, r2, r3, asr #31 8b5c: 9b08 ldr r3, [sp, #32] 8b5e: 9207 str r2, [sp, #28] 8b60: ea83 7ae3 eor.w sl, r3, r3, asr #31 8b64: ebaa 7ae3 sub.w sl, sl, r3, asr #31 181, }; int32_t w = dsc->width; int32_t wcorr_i = 0; if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); 8b68: 4552 cmp r2, sl 8b6a: 4613 mov r3, r2 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 8b6c: bfd8 it le 8b6e: 9b07 ldrle r3, [sp, #28] int32_t w = dsc->width; 8b70: f9bb 5002 ldrsh.w r5, [fp, #2] if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); 8b74: bfca itet gt 8b76: ea4f 134a movgt.w r3, sl, lsl #5 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 8b7a: 015b lslle r3, r3, #5 if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); 8b7c: fbb3 f3f2 udivgt r3, r3, r2 w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 8b80: 4ab3 ldr r2, [pc, #716] ; (8e50 ) else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 8b82: bfd8 it le 8b84: fbb3 f3fa udivle r3, r3, sl w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 8b88: 5cd1 ldrb r1, [r2, r3] 8b8a: 233f movs r3, #63 ; 0x3f 8b8c: fb15 3501 smlabb r5, r5, r1, r3 int32_t w_half0 = w >> 1; int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ lv_area_t draw_area; draw_area.x1 = LV_MATH_MIN(p1.x, p2.x) - w; 8b90: f3c5 13cf ubfx r3, r5, #7, #16 8b94: 42be cmp r6, r7 8b96: bfd4 ite le 8b98: ebc3 0206 rsble r2, r3, r6 8b9c: ebc3 0207 rsbgt r2, r3, r7 8ba0: f8ad 2030 strh.w r2, [sp, #48] ; 0x30 draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w; 8ba4: 42be cmp r6, r7 8ba6: bfac ite ge 8ba8: 199a addge r2, r3, r6 8baa: 19da addlt r2, r3, r7 8bac: f8ad 2034 strh.w r2, [sp, #52] ; 0x34 draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; /* Get the union of `coords` and `clip`*/ /* `clip` is already truncated to the `vdb` size * in 'lv_refr_area' function */ bool is_common = _lv_area_intersect(&draw_area, &draw_area, clip); 8bb0: a90c add r1, sp, #48 ; 0x30 draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; 8bb2: 45c8 cmp r8, r9 8bb4: bfd4 ite le 8bb6: ebc3 0208 rsble r2, r3, r8 8bba: ebc3 0209 rsbgt r2, r3, r9 draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; 8bbe: 45c8 cmp r8, r9 8bc0: bfac ite ge 8bc2: 4443 addge r3, r8 8bc4: 444b addlt r3, r9 draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; 8bc6: f8ad 2032 strh.w r2, [sp, #50] ; 0x32 draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; 8bca: f8ad 3036 strh.w r3, [sp, #54] ; 0x36 bool is_common = _lv_area_intersect(&draw_area, &draw_area, clip); 8bce: aa0a add r2, sp, #40 ; 0x28 8bd0: 4ba0 ldr r3, [pc, #640] ; (8e54 ) 8bd2: 4608 mov r0, r1 w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 8bd4: 11ec asrs r4, r5, #7 bool is_common = _lv_area_intersect(&draw_area, &draw_area, clip); 8bd6: 4798 blx r3 if(is_common == false) return; 8bd8: 2800 cmp r0, #0 8bda: f43f adbb beq.w 8754 lv_draw_mask_line_param_t mask_left_param; lv_draw_mask_line_param_t mask_right_param; lv_draw_mask_line_param_t mask_top_param; lv_draw_mask_line_param_t mask_bottom_param; if(flat) { 8bde: 9b07 ldr r3, [sp, #28] int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 8be0: f004 0401 and.w r4, r4, #1 8be4: eb04 2425 add.w r4, r4, r5, asr #8 if(flat) { 8be8: 4553 cmp r3, sl if(xdiff > 0) { lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, LV_DRAW_MASK_LINE_SIDE_LEFT); lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8bea: b2a4 uxth r4, r4 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8bec: f3c5 250f ubfx r5, r5, #8, #16 if(flat) { 8bf0: f340 80ed ble.w 8dce lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8bf4: fa14 f389 uxtah r3, r4, r9 8bf8: b21b sxth r3, r3 8bfa: ee08 3a10 vmov s16, r3 if(xdiff > 0) { 8bfe: 1bf3 subs r3, r6, r7 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8c00: eba9 0a05 sub.w sl, r9, r5 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8c04: fa14 f488 uxtah r4, r4, r8 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8c08: eba8 0505 sub.w r5, r8, r5 if(xdiff > 0) { 8c0c: 2b00 cmp r3, #0 8c0e: f04f 0300 mov.w r3, #0 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8c12: b224 sxth r4, r4 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8c14: fa0f fa8a sxth.w sl, sl 8c18: b22d sxth r5, r5 8c1a: 9301 str r3, [sp, #4] if(xdiff > 0) { 8c1c: f340 80c6 ble.w 8dac lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8c20: 9500 str r5, [sp, #0] 8c22: 4633 mov r3, r6 8c24: 4652 mov r2, sl 8c26: 4639 mov r1, r7 8c28: a810 add r0, sp, #64 ; 0x40 8c2a: 4d8b ldr r5, [pc, #556] ; (8e58 ) 8c2c: 47a8 blx r5 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8c2e: 2301 movs r3, #1 8c30: e9cd 4300 strd r4, r3, [sp] 8c34: ee18 2a10 vmov r2, s16 8c38: 4633 mov r3, r6 8c3a: 4639 mov r1, r7 8c3c: a81b add r0, sp, #108 ; 0x6c 8c3e: 47a8 blx r5 LV_DRAW_MASK_LINE_SIDE_RIGHT); } /*Use the normal vector for the endings*/ int16_t mask_left_id = lv_draw_mask_add(&mask_left_param, NULL); 8c40: f8df a240 ldr.w sl, [pc, #576] ; 8e84 8c44: 2100 movs r1, #0 8c46: a810 add r0, sp, #64 ; 0x40 8c48: 47d0 blx sl int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 8c4a: 2100 movs r1, #0 int16_t mask_left_id = lv_draw_mask_add(&mask_left_param, NULL); 8c4c: ee09 0a10 vmov s18, r0 int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 8c50: a81b add r0, sp, #108 ; 0x6c 8c52: 47d0 blx sl int16_t mask_top_id = LV_MASK_ID_INV; int16_t mask_bottom_id = LV_MASK_ID_INV; if(!dsc->raw_end) { 8c54: f89b 5009 ldrb.w r5, [fp, #9] 8c58: f015 0510 ands.w r5, r5, #16 int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 8c5c: ee09 0a90 vmov s19, r0 if(!dsc->raw_end) { 8c60: f040 80cf bne.w 8e02 lv_draw_mask_line_points_init(&mask_top_param, p1.x, p1.y, p1.x - ydiff, p1.y + xdiff, LV_DRAW_MASK_LINE_SIDE_BOTTOM); 8c64: 2203 movs r2, #3 8c66: f8bd 4020 ldrh.w r4, [sp, #32] 8c6a: 9201 str r2, [sp, #4] 8c6c: 1bf2 subs r2, r6, r7 8c6e: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 8c72: 9307 str r3, [sp, #28] 8c74: fa19 f282 uxtah r2, r9, r2 8c78: 1b3b subs r3, r7, r4 8c7a: b212 sxth r2, r2 8c7c: 4639 mov r1, r7 8c7e: 9200 str r2, [sp, #0] 8c80: 4f75 ldr r7, [pc, #468] ; (8e58 ) 8c82: b21b sxth r3, r3 8c84: 464a mov r2, r9 8c86: a826 add r0, sp, #152 ; 0x98 8c88: 47b8 blx r7 lv_draw_mask_line_points_init(&mask_bottom_param, p2.x, p2.y, p2.x - ydiff, p2.y + xdiff, LV_DRAW_MASK_LINE_SIDE_TOP); 8c8a: 2202 movs r2, #2 8c8c: 9201 str r2, [sp, #4] 8c8e: 9a07 ldr r2, [sp, #28] 8c90: 4442 add r2, r8 8c92: b212 sxth r2, r2 8c94: 1b33 subs r3, r6, r4 8c96: b21b sxth r3, r3 8c98: 9200 str r2, [sp, #0] 8c9a: 4631 mov r1, r6 8c9c: 4642 mov r2, r8 8c9e: a831 add r0, sp, #196 ; 0xc4 8ca0: 47b8 blx r7 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); 8ca2: 4629 mov r1, r5 8ca4: a826 add r0, sp, #152 ; 0x98 8ca6: 47d0 blx sl mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); 8ca8: 4629 mov r1, r5 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); 8caa: 9009 str r0, [sp, #36] ; 0x24 mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); 8cac: a831 add r0, sp, #196 ; 0xc4 8cae: 47d0 blx sl 8cb0: 4682 mov sl, r0 } lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8cb2: 4b6a ldr r3, [pc, #424] ; (8e5c ) * So deal with it only with steep lines. */ int32_t draw_area_w = lv_area_get_width(&draw_area); /*Draw the background line by line*/ int32_t h; size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 8cb4: 4e6a ldr r6, [pc, #424] ; (8e60 ) lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8cb6: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8cb8: 4b6a ldr r3, [pc, #424] ; (8e64 ) 8cba: 4798 blx r3 draw_area.x1 -= disp_area->x1; 8cbc: f8bd 1030 ldrh.w r1, [sp, #48] ; 0x30 8cc0: 8a02 ldrh r2, [r0, #16] 8cc2: 1a8b subs r3, r1, r2 8cc4: f8ad 3030 strh.w r3, [sp, #48] ; 0x30 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8cc8: 4605 mov r5, r0 draw_area.y1 -= disp_area->y1; 8cca: f8bd 3032 ldrh.w r3, [sp, #50] ; 0x32 8cce: 8a40 ldrh r0, [r0, #18] 8cd0: 1a1b subs r3, r3, r0 8cd2: f8ad 3032 strh.w r3, [sp, #50] ; 0x32 draw_area.x2 -= disp_area->x1; 8cd6: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 8cda: 1a9a subs r2, r3, r2 8cdc: f8ad 2034 strh.w r2, [sp, #52] ; 0x34 8ce0: 1c5c adds r4, r3, #1 draw_area.y2 -= disp_area->y1; 8ce2: f8bd 2036 ldrh.w r2, [sp, #54] ; 0x36 8ce6: 1a64 subs r4, r4, r1 8ce8: 1a12 subs r2, r2, r0 8cea: b223 sxth r3, r4 size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 8cec: a80c add r0, sp, #48 ; 0x30 draw_area.y2 -= disp_area->y1; 8cee: f8ad 2036 strh.w r2, [sp, #54] ; 0x36 8cf2: 9307 str r3, [sp, #28] size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 8cf4: 47b0 blx r6 8cf6: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 8cfa: f080 8087 bcs.w 8e0c 8cfe: a80c add r0, sp, #48 ; 0x30 8d00: 47b0 blx r6 8d02: 4607 mov r7, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8d04: 4b58 ldr r3, [pc, #352] ; (8e68 ) 8d06: 4638 mov r0, r7 8d08: 4798 blx r3 lv_area_t fill_area; fill_area.x1 = draw_area.x1 + disp_area->x1; 8d0a: 8a2b ldrh r3, [r5, #16] 8d0c: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 8d10: 441a add r2, r3 8d12: b212 sxth r2, r2 8d14: 9208 str r2, [sp, #32] 8d16: f8ad 2038 strh.w r2, [sp, #56] ; 0x38 fill_area.x2 = draw_area.x2 + disp_area->x1; 8d1a: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 8d1e: 4413 add r3, r2 8d20: f8ad 303c strh.w r3, [sp, #60] ; 0x3c fill_area.y1 = draw_area.y1 + disp_area->y1; 8d24: 8a6a ldrh r2, [r5, #18] 8d26: f8bd 3032 ldrh.w r3, [sp, #50] ; 0x32 8d2a: 4413 add r3, r2 8d2c: b21b sxth r3, r3 8d2e: f8ad 303a strh.w r3, [sp, #58] ; 0x3a fill_area.y2 = fill_area.y1; 8d32: f8ad 303e strh.w r3, [sp, #62] ; 0x3e int32_t x = vdb->area.x1 + draw_area.x1; uint32_t mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); 8d36: 4639 mov r1, r7 8d38: 4b4c ldr r3, [pc, #304] ; (8e6c ) lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8d3a: 4606 mov r6, r0 _lv_memset_ff(mask_buf, mask_buf_size); 8d3c: 4798 blx r3 /*Fill the first row with 'color'*/ for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { 8d3e: f9bd 8032 ldrsh.w r8, [sp, #50] ; 0x32 8d42: f9b5 3012 ldrsh.w r3, [r5, #18] uint32_t mask_p = 0; 8d46: f04f 0900 mov.w r9, #0 for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { 8d4a: 4498 add r8, r3 8d4c: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 8d50: f9b5 2012 ldrsh.w r2, [r5, #18] 8d54: 4413 add r3, r2 8d56: 4598 cmp r8, r3 8d58: dd5b ble.n 8e12 _lv_memset_ff(mask_buf, mask_buf_size); } } /*Flush the last part*/ if(fill_area.y1 != fill_area.y2) { 8d5a: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8d5e: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a 8d62: 429a cmp r2, r3 8d64: d013 beq.n 8d8e fill_area.y2--; 8d66: 3b01 subs r3, #1 8d68: f8ad 303e strh.w r3, [sp, #62] ; 0x3e _lv_blend_fill(&fill_area, clip, dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); 8d6c: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(&fill_area, clip, 8d70: f8bb 2000 ldrh.w r2, [fp] 8d74: 4c3e ldr r4, [pc, #248] ; (8e70 ) 8d76: f003 0303 and.w r3, r3, #3 8d7a: 9302 str r3, [sp, #8] 8d7c: f89b 3008 ldrb.w r3, [fp, #8] 8d80: 9301 str r3, [sp, #4] 8d82: 2302 movs r3, #2 8d84: 9300 str r3, [sp, #0] 8d86: a90a add r1, sp, #40 ; 0x28 8d88: 4633 mov r3, r6 8d8a: a80e add r0, sp, #56 ; 0x38 8d8c: 47a0 blx r4 } _lv_mem_buf_release(mask_buf); 8d8e: 4b39 ldr r3, [pc, #228] ; (8e74 ) lv_draw_mask_remove_id(mask_left_id); 8d90: 4c39 ldr r4, [pc, #228] ; (8e78 ) _lv_mem_buf_release(mask_buf); 8d92: 4630 mov r0, r6 8d94: 4798 blx r3 lv_draw_mask_remove_id(mask_left_id); 8d96: ee19 0a10 vmov r0, s18 8d9a: 47a0 blx r4 lv_draw_mask_remove_id(mask_right_id); 8d9c: ee19 0a90 vmov r0, s19 8da0: 47a0 blx r4 lv_draw_mask_remove_id(mask_top_id); 8da2: 9809 ldr r0, [sp, #36] ; 0x24 8da4: 47a0 blx r4 lv_draw_mask_remove_id(mask_bottom_id); 8da6: 4650 mov r0, sl 8da8: 47a0 blx r4 8daa: e4d3 b.n 8754 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8dac: ee18 2a10 vmov r2, s16 8db0: 9400 str r4, [sp, #0] 8db2: 4633 mov r3, r6 8db4: 4639 mov r1, r7 8db6: 4c28 ldr r4, [pc, #160] ; (8e58 ) 8db8: a810 add r0, sp, #64 ; 0x40 8dba: 47a0 blx r4 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8dbc: 2301 movs r3, #1 8dbe: e9cd 5300 strd r5, r3, [sp] 8dc2: 4652 mov r2, sl 8dc4: 4633 mov r3, r6 8dc6: 4639 mov r1, r7 lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y, 8dc8: a81b add r0, sp, #108 ; 0x6c 8dca: 47a0 blx r4 8dcc: e738 b.n 8c40 lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y, 8dce: fa14 f386 uxtah r3, r4, r6 8dd2: 2200 movs r2, #0 8dd4: fa14 f487 uxtah r4, r4, r7 8dd8: b221 sxth r1, r4 8dda: e9cd 8200 strd r8, r2, [sp] 8dde: b21b sxth r3, r3 8de0: 464a mov r2, r9 8de2: 4c1d ldr r4, [pc, #116] ; (8e58 ) 8de4: a810 add r0, sp, #64 ; 0x40 8de6: 47a0 blx r4 8de8: fa1f fa86 uxth.w sl, r6 lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y, 8dec: b2ba uxth r2, r7 8dee: 1b51 subs r1, r2, r5 8df0: ebaa 0305 sub.w r3, sl, r5 8df4: 2201 movs r2, #1 8df6: e9cd 8200 strd r8, r2, [sp] 8dfa: b21b sxth r3, r3 8dfc: 464a mov r2, r9 8dfe: b209 sxth r1, r1 8e00: e7e2 b.n 8dc8 int16_t mask_bottom_id = LV_MASK_ID_INV; 8e02: f04f 3aff mov.w sl, #4294967295 ; 0xffffffff int16_t mask_top_id = LV_MASK_ID_INV; 8e06: f8cd a024 str.w sl, [sp, #36] ; 0x24 8e0a: e752 b.n 8cb2 size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 8e0c: f44f 77f0 mov.w r7, #480 ; 0x1e0 8e10: e778 b.n 8d04 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); 8e12: eb06 0309 add.w r3, r6, r9 8e16: ee08 3a10 vmov s16, r3 8e1a: 9908 ldr r1, [sp, #32] 8e1c: 9b07 ldr r3, [sp, #28] 8e1e: 4c17 ldr r4, [pc, #92] ; (8e7c ) 8e20: ee18 0a10 vmov r0, s16 8e24: fa0f f288 sxth.w r2, r8 8e28: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 8e2a: b920 cbnz r0, 8e36 _lv_memset_00(&mask_buf[mask_p], draw_area_w); 8e2c: 9907 ldr r1, [sp, #28] 8e2e: 4b14 ldr r3, [pc, #80] ; (8e80 ) 8e30: ee18 0a10 vmov r0, s16 8e34: 4798 blx r3 mask_p += draw_area_w; 8e36: 9b07 ldr r3, [sp, #28] 8e38: 4499 add r9, r3 if((uint32_t) mask_p + draw_area_w < mask_buf_size) { 8e3a: 444b add r3, r9 8e3c: 429f cmp r7, r3 8e3e: d923 bls.n 8e88 fill_area.y2 ++; 8e40: f8bd 303e ldrh.w r3, [sp, #62] ; 0x3e 8e44: 3301 adds r3, #1 8e46: f8ad 303e strh.w r3, [sp, #62] ; 0x3e for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { 8e4a: f108 0801 add.w r8, r8, #1 8e4e: e77d b.n 8d4c 8e50: 0001fd26 .word 0x0001fd26 8e54: 0000ded1 .word 0x0000ded1 8e58: 00009819 .word 0x00009819 8e5c: 00004fdd .word 0x00004fdd 8e60: 0000deb5 .word 0x0000deb5 8e64: 0000da25 .word 0x0000da25 8e68: 0000eefd .word 0x0000eefd 8e6c: 0000f0bd .word 0x0000f0bd 8e70: 000061d9 .word 0x000061d9 8e74: 0000ebb1 .word 0x0000ebb1 8e78: 000097ad .word 0x000097ad 8e7c: 00009769 .word 0x00009769 8e80: 0000f061 .word 0x0000f061 8e84: 00009719 .word 0x00009719 dsc->blend_mode); 8e88: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(&fill_area, clip, 8e8c: f8bb 2000 ldrh.w r2, [fp] 8e90: 4c0d ldr r4, [pc, #52] ; (8ec8 ) 8e92: f003 0303 and.w r3, r3, #3 8e96: 9302 str r3, [sp, #8] 8e98: f89b 3008 ldrb.w r3, [fp, #8] 8e9c: 9301 str r3, [sp, #4] 8e9e: 2302 movs r3, #2 8ea0: 9300 str r3, [sp, #0] 8ea2: a90a add r1, sp, #40 ; 0x28 8ea4: 4633 mov r3, r6 8ea6: a80e add r0, sp, #56 ; 0x38 8ea8: 47a0 blx r4 fill_area.y1 = fill_area.y2 + 1; 8eaa: f8bd 303e ldrh.w r3, [sp, #62] ; 0x3e 8eae: 3301 adds r3, #1 8eb0: b21b sxth r3, r3 8eb2: f8ad 303a strh.w r3, [sp, #58] ; 0x3a fill_area.y2 = fill_area.y1; 8eb6: f8ad 303e strh.w r3, [sp, #62] ; 0x3e _lv_memset_ff(mask_buf, mask_buf_size); 8eba: 4639 mov r1, r7 8ebc: 4b03 ldr r3, [pc, #12] ; (8ecc ) 8ebe: 4630 mov r0, r6 8ec0: 4798 blx r3 mask_p = 0; 8ec2: f04f 0900 mov.w r9, #0 8ec6: e7c0 b.n 8e4a 8ec8: 000061d9 .word 0x000061d9 8ecc: 0000f0bd .word 0x0000f0bd 00008ed0 : } LV_ATTRIBUTE_FAST_MEM static inline lv_opa_t mask_mix(lv_opa_t mask_act, lv_opa_t mask_new) { if(mask_new >= LV_OPA_MAX) return mask_act; 8ed0: 29f9 cmp r1, #249 ; 0xf9 8ed2: d80a bhi.n 8eea if(mask_new <= LV_OPA_MIN) return 0; 8ed4: 2905 cmp r1, #5 8ed6: d907 bls.n 8ee8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 8ed8: fb10 f001 smulbb r0, r0, r1 8edc: f248 0181 movw r1, #32897 ; 0x8081 8ee0: 4348 muls r0, r1 8ee2: f3c0 50c7 ubfx r0, r0, #23, #8 8ee6: 4770 bx lr if(mask_new <= LV_OPA_MIN) return 0; 8ee8: 2000 movs r0, #0 } 8eea: 4770 bx lr 00008eec : { 8eec: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 8ef0: 9d08 ldr r5, [sp, #32] abs_x -= p->origo.x; 8ef2: 8a6e ldrh r6, [r5, #18] if(p->flat) { 8ef4: f895 7028 ldrb.w r7, [r5, #40] ; 0x28 abs_x -= p->origo.x; 8ef8: 1b89 subs r1, r1, r6 { 8efa: 4604 mov r4, r0 abs_y -= p->origo.y; 8efc: 8aa8 ldrh r0, [r5, #20] abs_x -= p->origo.x; 8efe: b20e sxth r6, r1 if(p->steep == 0) { 8f00: 6a29 ldr r1, [r5, #32] abs_y -= p->origo.y; 8f02: 1a12 subs r2, r2, r0 8f04: b212 sxth r2, r2 if(p->flat) { 8f06: f007 0001 and.w r0, r7, #1 if(p->steep == 0) { 8f0a: bb99 cbnz r1, 8f74 if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || 8f0c: 7c2d ldrb r5, [r5, #16] 8f0e: f005 0702 and.w r7, r5, #2 if(p->flat) { 8f12: b180 cbz r0, 8f36 if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || 8f14: b13f cbz r7, 8f26 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f16: f005 0503 and.w r5, r5, #3 8f1a: 2d02 cmp r5, #2 8f1c: d105 bne.n 8f2a p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 8f1e: 3201 adds r2, #1 8f20: bfac ite ge 8f22: 2000 movge r0, #0 8f24: 2001 movlt r0, #1 } 8f26: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f2a: 2d03 cmp r5, #3 8f2c: d101 bne.n 8f32 8f2e: 2a00 cmp r2, #0 8f30: dcf9 bgt.n 8f26 return LV_DRAW_MASK_RES_TRANSP; 8f32: 2000 movs r0, #0 8f34: e7f7 b.n 8f26 if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP || 8f36: 2f00 cmp r7, #0 8f38: f040 816c bne.w 9214 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f3c: f005 0003 and.w r0, r5, #3 8f40: 2801 cmp r0, #1 8f42: d10a bne.n 8f5a 8f44: 2e00 cmp r6, #0 8f46: dcee bgt.n 8f26 if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; 8f48: 42de cmn r6, r3 8f4a: d4f2 bmi.n 8f32 if(k < 0) k = 0; 8f4c: 2e00 cmp r6, #0 8f4e: f300 8163 bgt.w 9218 int32_t k = - abs_x; 8f52: 4271 negs r1, r6 if(k >= len) return LV_DRAW_MASK_RES_TRANSP; 8f54: 428b cmp r3, r1 8f56: ddec ble.n 8f32 8f58: e098 b.n 908c else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) { 8f5a: 2800 cmp r0, #0 8f5c: d1f4 bne.n 8f48 if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f5e: 18f1 adds r1, r6, r3 8f60: f100 8158 bmi.w 9214 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; 8f64: 2e00 cmp r6, #0 8f66: dce4 bgt.n 8f32 int32_t k = - abs_x; 8f68: 4270 negs r0, r6 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); 8f6a: 4298 cmp r0, r3 8f6c: f2c0 8099 blt.w 90a2 return LV_DRAW_MASK_RES_CHANGED; 8f70: 2002 movs r0, #2 8f72: e7d8 b.n 8f26 if(p->flat) { 8f74: f007 0c02 and.w ip, r7, #2 8f78: 2800 cmp r0, #0 8f7a: f000 8096 beq.w 90aa y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; 8f7e: 69ef ldr r7, [r5, #28] 8f80: fb06 f107 mul.w r1, r6, r7 if(p->yx_steep > 0) { 8f84: 2f00 cmp r7, #0 y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; 8f86: ea4f 21a1 mov.w r1, r1, asr #10 if(p->inv) { 8f8a: fa5f f08c uxtb.w r0, ip if(p->yx_steep > 0) { 8f8e: dd05 ble.n 8f9c if(y_at_x > abs_y) { 8f90: 428a cmp r2, r1 8f92: da05 bge.n 8fa0 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 8f94: 3800 subs r0, #0 8f96: bf18 it ne 8f98: 2001 movne r0, #1 8f9a: e7c4 b.n 8f26 if(y_at_x < abs_y) { 8f9c: 428a cmp r2, r1 8f9e: dcf9 bgt.n 8f94 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; 8fa0: 18f1 adds r1, r6, r3 8fa2: 4379 muls r1, r7 if(p->yx_steep > 0) { 8fa4: 2f00 cmp r7, #0 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; 8fa6: ea4f 21a1 mov.w r1, r1, asr #10 if(p->yx_steep > 0) { 8faa: dd05 ble.n 8fb8 if(y_at_x < abs_y) { 8fac: 428a cmp r2, r1 8fae: dd06 ble.n 8fbe p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 8fb0: fab0 f080 clz r0, r0 8fb4: 0940 lsrs r0, r0, #5 8fb6: e7b6 b.n 8f26 if(y_at_x > abs_y) { 8fb8: 428a cmp r2, r1 8fba: dbf9 blt.n 8fb0 else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; 8fbc: 3201 adds r2, #1 8fbe: 69a9 ldr r1, [r5, #24] 8fc0: 0212 lsls r2, r2, #8 8fc2: 434a muls r2, r1 8fc4: 1292 asrs r2, r2, #10 int32_t xei = xe >> 8; 8fc6: ea4f 2c22 mov.w ip, r2, asr #8 if(xef == 0) px_h = 255; 8fca: f012 02ff ands.w r2, r2, #255 ; 0xff else px_h = 255 - (((255 - xef) * p->spx) >> 8); 8fce: bf1f itttt ne 8fd0: 6a69 ldrne r1, [r5, #36] ; 0x24 8fd2: f1c2 07ff rsbne r7, r2, #255 ; 0xff 8fd6: 434f mulne r7, r1 8fd8: 123f asrne r7, r7, #8 8fda: bf14 ite ne 8fdc: f1c7 07ff rsbne r7, r7, #255 ; 0xff if(xef == 0) px_h = 255; 8fe0: 27ff moveq r7, #255 ; 0xff int32_t k = xei - abs_x; 8fe2: ebac 0606 sub.w r6, ip, r6 if(xef) { 8fe6: 2a00 cmp r2, #0 8fe8: d052 beq.n 9090 if(k >= 0 && k < len) { 8fea: 2e00 cmp r6, #0 8fec: db0f blt.n 900e 8fee: 42b3 cmp r3, r6 8ff0: dd0d ble.n 900e m = 255 - (((255 - xef) * (255 - px_h)) >> 9); 8ff2: f1c2 02ff rsb r2, r2, #255 ; 0xff 8ff6: f1c7 01ff rsb r1, r7, #255 ; 0xff 8ffa: 4351 muls r1, r2 8ffc: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 9000: b908 cbnz r0, 9006 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); 9002: 43c9 mvns r1, r1 9004: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9006: 5da0 ldrb r0, [r4, r6] 9008: 4a94 ldr r2, [pc, #592] ; (925c ) 900a: 4790 blx r2 900c: 55a0 strb r0, [r4, r6] k++; 900e: 1c72 adds r2, r6, #1 mask_buf[k] = mask_mix(mask_buf[k], m); 9010: f8df 8248 ldr.w r8, [pc, #584] ; 925c while(px_h > p->spx) { 9014: 6a69 ldr r1, [r5, #36] ; 0x24 if(p->inv) m = 255 - m; 9016: f895 0028 ldrb.w r0, [r5, #40] ; 0x28 while(px_h > p->spx) { 901a: 428f cmp r7, r1 if(p->inv) m = 255 - m; 901c: f000 0002 and.w r0, r0, #2 while(px_h > p->spx) { 9020: dc16 bgt.n 9050 if(k < len && k >= 0) { 9022: 4293 cmp r3, r2 9024: dd27 ble.n 9076 9026: 2a00 cmp r2, #0 9028: db25 blt.n 9076 int32_t x_inters = (px_h * p->xy_steep) >> 10; 902a: 69a9 ldr r1, [r5, #24] 902c: 4379 muls r1, r7 902e: 1289 asrs r1, r1, #10 m = (x_inters * px_h) >> 9; 9030: 4379 muls r1, r7 if(p->yx_steep < 0) m = 255 - m; 9032: 69ef ldr r7, [r5, #28] m = (x_inters * px_h) >> 9; 9034: f3c1 2147 ubfx r1, r1, #9, #8 if(p->yx_steep < 0) m = 255 - m; 9038: 2f00 cmp r7, #0 903a: bfbc itt lt 903c: 43c9 mvnlt r1, r1 903e: b2c9 uxtblt r1, r1 if(p->inv) m = 255 - m; 9040: b108 cbz r0, 9046 9042: 43c9 mvns r1, r1 9044: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9046: 5ca0 ldrb r0, [r4, r2] 9048: 4f84 ldr r7, [pc, #528] ; (925c ) 904a: 47b8 blx r7 904c: 54a0 strb r0, [r4, r2] 904e: e012 b.n 9076 if(k >= 0 && k < len) { 9050: 2a00 cmp r2, #0 9052: db0a blt.n 906a 9054: 4293 cmp r3, r2 9056: dd08 ble.n 906a m = px_h - (p->spx >> 1); 9058: eba7 0161 sub.w r1, r7, r1, asr #1 905c: b2c9 uxtb r1, r1 if(p->inv) m = 255 - m; 905e: b108 cbz r0, 9064 9060: 43c9 mvns r1, r1 9062: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9064: 5ca0 ldrb r0, [r4, r2] 9066: 47c0 blx r8 9068: 54a0 strb r0, [r4, r2] px_h -= p->spx; 906a: 6a69 ldr r1, [r5, #36] ; 0x24 k++; 906c: 3201 adds r2, #1 if(k >= len) break; 906e: 4293 cmp r3, r2 px_h -= p->spx; 9070: eba7 0701 sub.w r7, r7, r1 if(k >= len) break; 9074: dcce bgt.n 9014 if(p->inv) { 9076: f895 1028 ldrb.w r1, [r5, #40] ; 0x28 907a: 0789 lsls r1, r1, #30 907c: d50a bpl.n 9094 if(k > len) { 907e: 42b3 cmp r3, r6 9080: f6ff af57 blt.w 8f32 if(k >= 0) { 9084: 2e00 cmp r6, #0 9086: f6ff af73 blt.w 8f70 _lv_memset_00(&mask_buf[0], k); 908a: 4631 mov r1, r6 if(k >= 0) _lv_memset_00(&mask_buf[0], k); 908c: 4620 mov r0, r4 908e: e009 b.n 90a4 int32_t k = xei - abs_x; 9090: 4632 mov r2, r6 9092: e7bd b.n 9010 if(k < 0) { 9094: 1c50 adds r0, r2, #1 9096: f53f af4c bmi.w 8f32 if(k <= len) { 909a: 4283 cmp r3, r0 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); 909c: f6ff af68 blt.w 8f70 90a0: 1a19 subs r1, r3, r0 90a2: 4420 add r0, r4 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 90a4: 4b6e ldr r3, [pc, #440] ; (9260 ) 90a6: 4798 blx r3 90a8: e762 b.n 8f70 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; 90aa: 69a9 ldr r1, [r5, #24] 90ac: fb01 f702 mul.w r7, r1, r2 if(p->xy_steep > 0) x_at_y++; 90b0: 2900 cmp r1, #0 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; 90b2: ea4f 27a7 mov.w r7, r7, asr #10 if(p->xy_steep > 0) x_at_y++; 90b6: bfcc ite gt 90b8: f107 0e01 addgt.w lr, r7, #1 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; 90bc: 46be movle lr, r7 if(x_at_y < abs_x) { 90be: 4576 cmp r6, lr if(p->inv) { 90c0: fa5f f08c uxtb.w r0, ip if(x_at_y < abs_x) { 90c4: f73f af66 bgt.w 8f94 if(x_at_y > abs_x + len) { 90c8: eb06 0c03 add.w ip, r6, r3 90cc: 4567 cmp r7, ip 90ce: f73f af6f bgt.w 8fb0 int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; 90d2: ea4f 2e02 mov.w lr, r2, lsl #8 int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; 90d6: 3201 adds r2, #1 90d8: 0212 lsls r2, r2, #8 90da: 434a muls r2, r1 int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; 90dc: fb01 fe0e mul.w lr, r1, lr int32_t xei = xe >> 8; 90e0: ea4f 48a2 mov.w r8, r2, asr #18 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 90e4: ebb8 4fae cmp.w r8, lr, asr #18 int32_t xsf = xs & 0xFF; 90e8: f3ce 2c87 ubfx ip, lr, #10, #8 k = xsi - abs_x; 90ec: ebc6 47ae rsb r7, r6, lr, asr #18 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 90f0: f000 8097 beq.w 9222 90f4: 2900 cmp r1, #0 90f6: da53 bge.n 91a0 k--; 90f8: f107 39ff add.w r9, r7, #4294967295 ; 0xffffffff if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 90fc: f1bc 0f00 cmp.w ip, #0 9100: f000 808c beq.w 921c y_inters = (xsf * (-p->yx_steep)) >> 10; 9104: 69ee ldr r6, [r5, #28] 9106: 4276 negs r6, r6 9108: fb0c f606 mul.w r6, ip, r6 if(k >= 0 && k < len) { 910c: 2f00 cmp r7, #0 y_inters = (xsf * (-p->yx_steep)) >> 10; 910e: ea4f 26a6 mov.w r6, r6, asr #10 if(k >= 0 && k < len) { 9112: db0c blt.n 912e 9114: 42bb cmp r3, r7 9116: dd0a ble.n 912e m = (y_inters * xsf) >> 9; 9118: fb06 f10c mul.w r1, r6, ip 911c: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 9120: b108 cbz r0, 9126 9122: 43c9 mvns r1, r1 9124: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9126: 5de0 ldrb r0, [r4, r7] 9128: 4a4c ldr r2, [pc, #304] ; (925c ) 912a: 4790 blx r2 912c: 55e0 strb r0, [r4, r7] if(k >= 0 && k < len) { 912e: f1b9 0f00 cmp.w r9, #0 9132: db17 blt.n 9164 9134: 454b cmp r3, r9 9136: dd15 ble.n 9164 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 9138: 69aa ldr r2, [r5, #24] mask_buf[k] = mask_mix(mask_buf[k], m); 913a: f814 0009 ldrb.w r0, [r4, r9] int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 913e: f1c6 06ff rsb r6, r6, #255 ; 0xff 9142: 4251 negs r1, r2 9144: 4371 muls r1, r6 if(p->inv) m = 255 - m; 9146: f895 2028 ldrb.w r2, [r5, #40] ; 0x28 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 914a: 1289 asrs r1, r1, #10 m = 255 - (((255 - y_inters) * x_inters) >> 9); 914c: 4371 muls r1, r6 914e: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 9152: 0796 lsls r6, r2, #30 m = 255 - (((255 - y_inters) * x_inters) >> 9); 9154: bf58 it pl 9156: 43c9 mvnpl r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9158: 4a40 ldr r2, [pc, #256] ; (925c ) m = 255 - (((255 - y_inters) * x_inters) >> 9); 915a: bf58 it pl 915c: b2c9 uxtbpl r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 915e: 4790 blx r2 9160: f804 0009 strb.w r0, [r4, r9] if(p->inv) { 9164: f895 2028 ldrb.w r2, [r5, #40] ; 0x28 9168: 0795 lsls r5, r2, #30 916a: d514 bpl.n 9196 if(k > len) k = len; 916c: 454b cmp r3, r9 916e: f6ff aeff blt.w 8f70 else if(k > 0) _lv_memset_00(&mask_buf[0], k); 9172: f1b9 0f00 cmp.w r9, #0 9176: f77f aefb ble.w 8f70 917a: 4649 mov r1, r9 917c: e786 b.n 908c k++; 917e: 3701 adds r7, #1 9180: 429f cmp r7, r3 9182: bfa8 it ge 9184: 461f movge r7, r3 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; 9186: 2f00 cmp r7, #0 9188: f43f aed3 beq.w 8f32 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 918c: f77f aef0 ble.w 8f70 9190: 1bd9 subs r1, r3, r7 9192: 19e0 adds r0, r4, r7 9194: e786 b.n 90a4 k += 2; 9196: 1c78 adds r0, r7, #1 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; 9198: 4283 cmp r3, r0 919a: db3b blt.n 9214 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); 919c: 2800 cmp r0, #0 919e: e77d b.n 909c y_inters = ((255 - xsf) * p->yx_steep) >> 10; 91a0: 69ea ldr r2, [r5, #28] 91a2: f1cc 01ff rsb r1, ip, #255 ; 0xff 91a6: 434a muls r2, r1 if(k >= 0 && k < len) { 91a8: 2f00 cmp r7, #0 y_inters = ((255 - xsf) * p->yx_steep) >> 10; 91aa: ea4f 22a2 mov.w r2, r2, asr #10 if(k >= 0 && k < len) { 91ae: db0b blt.n 91c8 91b0: 42bb cmp r3, r7 91b2: dd09 ble.n 91c8 m = 255 - ((y_inters * (255 - xsf)) >> 9); 91b4: 4351 muls r1, r2 91b6: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 91ba: b908 cbnz r0, 91c0 m = 255 - ((y_inters * (255 - xsf)) >> 9); 91bc: 43c9 mvns r1, r1 91be: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 91c0: 5de0 ldrb r0, [r4, r7] 91c2: 4e26 ldr r6, [pc, #152] ; (925c ) 91c4: 47b0 blx r6 91c6: 55e0 strb r0, [r4, r7] if(k >= 0 && k < len) { 91c8: 1c7e adds r6, r7, #1 91ca: d415 bmi.n 91f8 91cc: 42b3 cmp r3, r6 91ce: dd13 ble.n 91f8 int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; 91d0: f1c2 00ff rsb r0, r2, #255 ; 0xff 91d4: 69aa ldr r2, [r5, #24] 91d6: fb02 f100 mul.w r1, r2, r0 91da: 1289 asrs r1, r1, #10 if(p->inv) m = 255 - m; 91dc: f895 2028 ldrb.w r2, [r5, #40] ; 0x28 m = ((255 - y_inters) * x_inters) >> 9; 91e0: 4341 muls r1, r0 91e2: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 91e6: 0790 lsls r0, r2, #30 91e8: bf48 it mi 91ea: 43c9 mvnmi r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 91ec: 5da0 ldrb r0, [r4, r6] 91ee: 4a1b ldr r2, [pc, #108] ; (925c ) if(p->inv) m = 255 - m; 91f0: bf48 it mi 91f2: b2c9 uxtbmi r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 91f4: 4790 blx r2 91f6: 55a0 strb r0, [r4, r6] if(p->inv) { 91f8: f895 2028 ldrb.w r2, [r5, #40] ; 0x28 91fc: 0792 lsls r2, r2, #30 91fe: d507 bpl.n 9210 if(k > len) return LV_DRAW_MASK_RES_TRANSP; 9200: 42bb cmp r3, r7 9202: f6ff ae96 blt.w 8f32 if(k >= 0) _lv_memset_00(&mask_buf[0], k); 9206: 2f00 cmp r7, #0 9208: f6ff aeb2 blt.w 8f70 920c: 4639 mov r1, r7 920e: e73d b.n 908c k++; 9210: 3702 adds r7, #2 9212: e7b5 b.n 9180 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; 9214: 2001 movs r0, #1 9216: e686 b.n 8f26 if(k >= len) return LV_DRAW_MASK_RES_TRANSP; 9218: 2b00 cmp r3, #0 921a: e69c b.n 8f56 k--; 921c: 464f mov r7, r9 xsf = 0xFF; 921e: f04f 0cff mov.w ip, #255 ; 0xff if(k >= 0 && k < len) { 9222: 2f00 cmp r7, #0 9224: db0d blt.n 9242 9226: 42bb cmp r3, r7 9228: dd0b ble.n 9242 int32_t xef = xe & 0xFF; 922a: f3c2 2187 ubfx r1, r2, #10, #8 m = (xsf + xef) >> 1; 922e: 4461 add r1, ip 9230: f3c1 0147 ubfx r1, r1, #1, #8 if(p->inv) m = 255 - m; 9234: b108 cbz r0, 923a 9236: 43c9 mvns r1, r1 9238: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 923a: 5de0 ldrb r0, [r4, r7] 923c: 4a07 ldr r2, [pc, #28] ; (925c ) 923e: 4790 blx r2 9240: 55e0 strb r0, [r4, r7] if(p->inv) { 9242: f895 2028 ldrb.w r2, [r5, #40] ; 0x28 9246: 0792 lsls r2, r2, #30 9248: d599 bpl.n 917e k = xsi - abs_x; 924a: eba8 0106 sub.w r1, r8, r6 if(k >= len) { 924e: 428b cmp r3, r1 9250: f77f ae6f ble.w 8f32 if(k >= 0) _lv_memset_00(&mask_buf[0], k); 9254: 2900 cmp r1, #0 9256: f6ff ae8b blt.w 8f70 925a: e717 b.n 908c 925c: 00008ed1 .word 0x00008ed1 9260: 0000f061 .word 0x0000f061 00009264 : while(len) { 9264: 3901 subs r1, #1 9266: f100 0308 add.w r3, r0, #8 *d8 = *s8; 926a: f811 2f01 ldrb.w r2, [r1, #1]! 926e: f800 2b01 strb.w r2, [r0], #1 while(len) { 9272: 4298 cmp r0, r3 9274: d1f9 bne.n 926a } 9276: 4770 bx lr 00009278 : { 9278: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 927c: b08b sub sp, #44 ; 0x2c 927e: 4606 mov r6, r0 9280: f8dd 8050 ldr.w r8, [sp, #80] ; 0x50 bool outer = p->cfg.outer; 9284: f898 9012 ldrb.w r9, [r8, #18] int32_t radius = p->cfg.radius; 9288: f9b8 a010 ldrsh.w sl, [r8, #16] { 928c: 468b mov fp, r1 928e: 461d mov r5, r3 lv_area_copy(&rect, &p->cfg.rect); 9290: f108 0108 add.w r1, r8, #8 9294: 4b92 ldr r3, [pc, #584] ; (94e0 ) 9296: a808 add r0, sp, #32 bool outer = p->cfg.outer; 9298: f009 0901 and.w r9, r9, #1 { 929c: 4617 mov r7, r2 lv_area_copy(&rect, &p->cfg.rect); 929e: 4798 blx r3 if(outer == false) { 92a0: f9bd 2022 ldrsh.w r2, [sp, #34] ; 0x22 92a4: f1b9 0f00 cmp.w r9, #0 92a8: d13a bne.n 9320 if(abs_y < rect.y1 || abs_y > rect.y2) { 92aa: 42ba cmp r2, r7 92ac: dd01 ble.n 92b2 return LV_DRAW_MASK_RES_TRANSP; 92ae: 2000 movs r0, #0 92b0: e039 b.n 9326 if(abs_y < rect.y1 || abs_y > rect.y2) { 92b2: f9bd 3026 ldrsh.w r3, [sp, #38] ; 0x26 92b6: 42bb cmp r3, r7 92b8: dbf9 blt.n 92ae if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 92ba: f9bd 1020 ldrsh.w r1, [sp, #32] 92be: eb01 030a add.w r3, r1, sl 92c2: 459b cmp fp, r3 92c4: eba1 040b sub.w r4, r1, fp 92c8: db07 blt.n 92da 92ca: f9bd 3024 ldrsh.w r3, [sp, #36] ; 0x24 92ce: eb05 000b add.w r0, r5, fp 92d2: eba3 030a sub.w r3, r3, sl 92d6: 4298 cmp r0, r3 92d8: dd09 ble.n 92ee (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { 92da: eb02 030a add.w r3, r2, sl if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 92de: 429f cmp r7, r3 if(abs_y < rect.y1 || abs_y > rect.y2) { 92e0: f9bd 0026 ldrsh.w r0, [sp, #38] ; 0x26 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 92e4: db3e blt.n 9364 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { 92e6: eba0 030a sub.w r3, r0, sl 92ea: 429f cmp r7, r3 92ec: dc3a bgt.n 9364 if(outer == false) { 92ee: f1b9 0f00 cmp.w r9, #0 92f2: d125 bne.n 9340 if(last > len) return LV_DRAW_MASK_RES_TRANSP; 92f4: 42a5 cmp r5, r4 92f6: dbda blt.n 92ae if(last >= 0) { 92f8: 2c00 cmp r4, #0 92fa: db03 blt.n 9304 _lv_memset_00(&mask_buf[0], last); 92fc: 4b79 ldr r3, [pc, #484] ; (94e4 ) 92fe: 4621 mov r1, r4 9300: 4630 mov r0, r6 9302: 4798 blx r3 int32_t first = rect.x2 - abs_x + 1; 9304: f9bd 0024 ldrsh.w r0, [sp, #36] ; 0x24 9308: eba0 010b sub.w r1, r0, fp 930c: 1c48 adds r0, r1, #1 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; 930e: 2800 cmp r0, #0 9310: ddcd ble.n 92ae else if(first < len) { 9312: 42a8 cmp r0, r5 9314: da0f bge.n 9336 _lv_memset_00(&mask_buf[first], len - first); 9316: 1a29 subs r1, r5, r0 _lv_memset_00(&mask_buf[first], len_tmp); 9318: 4430 add r0, r6 if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); 931a: 4b72 ldr r3, [pc, #456] ; (94e4 ) 931c: 4798 blx r3 931e: e00d b.n 933c if(abs_y < rect.y1 || abs_y > rect.y2) { 9320: 42ba cmp r2, r7 9322: dd03 ble.n 932c return LV_DRAW_MASK_RES_FULL_COVER; 9324: 2001 movs r0, #1 } 9326: b00b add sp, #44 ; 0x2c 9328: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(abs_y < rect.y1 || abs_y > rect.y2) { 932c: f9bd 3026 ldrsh.w r3, [sp, #38] ; 0x26 9330: 42bb cmp r3, r7 9332: dac2 bge.n 92ba 9334: e7f6 b.n 9324 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; 9336: b90c cbnz r4, 933c 9338: 42a8 cmp r0, r5 933a: d0f3 beq.n 9324 return LV_DRAW_MASK_RES_CHANGED; 933c: 2002 movs r0, #2 933e: e7f2 b.n 9326 if(first < 0) first = 0; 9340: ea24 74e4 bic.w r4, r4, r4, asr #31 if(first <= len) { 9344: 42ac cmp r4, r5 9346: dcf9 bgt.n 933c int32_t last = rect.x2 - abs_x - first + 1; 9348: f9bd 1024 ldrsh.w r1, [sp, #36] ; 0x24 934c: eba1 010b sub.w r1, r1, fp 9350: 1b09 subs r1, r1, r4 9352: 3101 adds r1, #1 if(first + last > len) last = len - first; 9354: 1863 adds r3, r4, r1 9356: 42ab cmp r3, r5 9358: bfc8 it gt 935a: 1b29 subgt r1, r5, r4 if(last >= 0) { 935c: 2900 cmp r1, #0 935e: dbed blt.n 933c if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); 9360: 1930 adds r0, r6, r4 9362: e7da b.n 931a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9364: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 9368: 3301 adds r3, #1 936a: 1a5b subs r3, r3, r1 int32_t w = lv_area_get_width(&rect); 936c: b21b sxth r3, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 936e: b292 uxth r2, r2 9370: 9302 str r3, [sp, #8] abs_y -= rect.y1; 9372: 1abf subs r7, r7, r2 uint32_t r2 = p->cfg.radius * p->cfg.radius; 9374: f9b8 3010 ldrsh.w r3, [r8, #16] 9378: 3001 adds r0, #1 abs_y -= rect.y1; 937a: b23f sxth r7, r7 937c: 1a80 subs r0, r0, r2 uint32_t r2 = p->cfg.radius * p->cfg.radius; 937e: 435b muls r3, r3 if(abs_y < radius || abs_y > h - radius - 1) { 9380: 45ba cmp sl, r7 int32_t h = lv_area_get_height(&rect); 9382: b200 sxth r0, r0 uint32_t r2 = p->cfg.radius * p->cfg.radius; 9384: 9301 str r3, [sp, #4] if(abs_y < radius || abs_y > h - radius - 1) { 9386: f300 81aa bgt.w 96de 938a: eba0 030a sub.w r3, r0, sl 938e: 429f cmp r7, r3 9390: dbd4 blt.n 933c y = radius - (h - abs_y) + 1; 9392: 1bc0 subs r0, r0, r7 if((y - 1) == p->y_prev) { 9394: f8d8 3014 ldr.w r3, [r8, #20] if(radius <= 256) sqrt_mask = 0x800; 9398: f5ba 7f80 cmp.w sl, #256 ; 0x100 y = radius - (h - abs_y) + 1; 939c: ebaa 0000 sub.w r0, sl, r0 if(radius <= 256) sqrt_mask = 0x800; 93a0: bfd4 ite le 93a2: f44f 6200 movle.w r2, #2048 ; 0x800 93a6: f44f 4200 movgt.w r2, #32768 ; 0x8000 if((y - 1) == p->y_prev) { 93aa: 4298 cmp r0, r3 y = radius - (h - abs_y) + 1; 93ac: f100 0701 add.w r7, r0, #1 if((y - 1) == p->y_prev) { 93b0: d070 beq.n 9494 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); 93b2: 9b01 ldr r3, [sp, #4] 93b4: 9203 str r2, [sp, #12] 93b6: fb00 3010 mls r0, r0, r0, r3 93ba: a905 add r1, sp, #20 93bc: 4b4a ldr r3, [pc, #296] ; (94e8 ) 93be: 4798 blx r3 93c0: 9a03 ldr r2, [sp, #12] 93c2: e06f b.n 94a4 x0.f = p->y_prev_x.f; 93c4: f8b8 301a ldrh.w r3, [r8, #26] 93c8: f8ad 3012 strh.w r3, [sp, #18] x0.i = p->y_prev_x.i; 93cc: f8b8 3018 ldrh.w r3, [r8, #24] 93d0: f8ad 3010 strh.w r3, [sp, #16] _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); 93d4: 9b01 ldr r3, [sp, #4] 93d6: 9203 str r2, [sp, #12] 93d8: f107 3bff add.w fp, r7, #4294967295 ; 0xffffffff 93dc: fb0b 301b mls r0, fp, fp, r3 93e0: a905 add r1, sp, #20 93e2: 4b41 ldr r3, [pc, #260] ; (94e8 ) 93e4: 4798 blx r3 p->y_prev_x.f = x1.f; 93e6: f8bd 3016 ldrh.w r3, [sp, #22] 93ea: f8a8 301a strh.w r3, [r8, #26] p->y_prev_x.i = x1.i; 93ee: f8bd 3014 ldrh.w r3, [sp, #20] p->y_prev = y - 1; 93f2: f8c8 b014 str.w fp, [r8, #20] if(x0.i == x1.i - 1 && x1.f == 0) { 93f6: f8bd 1014 ldrh.w r1, [sp, #20] p->y_prev_x.i = x0.i; 93fa: f8a8 3018 strh.w r3, [r8, #24] if(x0.i == x1.i - 1 && x1.f == 0) { 93fe: f8bd 3010 ldrh.w r3, [sp, #16] p->y_prev_x.i = x0.i; 9402: 9a03 ldr r2, [sp, #12] if(x0.i == x1.i - 1 && x1.f == 0) { 9404: 3901 subs r1, #1 9406: 428b cmp r3, r1 9408: d107 bne.n 941a 940a: f8bd 1016 ldrh.w r1, [sp, #22] 940e: b921 cbnz r1, 941a x1.f = 0xFF; 9410: 21ff movs r1, #255 ; 0xff x1.i--; 9412: f8ad 3014 strh.w r3, [sp, #20] x1.f = 0xFF; 9416: f8ad 1016 strh.w r1, [sp, #22] if(x0.i == x1.i) { 941a: f8bd 1014 ldrh.w r1, [sp, #20] 941e: 4299 cmp r1, r3 9420: d166 bne.n 94f0 lv_opa_t m = (x0.f + x1.f) >> 1; 9422: f8bd 2012 ldrh.w r2, [sp, #18] 9426: f8bd 1016 ldrh.w r1, [sp, #22] 942a: 440a add r2, r1 942c: f3c2 0247 ubfx r2, r2, #1, #8 if(outer) m = 255 - m; 9430: f1b9 0f00 cmp.w r9, #0 9434: d001 beq.n 943a 9436: 43d2 mvns r2, r2 9438: b2d2 uxtb r2, r2 int32_t ofs = radius - x0.i - 1; 943a: ebaa 0303 sub.w r3, sl, r3 943e: 3b01 subs r3, #1 if(kl >= 0 && kl < len) { 9440: 18e7 adds r7, r4, r3 9442: d407 bmi.n 9454 9444: 42af cmp r7, r5 9446: da05 bge.n 9454 mask_buf[kl] = mask_mix(mask_buf[kl], m); 9448: 5df0 ldrb r0, [r6, r7] 944a: f8df 80a0 ldr.w r8, [pc, #160] ; 94ec 944e: 4611 mov r1, r2 9450: 47c0 blx r8 9452: 55f0 strb r0, [r6, r7] int32_t kr = k + (w - ofs - 1); 9454: 9902 ldr r1, [sp, #8] 9456: 1acb subs r3, r1, r3 9458: 1e58 subs r0, r3, #1 if(kr >= 0 && kr < len) { 945a: 1904 adds r4, r0, r4 945c: d406 bmi.n 946c 945e: 42ac cmp r4, r5 9460: da04 bge.n 946c mask_buf[kr] = mask_mix(mask_buf[kr], m); 9462: 5d30 ldrb r0, [r6, r4] 9464: 4b21 ldr r3, [pc, #132] ; (94ec ) 9466: 4611 mov r1, r2 9468: 4798 blx r3 946a: 5530 strb r0, [r6, r4] if(outer == false) { 946c: f1b9 0f00 cmp.w r9, #0 9470: d128 bne.n 94c4 if(kl > len) { 9472: 42af cmp r7, r5 9474: f73f af1b bgt.w 92ae if(kl >= 0) { 9478: 2f00 cmp r7, #0 947a: db03 blt.n 9484 _lv_memset_00(&mask_buf[0], kl); 947c: 4b19 ldr r3, [pc, #100] ; (94e4 ) 947e: 4639 mov r1, r7 9480: 4630 mov r0, r6 9482: 4798 blx r3 if(kr < 0) { 9484: 3401 adds r4, #1 9486: f53f af12 bmi.w 92ae if(kr <= len) { 948a: 42ac cmp r4, r5 948c: f73f af56 bgt.w 933c if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); 9490: 1b29 subs r1, r5, r4 9492: e765 b.n 9360 x1.f = p->y_prev_x.f; 9494: f8b8 301a ldrh.w r3, [r8, #26] 9498: f8ad 3016 strh.w r3, [sp, #22] x1.i = p->y_prev_x.i; 949c: f8b8 3018 ldrh.w r3, [r8, #24] 94a0: f8ad 3014 strh.w r3, [sp, #20] _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); 94a4: 9b01 ldr r3, [sp, #4] 94a6: 9203 str r2, [sp, #12] 94a8: fb07 3017 mls r0, r7, r7, r3 94ac: a904 add r1, sp, #16 94ae: 4b0e ldr r3, [pc, #56] ; (94e8 ) 94b0: 4798 blx r3 p->y_prev_x.f = x0.f; 94b2: f8bd 3012 ldrh.w r3, [sp, #18] 94b6: f8a8 301a strh.w r3, [r8, #26] p->y_prev = y; 94ba: f8c8 7014 str.w r7, [r8, #20] p->y_prev_x.i = x0.i; 94be: f8bd 3010 ldrh.w r3, [sp, #16] 94c2: e798 b.n 93f6 kl++; 94c4: 1c78 adds r0, r7, #1 94c6: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; 94ca: 42ac cmp r4, r5 int32_t len_tmp = kr - first; 94cc: bfd4 ite le 94ce: 1a21 suble r1, r4, r0 if(len_tmp + first > len) len_tmp = len - first; 94d0: 1a29 subgt r1, r5, r0 if(first < len && len_tmp >= 0) { 94d2: 42a8 cmp r0, r5 94d4: f6bf af32 bge.w 933c 94d8: 2900 cmp r1, #0 94da: f6ff af2f blt.w 933c 94de: e71b b.n 9318 94e0: 00009265 .word 0x00009265 94e4: 0000f061 .word 0x0000f061 94e8: 0000e9dd .word 0x0000e9dd 94ec: 00008ed1 .word 0x00008ed1 int32_t ofs = radius - (x0.i + 1); 94f0: 3301 adds r3, #1 94f2: ebaa 0a03 sub.w sl, sl, r3 int32_t kr = k + (w - ofs - 1); 94f6: 9b02 ldr r3, [sp, #8] int32_t kl = k + ofs; 94f8: eb04 080a add.w r8, r4, sl int32_t kr = k + (w - ofs - 1); 94fc: eba3 0a0a sub.w sl, r3, sl 9500: f10a 3aff add.w sl, sl, #4294967295 ; 0xffffffff 9504: 4454 add r4, sl if(outer) { 9506: f1b9 0f00 cmp.w r9, #0 950a: d010 beq.n 952e int32_t first = kl + 1; 950c: f108 0001 add.w r0, r8, #1 if(first < 0) first = 0; 9510: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; 9514: 42a5 cmp r5, r4 int32_t len_tmp = kr - first; 9516: bfac ite ge 9518: 1a21 subge r1, r4, r0 if(len_tmp + first > len) len_tmp = len - first; 951a: 1a29 sublt r1, r5, r0 if(first < len && len_tmp >= 0) { 951c: 42a8 cmp r0, r5 951e: da06 bge.n 952e 9520: 2900 cmp r1, #0 9522: db04 blt.n 952e _lv_memset_00(&mask_buf[first], len_tmp); 9524: 4b79 ldr r3, [pc, #484] ; (970c ) 9526: 9202 str r2, [sp, #8] 9528: 4430 add r0, r6 952a: 4798 blx r3 952c: 9a02 ldr r2, [sp, #8] uint32_t i = x0.i + 1; 952e: f8bd b010 ldrh.w fp, [sp, #16] _lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask); 9532: 9b01 ldr r3, [sp, #4] 9534: 9202 str r2, [sp, #8] 9536: a906 add r1, sp, #24 9538: fb0b 301b mls r0, fp, fp, r3 953c: 4b74 ldr r3, [pc, #464] ; (9710 ) 953e: 4798 blx r3 if(y_prev.f == 0) { 9540: f8bd 101a ldrh.w r1, [sp, #26] 9544: 4b72 ldr r3, [pc, #456] ; (9710 ) 9546: 9a02 ldr r2, [sp, #8] uint32_t i = x0.i + 1; 9548: f10b 0a01 add.w sl, fp, #1 if(y_prev.f == 0) { 954c: b939 cbnz r1, 955e y_prev.i--; 954e: f8bd 1018 ldrh.w r1, [sp, #24] 9552: 3901 subs r1, #1 9554: f8ad 1018 strh.w r1, [sp, #24] y_prev.f = 0xFF; 9558: 21ff movs r1, #255 ; 0xff 955a: f8ad 101a strh.w r1, [sp, #26] if(y_prev.i >= y) { 955e: f8bd 1018 ldrh.w r1, [sp, #24] 9562: 42b9 cmp r1, r7 9564: db30 blt.n 95c8 _lv_sqrt(r2 - (i * i), &y_next, sqrt_mask); 9566: 9801 ldr r0, [sp, #4] 9568: a907 add r1, sp, #28 956a: fb0a 001a mls r0, sl, sl, r0 956e: 4798 blx r3 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); 9570: f8bd 201e ldrh.w r2, [sp, #30] 9574: f8bd 3012 ldrh.w r3, [sp, #18] 9578: f1c2 01ff rsb r1, r2, #255 ; 0xff 957c: f1c3 03ff rsb r3, r3, #255 ; 0xff 9580: 434b muls r3, r1 9582: f3c3 2347 ubfx r3, r3, #9, #8 if(outer) m = 255 - m; 9586: f1b9 0f00 cmp.w r9, #0 958a: d101 bne.n 9590 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); 958c: 43db mvns r3, r3 958e: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); 9590: f1b8 0f00 cmp.w r8, #0 9594: db08 blt.n 95a8 9596: 4545 cmp r5, r8 9598: dd06 ble.n 95a8 959a: f816 0008 ldrb.w r0, [r6, r8] 959e: 4f5d ldr r7, [pc, #372] ; (9714 ) 95a0: 4619 mov r1, r3 95a2: 47b8 blx r7 95a4: f806 0008 strb.w r0, [r6, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); 95a8: 2c00 cmp r4, #0 95aa: db06 blt.n 95ba 95ac: 42a5 cmp r5, r4 95ae: dd04 ble.n 95ba 95b0: 5d30 ldrb r0, [r6, r4] 95b2: 4619 mov r1, r3 95b4: 4b57 ldr r3, [pc, #348] ; (9714 ) 95b6: 4798 blx r3 95b8: 5530 strb r0, [r6, r4] kl--; 95ba: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff kr++; 95be: 3401 adds r4, #1 y_prev.f = y_next.f; 95c0: f8ad 201a strh.w r2, [sp, #26] i++; 95c4: f10b 0a02 add.w sl, fp, #2 for(; i <= x1.i; i++) { 95c8: f8bd 3014 ldrh.w r3, [sp, #20] */ LV_ATTRIBUTE_FAST_MEM static inline void sqrt_approx(lv_sqrt_res_t * q, lv_sqrt_res_t * ref, uint32_t x) { x = x << 8; /*Upscale for extra precision*/ uint32_t raw = (ref->i << 4) + (ref->f >> 4); 95cc: f8bd b018 ldrh.w fp, [sp, #24] for(; i <= x1.i; i++) { 95d0: 9302 str r3, [sp, #8] 95d2: f8bd 101a ldrh.w r1, [sp, #26] 95d6: f8bd 201c ldrh.w r2, [sp, #28] 95da: f8bd 301e ldrh.w r3, [sp, #30] uint32_t raw = (ref->i << 4) + (ref->f >> 4); 95de: ea4f 1b0b mov.w fp, fp, lsl #4 95e2: 2000 movs r0, #0 for(; i <= x1.i; i++) { 95e4: 9f02 ldr r7, [sp, #8] 95e6: 4557 cmp r7, sl 95e8: d240 bcs.n 966c 95ea: b128 cbz r0, 95f8 95ec: f8ad 101a strh.w r1, [sp, #26] 95f0: f8ad 201c strh.w r2, [sp, #28] 95f4: f8ad 301e strh.w r3, [sp, #30] if(y_prev.f) { 95f8: f8bd 101a ldrh.w r1, [sp, #26] 95fc: b309 cbz r1, 9642 m = (y_prev.f * x1.f) >> 9; 95fe: f8bd 3016 ldrh.w r3, [sp, #22] 9602: 434b muls r3, r1 9604: f3c3 2347 ubfx r3, r3, #9, #8 if(outer) m = 255 - m; 9608: f1b9 0f00 cmp.w r9, #0 960c: d001 beq.n 9612 960e: 43db mvns r3, r3 9610: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); 9612: f1b8 0f00 cmp.w r8, #0 9616: db08 blt.n 962a 9618: 4545 cmp r5, r8 961a: dd06 ble.n 962a 961c: f816 0008 ldrb.w r0, [r6, r8] 9620: 4a3c ldr r2, [pc, #240] ; (9714 ) 9622: 4619 mov r1, r3 9624: 4790 blx r2 9626: f806 0008 strb.w r0, [r6, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); 962a: 2c00 cmp r4, #0 962c: db06 blt.n 963c 962e: 42a5 cmp r5, r4 9630: dd04 ble.n 963c 9632: 5d30 ldrb r0, [r6, r4] 9634: 4619 mov r1, r3 9636: 4b37 ldr r3, [pc, #220] ; (9714 ) 9638: 4798 blx r3 963a: 5530 strb r0, [r6, r4] kl--; 963c: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff kr++; 9640: 3401 adds r4, #1 if(outer == 0) { 9642: f1b9 0f00 cmp.w r9, #0 9646: f47f ae79 bne.w 933c kl++; 964a: f108 0101 add.w r1, r8, #1 if(kl > len) { 964e: 428d cmp r5, r1 9650: f6ff ae2d blt.w 92ae if(kl >= 0) _lv_memset_00(&mask_buf[0], kl); 9654: 2900 cmp r1, #0 9656: db02 blt.n 965e 9658: 4b2c ldr r3, [pc, #176] ; (970c ) 965a: 4630 mov r0, r6 965c: 4798 blx r3 if(kr < 0) { 965e: 2c00 cmp r4, #0 9660: f6ff ae25 blt.w 92ae if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); 9664: 42a5 cmp r5, r4 9666: f77f ae69 ble.w 933c 966a: e711 b.n 9490 uint32_t raw = (ref->i << 4) + (ref->f >> 4); 966c: f3c1 130f ubfx r3, r1, #4, #16 9670: eb03 020b add.w r2, r3, fp sqrt_approx(&y_next, &y_prev, r2 - (i * i)); 9674: 9b01 ldr r3, [sp, #4] uint32_t raw2 = raw * raw; 9676: fb02 f002 mul.w r0, r2, r2 sqrt_approx(&y_next, &y_prev, r2 - (i * i)); 967a: fb0a 331a mls r3, sl, sl, r3 int32_t d = x - raw2; 967e: ebc0 2303 rsb r3, r0, r3, lsl #8 d = (int32_t)d / (int32_t)(2 * raw) + raw; 9682: 0050 lsls r0, r2, #1 9684: fb93 f3f0 sdiv r3, r3, r0 9688: 4413 add r3, r2 q->i = d >> 4; 968a: f3c3 120f ubfx r2, r3, #4, #16 q->f = (d & 0xF) << 4; 968e: 011b lsls r3, r3, #4 9690: f003 03f0 and.w r3, r3, #240 ; 0xf0 m = (y_prev.f + y_next.f) >> 1; 9694: 4419 add r1, r3 9696: f3c1 0147 ubfx r1, r1, #1, #8 if(outer) m = 255 - m; 969a: f1b9 0f00 cmp.w r9, #0 969e: d001 beq.n 96a4 96a0: 43c9 mvns r1, r1 96a2: b2c9 uxtb r1, r1 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); 96a4: f1b8 0f00 cmp.w r8, #0 96a8: db09 blt.n 96be 96aa: 4545 cmp r5, r8 96ac: dd07 ble.n 96be 96ae: f816 0008 ldrb.w r0, [r6, r8] 96b2: 4f18 ldr r7, [pc, #96] ; (9714 ) 96b4: 9103 str r1, [sp, #12] 96b6: 47b8 blx r7 96b8: 9903 ldr r1, [sp, #12] 96ba: f806 0008 strb.w r0, [r6, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); 96be: 2c00 cmp r4, #0 96c0: db05 blt.n 96ce 96c2: 42a5 cmp r5, r4 96c4: dd03 ble.n 96ce 96c6: 5d30 ldrb r0, [r6, r4] 96c8: 4f12 ldr r7, [pc, #72] ; (9714 ) 96ca: 47b8 blx r7 96cc: 5530 strb r0, [r6, r4] kl--; 96ce: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff kr++; 96d2: 3401 adds r4, #1 for(; i <= x1.i; i++) { 96d4: f10a 0a01 add.w sl, sl, #1 y_prev.f = y_next.f; 96d8: 4619 mov r1, r3 for(; i <= x1.i; i++) { 96da: 2001 movs r0, #1 96dc: e782 b.n 95e4 if(y == p->y_prev) { 96de: f8d8 3014 ldr.w r3, [r8, #20] if(radius <= 256) sqrt_mask = 0x800; 96e2: f5ba 7f80 cmp.w sl, #256 ; 0x100 y = radius - abs_y; 96e6: ebaa 0707 sub.w r7, sl, r7 if(radius <= 256) sqrt_mask = 0x800; 96ea: bfd4 ite le 96ec: f44f 6200 movle.w r2, #2048 ; 0x800 96f0: f44f 4200 movgt.w r2, #32768 ; 0x8000 if(y == p->y_prev) { 96f4: 42bb cmp r3, r7 96f6: f43f ae65 beq.w 93c4 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); 96fa: 9b01 ldr r3, [sp, #4] 96fc: 9203 str r2, [sp, #12] 96fe: fb07 3017 mls r0, r7, r7, r3 9702: a904 add r1, sp, #16 9704: 4b02 ldr r3, [pc, #8] ; (9710 ) 9706: 4798 blx r3 9708: 9a03 ldr r2, [sp, #12] 970a: e663 b.n 93d4 970c: 0000f061 .word 0x0000f061 9710: 0000e9dd .word 0x0000e9dd 9714: 00008ed1 .word 0x00008ed1 00009718 : { 9718: b573 push {r0, r1, r4, r5, r6, lr} if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; 971a: 4c0e ldr r4, [pc, #56] ; (9754 ) { 971c: 2300 movs r3, #0 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; 971e: f854 6033 ldr.w r6, [r4, r3, lsl #3] 9722: b2da uxtb r2, r3 9724: eb04 05c3 add.w r5, r4, r3, lsl #3 9728: b176 cbz r6, 9748 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 972a: 3301 adds r3, #1 972c: 2b10 cmp r3, #16 972e: d1f6 bne.n 971e LV_LOG_WARN("lv_mask_add: no place to add the mask"); 9730: 4b09 ldr r3, [pc, #36] ; (9758 ) 9732: 9300 str r3, [sp, #0] 9734: 2002 movs r0, #2 9736: 4b09 ldr r3, [pc, #36] ; (975c ) 9738: 4909 ldr r1, [pc, #36] ; (9760 ) 973a: 4c0a ldr r4, [pc, #40] ; (9764 ) 973c: 2257 movs r2, #87 ; 0x57 973e: 47a0 blx r4 return LV_MASK_ID_INV; 9740: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff } 9744: b002 add sp, #8 9746: bd70 pop {r4, r5, r6, pc} LV_GC_ROOT(_lv_draw_mask_list[i]).param = param; 9748: f844 0033 str.w r0, [r4, r3, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id; 974c: 6069 str r1, [r5, #4] return i; 974e: b210 sxth r0, r2 9750: e7f8 b.n 9744 9752: bf00 nop 9754: 200086f4 .word 0x200086f4 9758: 0001fd7c .word 0x0001fd7c 975c: 0001fda2 .word 0x0001fda2 9760: 0001fd47 .word 0x0001fd47 9764: 0000e931 .word 0x0000e931 00009768 : { 9768: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} _lv_draw_mask_saved_t * m = LV_GC_ROOT(_lv_draw_mask_list); 976c: 4e0e ldr r6, [pc, #56] ; (97a8 ) { 976e: 4607 mov r7, r0 9770: 4688 mov r8, r1 9772: 4691 mov r9, r2 9774: 469a mov sl, r3 bool changed = false; 9776: 2500 movs r5, #0 while(m->param) { 9778: 6834 ldr r4, [r6, #0] 977a: b934 cbnz r4, 978a return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; 977c: 2d00 cmp r5, #0 977e: bf14 ite ne 9780: 2002 movne r0, #2 9782: 2001 moveq r0, #1 } 9784: b002 add sp, #8 9786: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} res = dsc->cb(mask_buf, abs_x, abs_y, len, (void *)m->param); 978a: 9400 str r4, [sp, #0] 978c: 6824 ldr r4, [r4, #0] 978e: 4653 mov r3, sl 9790: 464a mov r2, r9 9792: 4641 mov r1, r8 9794: 4638 mov r0, r7 9796: 47a0 blx r4 if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP; 9798: 2800 cmp r0, #0 979a: d0f3 beq.n 9784 else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true; 979c: 2802 cmp r0, #2 979e: bf08 it eq 97a0: 2501 moveq r5, #1 m++; 97a2: 3608 adds r6, #8 97a4: e7e8 b.n 9778 97a6: bf00 nop 97a8: 200086f4 .word 0x200086f4 000097ac : if(id != LV_MASK_ID_INV) { 97ac: 1c43 adds r3, r0, #1 p = LV_GC_ROOT(_lv_draw_mask_list[id]).param; 97ae: bf18 it ne 97b0: 4b07 ldrne r3, [pc, #28] ; (97d0 ) 97b2: f04f 0200 mov.w r2, #0 97b6: bf1d ittte ne 97b8: f853 1030 ldrne.w r1, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL; 97bc: f843 2030 strne.w r2, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; 97c0: eb03 03c0 addne.w r3, r3, r0, lsl #3 void * p = NULL; 97c4: 4611 moveq r1, r2 LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; 97c6: bf18 it ne 97c8: 605a strne r2, [r3, #4] } 97ca: 4608 mov r0, r1 97cc: 4770 bx lr 97ce: bf00 nop 97d0: 200086f4 .word 0x200086f4 000097d4 : { 97d4: 2200 movs r2, #0 97d6: 4b08 ldr r3, [pc, #32] ; (97f8 ) 97d8: b530 push {r4, r5, lr} void * p = NULL; 97da: 4611 mov r1, r2 LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; 97dc: 4614 mov r4, r2 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { 97de: 685d ldr r5, [r3, #4] for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 97e0: 3201 adds r2, #1 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { 97e2: 4285 cmp r5, r0 p = LV_GC_ROOT(_lv_draw_mask_list[i]).param; 97e4: bf04 itt eq 97e6: 6819 ldreq r1, [r3, #0] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL; 97e8: e9c3 4400 strdeq r4, r4, [r3] for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 97ec: 2a10 cmp r2, #16 97ee: f103 0308 add.w r3, r3, #8 97f2: d1f4 bne.n 97de } 97f4: 4608 mov r0, r1 97f6: bd30 pop {r4, r5, pc} 97f8: 200086f4 .word 0x200086f4 000097fc : { 97fc: 2300 movs r3, #0 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; 97fe: 4a05 ldr r2, [pc, #20] ; (9814 ) uint8_t cnt = 0; 9800: 4618 mov r0, r3 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; 9802: f852 1033 ldr.w r1, [r2, r3, lsl #3] 9806: b109 cbz r1, 980c 9808: 3001 adds r0, #1 980a: b2c0 uxtb r0, r0 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 980c: 3301 adds r3, #1 980e: 2b10 cmp r3, #16 9810: d1f7 bne.n 9802 } 9812: 4770 bx lr 9814: 200086f4 .word 0x200086f4 00009818 : { 9818: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 981c: f9bd 8018 ldrsh.w r8, [sp, #24] 9820: 4615 mov r5, r2 9822: 460e mov r6, r1 9824: 461f mov r7, r3 _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); 9826: 212c movs r1, #44 ; 0x2c 9828: 4b3c ldr r3, [pc, #240] ; (991c ) { 982a: 4604 mov r4, r0 _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); 982c: 4798 blx r3 if(p1y > p2y) { 982e: 4545 cmp r5, r8 9830: dd05 ble.n 983e 9832: 462b mov r3, r5 9834: 4645 mov r5, r8 9836: 4698 mov r8, r3 9838: 4633 mov r3, r6 p1x = t; 983a: 463e mov r6, r7 p2x = p1x; 983c: 461f mov r7, r3 param->cfg.side = side; 983e: 7c23 ldrb r3, [r4, #16] 9840: f89d 201c ldrb.w r2, [sp, #28] param->cfg.p1.y = p1y; 9844: 8165 strh r5, [r4, #10] param->cfg.side = side; 9846: f362 0301 bfi r3, r2, #0, #2 984a: 7423 strb r3, [r4, #16] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; 984c: eba8 0205 sub.w r2, r8, r5 9850: 1bbb subs r3, r7, r6 9852: ea83 70e3 eor.w r0, r3, r3, asr #31 9856: ea82 71e2 eor.w r1, r2, r2, asr #31 985a: eba0 70e3 sub.w r0, r0, r3, asr #31 985e: eba1 71e2 sub.w r1, r1, r2, asr #31 9862: 4288 cmp r0, r1 9864: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 param->origo.y = p1y; 9868: 82a5 strh r5, [r4, #20] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; 986a: bfd4 ite le 986c: 2000 movle r0, #0 986e: 2001 movgt r0, #1 9870: f360 0100 bfi r1, r0, #0, #1 param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; 9874: 4d2a ldr r5, [pc, #168] ; (9920 ) param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; 9876: f884 1028 strb.w r1, [r4, #40] ; 0x28 param->yx_steep = 0; 987a: 2000 movs r0, #0 if(param->flat) { 987c: 07c9 lsls r1, r1, #31 param->xy_steep = 0; 987e: e9c4 0006 strd r0, r0, [r4, #24] param->cfg.p1.x = p1x; 9882: 8126 strh r6, [r4, #8] param->cfg.p2.x = p2x; 9884: 81a7 strh r7, [r4, #12] param->cfg.p2.y = p2y; 9886: f8a4 800e strh.w r8, [r4, #14] param->origo.x = p1x; 988a: 8266 strh r6, [r4, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; 988c: 6025 str r5, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_LINE; 988e: 7120 strb r0, [r4, #4] if(param->flat) { 9890: d524 bpl.n 98dc if(dx) { 9892: b133 cbz r3, 98a2 m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ 9894: f44f 1180 mov.w r1, #1048576 ; 0x100000 9898: fb91 f1f3 sdiv r1, r1, r3 param->yx_steep = (m * dy) >> 10; 989c: 4351 muls r1, r2 989e: 1289 asrs r1, r1, #10 98a0: 61e1 str r1, [r4, #28] if(dy) { 98a2: b132 cbz r2, 98b2 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ 98a4: f44f 1180 mov.w r1, #1048576 ; 0x100000 98a8: fb91 f2f2 sdiv r2, r1, r2 param->xy_steep = (m * dx) >> 10; 98ac: 4353 muls r3, r2 98ae: 129b asrs r3, r3, #10 98b0: 61a3 str r3, [r4, #24] param->steep = param->yx_steep; 98b2: 69e3 ldr r3, [r4, #28] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98b4: 7c22 ldrb r2, [r4, #16] param->steep = param->xy_steep; 98b6: 6223 str r3, [r4, #32] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98b8: f012 0203 ands.w r2, r2, #3 if(param->steep > 0) param->inv = 1; 98bc: 6a21 ldr r1, [r4, #32] 98be: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98c2: d11d bne.n 9900 98c4: f36f 0341 bfc r3, #1, #1 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; 98c8: f884 3028 strb.w r3, [r4, #40] ; 0x28 if(param->steep < 0) param->spx = -param->spx; 98cc: 2900 cmp r1, #0 param->spx = param->steep >> 2; 98ce: ea4f 03a1 mov.w r3, r1, asr #2 if(param->steep < 0) param->spx = -param->spx; 98d2: bfb8 it lt 98d4: 425b neglt r3, r3 98d6: 6263 str r3, [r4, #36] ; 0x24 } 98d8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(dy) { 98dc: b132 cbz r2, 98ec m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ 98de: f44f 1180 mov.w r1, #1048576 ; 0x100000 98e2: fb91 f1f2 sdiv r1, r1, r2 param->xy_steep = (m * dx) >> 10; 98e6: 4359 muls r1, r3 98e8: 1289 asrs r1, r1, #10 98ea: 61a1 str r1, [r4, #24] if(dx) { 98ec: b133 cbz r3, 98fc m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ 98ee: f44f 1180 mov.w r1, #1048576 ; 0x100000 98f2: fb91 f3f3 sdiv r3, r1, r3 param->yx_steep = (m * dy) >> 10; 98f6: 435a muls r2, r3 98f8: 1292 asrs r2, r2, #10 98fa: 61e2 str r2, [r4, #28] param->steep = param->xy_steep; 98fc: 69a3 ldr r3, [r4, #24] 98fe: e7d9 b.n 98b4 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; 9900: 2a01 cmp r2, #1 9902: d102 bne.n 990a 9904: f043 0302 orr.w r3, r3, #2 9908: e7de b.n 98c8 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) { 990a: 2a02 cmp r2, #2 990c: d102 bne.n 9914 if(param->steep > 0) param->inv = 1; 990e: 2900 cmp r1, #0 9910: dcf8 bgt.n 9904 9912: e7d7 b.n 98c4 if(param->steep > 0) param->inv = 0; 9914: 2900 cmp r1, #0 9916: dcd5 bgt.n 98c4 9918: e7f4 b.n 9904 991a: bf00 nop 991c: 0000f061 .word 0x0000f061 9920: 00008eed .word 0x00008eed 00009924 : { 9924: b5f8 push {r3, r4, r5, r6, r7, lr} 9926: 4604 mov r4, r0 9928: 88c8 ldrh r0, [r1, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 992a: 888d ldrh r5, [r1, #4] 992c: 461f mov r7, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 992e: 884b ldrh r3, [r1, #2] 9930: 3001 adds r0, #1 9932: 1ac0 subs r0, r0, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9934: 880b ldrh r3, [r1, #0] 9936: 3501 adds r5, #1 9938: 1aed subs r5, r5, r3 int32_t short_side = LV_MATH_MIN(w, h); 993a: b200 sxth r0, r0 993c: b22d sxth r5, r5 993e: 42a8 cmp r0, r5 9940: bfa8 it ge 9942: 4628 movge r0, r5 if(radius > short_side >> 1) radius = short_side >> 1; 9944: ebb2 0f60 cmp.w r2, r0, asr #1 9948: ea4f 0360 mov.w r3, r0, asr #1 { 994c: 4616 mov r6, r2 lv_area_copy(¶m->cfg.rect, rect); 994e: f104 0008 add.w r0, r4, #8 if(radius > short_side >> 1) radius = short_side >> 1; 9952: bfc8 it gt 9954: b21e sxthgt r6, r3 lv_area_copy(¶m->cfg.rect, rect); 9956: 4b08 ldr r3, [pc, #32] ; (9978 ) 9958: 4798 blx r3 param->cfg.outer = inv ? 1 : 0; 995a: 7ca3 ldrb r3, [r4, #18] param->cfg.radius = radius; 995c: 8226 strh r6, [r4, #16] param->cfg.outer = inv ? 1 : 0; 995e: f367 0300 bfi r3, r7, #0, #1 9962: 74a3 strb r3, [r4, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius; 9964: 4b05 ldr r3, [pc, #20] ; (997c ) 9966: 6023 str r3, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS; 9968: 2302 movs r3, #2 996a: 7123 strb r3, [r4, #4] param->y_prev_x.i = 0; 996c: f04f 4200 mov.w r2, #2147483648 ; 0x80000000 9970: 2300 movs r3, #0 9972: e9c4 2305 strd r2, r3, [r4, #20] } 9976: bdf8 pop {r3, r4, r5, r6, r7, pc} 9978: 00009265 .word 0x00009265 997c: 00009279 .word 0x00009279 00009980 : _lv_mem_buf_release(mask_buf); } LV_ATTRIBUTE_FAST_MEM static inline lv_color_t grad_get(lv_draw_rect_dsc_t * dsc, lv_coord_t s, lv_coord_t i) { int32_t min = (dsc->bg_main_color_stop * s) >> 8; 9980: f9b0 3008 ldrsh.w r3, [r0, #8] { 9984: b570 push {r4, r5, r6, lr} int32_t min = (dsc->bg_main_color_stop * s) >> 8; 9986: fb03 f401 mul.w r4, r3, r1 if(i <= min) return dsc->bg_color; 998a: ebb2 2f24 cmp.w r2, r4, asr #8 int32_t min = (dsc->bg_main_color_stop * s) >> 8; 998e: ea4f 2524 mov.w r5, r4, asr #8 if(i <= min) return dsc->bg_color; 9992: dc01 bgt.n 9998 9994: 8840 ldrh r0, [r0, #2] int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d = (s * d) >> 8; i -= min; lv_opa_t mix = (i * 255) / d; return lv_color_mix(dsc->bg_grad_color, dsc->bg_color, mix); } 9996: bd70 pop {r4, r5, r6, pc} int32_t max = (dsc->bg_grad_color_stop * s) >> 8; 9998: f9b0 400a ldrsh.w r4, [r0, #10] 999c: fb01 f604 mul.w r6, r1, r4 if(i >= max) return dsc->bg_grad_color; 99a0: ebb2 2f26 cmp.w r2, r6, asr #8 99a4: db01 blt.n 99aa 99a6: 8880 ldrh r0, [r0, #4] 99a8: e7f5 b.n 9996 int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; 99aa: 1ae4 subs r4, r4, r3 i -= min; 99ac: 1b52 subs r2, r2, r5 d = (s * d) >> 8; 99ae: fb01 f304 mul.w r3, r1, r4 lv_opa_t mix = (i * 255) / d; 99b2: b212 sxth r2, r2 99b4: ebc2 2202 rsb r2, r2, r2, lsl #8 d = (s * d) >> 8; 99b8: 121b asrs r3, r3, #8 lv_opa_t mix = (i * 255) / d; 99ba: fb92 f3f3 sdiv r3, r2, r3 { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 99be: 8882 ldrh r2, [r0, #4] 99c0: f3c2 1445 ubfx r4, r2, #5, #6 99c4: 8842 ldrh r2, [r0, #2] 99c6: b2db uxtb r3, r3 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 99c8: f1c3 05ff rsb r5, r3, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 99cc: f3c2 1245 ubfx r2, r2, #5, #6 99d0: 436a muls r2, r5 99d2: f248 0181 movw r1, #32897 ; 0x8081 99d6: fb03 2204 mla r2, r3, r4, r2 99da: 434a muls r2, r1 99dc: f3c2 54c5 ubfx r4, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 99e0: 7902 ldrb r2, [r0, #4] 99e2: f002 061f and.w r6, r2, #31 99e6: 7882 ldrb r2, [r0, #2] 99e8: f002 021f and.w r2, r2, #31 99ec: 436a muls r2, r5 99ee: fb03 2206 mla r2, r3, r6, r2 99f2: 434a muls r2, r1 99f4: f3c2 52c4 ubfx r2, r2, #23, #5 99f8: ea42 1244 orr.w r2, r2, r4, lsl #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 99fc: 7944 ldrb r4, [r0, #5] 99fe: 78c0 ldrb r0, [r0, #3] 9a00: 08c0 lsrs r0, r0, #3 9a02: 08e4 lsrs r4, r4, #3 9a04: 4368 muls r0, r5 9a06: fb03 0004 mla r0, r3, r4, r0 9a0a: 4348 muls r0, r1 9a0c: 0dc0 lsrs r0, r0, #23 9a0e: ea42 20c0 orr.w r0, r2, r0, lsl #11 return lv_color_mix(dsc->bg_grad_color, dsc->bg_color, mix); 9a12: e7c0 b.n 9996 00009a14 : #endif } LV_ATTRIBUTE_FAST_MEM static void shadow_blur_corner(lv_coord_t size, lv_coord_t sw, uint16_t * sh_ups_buf) { 9a14: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} int32_t s_left = sw >> 1; int32_t s_right = (sw >> 1); if((sw & 1) == 0) s_left--; 9a18: 07cb lsls r3, r1, #31 int32_t s_left = sw >> 1; 9a1a: ea4f 0a61 mov.w sl, r1, asr #1 /*Horizontal blur*/ uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a1e: ea4f 0540 mov.w r5, r0, lsl #1 { 9a22: b087 sub sp, #28 9a24: bf58 it pl 9a26: f10a 38ff addpl.w r8, sl, #4294967295 ; 0xffffffff uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a2a: 4b5a ldr r3, [pc, #360] ; (9b94 ) { 9a2c: 4604 mov r4, r0 uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a2e: 4628 mov r0, r5 { 9a30: 460e mov r6, r1 9a32: 4617 mov r7, r2 9a34: bf54 ite pl 9a36: fa0f f888 sxthpl.w r8, r8 9a3a: 46d0 movmi r8, sl uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a3c: 4798 blx r3 int32_t y; uint16_t * sh_ups_tmp_buf = sh_ups_buf; for(y = 0; y < size; y++) { int32_t v = sh_ups_tmp_buf[size - 1] * sw; 9a3e: 1eab subs r3, r5, #2 9a40: 9301 str r3, [sp, #4] 9a42: ea4f 034a mov.w r3, sl, lsl #1 9a46: 9302 str r3, [sp, #8] 9a48: f06f 0301 mvn.w r3, #1 9a4c: fb08 3303 mla r3, r8, r3, r3 uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a50: 4601 mov r1, r0 for(y = 0; y < size; y++) { 9a52: 46b9 mov r9, r7 9a54: f04f 0b00 mov.w fp, #0 9a58: 9303 str r3, [sp, #12] 9a5a: 455c cmp r4, fp 9a5c: dc25 bgt.n 9aaa sh_ups_tmp_buf += size; } /*Vertical blur*/ uint32_t i; sh_ups_buf[0] = sh_ups_buf[0] / sw; 9a5e: 883b ldrh r3, [r7, #0] 9a60: fb93 f3f6 sdiv r3, r3, r6 for(i = 1; i < (uint32_t)size * size; i++) { 9a64: fb04 f904 mul.w r9, r4, r4 sh_ups_buf[0] = sh_ups_buf[0] / sw; 9a68: 803b strh r3, [r7, #0] for(i = 1; i < (uint32_t)size * size; i++) { 9a6a: 463a mov r2, r7 9a6c: 463b mov r3, r7 9a6e: f04f 0c01 mov.w ip, #1 9a72: 45e1 cmp r9, ip 9a74: d844 bhi.n 9b00 9a76: fb04 f30a mul.w r3, r4, sl 9a7a: f06f 0001 mvn.w r0, #1 9a7e: 4343 muls r3, r0 9a80: 9304 str r3, [sp, #16] v -= top_val; /*Add the bottom pixel*/ uint32_t bottom_val; if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; else bottom_val = sh_ups_buf[(size - 1) * size + x]; 9a82: 1e63 subs r3, r4, #1 9a84: fb05 7303 mla r3, r5, r3, r7 9a88: 9302 str r3, [sp, #8] 9a8a: f108 0301 add.w r3, r8, #1 9a8e: 9301 str r3, [sp, #4] 9a90: fb08 5305 mla r3, r8, r5, r5 9a94: 9303 str r3, [sp, #12] for(x = 0; x < size; x++) { 9a96: f04f 0c00 mov.w ip, #0 9a9a: 4564 cmp r4, ip 9a9c: dc3e bgt.n 9b1c for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { (*sh_ups_tmp_buf) = sh_ups_blur_buf[y]; } } _lv_mem_buf_release(sh_ups_blur_buf); 9a9e: 4b3e ldr r3, [pc, #248] ; (9b98 ) 9aa0: 4608 mov r0, r1 } 9aa2: b007 add sp, #28 9aa4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} _lv_mem_buf_release(sh_ups_blur_buf); 9aa8: 4718 bx r3 int32_t v = sh_ups_tmp_buf[size - 1] * sw; 9aaa: 9b01 ldr r3, [sp, #4] 9aac: 9802 ldr r0, [sp, #8] 9aae: f839 2003 ldrh.w r2, [r9, r3] 9ab2: eb00 0c09 add.w ip, r0, r9 9ab6: 9803 ldr r0, [sp, #12] 9ab8: 4372 muls r2, r6 for(x = size - 1; x >= 0; x--) { 9aba: 1e63 subs r3, r4, #1 9abc: 4448 add r0, r9 sh_ups_blur_buf[x] = v; 9abe: f821 2013 strh.w r2, [r1, r3, lsl #1] if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; 9ac2: eb03 0e0a add.w lr, r3, sl 9ac6: 4574 cmp r4, lr 9ac8: bfcc ite gt 9aca: f83c e013 ldrhgt.w lr, [ip, r3, lsl #1] uint32_t right_val = 0; 9ace: f04f 0e00 movle.w lr, #0 v -= right_val; 9ad2: eba2 0e0e sub.w lr, r2, lr if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; 9ad6: eba3 0208 sub.w r2, r3, r8 9ada: 2a00 cmp r2, #0 9adc: bfd4 ite le 9ade: f8b9 2000 ldrhle.w r2, [r9] else left_val = sh_ups_tmp_buf[x - s_left - 1]; 9ae2: f830 2013 ldrhgt.w r2, [r0, r3, lsl #1] for(x = size - 1; x >= 0; x--) { 9ae6: 3b01 subs r3, #1 v += left_val; 9ae8: 4472 add r2, lr for(x = size - 1; x >= 0; x--) { 9aea: d2e8 bcs.n 9abe _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); 9aec: 4648 mov r0, r9 9aee: 4b2b ldr r3, [pc, #172] ; (9b9c ) 9af0: 9104 str r1, [sp, #16] 9af2: 462a mov r2, r5 9af4: 4798 blx r3 sh_ups_tmp_buf += size; 9af6: 44a9 add r9, r5 for(y = 0; y < size; y++) { 9af8: 9904 ldr r1, [sp, #16] 9afa: f10b 0b01 add.w fp, fp, #1 9afe: e7ac b.n 9a5a if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1]; 9b00: 8858 ldrh r0, [r3, #2] 9b02: f833 eb02 ldrh.w lr, [r3], #2 9b06: 4570 cmp r0, lr else sh_ups_buf[i] = sh_ups_buf[i] / sw; 9b08: bf1c itt ne 9b0a: fb90 f0f6 sdivne r0, r0, r6 9b0e: fa1f fe80 uxthne.w lr, r0 9b12: f8a3 e000 strh.w lr, [r3] for(i = 1; i < (uint32_t)size * size; i++) { 9b16: f10c 0c01 add.w ip, ip, #1 9b1a: e7aa b.n 9a72 sh_ups_tmp_buf = &sh_ups_buf[x]; 9b1c: 9804 ldr r0, [sp, #16] int32_t v = sh_ups_tmp_buf[0] * sw; 9b1e: 8813 ldrh r3, [r2, #0] 9b20: eb00 0902 add.w r9, r0, r2 9b24: 9803 ldr r0, [sp, #12] 9b26: 2700 movs r7, #0 9b28: 4410 add r0, r2 9b2a: 9005 str r0, [sp, #20] sh_ups_tmp_buf = &sh_ups_buf[x]; 9b2c: 4696 mov lr, r2 int32_t v = sh_ups_tmp_buf[0] * sw; 9b2e: 4373 muls r3, r6 9b30: 4690 mov r8, r2 for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b32: 4638 mov r0, r7 sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT); 9b34: 2b00 cmp r3, #0 9b36: bfac ite ge 9b38: f3c3 1b8f ubfxge fp, r3, #6, #16 9b3c: f04f 0b00 movlt.w fp, #0 9b40: f821 b010 strh.w fp, [r1, r0, lsl #1] if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; 9b44: eba0 0b0a sub.w fp, r0, sl 9b48: f1bb 0f00 cmp.w fp, #0 9b4c: bfd4 ite le 9b4e: f8b8 b000 ldrhle.w fp, [r8] else top_val = sh_ups_buf[(y - s_right) * size + x]; 9b52: f839 b007 ldrhgt.w fp, [r9, r7] v -= top_val; 9b56: eba3 0b0b sub.w fp, r3, fp if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; 9b5a: 9b01 ldr r3, [sp, #4] 9b5c: 4403 add r3, r0 9b5e: 429c cmp r4, r3 9b60: bfcb itete gt 9b62: 9b05 ldrgt r3, [sp, #20] else bottom_val = sh_ups_buf[(size - 1) * size + x]; 9b64: 9b02 ldrle r3, [sp, #8] if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; 9b66: 5bdb ldrhgt r3, [r3, r7] else bottom_val = sh_ups_buf[(size - 1) * size + x]; 9b68: f833 301c ldrhle.w r3, [r3, ip, lsl #1] for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b6c: 3001 adds r0, #1 9b6e: 4284 cmp r4, r0 v += bottom_val; 9b70: 445b add r3, fp for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b72: 44a8 add r8, r5 9b74: 442f add r7, r5 9b76: dcdd bgt.n 9b34 for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { 9b78: 2300 movs r3, #0 (*sh_ups_tmp_buf) = sh_ups_blur_buf[y]; 9b7a: f831 0013 ldrh.w r0, [r1, r3, lsl #1] 9b7e: f8ae 0000 strh.w r0, [lr] for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { 9b82: 3301 adds r3, #1 9b84: 429c cmp r4, r3 9b86: 44ae add lr, r5 9b88: dcf7 bgt.n 9b7a for(x = 0; x < size; x++) { 9b8a: f10c 0c01 add.w ip, ip, #1 9b8e: 3202 adds r2, #2 9b90: e783 b.n 9a9a 9b92: bf00 nop 9b94: 0000eefd .word 0x0000eefd 9b98: 0000ebb1 .word 0x0000ebb1 9b9c: 0000ec79 .word 0x0000ec79 00009ba0 : LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { 9ba0: 3901 subs r1, #1 9ba2: f100 0308 add.w r3, r0, #8 *d8 = *s8; 9ba6: f811 2f01 ldrb.w r2, [r1, #1]! 9baa: f800 2b01 strb.w r2, [r0], #1 while(len) { 9bae: 4298 cmp r0, r3 9bb0: d1f9 bne.n 9ba6 * @param src pointer to the source area */ inline static void lv_area_copy(lv_area_t * dest, const lv_area_t * src) { _lv_memcpy_small(dest, src, sizeof(lv_area_t)); } 9bb2: 4770 bx lr 00009bb4 : { 9bb4: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); 9bb6: 4b0f ldr r3, [pc, #60] ; (9bf4 ) 9bb8: 2154 movs r1, #84 ; 0x54 { 9bba: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); 9bbc: 4798 blx r3 dsc->bg_color = LV_COLOR_WHITE; 9bbe: 4b0e ldr r3, [pc, #56] ; (9bf8 ) 9bc0: 881b ldrh r3, [r3, #0] 9bc2: 8063 strh r3, [r4, #2] dsc->bg_grad_color = LV_COLOR_BLACK; 9bc4: 2200 movs r2, #0 dsc->bg_grad_color_stop = 0xFF; 9bc6: 23ff movs r3, #255 ; 0xff dsc->bg_grad_color = LV_COLOR_BLACK; 9bc8: 80a2 strh r2, [r4, #4] dsc->border_color = LV_COLOR_BLACK; 9bca: 81e2 strh r2, [r4, #14] dsc->value_color = LV_COLOR_BLACK; 9bcc: f8a4 2046 strh.w r2, [r4, #70] ; 0x46 dsc->shadow_color = LV_COLOR_BLACK; 9bd0: 83e2 strh r2, [r4, #30] dsc->bg_grad_color_stop = 0xFF; 9bd2: 8163 strh r3, [r4, #10] dsc->bg_opa = LV_OPA_COVER; 9bd4: 7323 strb r3, [r4, #12] dsc->outline_opa = LV_OPA_COVER; 9bd6: 7723 strb r3, [r4, #28] dsc->border_opa = LV_OPA_COVER; 9bd8: 7523 strb r3, [r4, #20] dsc->pattern_recolor = LV_COLOR_BLACK; 9bda: 86a2 strh r2, [r4, #52] ; 0x34 dsc->pattern_opa = LV_OPA_COVER; 9bdc: f884 3036 strb.w r3, [r4, #54] ; 0x36 dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; 9be0: 4a06 ldr r2, [pc, #24] ; (9bfc ) dsc->value_opa = LV_OPA_COVER; 9be2: f884 3044 strb.w r3, [r4, #68] ; 0x44 dsc->shadow_opa = LV_OPA_COVER; 9be6: f884 3028 strb.w r3, [r4, #40] ; 0x28 dsc->border_side = LV_BORDER_SIDE_FULL; 9bea: 230f movs r3, #15 dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; 9bec: 6322 str r2, [r4, #48] ; 0x30 dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL; 9bee: 6422 str r2, [r4, #64] ; 0x40 dsc->border_side = LV_BORDER_SIDE_FULL; 9bf0: 8263 strh r3, [r4, #18] } 9bf2: bd10 pop {r4, pc} 9bf4: 0000f061 .word 0x0000f061 9bf8: 0001fe34 .word 0x0001fe34 9bfc: 20000010 .word 0x20000010 00009c00 : { 9c00: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 9c04: ed2d 8b04 vpush {d8-d9} 9c08: b0ad sub sp, #180 ; 0xb4 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9c0a: 4603 mov r3, r0 9c0c: 9004 str r0, [sp, #16] 9c0e: 88c0 ldrh r0, [r0, #6] 9c10: 885d ldrh r5, [r3, #2] 9c12: 1c43 adds r3, r0, #1 9c14: 1b5b subs r3, r3, r5 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; 9c16: b21b sxth r3, r3 9c18: 2b00 cmp r3, #0 { 9c1a: 4688 mov r8, r1 9c1c: 4691 mov r9, r2 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; 9c1e: f341 8181 ble.w af24 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9c22: 9b04 ldr r3, [sp, #16] 9c24: 889a ldrh r2, [r3, #4] 9c26: 8819 ldrh r1, [r3, #0] 9c28: 1c53 adds r3, r2, #1 9c2a: 1a5b subs r3, r3, r1 9c2c: b21b sxth r3, r3 9c2e: 2b00 cmp r3, #0 9c30: f341 8178 ble.w af24 if(dsc->shadow_width == 0) return; 9c34: f9b9 4020 ldrsh.w r4, [r9, #32] 9c38: 2c00 cmp r4, #0 9c3a: f000 8551 beq.w a6e0 if(dsc->shadow_opa <= LV_OPA_MIN) return; 9c3e: f899 3028 ldrb.w r3, [r9, #40] ; 0x28 9c42: 9307 str r3, [sp, #28] 9c44: 2b05 cmp r3, #5 9c46: f240 854b bls.w a6e0 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && 9c4a: f8d9 7020 ldr.w r7, [r9, #32] dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { 9c4e: f9b9 6024 ldrsh.w r6, [r9, #36] ; 0x24 9c52: f9b9 3026 ldrsh.w r3, [r9, #38] ; 0x26 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && 9c56: 2f01 cmp r7, #1 9c58: d103 bne.n 9c62 9c5a: b916 cbnz r6, 9c62 dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { 9c5c: 2b00 cmp r3, #0 9c5e: f340 853f ble.w a6e0 sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9c62: f8b9 7022 ldrh.w r7, [r9, #34] ; 0x22 9c66: b29b uxth r3, r3 9c68: eba7 0c03 sub.w ip, r7, r3 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9c6c: b2b6 uxth r6, r6 sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; 9c6e: 441f add r7, r3 9c70: 443a add r2, r7 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9c72: 1af7 subs r7, r6, r3 sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; 9c74: 4433 add r3, r6 9c76: 4403 add r3, r0 9c78: b298 uxth r0, r3 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; 9c7a: eb04 73d4 add.w r3, r4, r4, lsr #31 9c7e: ea6f 0663 mvn.w r6, r3, asr #1 sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; 9c82: 105b asrs r3, r3, #1 sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; 9c84: b292 uxth r2, r2 9c86: 3301 adds r3, #1 9c88: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; 9c8c: fa12 f283 uxtah r2, r2, r3 sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1; 9c90: fa10 f383 uxtah r3, r0, r3 9c94: f8ad 304e strh.w r3, [sp, #78] ; 0x4e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9c98: 9b07 ldr r3, [sp, #28] sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; 9c9a: f8ad 204c strh.w r2, [sp, #76] ; 0x4c sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9c9e: 4461 add r1, ip sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9ca0: 443d add r5, r7 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9ca2: 2bfb cmp r3, #251 ; 0xfb sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9ca4: b289 uxth r1, r1 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9ca6: b2ad uxth r5, r5 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9ca8: bf28 it cs 9caa: 23ff movcs r3, #255 ; 0xff sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9cac: f8ad 1040 strh.w r1, [sp, #64] ; 0x40 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9cb0: f8ad 5042 strh.w r5, [sp, #66] ; 0x42 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; 9cb4: fa11 f186 uxtah r1, r1, r6 sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; 9cb8: fa15 f586 uxtah r5, r5, r6 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; 9cbc: f8ad 1048 strh.w r1, [sp, #72] ; 0x48 sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; 9cc0: f8ad 504a strh.w r5, [sp, #74] ; 0x4a if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9cc4: 9307 str r3, [sp, #28] sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; 9cc6: f8ad 0046 strh.w r0, [sp, #70] ; 0x46 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 9cca: 4b7b ldr r3, [pc, #492] ; (9eb8 ) 9ccc: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 9cce: 4b7b ldr r3, [pc, #492] ; (9ebc ) 9cd0: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); 9cd2: 4b7b ldr r3, [pc, #492] ; (9ec0 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 9cd4: 4605 mov r5, r0 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); 9cd6: 4642 mov r2, r8 9cd8: a912 add r1, sp, #72 ; 0x48 9cda: a814 add r0, sp, #80 ; 0x50 9cdc: 4798 blx r3 if(is_common == false) return; 9cde: 2800 cmp r0, #0 9ce0: f000 84fe beq.w a6e0 draw_area.x1 -= disp_area->x1; 9ce4: 8a2e ldrh r6, [r5, #16] 9ce6: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 draw_area.y1 -= disp_area->y1; 9cea: 8a68 ldrh r0, [r5, #18] 9cec: f8bd 1052 ldrh.w r1, [sp, #82] ; 0x52 draw_area.x2 -= disp_area->x1; 9cf0: f8bd 2054 ldrh.w r2, [sp, #84] ; 0x54 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9cf4: 4d73 ldr r5, [pc, #460] ; (9ec4 ) draw_area.x1 -= disp_area->x1; 9cf6: 1b9b subs r3, r3, r6 9cf8: f8ad 3050 strh.w r3, [sp, #80] ; 0x50 draw_area.y2 -= disp_area->y1; 9cfc: f8bd 3056 ldrh.w r3, [sp, #86] ; 0x56 draw_area.x2 -= disp_area->x1; 9d00: 1b92 subs r2, r2, r6 draw_area.y1 -= disp_area->y1; 9d02: 1a09 subs r1, r1, r0 draw_area.y2 -= disp_area->y1; 9d04: 1a1b subs r3, r3, r0 draw_area.y1 -= disp_area->y1; 9d06: f8ad 1052 strh.w r1, [sp, #82] ; 0x52 draw_area.x2 -= disp_area->x1; 9d0a: f8ad 2054 strh.w r2, [sp, #84] ; 0x54 lv_area_copy(&bg_coords, coords); 9d0e: 9904 ldr r1, [sp, #16] draw_area.y2 -= disp_area->y1; 9d10: f8ad 3056 strh.w r3, [sp, #86] ; 0x56 lv_area_copy(&bg_coords, coords); 9d14: a816 add r0, sp, #88 ; 0x58 9d16: 4b6c ldr r3, [pc, #432] ; (9ec8 ) 9d18: 4798 blx r3 bg_coords.y1 += 1; 9d1a: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a bg_coords.x1 += 1; 9d1e: f8bd b058 ldrh.w fp, [sp, #88] ; 0x58 bg_coords.x2 -= 1; 9d22: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c 9d26: f8bd 7044 ldrh.w r7, [sp, #68] ; 0x44 bg_coords.y1 += 1; 9d2a: 3101 adds r1, #1 9d2c: b288 uxth r0, r1 bg_coords.x1 += 1; 9d2e: f10b 0b01 add.w fp, fp, #1 bg_coords.y2 -= 1; 9d32: f8bd 105e ldrh.w r1, [sp, #94] ; 0x5e bg_coords.y1 += 1; 9d36: f8ad 005a strh.w r0, [sp, #90] ; 0x5a bg_coords.x2 -= 1; 9d3a: 1e5a subs r2, r3, #1 bg_coords.x1 += 1; 9d3c: fa1f fb8b uxth.w fp, fp 9d40: f8ad b058 strh.w fp, [sp, #88] ; 0x58 bg_coords.x2 -= 1; 9d44: f8ad 205c strh.w r2, [sp, #92] ; 0x5c 9d48: eba3 0b0b sub.w fp, r3, fp bg_coords.y2 -= 1; 9d4c: 1e4a subs r2, r1, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9d4e: 1a09 subs r1, r1, r0 9d50: b20b sxth r3, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9d52: fa0f fb8b sxth.w fp, fp int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords)); 9d56: 459b cmp fp, r3 9d58: bfa8 it ge 9d5a: 469b movge fp, r3 bg_coords.y2 -= 1; 9d5c: f8ad 205e strh.w r2, [sp, #94] ; 0x5e int32_t r_bg = dsc->radius; 9d60: f9b9 2000 ldrsh.w r2, [r9] 9d64: f8bd 3040 ldrh.w r3, [sp, #64] ; 0x40 if(r_bg > short_side >> 1) r_bg = short_side >> 1; 9d68: ea4f 0b6b mov.w fp, fp, asr #1 9d6c: 4593 cmp fp, r2 9d6e: f107 0701 add.w r7, r7, #1 9d72: 4659 mov r1, fp 9d74: eba7 0703 sub.w r7, r7, r3 9d78: bfa8 it ge 9d7a: 4611 movge r1, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9d7c: f8bd 3046 ldrh.w r3, [sp, #70] ; 0x46 9d80: ee08 1a90 vmov s17, r1 9d84: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42 9d88: 3301 adds r3, #1 9d8a: 1a5b subs r3, r3, r1 9d8c: b21b sxth r3, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9d8e: b23f sxth r7, r7 short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area)); 9d90: 429f cmp r7, r3 9d92: bfa8 it ge 9d94: 461f movge r7, r3 if(r_sh > short_side >> 1) r_sh = short_side >> 1; 9d96: 107f asrs r7, r7, #1 9d98: 4297 cmp r7, r2 9d9a: bfa8 it ge 9d9c: 4617 movge r7, r2 int32_t corner_size = sw + r_sh; 9d9e: eb04 0a07 add.w sl, r4, r7 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9da2: fb0a f00a mul.w r0, sl, sl 9da6: 0040 lsls r0, r0, #1 9da8: 47a8 blx r5 shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh); 9daa: f9b9 4020 ldrsh.w r4, [r9, #32] lv_area_copy(&sh_area, coords); 9dae: 4b46 ldr r3, [pc, #280] ; (9ec8 ) sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9db0: 9005 str r0, [sp, #20] lv_area_copy(&sh_area, coords); 9db2: a910 add r1, sp, #64 ; 0x40 9db4: a81e add r0, sp, #120 ; 0x78 9db6: 4798 blx r3 9db8: f004 0201 and.w r2, r4, #1 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9dbc: eb04 73d4 add.w r3, r4, r4, lsr #31 sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9dc0: f8bd 1044 ldrh.w r1, [sp, #68] ; 0x44 9dc4: 9209 str r2, [sp, #36] ; 0x24 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9dc6: f3c3 034f ubfx r3, r3, #1, #16 9dca: f064 0201 orn r2, r4, #1 sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9dce: f8bd 0040 ldrh.w r0, [sp, #64] ; 0x40 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9dd2: 441a add r2, r3 9dd4: 443a add r2, r7 sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9dd6: 43c9 mvns r1, r1 9dd8: 4401 add r1, r0 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9dda: b292 uxth r2, r2 9ddc: f8ad 207c strh.w r2, [sp, #124] ; 0x7c sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9de0: 440a add r2, r1 9de2: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9de6: f8bd 2046 ldrh.w r2, [sp, #70] ; 0x46 9dea: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42 sh_area.y1 = sw / 2 + 1; 9dee: 3301 adds r3, #1 9df0: 3201 adds r2, #1 9df2: 1a52 subs r2, r2, r1 9df4: b29b uxth r3, r3 9df6: f8ad 307a strh.w r3, [sp, #122] ; 0x7a sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); 9dfa: 4413 add r3, r2 int32_t size = sw_ori + r; 9dfc: 193e adds r6, r7, r4 lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); 9dfe: 463a mov r2, r7 sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); 9e00: f8ad 307e strh.w r3, [sp, #126] ; 0x7e lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); 9e04: 4f31 ldr r7, [pc, #196] ; (9ecc ) 9e06: 2300 movs r3, #0 9e08: a91e add r1, sp, #120 ; 0x78 9e0a: a825 add r0, sp, #148 ; 0x94 9e0c: 47b8 blx r7 if(sw_ori == 1) sw = 1; 9e0e: 2c01 cmp r4, #1 lv_opa_t * mask_line = _lv_mem_buf_get(size); 9e10: 4630 mov r0, r6 else sw = sw_ori >> 1; 9e12: bf18 it ne 9e14: 1064 asrne r4, r4, #1 lv_opa_t * mask_line = _lv_mem_buf_get(size); 9e16: 47a8 blx r5 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); 9e18: 0073 lsls r3, r6, #1 9e1a: 9308 str r3, [sp, #32] sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9e1c: 9b05 ldr r3, [sp, #20] 9e1e: 9306 str r3, [sp, #24] lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); 9e20: b233 sxth r3, r6 9e22: ee08 3a10 vmov s16, r3 lv_opa_t * mask_line = _lv_mem_buf_get(size); 9e26: 4607 mov r7, r0 for(y = 0; y < size; y++) { 9e28: f04f 0b00 mov.w fp, #0 9e2c: 455e cmp r6, fp 9e2e: dc09 bgt.n 9e44 _lv_mem_buf_release(mask_line); 9e30: 4b27 ldr r3, [pc, #156] ; (9ed0 ) 9e32: 4638 mov r0, r7 9e34: 4798 blx r3 if(sw == 1) { 9e36: 2c01 cmp r4, #1 for(x = 0; x < size * size; x++) { 9e38: fb06 f506 mul.w r5, r6, r6 if(sw == 1) { 9e3c: f040 819d bne.w a17a for(i = 0; i < size * size; i++) { 9e40: 2300 movs r3, #0 9e42: e052 b.n 9eea _lv_memset_ff(mask_line, size); 9e44: 4b23 ldr r3, [pc, #140] ; (9ed4 ) 9e46: 4631 mov r1, r6 9e48: 4638 mov r0, r7 9e4a: 4798 blx r3 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); 9e4c: ab25 add r3, sp, #148 ; 0x94 9e4e: 9300 str r3, [sp, #0] 9e50: 9d25 ldr r5, [sp, #148] ; 0x94 9e52: ee18 3a10 vmov r3, s16 9e56: fa0f f28b sxth.w r2, fp 9e5a: 2100 movs r1, #0 9e5c: 4638 mov r0, r7 9e5e: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 9e60: b950 cbnz r0, 9e78 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); 9e62: 9908 ldr r1, [sp, #32] 9e64: 9806 ldr r0, [sp, #24] 9e66: 4b1c ldr r3, [pc, #112] ; (9ed8 ) 9e68: 4798 blx r3 sh_ups_tmp_buf += size; 9e6a: 9a06 ldr r2, [sp, #24] 9e6c: 9b08 ldr r3, [sp, #32] 9e6e: 441a add r2, r3 9e70: 9206 str r2, [sp, #24] for(y = 0; y < size; y++) { 9e72: f10b 0b01 add.w fp, fp, #1 9e76: e7d9 b.n 9e2c sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw; 9e78: 783a ldrb r2, [r7, #0] 9e7a: 9b06 ldr r3, [sp, #24] 9e7c: 9806 ldr r0, [sp, #24] 9e7e: 0192 lsls r2, r2, #6 9e80: fb92 f2f4 sdiv r2, r2, r4 9e84: f823 2b02 strh.w r2, [r3], #2 for(i = 1; i < size; i++) { 9e88: 9a08 ldr r2, [sp, #32] 9e8a: 4639 mov r1, r7 9e8c: 1810 adds r0, r2, r0 9e8e: 4298 cmp r0, r3 9e90: d0eb beq.n 9e6a if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; 9e92: 468c mov ip, r1 9e94: f811 2f01 ldrb.w r2, [r1, #1]! 9e98: f89c c000 ldrb.w ip, [ip] 9e9c: 4594 cmp ip, r2 9e9e: bf0c ite eq 9ea0: f833 2c02 ldrheq.w r2, [r3, #-2] else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; 9ea4: 0192 lslne r2, r2, #6 9ea6: f103 0302 add.w r3, r3, #2 9eaa: bf18 it ne 9eac: fb92 f2f4 sdivne r2, r2, r4 9eb0: f823 2c02 strh.w r2, [r3, #-2] for(i = 1; i < size; i++) { 9eb4: e7eb b.n 9e8e 9eb6: bf00 nop 9eb8: 00004fdd .word 0x00004fdd 9ebc: 0000da25 .word 0x0000da25 9ec0: 0000ded1 .word 0x0000ded1 9ec4: 0000eefd .word 0x0000eefd 9ec8: 00009ba1 .word 0x00009ba1 9ecc: 00009925 .word 0x00009925 9ed0: 0000ebb1 .word 0x0000ebb1 9ed4: 0000f0bd .word 0x0000f0bd 9ed8: 0000f061 .word 0x0000f061 res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT); 9edc: 9a05 ldr r2, [sp, #20] 9ede: 9905 ldr r1, [sp, #20] 9ee0: f832 2013 ldrh.w r2, [r2, r3, lsl #1] 9ee4: 0992 lsrs r2, r2, #6 9ee6: 54ca strb r2, [r1, r3] for(i = 0; i < size * size; i++) { 9ee8: 3301 adds r3, #1 9eea: 42ab cmp r3, r5 9eec: d1f6 bne.n 9edc 9eee: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2; 9ef2: f8bd 204a ldrh.w r2, [sp, #74] ; 0x4a 9ef6: 3301 adds r3, #1 9ef8: 1a9b subs r3, r3, r2 9efa: f3c3 31c0 ubfx r1, r3, #15, #1 9efe: fa01 f383 sxtah r3, r1, r3 9f02: eb02 0363 add.w r3, r2, r3, asr #1 9f06: b29a uxth r2, r3 9f08: b21b sxth r3, r3 9f0a: 9308 str r3, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9f0c: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c 9f10: 920a str r2, [sp, #40] ; 0x28 lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; 9f12: f8bd 2048 ldrh.w r2, [sp, #72] ; 0x48 9f16: 3301 adds r3, #1 9f18: 1a9b subs r3, r3, r2 9f1a: f3c3 31c0 ubfx r1, r3, #15, #1 9f1e: fa01 f383 sxtah r3, r1, r3 9f22: eb02 0363 add.w r3, r2, r3, asr #1 9f26: b29a uxth r2, r3 9f28: b21b sxth r3, r3 9f2a: 9309 str r3, [sp, #36] ; 0x24 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9f2c: 4bad ldr r3, [pc, #692] ; (a1e4 ) lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; 9f2e: 920b str r2, [sp, #44] ; 0x2c if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9f30: 4798 blx r3 9f32: 2800 cmp r0, #0 9f34: f040 814f bne.w a1d6 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; 9f38: f9b9 5022 ldrsh.w r5, [r9, #34] ; 0x22 9f3c: 2d00 cmp r5, #0 9f3e: f040 814c bne.w a1da 9f42: f9b9 3024 ldrsh.w r3, [r9, #36] ; 0x24 9f46: 2b00 cmp r3, #0 9f48: f040 8149 bne.w a1de else if(dsc->shadow_spread != 0) simple_mode = false; 9f4c: f9b9 5026 ldrsh.w r5, [r9, #38] ; 0x26 9f50: fab5 f385 clz r3, r5 9f54: 095b lsrs r3, r3, #5 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9f56: 9306 str r3, [sp, #24] 9f58: f8bd 004c ldrh.w r0, [sp, #76] ; 0x4c 9f5c: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); 9f60: 4da1 ldr r5, [pc, #644] ; (a1e8 ) 9f62: 3001 adds r0, #1 9f64: 1ac0 subs r0, r0, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); 9f66: b200 sxth r0, r0 9f68: 4ba0 ldr r3, [pc, #640] ; (a1ec ) 9f6a: 4798 blx r3 lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); 9f6c: ee18 2a90 vmov r2, s17 9f70: 2301 movs r3, #1 9f72: a916 add r1, sp, #88 ; 0x58 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); 9f74: ee08 0a10 vmov s16, r0 lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); 9f78: a825 add r0, sp, #148 ; 0x94 9f7a: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); 9f7c: 4b9c ldr r3, [pc, #624] ; (a1f0 ) 9f7e: 2100 movs r1, #0 9f80: a825 add r0, sp, #148 ; 0x94 9f82: 4798 blx r3 a.x2 = sh_area.x2; 9f84: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c 9f88: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.x1 = a.x2 - corner_size + 1; 9f8c: fa1f fb8a uxth.w fp, sl 9f90: 3301 adds r3, #1 9f92: eba3 030b sub.w r3, r3, fp 9f96: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.y1 = sh_area.y1; 9f9a: f9bd 304a ldrsh.w r3, [sp, #74] ; 0x4a 9f9e: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = a.y1 + corner_size - 1; 9fa2: 3b01 subs r3, #1 9fa4: 445b add r3, fp int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); 9fa6: ee08 0a90 vmov s17, r0 a.y2 = a.y1 + corner_size - 1; 9faa: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 bool has_com = _lv_area_intersect(&ca, &a, clip); 9fae: 4642 mov r2, r8 9fb0: 4b90 ldr r3, [pc, #576] ; (a1f4 ) 9fb2: a918 add r1, sp, #96 ; 0x60 9fb4: a81a add r0, sp, #104 ; 0x68 9fb6: 4798 blx r3 if(has_com) { 9fb8: 2800 cmp r0, #0 9fba: d038 beq.n a02e if(ca.y2 > h_half) ca.y2 = h_half; 9fbc: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e 9fc0: 9a08 ldr r2, [sp, #32] 9fc2: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c 9fc6: 4293 cmp r3, r2 9fc8: bfc4 itt gt 9fca: 4613 movgt r3, r2 9fcc: f8ad 306e strhgt.w r3, [sp, #110] ; 0x6e if(ca.x1 <= w_half) ca.x1 = w_half + 1; 9fd0: 9a09 ldr r2, [sp, #36] ; 0x24 9fd2: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 9fd6: 4293 cmp r3, r2 9fd8: bfde ittt le 9fda: 9b0b ldrle r3, [sp, #44] ; 0x2c 9fdc: 3301 addle r3, #1 9fde: f8ad 3068 strhle.w r3, [sp, #104] ; 0x68 9fe2: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 9fe6: 3601 adds r6, #1 9fe8: 1b76 subs r6, r6, r5 9fea: b236 sxth r6, r6 if(w > 0) { 9fec: 2e00 cmp r6, #0 9fee: dd1e ble.n a02e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9ff0: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e 9ff4: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a 9ff8: 3301 adds r3, #1 9ffa: 1a9b subs r3, r3, r2 9ffc: b21b sxth r3, r3 9ffe: 930c str r3, [sp, #48] ; 0x30 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a000: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 a004: 1ad2 subs r2, r2, r3 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a006: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 a00a: 1aed subs r5, r5, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a00c: 9b05 ldr r3, [sp, #20] a00e: fb0a 5502 mla r5, sl, r2, r5 a012: 441d add r5, r3 lv_area_copy(&fa, &ca); a014: a91a add r1, sp, #104 ; 0x68 a016: 4b78 ldr r3, [pc, #480] ; (a1f8 ) a018: a81e add r0, sp, #120 ; 0x78 a01a: 4798 blx r3 fa.y2 = fa.y1; a01c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a020: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a024: 2700 movs r7, #0 a026: 9b0c ldr r3, [sp, #48] ; 0x30 a028: 429f cmp r7, r3 a02a: f2c0 80e9 blt.w a200 a.x2 = sh_area.x2; a02e: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c a.y1 = sh_area.y2 - corner_size + 1; a032: f9bd 204e ldrsh.w r2, [sp, #78] ; 0x4e a.x2 = sh_area.x2; a036: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.x1 = a.x2 - corner_size + 1; a03a: 3301 adds r3, #1 a03c: eba3 030b sub.w r3, r3, fp a040: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.y1 = sh_area.y2 - corner_size + 1; a044: 1c53 adds r3, r2, #1 a046: eba3 030b sub.w r3, r3, fp a04a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2; a04e: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a052: 4b68 ldr r3, [pc, #416] ; (a1f4 ) a054: 4642 mov r2, r8 a056: a918 add r1, sp, #96 ; 0x60 a058: a81a add r0, sp, #104 ; 0x68 a05a: 4798 blx r3 if(has_com) { a05c: 2800 cmp r0, #0 a05e: d03a beq.n a0d6 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a060: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a a064: 9a08 ldr r2, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a066: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a06a: 4293 cmp r3, r2 a06c: bfd8 it le a06e: 9b0a ldrle r3, [sp, #40] ; 0x28 if(ca.x1 <= w_half) ca.x1 = w_half + 1; a070: 9a09 ldr r2, [sp, #36] ; 0x24 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a072: bfdc itt le a074: 3301 addle r3, #1 a076: f8ad 306a strhle.w r3, [sp, #106] ; 0x6a if(ca.x1 <= w_half) ca.x1 = w_half + 1; a07a: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 a07e: 4293 cmp r3, r2 a080: bfde ittt le a082: 9b0b ldrle r3, [sp, #44] ; 0x2c a084: 3301 addle r3, #1 a086: f8ad 3068 strhle.w r3, [sp, #104] ; 0x68 a08a: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 a08e: 3601 adds r6, #1 a090: 1b76 subs r6, r6, r5 a092: b236 sxth r6, r6 if(w > 0) { a094: 2e00 cmp r6, #0 a096: dd1e ble.n a0d6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a098: f9bd 106e ldrsh.w r1, [sp, #110] ; 0x6e a09c: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a a0a0: 1c4a adds r2, r1, #1 a0a2: 1ad2 subs r2, r2, r3 a0a4: b213 sxth r3, r2 a0a6: 930b str r3, [sp, #44] ; 0x2c sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a0a8: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a0ac: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a0b0: 1aad subs r5, r5, r2 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a0b2: 1a5b subs r3, r3, r1 a0b4: fb0a 5503 mla r5, sl, r3, r5 a0b8: 9b05 ldr r3, [sp, #20] lv_area_copy(&fa, &ca); a0ba: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a0bc: 441d add r5, r3 lv_area_copy(&fa, &ca); a0be: a81e add r0, sp, #120 ; 0x78 a0c0: 4b4d ldr r3, [pc, #308] ; (a1f8 ) a0c2: 4798 blx r3 fa.y1 = fa.y2; /*Fill from bottom to top*/ a0c4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a0c8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a0cc: 2700 movs r7, #0 a0ce: 9b0b ldr r3, [sp, #44] ; 0x2c a0d0: 429f cmp r7, r3 a0d2: f2c0 80c2 blt.w a25a a.x2 = sh_area.x2; a0d6: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c a0da: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.x1 = a.x2 - corner_size + 1; a0de: 3301 adds r3, #1 a0e0: eba3 030b sub.w r3, r3, fp a0e4: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.y1 = sh_area.y1 + corner_size; a0e8: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a a0ec: 445b add r3, fp a0ee: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2 - corner_size; a0f2: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e a0f6: eba3 030b sub.w r3, r3, fp a0fa: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a0fe: 4642 mov r2, r8 a100: 4b3c ldr r3, [pc, #240] ; (a1f4 ) a102: a918 add r1, sp, #96 ; 0x60 a104: a81a add r0, sp, #104 ; 0x68 a106: 4798 blx r3 if(has_com) { a108: b390 cbz r0, a170 if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2); a10a: 9b06 ldr r3, [sp, #24] a10c: b14b cbz r3, a122 a10e: 9b04 ldr r3, [sp, #16] a110: f9bd 2068 ldrsh.w r2, [sp, #104] ; 0x68 a114: f9b3 3004 ldrsh.w r3, [r3, #4] a118: 4293 cmp r3, r2 a11a: bfb8 it lt a11c: 4613 movlt r3, r2 a11e: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a122: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a126: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 a12a: 3501 adds r5, #1 a12c: 1aed subs r5, r5, r3 a12e: b22d sxth r5, r5 if(w > 0) { a130: 2d00 cmp r5, #0 a132: dd1d ble.n a170 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a134: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e a138: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a a13c: 3201 adds r2, #1 a13e: 1a52 subs r2, r2, r1 a140: b212 sxth r2, r2 a142: 920b str r2, [sp, #44] ; 0x2c sh_buf_tmp += ca.x1 - a.x1; a144: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); a148: f10a 36ff add.w r6, sl, #4294967295 ; 0xffffffff sh_buf_tmp += ca.x1 - a.x1; a14c: 1a9b subs r3, r3, r2 a14e: fb0a 3606 mla r6, sl, r6, r3 a152: 9b05 ldr r3, [sp, #20] lv_area_copy(&fa, &ca); a154: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += ca.x1 - a.x1; a156: 441e add r6, r3 lv_area_copy(&fa, &ca); a158: a81e add r0, sp, #120 ; 0x78 a15a: 4b27 ldr r3, [pc, #156] ; (a1f8 ) a15c: 4798 blx r3 fa.y2 = fa.y1; a15e: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a162: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a166: 2700 movs r7, #0 a168: 9b0b ldr r3, [sp, #44] ; 0x2c a16a: 429f cmp r7, r3 a16c: f2c0 80a2 blt.w a2b4 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); a170: 9a05 ldr r2, [sp, #20] for(x = 0; x < corner_size / 2; x++) { a172: ea4f 066a mov.w r6, sl, asr #1 a176: 2000 movs r0, #0 a178: e0d7 b.n a32a shadow_blur_corner(size, sw, sh_buf); a17a: b230 sxth r0, r6 a17c: 4621 mov r1, r4 a17e: 9a05 ldr r2, [sp, #20] a180: 4f1e ldr r7, [pc, #120] ; (a1fc ) a182: 9006 str r0, [sp, #24] a184: 47b8 blx r7 sw += sw_ori & 1; a186: 9909 ldr r1, [sp, #36] ; 0x24 a188: 4421 add r1, r4 if(sw > 1) { a18a: 2901 cmp r1, #1 a18c: dd0c ble.n a1a8 sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; a18e: 9b05 ldr r3, [sp, #20] a190: 9a05 ldr r2, [sp, #20] a192: 881b ldrh r3, [r3, #0] for(i = 1; i < (uint32_t) size * size; i++) { a194: 9806 ldr r0, [sp, #24] sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; a196: 019b lsls r3, r3, #6 for(i = 1; i < (uint32_t) size * size; i++) { a198: 2401 movs r4, #1 sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; a19a: fbb3 f3f1 udiv r3, r3, r1 a19e: 8013 strh r3, [r2, #0] for(i = 1; i < (uint32_t) size * size; i++) { a1a0: 42ac cmp r4, r5 a1a2: d303 bcc.n a1ac shadow_blur_corner(size, sw, sh_buf); a1a4: 9a05 ldr r2, [sp, #20] a1a6: 47b8 blx r7 for(i = 1; i < (uint32_t) size * size; i++) { a1a8: 2300 movs r3, #0 a1aa: e011 b.n a1d0 if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1]; a1ac: 8853 ldrh r3, [r2, #2] a1ae: f832 6b02 ldrh.w r6, [r2], #2 a1b2: 42b3 cmp r3, r6 else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; a1b4: bf1e ittt ne a1b6: 019e lslne r6, r3, #6 a1b8: fbb6 f6f1 udivne r6, r6, r1 a1bc: b2b6 uxthne r6, r6 a1be: 8016 strh r6, [r2, #0] for(i = 1; i < (uint32_t) size * size; i++) { a1c0: 3401 adds r4, #1 a1c2: e7ed b.n a1a0 res_buf[x] = sh_buf[x]; a1c4: 9a05 ldr r2, [sp, #20] a1c6: 9905 ldr r1, [sp, #20] a1c8: f832 2013 ldrh.w r2, [r2, r3, lsl #1] a1cc: 54ca strb r2, [r1, r3] for(x = 0; x < size * size; x++) { a1ce: 3301 adds r3, #1 a1d0: 42ab cmp r3, r5 a1d2: d1f7 bne.n a1c4 a1d4: e68b b.n 9eee if(lv_draw_mask_get_cnt() > 0) simple_mode = false; a1d6: 2300 movs r3, #0 a1d8: e6bd b.n 9f56 a1da: 9006 str r0, [sp, #24] a1dc: e6bc b.n 9f58 a1de: 9506 str r5, [sp, #24] a1e0: e6ba b.n 9f58 a1e2: bf00 nop a1e4: 000097fd .word 0x000097fd a1e8: 00009925 .word 0x00009925 a1ec: 0000eefd .word 0x0000eefd a1f0: 00009719 .word 0x00009719 a1f4: 0000ded1 .word 0x0000ded1 a1f8: 00009ba1 .word 0x00009ba1 a1fc: 00009a15 .word 0x00009a15 _lv_memcpy(mask_buf, sh_buf_tmp, w); a200: 4629 mov r1, r5 a202: 4b4d ldr r3, [pc, #308] ; (a338 ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a204: 4c4d ldr r4, [pc, #308] ; (a33c ) _lv_memcpy(mask_buf, sh_buf_tmp, w); a206: 4632 mov r2, r6 a208: ee18 0a10 vmov r0, s16 a20c: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a20e: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a a212: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 a216: 4633 mov r3, r6 a218: ee18 0a10 vmov r0, s16 a21c: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a21e: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 a222: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a224: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a226: 9b07 ldr r3, [sp, #28] a228: 4c45 ldr r4, [pc, #276] ; (a340 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a22a: bf08 it eq a22c: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a22e: e9cd 0300 strd r0, r3, [sp] a232: a91e add r1, sp, #120 ; 0x78 a234: ee18 3a10 vmov r3, s16 a238: f8b9 201e ldrh.w r2, [r9, #30] a23c: 4640 mov r0, r8 a23e: 47a0 blx r4 fa.y1++; a240: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a244: 3301 adds r3, #1 a246: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; a24a: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a24e: 3301 adds r3, #1 a250: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; a254: 4455 add r5, sl for(y = 0; y < h; y++) { a256: 3701 adds r7, #1 a258: e6e5 b.n a026 _lv_memcpy(mask_buf, sh_buf_tmp, w); a25a: 4629 mov r1, r5 a25c: 4b36 ldr r3, [pc, #216] ; (a338 ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a25e: 4c37 ldr r4, [pc, #220] ; (a33c ) _lv_memcpy(mask_buf, sh_buf_tmp, w); a260: 4632 mov r2, r6 a262: ee18 0a10 vmov r0, s16 a266: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a268: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a a26c: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 a270: 4633 mov r3, r6 a272: ee18 0a10 vmov r0, s16 a276: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a278: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 a27c: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a27e: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a280: 9b07 ldr r3, [sp, #28] a282: 4c2f ldr r4, [pc, #188] ; (a340 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a284: bf08 it eq a286: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a288: e9cd 0300 strd r0, r3, [sp] a28c: a91e add r1, sp, #120 ; 0x78 a28e: ee18 3a10 vmov r3, s16 a292: f8b9 201e ldrh.w r2, [r9, #30] a296: 4640 mov r0, r8 a298: 47a0 blx r4 fa.y1--; a29a: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a29e: 3b01 subs r3, #1 a2a0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2--; a2a4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a2a8: 3b01 subs r3, #1 a2aa: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; a2ae: 4455 add r5, sl for(y = 0; y < h; y++) { a2b0: 3701 adds r7, #1 a2b2: e70c b.n a0ce _lv_memcpy(mask_buf, sh_buf_tmp, w); a2b4: 4b20 ldr r3, [pc, #128] ; (a338 ) a2b6: ee18 0a10 vmov r0, s16 a2ba: 462a mov r2, r5 a2bc: 4631 mov r1, r6 a2be: 4798 blx r3 if(simple_mode) { a2c0: 9b06 ldr r3, [sp, #24] a2c2: b953 cbnz r3, a2da mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a2c4: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a a2c8: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 a2cc: 4c1b ldr r4, [pc, #108] ; (a33c ) a2ce: ee18 0a10 vmov r0, s16 a2d2: 462b mov r3, r5 a2d4: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a2d6: 2801 cmp r0, #1 a2d8: d100 bne.n a2dc a2da: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, a2dc: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 a2e0: 9302 str r3, [sp, #8] a2e2: f899 3028 ldrb.w r3, [r9, #40] ; 0x28 a2e6: 4c16 ldr r4, [pc, #88] ; (a340 ) a2e8: e9cd 0300 strd r0, r3, [sp] a2ec: a91e add r1, sp, #120 ; 0x78 a2ee: ee18 3a10 vmov r3, s16 a2f2: f8b9 201e ldrh.w r2, [r9, #30] a2f6: 4640 mov r0, r8 a2f8: 47a0 blx r4 fa.y1++; a2fa: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a2fe: 3301 adds r3, #1 a300: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; a304: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a308: 3301 adds r3, #1 a30a: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a30e: 3701 adds r7, #1 a310: e72a b.n a168 lv_opa_t tmp = sh_buf_tmp[x]; a312: f811 7f01 ldrb.w r7, [r1, #1]! sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1]; a316: f813 cd01 ldrb.w ip, [r3, #-1]! a31a: f881 c000 strb.w ip, [r1] sh_buf_tmp[corner_size - x - 1] = tmp; a31e: 701f strb r7, [r3, #0] for(x = 0; x < corner_size / 2; x++) { a320: 1aef subs r7, r5, r3 a322: 42be cmp r6, r7 a324: dcf5 bgt.n a312 sh_buf_tmp += corner_size; a326: 4452 add r2, sl for(y = 0; y < corner_size; y++) { a328: 3001 adds r0, #1 a32a: 4582 cmp sl, r0 a32c: dd0a ble.n a344 a32e: eb02 050a add.w r5, r2, sl a332: 1e51 subs r1, r2, #1 a334: 462b mov r3, r5 a336: e7f3 b.n a320 a338: 0000ec79 .word 0x0000ec79 a33c: 00009769 .word 0x00009769 a340: 000061d9 .word 0x000061d9 a.x1 = sh_area.x1; a344: f9bd 3048 ldrsh.w r3, [sp, #72] ; 0x48 a348: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = a.x1 + corner_size - 1; a34c: 3b01 subs r3, #1 a34e: 445b add r3, fp a350: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1; a354: f9bd 304a ldrsh.w r3, [sp, #74] ; 0x4a a358: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = a.y1 + corner_size - 1; a35c: 3b01 subs r3, #1 a35e: 445b add r3, fp a360: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a364: 4642 mov r2, r8 a366: 4bb9 ldr r3, [pc, #740] ; (a64c ) a368: a918 add r1, sp, #96 ; 0x60 a36a: a81a add r0, sp, #104 ; 0x68 a36c: 4798 blx r3 if(has_com) { a36e: 2800 cmp r0, #0 a370: d037 beq.n a3e2 if(ca.y2 > h_half) ca.y2 = h_half; a372: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e a376: 9a08 ldr r2, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a378: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 a37c: 4293 cmp r3, r2 a37e: bfc4 itt gt a380: 4613 movgt r3, r2 a382: f8ad 306e strhgt.w r3, [sp, #110] ; 0x6e if(ca.x2 > w_half) ca.x2 = w_half; a386: 9a09 ldr r2, [sp, #36] ; 0x24 a388: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c a38c: 4293 cmp r3, r2 a38e: bfc4 itt gt a390: 4613 movgt r3, r2 a392: f8ad 306c strhgt.w r3, [sp, #108] ; 0x6c a396: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a39a: 3601 adds r6, #1 a39c: 1b76 subs r6, r6, r5 a39e: b236 sxth r6, r6 if(w > 0) { a3a0: 2e00 cmp r6, #0 a3a2: dd1e ble.n a3e2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a3a4: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e a3a8: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a a3ac: 3301 adds r3, #1 a3ae: 1a9b subs r3, r3, r2 a3b0: b21b sxth r3, r3 a3b2: 930b str r3, [sp, #44] ; 0x2c sh_buf_tmp += corner_size * (ca.y1 - a.y1); a3b4: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 a3b8: 1ad2 subs r2, r2, r3 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a3ba: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 a3be: 1aed subs r5, r5, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a3c0: 9b05 ldr r3, [sp, #20] a3c2: fb0a 5502 mla r5, sl, r2, r5 a3c6: 441d add r5, r3 lv_area_copy(&fa, &ca); a3c8: a91a add r1, sp, #104 ; 0x68 a3ca: 4ba1 ldr r3, [pc, #644] ; (a650 ) a3cc: a81e add r0, sp, #120 ; 0x78 a3ce: 4798 blx r3 fa.y2 = fa.y1; a3d0: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a3d4: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a3d8: 2700 movs r7, #0 a3da: 9b0b ldr r3, [sp, #44] ; 0x2c a3dc: 429f cmp r7, r3 a3de: f2c0 85a6 blt.w af2e a.x1 = sh_area.x1; a3e2: f9bd 3048 ldrsh.w r3, [sp, #72] ; 0x48 a.y1 = sh_area.y2 - corner_size + 1; a3e6: f9bd 204e ldrsh.w r2, [sp, #78] ; 0x4e a.x1 = sh_area.x1; a3ea: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = a.x1 + corner_size - 1; a3ee: 3b01 subs r3, #1 a3f0: 445b add r3, fp a3f2: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y2 - corner_size + 1; a3f6: 1c53 adds r3, r2, #1 a3f8: eba3 030b sub.w r3, r3, fp a3fc: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2; a400: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a404: 4b91 ldr r3, [pc, #580] ; (a64c ) a406: 4642 mov r2, r8 a408: a918 add r1, sp, #96 ; 0x60 a40a: a81a add r0, sp, #104 ; 0x68 a40c: 4798 blx r3 if(has_com) { a40e: 2800 cmp r0, #0 a410: d039 beq.n a486 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a412: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a a416: 9a08 ldr r2, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a418: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 a41c: 4293 cmp r3, r2 a41e: bfd8 it le a420: 9b0a ldrle r3, [sp, #40] ; 0x28 if(ca.x2 > w_half) ca.x2 = w_half; a422: 9a09 ldr r2, [sp, #36] ; 0x24 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a424: bfdc itt le a426: 3301 addle r3, #1 a428: f8ad 306a strhle.w r3, [sp, #106] ; 0x6a if(ca.x2 > w_half) ca.x2 = w_half; a42c: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c a430: 4293 cmp r3, r2 a432: bfc4 itt gt a434: 4613 movgt r3, r2 a436: f8ad 306c strhgt.w r3, [sp, #108] ; 0x6c a43a: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a43e: 3601 adds r6, #1 a440: 1b76 subs r6, r6, r5 a442: b236 sxth r6, r6 if(w > 0) { a444: 2e00 cmp r6, #0 a446: dd1e ble.n a486 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a448: f9bd 106e ldrsh.w r1, [sp, #110] ; 0x6e a44c: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a a450: 1c4a adds r2, r1, #1 a452: 1ad2 subs r2, r2, r3 a454: b213 sxth r3, r2 a456: 9308 str r3, [sp, #32] sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a458: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a45c: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a460: 1aad subs r5, r5, r2 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a462: 1a5b subs r3, r3, r1 a464: fb0a 5503 mla r5, sl, r3, r5 a468: 9b05 ldr r3, [sp, #20] lv_area_copy(&fa, &ca); a46a: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a46c: 441d add r5, r3 lv_area_copy(&fa, &ca); a46e: a81e add r0, sp, #120 ; 0x78 a470: 4b77 ldr r3, [pc, #476] ; (a650 ) a472: 4798 blx r3 fa.y1 = fa.y2; /*Fill from bottom to top*/ a474: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a478: f8ad 307a strh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a47c: 2700 movs r7, #0 a47e: 9b08 ldr r3, [sp, #32] a480: 429f cmp r7, r3 a482: f2c0 8582 blt.w af8a a.x1 = sh_area.x1; a486: f9bd 3048 ldrsh.w r3, [sp, #72] ; 0x48 a48a: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = a.x1 + corner_size - 1; a48e: 3b01 subs r3, #1 a490: 445b add r3, fp a492: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1 + corner_size; a496: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a a49a: 445b add r3, fp a49c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2 - corner_size; a4a0: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e a4a4: eba3 030b sub.w r3, r3, fp a4a8: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a4ac: 4642 mov r2, r8 a4ae: 4b67 ldr r3, [pc, #412] ; (a64c ) a4b0: a918 add r1, sp, #96 ; 0x60 a4b2: a81a add r0, sp, #104 ; 0x68 a4b4: 4798 blx r3 if(has_com) { a4b6: b390 cbz r0, a51e if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2); a4b8: 9b06 ldr r3, [sp, #24] a4ba: b14b cbz r3, a4d0 a4bc: 9b04 ldr r3, [sp, #16] a4be: f9bd 206c ldrsh.w r2, [sp, #108] ; 0x6c a4c2: f9b3 3000 ldrsh.w r3, [r3] a4c6: 4293 cmp r3, r2 a4c8: bfa8 it ge a4ca: 4613 movge r3, r2 a4cc: f8ad 306c strh.w r3, [sp, #108] ; 0x6c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a4d0: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a4d4: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 a4d8: 3501 adds r5, #1 a4da: 1aed subs r5, r5, r3 a4dc: b22d sxth r5, r5 if(w > 0) { a4de: 2d00 cmp r5, #0 a4e0: dd1d ble.n a51e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a4e2: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e a4e6: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a a4ea: 3201 adds r2, #1 a4ec: 1a52 subs r2, r2, r1 a4ee: b212 sxth r2, r2 a4f0: 9208 str r2, [sp, #32] sh_buf_tmp += ca.x1 - a.x1; a4f2: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); a4f6: f10a 36ff add.w r6, sl, #4294967295 ; 0xffffffff sh_buf_tmp += ca.x1 - a.x1; a4fa: 1a9b subs r3, r3, r2 a4fc: fb0a 3606 mla r6, sl, r6, r3 a500: 9b05 ldr r3, [sp, #20] lv_area_copy(&fa, &ca); a502: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += ca.x1 - a.x1; a504: 441e add r6, r3 lv_area_copy(&fa, &ca); a506: a81e add r0, sp, #120 ; 0x78 a508: 4b51 ldr r3, [pc, #324] ; (a650 ) a50a: 4798 blx r3 fa.y2 = fa.y1; a50c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a510: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a514: 2700 movs r7, #0 a516: 9b08 ldr r3, [sp, #32] a518: 429f cmp r7, r3 a51a: f2c0 8564 blt.w afe6 a.x1 = sh_area.x1 + corner_size; a51e: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 a522: 445b add r3, fp a524: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = sh_area.x2 - corner_size; a528: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c a52c: eba3 030b sub.w r3, r3, fp a530: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1; a534: f9bd 304a ldrsh.w r3, [sp, #74] ; 0x4a a538: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y1 + corner_size - 1; a53c: 3b01 subs r3, #1 a53e: 445b add r3, fp a540: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a544: 4642 mov r2, r8 a546: 4b41 ldr r3, [pc, #260] ; (a64c ) a548: a918 add r1, sp, #96 ; 0x60 a54a: a81a add r0, sp, #104 ; 0x68 a54c: 4798 blx r3 if(has_com) { a54e: b380 cbz r0, a5b2 if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1); a550: 9b06 ldr r3, [sp, #24] a552: b14b cbz r3, a568 a554: 9b04 ldr r3, [sp, #16] a556: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e a55a: f9b3 3002 ldrsh.w r3, [r3, #2] a55e: 4293 cmp r3, r2 a560: bfa8 it ge a562: 4613 movge r3, r2 a564: f8ad 306e strh.w r3, [sp, #110] ; 0x6e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a568: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a56c: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a570: f9bd 606a ldrsh.w r6, [sp, #106] ; 0x6a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a574: 3501 adds r5, #1 a576: 1aed subs r5, r5, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a578: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e a57c: 3301 adds r3, #1 a57e: 1b9b subs r3, r3, r6 a580: b21b sxth r3, r3 a582: 9308 str r3, [sp, #32] sh_buf_tmp += corner_size * (ca.y1 - a.y1); a584: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 a588: 1af6 subs r6, r6, r3 sh_buf_tmp = sh_buf + corner_size - 1; a58a: f10a 33ff add.w r3, sl, #4294967295 ; 0xffffffff sh_buf_tmp += corner_size * (ca.y1 - a.y1); a58e: fb0a 3606 mla r6, sl, r6, r3 a592: 9b05 ldr r3, [sp, #20] lv_area_copy(&fa, &ca); a594: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a596: 441e add r6, r3 lv_area_copy(&fa, &ca); a598: a81e add r0, sp, #120 ; 0x78 a59a: 4b2d ldr r3, [pc, #180] ; (a650 ) a59c: 4798 blx r3 fa.y2 = fa.y1; a59e: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a5a2: f8ad 307e strh.w r3, [sp, #126] ; 0x7e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a5a6: b22d sxth r5, r5 for(y = 0; y < h; y++) { a5a8: 2700 movs r7, #0 a5aa: 9b08 ldr r3, [sp, #32] a5ac: 429f cmp r7, r3 a5ae: f2c0 8561 blt.w b074 a.x1 = sh_area.x1 + corner_size; a5b2: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 a.y1 = sh_area.y2 - corner_size + 1; a5b6: f9bd 204e ldrsh.w r2, [sp, #78] ; 0x4e a.y2 = sh_area.y2; a5ba: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 a.x1 = sh_area.x1 + corner_size; a5be: 445b add r3, fp a5c0: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = sh_area.x2 - corner_size; a5c4: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c a5c8: eba3 030b sub.w r3, r3, fp a5cc: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y2 - corner_size + 1; a5d0: 1c53 adds r3, r2, #1 a5d2: eba3 030b sub.w r3, r3, fp a5d6: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 has_com = _lv_area_intersect(&ca, &a, clip); a5da: 4642 mov r2, r8 a5dc: 4b1b ldr r3, [pc, #108] ; (a64c ) a5de: a918 add r1, sp, #96 ; 0x60 a5e0: a81a add r0, sp, #104 ; 0x68 a5e2: 4798 blx r3 if(has_com) { a5e4: 2800 cmp r0, #0 a5e6: d035 beq.n a654 if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2); a5e8: 9b06 ldr r3, [sp, #24] a5ea: b14b cbz r3, a600 a5ec: 9b04 ldr r3, [sp, #16] a5ee: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a a5f2: f9b3 3006 ldrsh.w r3, [r3, #6] a5f6: 4293 cmp r3, r2 a5f8: bfb8 it lt a5fa: 4613 movlt r3, r2 a5fc: f8ad 306a strh.w r3, [sp, #106] ; 0x6a a600: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a604: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a608: f9bd 6066 ldrsh.w r6, [sp, #102] ; 0x66 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a60c: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a610: 3501 adds r5, #1 a612: 1aed subs r5, r5, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a614: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e a618: 1c5a adds r2, r3, #1 a61a: 1af3 subs r3, r6, r3 sh_buf_tmp = sh_buf + corner_size - 1; a61c: f10a 36ff add.w r6, sl, #4294967295 ; 0xffffffff sh_buf_tmp += corner_size * (a.y2 - ca.y2); a620: fb0a 6603 mla r6, sl, r3, r6 a624: 9b05 ldr r3, [sp, #20] a626: 1a52 subs r2, r2, r1 a628: b212 sxth r2, r2 a62a: 441e add r6, r3 lv_area_copy(&fa, &ca); a62c: a91a add r1, sp, #104 ; 0x68 a62e: 4b08 ldr r3, [pc, #32] ; (a650 ) a630: 9208 str r2, [sp, #32] a632: a81e add r0, sp, #120 ; 0x78 a634: 4798 blx r3 fa.y1 = fa.y2; a636: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a63a: f8ad 307a strh.w r3, [sp, #122] ; 0x7a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a63e: b22d sxth r5, r5 for(y = 0; y < h; y++) { a640: 2700 movs r7, #0 a642: 9b08 ldr r3, [sp, #32] a644: 429f cmp r7, r3 a646: f2c0 854e blt.w b0e6 a64a: e003 b.n a654 a64c: 0000ded1 .word 0x0000ded1 a650: 00009ba1 .word 0x00009ba1 a.x1 = sh_area.x1 + corner_size; a654: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 a658: 445b add r3, fp a65a: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = sh_area.x2 - corner_size; a65e: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c a662: eba3 030b sub.w r3, r3, fp a666: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1 + corner_size; a66a: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a a66e: 445b add r3, fp a670: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2 - corner_size; a674: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e a678: eba3 0b0b sub.w fp, r3, fp a67c: f8ad b066 strh.w fp, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a680: 4bb9 ldr r3, [pc, #740] ; (a968 ) a682: 4642 mov r2, r8 a684: a918 add r1, sp, #96 ; 0x60 a686: a81a add r0, sp, #104 ; 0x68 a688: 4798 blx r3 if(has_com && simple_mode == false) { a68a: b1f8 cbz r0, a6cc a68c: 9b06 ldr r3, [sp, #24] a68e: b9eb cbnz r3, a6cc a690: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a694: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a698: f8bd 706e ldrh.w r7, [sp, #110] ; 0x6e _lv_memset(mask_buf, dsc->shadow_opa, w); a69c: f8df a30c ldr.w sl, [pc, #780] ; a9ac mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a6a0: f8df b30c ldr.w fp, [pc, #780] ; a9b0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a6a4: 3601 adds r6, #1 a6a6: 1af6 subs r6, r6, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a6a8: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a a6ac: 3701 adds r7, #1 a6ae: 1aff subs r7, r7, r3 lv_area_copy(&fa, &ca); a6b0: a91a add r1, sp, #104 ; 0x68 a6b2: 4bae ldr r3, [pc, #696] ; (a96c ) a6b4: a81e add r0, sp, #120 ; 0x78 a6b6: 4798 blx r3 fa.y2 = fa.y1; a6b8: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a6bc: 9d06 ldr r5, [sp, #24] fa.y2 = fa.y1; a6be: f8ad 307e strh.w r3, [sp, #126] ; 0x7e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a6c2: b236 sxth r6, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a6c4: b23f sxth r7, r7 for(y = 0; y < h; y++) { a6c6: 42bd cmp r5, r7 a6c8: f2c0 8546 blt.w b158 lv_draw_mask_remove_id(mask_rout_id); a6cc: 4ba8 ldr r3, [pc, #672] ; (a970 ) _lv_mem_buf_release(mask_buf); a6ce: 4ca9 ldr r4, [pc, #676] ; (a974 ) lv_draw_mask_remove_id(mask_rout_id); a6d0: ee18 0a90 vmov r0, s17 a6d4: 4798 blx r3 _lv_mem_buf_release(mask_buf); a6d6: ee18 0a10 vmov r0, s16 a6da: 47a0 blx r4 _lv_mem_buf_release(sh_buf); a6dc: 9805 ldr r0, [sp, #20] a6de: 47a0 blx r4 if(dsc->bg_opa <= LV_OPA_MIN) return; a6e0: f899 300c ldrb.w r3, [r9, #12] a6e4: 2b05 cmp r3, #5 a6e6: f240 80ab bls.w a840 lv_area_copy(&coords_bg, coords); a6ea: 4ba0 ldr r3, [pc, #640] ; (a96c ) a6ec: 9904 ldr r1, [sp, #16] a6ee: a816 add r0, sp, #88 ; 0x58 a6f0: 4798 blx r3 if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) { a6f2: f9b9 3010 ldrsh.w r3, [r9, #16] a6f6: 2b01 cmp r3, #1 a6f8: dd24 ble.n a744 a6fa: f899 3014 ldrb.w r3, [r9, #20] a6fe: 2bf9 cmp r3, #249 ; 0xf9 a700: d920 bls.n a744 a702: f9b9 3000 ldrsh.w r3, [r9] a706: b1eb cbz r3, a744 coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; a708: f8b9 3012 ldrh.w r3, [r9, #18] a70c: f8bd 1058 ldrh.w r1, [sp, #88] ; 0x58 a710: f3c3 0280 ubfx r2, r3, #2, #1 a714: 440a add r2, r1 coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; a716: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; a71a: f8ad 2058 strh.w r2, [sp, #88] ; 0x58 coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; a71e: f3c3 0240 ubfx r2, r3, #1, #1 a722: 440a add r2, r1 a724: f8ad 205a strh.w r2, [sp, #90] ; 0x5a coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; a728: f8bd 205c ldrh.w r2, [sp, #92] ; 0x5c a72c: f3c3 01c0 ubfx r1, r3, #3, #1 a730: 1a52 subs r2, r2, r1 a732: f8ad 205c strh.w r2, [sp, #92] ; 0x5c coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; a736: f8bd 205e ldrh.w r2, [sp, #94] ; 0x5e a73a: f003 0301 and.w r3, r3, #1 a73e: 1ad3 subs r3, r2, r3 a740: f8ad 305e strh.w r3, [sp, #94] ; 0x5e lv_opa_t opa = dsc->bg_opa; a744: f899 a00c ldrb.w sl, [r9, #12] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a748: 4b8b ldr r3, [pc, #556] ; (a978 ) if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; a74a: f1ba 0ffb cmp.w sl, #251 ; 0xfb a74e: bf28 it cs a750: f04f 0aff movcs.w sl, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a754: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a756: 4b89 ldr r3, [pc, #548] ; (a97c ) a758: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); a75a: 4b83 ldr r3, [pc, #524] ; (a968 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a75c: 9005 str r0, [sp, #20] is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); a75e: 4642 mov r2, r8 a760: a916 add r1, sp, #88 ; 0x58 a762: a818 add r0, sp, #96 ; 0x60 a764: 4798 blx r3 if(is_common == false) return; a766: 2800 cmp r0, #0 a768: d06a beq.n a840 draw_area.x1 -= disp_area->x1; a76a: 9b05 ldr r3, [sp, #20] a76c: f8bd 0060 ldrh.w r0, [sp, #96] ; 0x60 a770: 8a1a ldrh r2, [r3, #16] draw_area.y1 -= disp_area->y1; a772: f8bd 1062 ldrh.w r1, [sp, #98] ; 0x62 draw_area.x1 -= disp_area->x1; a776: 1a83 subs r3, r0, r2 a778: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 draw_area.y1 -= disp_area->y1; a77c: 9b05 ldr r3, [sp, #20] a77e: 8a5c ldrh r4, [r3, #18] draw_area.x2 -= disp_area->x1; a780: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 a784: 1a9a subs r2, r3, r2 a786: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a78a: f103 0b01 add.w fp, r3, #1 draw_area.y2 -= disp_area->y1; a78e: f8bd 2066 ldrh.w r2, [sp, #102] ; 0x66 a792: ebab 0b00 sub.w fp, fp, r0 draw_area.y1 -= disp_area->y1; a796: 1b09 subs r1, r1, r4 draw_area.y2 -= disp_area->y1; a798: 1b12 subs r2, r2, r4 a79a: fa0f f38b sxth.w r3, fp draw_area.y1 -= disp_area->y1; a79e: f8ad 1062 strh.w r1, [sp, #98] ; 0x62 draw_area.y2 -= disp_area->y1; a7a2: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a7a6: 4618 mov r0, r3 a7a8: ee08 3a10 vmov s16, r3 a7ac: 4b74 ldr r3, [pc, #464] ; (a980 ) a7ae: 4798 blx r3 uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); a7b0: 4b74 ldr r3, [pc, #464] ; (a984 ) lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a7b2: 4605 mov r5, r0 uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); a7b4: 4798 blx r3 a7b6: 900c str r0, [sp, #48] ; 0x30 a7b8: f8bd 3030 ldrh.w r3, [sp, #48] ; 0x30 a7bc: 930d str r3, [sp, #52] ; 0x34 if(other_mask_cnt) simple_mode = false; a7be: 2b00 cmp r3, #0 a7c0: f040 84f6 bne.w b1b0 else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false; a7c4: f899 3006 ldrb.w r3, [r9, #6] a7c8: 3b02 subs r3, #2 a7ca: bf18 it ne a7cc: 2301 movne r3, #1 a7ce: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a7d2: f8bd 405e ldrh.w r4, [sp, #94] ; 0x5e if(other_mask_cnt) simple_mode = false; a7d6: 9308 str r3, [sp, #32] a7d8: f8bd 205a ldrh.w r2, [sp, #90] ; 0x5a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a7dc: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 a7e0: 3601 adds r6, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a7e2: 3401 adds r4, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a7e4: 1af6 subs r6, r6, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a7e6: 1aa4 subs r4, r4, r2 int32_t coords_h = lv_area_get_height(&coords_bg); a7e8: b224 sxth r4, r4 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a7ea: b236 sxth r6, r6 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); a7ec: 42b4 cmp r4, r6 int32_t rout = dsc->radius; a7ee: f9b9 3000 ldrsh.w r3, [r9] int32_t short_side = LV_MATH_MIN(coords_w, coords_h); a7f2: bfa8 it ge a7f4: 4634 movge r4, r6 if(rout > short_side >> 1) rout = short_side >> 1; a7f6: 1064 asrs r4, r4, #1 a7f8: 429c cmp r4, r3 a7fa: bfa8 it ge a7fc: 461c movge r4, r3 if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) { a7fe: 9b08 ldr r3, [sp, #32] a800: 2b00 cmp r3, #0 a802: f000 84d8 beq.w b1b6 a806: 2c00 cmp r4, #0 a808: f040 84d5 bne.w b1b6 a80c: f899 3006 ldrb.w r3, [r9, #6] a810: 2b00 cmp r3, #0 a812: f040 8580 bne.w b316 _lv_blend_fill(clip, &coords_bg, a816: f899 200d ldrb.w r2, [r9, #13] a81a: 4c5b ldr r4, [pc, #364] ; (a988 ) a81c: e9cd a201 strd sl, r2, [sp, #4] a820: 2201 movs r2, #1 a822: 9200 str r2, [sp, #0] a824: f8b9 2002 ldrh.w r2, [r9, #2] a828: a916 add r1, sp, #88 ; 0x58 a82a: 4640 mov r0, r8 a82c: 47a0 blx r4 int16_t mask_rout_id = LV_MASK_ID_INV; a82e: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff a832: 9309 str r3, [sp, #36] ; 0x24 lv_draw_mask_remove_id(mask_rout_id); a834: 4b4e ldr r3, [pc, #312] ; (a970 ) a836: 9809 ldr r0, [sp, #36] ; 0x24 a838: 4798 blx r3 _lv_mem_buf_release(mask_buf); a83a: 4b4e ldr r3, [pc, #312] ; (a974 ) a83c: 4628 mov r0, r5 a83e: 4798 blx r3 _lv_mem_buf_release(mask_buf); } static void draw_pattern(const lv_area_t * coords, const lv_area_t * clip, lv_draw_rect_dsc_t * dsc) { if(dsc->pattern_image == NULL) return; a840: f8d9 002c ldr.w r0, [r9, #44] ; 0x2c a844: b1d0 cbz r0, a87c if(dsc->pattern_opa <= LV_OPA_MIN) return; a846: f899 3036 ldrb.w r3, [r9, #54] ; 0x36 a84a: 2b05 cmp r3, #5 a84c: d916 bls.n a87c lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); a84e: 4b4f ldr r3, [pc, #316] ; (a98c ) a850: 4798 blx r3 lv_draw_img_dsc_t img_dsc; lv_draw_label_dsc_t label_dsc; int32_t img_w; int32_t img_h; if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { a852: 2801 cmp r0, #1 lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); a854: 4606 mov r6, r0 if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { a856: f200 86b9 bhi.w b5cc lv_img_header_t header; lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header); a85a: f8d9 002c ldr.w r0, [r9, #44] ; 0x2c a85e: 4b4c ldr r3, [pc, #304] ; (a990 ) a860: a925 add r1, sp, #148 ; 0x94 a862: 4798 blx r3 if(res != LV_RES_OK) { a864: 2801 cmp r0, #1 a866: f000 8652 beq.w b50e LV_LOG_WARN("draw_img: can't get image info"); a86a: 4b4a ldr r3, [pc, #296] ; (a994 ) a86c: 9300 str r3, [sp, #0] a86e: 494a ldr r1, [pc, #296] ; (a998 ) a870: 4b4a ldr r3, [pc, #296] ; (a99c ) a872: 4c4b ldr r4, [pc, #300] ; (a9a0 ) a874: f240 5294 movw r2, #1428 ; 0x594 a878: 2002 movs r0, #2 a87a: 47a0 blx r4 if(dsc->border_opa <= LV_OPA_MIN) return; a87c: f899 3014 ldrb.w r3, [r9, #20] a880: 9305 str r3, [sp, #20] a882: 2b05 cmp r3, #5 a884: f240 817a bls.w ab7c if(dsc->border_width == 0) return; a888: f9b9 3010 ldrsh.w r3, [r9, #16] a88c: 2b00 cmp r3, #0 a88e: f000 8175 beq.w ab7c if(dsc->border_side == LV_BORDER_SIDE_NONE) return; a892: f9b9 3012 ldrsh.w r3, [r9, #18] a896: 2b00 cmp r3, #0 a898: f000 8170 beq.w ab7c if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; a89c: 9b05 ldr r3, [sp, #20] a89e: 2bfb cmp r3, #251 ; 0xfb a8a0: bf28 it cs a8a2: 23ff movcs r3, #255 ; 0xff a8a4: 9305 str r3, [sp, #20] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a8a6: 4b34 ldr r3, [pc, #208] ; (a978 ) a8a8: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a8aa: 4b34 ldr r3, [pc, #208] ; (a97c ) a8ac: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, coords, clip); a8ae: 9904 ldr r1, [sp, #16] a8b0: 4b2d ldr r3, [pc, #180] ; (a968 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a8b2: 4683 mov fp, r0 is_common = _lv_area_intersect(&draw_area, coords, clip); a8b4: 4642 mov r2, r8 a8b6: a814 add r0, sp, #80 ; 0x50 a8b8: 4798 blx r3 if(is_common == false) return; a8ba: 2800 cmp r0, #0 a8bc: f000 815e beq.w ab7c draw_area.x1 -= disp_area->x1; a8c0: f8bb 2010 ldrh.w r2, [fp, #16] a8c4: f8bd 0050 ldrh.w r0, [sp, #80] ; 0x50 draw_area.y1 -= disp_area->y1; a8c8: f8bb 4012 ldrh.w r4, [fp, #18] a8cc: f8bd 1052 ldrh.w r1, [sp, #82] ; 0x52 draw_area.x1 -= disp_area->x1; a8d0: 1a83 subs r3, r0, r2 a8d2: f8ad 3050 strh.w r3, [sp, #80] ; 0x50 draw_area.x2 -= disp_area->x1; a8d6: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 a8da: 1a9a subs r2, r3, r2 a8dc: f8ad 2054 strh.w r2, [sp, #84] ; 0x54 a8e0: f103 0a01 add.w sl, r3, #1 draw_area.y2 -= disp_area->y1; a8e4: f8bd 2056 ldrh.w r2, [sp, #86] ; 0x56 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a8e8: 4b25 ldr r3, [pc, #148] ; (a980 ) a8ea: ebaa 0a00 sub.w sl, sl, r0 draw_area.y1 -= disp_area->y1; a8ee: 1b09 subs r1, r1, r4 draw_area.y2 -= disp_area->y1; a8f0: 1b12 subs r2, r2, r4 a8f2: fa0f fa8a sxth.w sl, sl draw_area.y1 -= disp_area->y1; a8f6: f8ad 1052 strh.w r1, [sp, #82] ; 0x52 draw_area.y2 -= disp_area->y1; a8fa: f8ad 2056 strh.w r2, [sp, #86] ; 0x56 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a8fe: 4650 mov r0, sl a900: 4798 blx r3 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a902: 4b20 ldr r3, [pc, #128] ; (a984 ) lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a904: 4604 mov r4, r0 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a906: 4798 blx r3 if(other_mask_cnt) simple_mode = false; a908: 2800 cmp r0, #0 a90a: f040 874a bne.w b7a2 else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false; a90e: f9b9 3012 ldrsh.w r3, [r9, #18] a912: f1a3 050f sub.w r5, r3, #15 a916: 426b negs r3, r5 a918: 416b adcs r3, r5 if(other_mask_cnt) simple_mode = false; a91a: 461f mov r7, r3 a91c: 9b04 ldr r3, [sp, #16] a91e: 9904 ldr r1, [sp, #16] a920: 889b ldrh r3, [r3, #4] a922: 8809 ldrh r1, [r1, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a924: 9804 ldr r0, [sp, #16] int32_t rout = dsc->radius; a926: f9b9 2000 ldrsh.w r2, [r9] a92a: 8840 ldrh r0, [r0, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a92c: 3301 adds r3, #1 a92e: 1a5b subs r3, r3, r1 int32_t coords_w = lv_area_get_width(coords); a930: b219 sxth r1, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a932: 9b04 ldr r3, [sp, #16] a934: 88db ldrh r3, [r3, #6] a936: 3301 adds r3, #1 a938: 1a1b subs r3, r3, r0 int32_t coords_h = lv_area_get_height(coords); a93a: b21b sxth r3, r3 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); a93c: 428b cmp r3, r1 a93e: bfa8 it ge a940: 460b movge r3, r1 if(rout > short_side >> 1) rout = short_side >> 1; a942: 105b asrs r3, r3, #1 a944: 4293 cmp r3, r2 a946: bfa8 it ge a948: 4613 movge r3, r2 if(rout > 0) { a94a: 2b00 cmp r3, #0 a94c: 9308 str r3, [sp, #32] a94e: f340 872b ble.w b7a8 lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false); a952: 9a08 ldr r2, [sp, #32] a954: 9904 ldr r1, [sp, #16] a956: 4d13 ldr r5, [pc, #76] ; (a9a4 ) a958: 2300 movs r3, #0 a95a: a81e add r0, sp, #120 ; 0x78 a95c: 47a8 blx r5 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); a95e: 4b12 ldr r3, [pc, #72] ; (a9a8 ) a960: 2100 movs r1, #0 a962: a81e add r0, sp, #120 ; 0x78 a964: e026 b.n a9b4 a966: bf00 nop a968: 0000ded1 .word 0x0000ded1 a96c: 00009ba1 .word 0x00009ba1 a970: 000097ad .word 0x000097ad a974: 0000ebb1 .word 0x0000ebb1 a978: 00004fdd .word 0x00004fdd a97c: 0000da25 .word 0x0000da25 a980: 0000eefd .word 0x0000eefd a984: 000097fd .word 0x000097fd a988: 000061d9 .word 0x000061d9 a98c: 00007811 .word 0x00007811 a990: 0000cf6d .word 0x0000cf6d a994: 0001fde8 .word 0x0001fde8 a998: 0001fdb3 .word 0x0001fdb3 a99c: 0001fe36 .word 0x0001fe36 a9a0: 0000e931 .word 0x0000e931 a9a4: 00009925 .word 0x00009925 a9a8: 00009719 .word 0x00009719 a9ac: 0000f001 .word 0x0000f001 a9b0: 00009769 .word 0x00009769 a9b4: 4798 blx r3 a9b6: 900b str r0, [sp, #44] ; 0x2c lv_area_copy(&area_small, coords); a9b8: a816 add r0, sp, #88 ; 0x58 a9ba: 9904 ldr r1, [sp, #16] a9bc: 4bc2 ldr r3, [pc, #776] ; (acc8 ) a9be: 4798 blx r3 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); a9c0: f8b9 1012 ldrh.w r1, [r9, #18] a9c4: f8bd 5020 ldrh.w r5, [sp, #32] a9c8: f8b9 3010 ldrh.w r3, [r9, #16] a9cc: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 a9d0: 0748 lsls r0, r1, #29 a9d2: bf5e ittt pl a9d4: 195b addpl r3, r3, r5 a9d6: 425b negpl r3, r3 a9d8: b29b uxthpl r3, r3 a9da: 4413 add r3, r2 a9dc: f8b9 2010 ldrh.w r2, [r9, #16] a9e0: f8ad 3058 strh.w r3, [sp, #88] ; 0x58 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); a9e4: 070b lsls r3, r1, #28 a9e6: bf58 it pl a9e8: 1953 addpl r3, r2, r5 a9ea: f8bd 005c ldrh.w r0, [sp, #92] ; 0x5c a9ee: bf56 itet pl a9f0: 425b negpl r3, r3 a9f2: 4613 movmi r3, r2 a9f4: b29b uxthpl r3, r3 a9f6: 1ac3 subs r3, r0, r3 area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); a9f8: 078e lsls r6, r1, #30 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); a9fa: f8ad 305c strh.w r3, [sp, #92] ; 0x5c area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); a9fe: bf58 it pl aa00: 1953 addpl r3, r2, r5 aa02: f8bd 005a ldrh.w r0, [sp, #90] ; 0x5a lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); aa06: 4eb1 ldr r6, [pc, #708] ; (accc ) area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); aa08: bf56 itet pl aa0a: 425b negpl r3, r3 aa0c: 4613 movmi r3, r2 aa0e: b29b uxthpl r3, r3 aa10: 4403 add r3, r0 aa12: f8ad 305a strh.w r3, [sp, #90] ; 0x5a area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); aa16: 07cb lsls r3, r1, #31 aa18: bf5c itt pl aa1a: 1953 addpl r3, r2, r5 aa1c: 425b negpl r3, r3 aa1e: f8bd 005e ldrh.w r0, [sp, #94] ; 0x5e aa22: bf4c ite mi aa24: 4613 movmi r3, r2 aa26: b29b uxthpl r3, r3 aa28: 1ac3 subs r3, r0, r3 lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); aa2a: 1aaa subs r2, r5, r2 aa2c: b212 sxth r2, r2 area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); aa2e: f8ad 305e strh.w r3, [sp, #94] ; 0x5e lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); aa32: a916 add r1, sp, #88 ; 0x58 aa34: 2301 movs r3, #1 aa36: a825 add r0, sp, #148 ; 0x94 aa38: 47b0 blx r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); aa3a: 4ba5 ldr r3, [pc, #660] ; (acd0 ) aa3c: 2100 movs r1, #0 aa3e: a825 add r0, sp, #148 ; 0x94 aa40: 4798 blx r3 int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); aa42: f9b9 3010 ldrsh.w r3, [r9, #16] aa46: 9a08 ldr r2, [sp, #32] int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa48: f9bb c012 ldrsh.w ip, [fp, #18] fill_area.y1 = disp_area->y1 + draw_area.y1; aa4c: f9bd 6052 ldrsh.w r6, [sp, #82] ; 0x52 int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); aa50: 429a cmp r2, r3 aa52: bfac ite ge aa54: 9b08 ldrge r3, [sp, #32] aa56: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff aa5a: 9307 str r3, [sp, #28] lv_color_t color = dsc->border_color; aa5c: f8b9 300e ldrh.w r3, [r9, #14] aa60: ee08 3a10 vmov s16, r3 lv_blend_mode_t blend_mode = dsc->border_blend_mode; aa64: f899 3015 ldrb.w r3, [r9, #21] aa68: 9306 str r3, [sp, #24] fill_area.x1 = coords->x1; aa6a: 9b04 ldr r3, [sp, #16] int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); aa6c: ee08 0a90 vmov s17, r0 fill_area.y1 = disp_area->y1 + draw_area.y1; aa70: eb0c 0006 add.w r0, ip, r6 fill_area.x1 = coords->x1; aa74: f9b3 1000 ldrsh.w r1, [r3] fill_area.x2 = coords->x2; aa78: f9b3 2004 ldrsh.w r2, [r3, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; aa7c: b200 sxth r0, r0 if(simple_mode) { aa7e: 2f00 cmp r7, #0 aa80: f000 87a6 beq.w b9d0 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa84: 9b04 ldr r3, [sp, #16] aa86: 9f07 ldr r7, [sp, #28] aa88: f9b3 3002 ldrsh.w r3, [r3, #2] fill_area.x1 = coords->x1; aa8c: f8ad 1060 strh.w r1, [sp, #96] ; 0x60 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa90: eba3 030c sub.w r3, r3, ip upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); aa94: f9bd c056 ldrsh.w ip, [sp, #86] ; 0x56 fill_area.x2 = coords->x2; aa98: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa9c: 443b add r3, r7 upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); aa9e: 459c cmp ip, r3 aaa0: bfa8 it ge aaa2: 469c movge ip, r3 aaa4: f8cd c024 str.w ip, [sp, #36] ; 0x24 fill_area.y1 = disp_area->y1 + draw_area.y1; aaa8: f8ad 0062 strh.w r0, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; aaac: f8ad 0066 strh.w r0, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { aab0: 9b09 ldr r3, [sp, #36] ; 0x24 aab2: 42b3 cmp r3, r6 aab4: f280 867d bge.w b7b2 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; aab8: 9a04 ldr r2, [sp, #16] aaba: f9bb 3012 ldrsh.w r3, [fp, #18] aabe: f9b2 6006 ldrsh.w r6, [r2, #6] aac2: 9a07 ldr r2, [sp, #28] aac4: 1af6 subs r6, r6, r3 aac6: 1ab2 subs r2, r6, r2 lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); aac8: f9bd 6052 ldrsh.w r6, [sp, #82] ; 0x52 aacc: 4296 cmp r6, r2 aace: bfb8 it lt aad0: 4616 movlt r6, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; aad2: 9a09 ldr r2, [sp, #36] ; 0x24 aad4: 42b2 cmp r2, r6 aad6: bfa4 itt ge aad8: 4616 movge r6, r2 aada: 3601 addge r6, #1 fill_area.y1 = disp_area->y1 + lower_corner_end; aadc: 4433 add r3, r6 aade: b21b sxth r3, r3 aae0: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; aae4: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { aae8: f9bd 3056 ldrsh.w r3, [sp, #86] ; 0x56 aaec: 429e cmp r6, r3 aaee: f340 86df ble.w b8b0 fill_area.y1 = coords->y1 + corner_size + 1; aaf2: 9b04 ldr r3, [sp, #16] aaf4: 9a07 ldr r2, [sp, #28] aaf6: 885b ldrh r3, [r3, #2] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); aaf8: 4d76 ldr r5, [pc, #472] ; (acd4 ) fill_area.y1 = coords->y1 + corner_size + 1; aafa: 3301 adds r3, #1 aafc: fa13 f382 uxtah r3, r3, r2 ab00: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = coords->y2 - corner_size - 1; ab04: 9b04 ldr r3, [sp, #16] ab06: 88db ldrh r3, [r3, #6] ab08: 3b01 subs r3, #1 ab0a: 1a9b subs r3, r3, r2 ab0c: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 fill_area.x1 = coords->x1; ab10: 9b04 ldr r3, [sp, #16] fill_area.x2 = coords->x1 + dsc->border_width - 1; ab12: f8b9 2010 ldrh.w r2, [r9, #16] fill_area.x1 = coords->x1; ab16: f9b3 3000 ldrsh.w r3, [r3] ab1a: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 fill_area.x2 = coords->x1 + dsc->border_width - 1; ab1e: 3a01 subs r2, #1 ab20: 4413 add r3, r2 ab22: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); ab26: 9b06 ldr r3, [sp, #24] ab28: 9302 str r3, [sp, #8] ab2a: 2601 movs r6, #1 ab2c: 9b05 ldr r3, [sp, #20] ab2e: 9301 str r3, [sp, #4] ab30: ee18 2a10 vmov r2, s16 ab34: 2300 movs r3, #0 ab36: a918 add r1, sp, #96 ; 0x60 ab38: 4640 mov r0, r8 ab3a: 9600 str r6, [sp, #0] ab3c: 47a8 blx r5 fill_area.x1 = coords->x2 - dsc->border_width + 1; ab3e: 9b04 ldr r3, [sp, #16] ab40: f9b3 2004 ldrsh.w r2, [r3, #4] ab44: f8b9 3010 ldrh.w r3, [r9, #16] fill_area.x2 = coords->x2; ab48: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 fill_area.x1 = coords->x2 - dsc->border_width + 1; ab4c: 1af3 subs r3, r6, r3 ab4e: 4413 add r3, r2 ab50: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); ab54: 9b06 ldr r3, [sp, #24] ab56: 9302 str r3, [sp, #8] ab58: 9b05 ldr r3, [sp, #20] ab5a: ee18 2a10 vmov r2, s16 ab5e: e9cd 6300 strd r6, r3, [sp] ab62: a918 add r1, sp, #96 ; 0x60 ab64: 2300 movs r3, #0 ab66: 4640 mov r0, r8 ab68: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); ab6a: 4d5b ldr r5, [pc, #364] ; (acd8 ) ab6c: ee18 0a90 vmov r0, s17 ab70: 47a8 blx r5 lv_draw_mask_remove_id(mask_rout_id); ab72: 980b ldr r0, [sp, #44] ; 0x2c ab74: 47a8 blx r5 _lv_mem_buf_release(mask_buf); ab76: 4b59 ldr r3, [pc, #356] ; (acdc ) ab78: 4620 mov r0, r4 ab7a: 4798 blx r3 } static void draw_value(const lv_area_t * coords, const lv_area_t * clip, lv_draw_rect_dsc_t * dsc) { if(dsc->value_str == NULL) return; ab7c: f8d9 103c ldr.w r1, [r9, #60] ; 0x3c ab80: 2900 cmp r1, #0 ab82: d067 beq.n ac54 if(dsc->value_opa <= LV_OPA_MIN) return; ab84: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 ab88: 2b05 cmp r3, #5 ab8a: d963 bls.n ac54 lv_point_t s; _lv_txt_get_size(&s, dsc->value_str, dsc->value_font, dsc->value_letter_space, dsc->value_line_space, LV_COORD_MAX, ab8c: 2400 movs r4, #0 ab8e: f647 4318 movw r3, #31768 ; 0x7c18 ab92: e9cd 3401 strd r3, r4, [sp, #4] ab96: f9b9 304e ldrsh.w r3, [r9, #78] ; 0x4e ab9a: 9300 str r3, [sp, #0] ab9c: f9b9 304c ldrsh.w r3, [r9, #76] ; 0x4c aba0: f8d9 2040 ldr.w r2, [r9, #64] ; 0x40 aba4: 4d4e ldr r5, [pc, #312] ; (ace0 ) aba6: a818 add r0, sp, #96 ; 0x60 aba8: 47a8 blx r5 LV_TXT_FLAG_NONE); lv_area_t value_area; value_area.x1 = 0; value_area.y1 = 0; value_area.x2 = s.x - 1; abaa: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 value_area.y2 = s.y - 1; lv_point_t p_align; _lv_area_align(coords, &value_area, dsc->value_align, &p_align); abae: f899 2050 ldrb.w r2, [r9, #80] ; 0x50 abb2: 9804 ldr r0, [sp, #16] value_area.x1 = 0; abb4: f8ad 4078 strh.w r4, [sp, #120] ; 0x78 value_area.x2 = s.x - 1; abb8: 3b01 subs r3, #1 abba: f8ad 307c strh.w r3, [sp, #124] ; 0x7c value_area.y2 = s.y - 1; abbe: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 value_area.y1 = 0; abc2: f8ad 407a strh.w r4, [sp, #122] ; 0x7a value_area.y2 = s.y - 1; abc6: 3b01 subs r3, #1 abc8: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_area_align(coords, &value_area, dsc->value_align, &p_align); abcc: a91e add r1, sp, #120 ; 0x78 abce: ab1a add r3, sp, #104 ; 0x68 abd0: 4d44 ldr r5, [pc, #272] ; (ace4 ) abd2: 47a8 blx r5 value_area.x1 += p_align.x + dsc->value_ofs_x; abd4: f8b9 3048 ldrh.w r3, [r9, #72] ; 0x48 abd8: f8bd 2068 ldrh.w r2, [sp, #104] ; 0x68 value_area.y1 += p_align.y + dsc->value_ofs_y; abdc: f8b9 104a ldrh.w r1, [r9, #74] ; 0x4a value_area.x1 += p_align.x + dsc->value_ofs_x; abe0: 441a add r2, r3 abe2: f8bd 3078 ldrh.w r3, [sp, #120] ; 0x78 abe6: fa13 f382 uxtah r3, r3, r2 abea: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 value_area.y1 += p_align.y + dsc->value_ofs_y; abee: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a abf2: 440b add r3, r1 abf4: f8bd 107a ldrh.w r1, [sp, #122] ; 0x7a abf8: fa11 f183 uxtah r1, r1, r3 abfc: f8ad 107a strh.w r1, [sp, #122] ; 0x7a value_area.x2 += p_align.x + dsc->value_ofs_x; ac00: f8bd 107c ldrh.w r1, [sp, #124] ; 0x7c ac04: fa11 f282 uxtah r2, r1, r2 ac08: f8ad 207c strh.w r2, [sp, #124] ; 0x7c value_area.y2 += p_align.y + dsc->value_ofs_y; ac0c: f8bd 207e ldrh.w r2, [sp, #126] ; 0x7e ac10: fa12 f383 uxtah r3, r2, r3 ac14: f8ad 307e strh.w r3, [sp, #126] ; 0x7e lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); ac18: a825 add r0, sp, #148 ; 0x94 ac1a: 4b33 ldr r3, [pc, #204] ; (ace8 ) ac1c: 4798 blx r3 label_dsc.font = dsc->value_font; ac1e: f8d9 3040 ldr.w r3, [r9, #64] ; 0x40 ac22: 9326 str r3, [sp, #152] ; 0x98 label_dsc.letter_space = dsc->value_letter_space; ac24: f8b9 304c ldrh.w r3, [r9, #76] ; 0x4c ac28: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0 label_dsc.line_space = dsc->value_line_space; ac2c: f8b9 304e ldrh.w r3, [r9, #78] ; 0x4e ac30: f8ad 309e strh.w r3, [sp, #158] ; 0x9e label_dsc.color = dsc->value_color; ac34: f8b9 3046 ldrh.w r3, [r9, #70] ; 0x46 ac38: f8ad 3094 strh.w r3, [sp, #148] ; 0x94 label_dsc.opa = dsc->value_opa; ac3c: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); ac40: 9400 str r4, [sp, #0] label_dsc.opa = dsc->value_opa; ac42: f88d 309c strb.w r3, [sp, #156] ; 0x9c lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); ac46: 4c29 ldr r4, [pc, #164] ; (acec ) ac48: f8d9 303c ldr.w r3, [r9, #60] ; 0x3c ac4c: aa25 add r2, sp, #148 ; 0x94 ac4e: 4641 mov r1, r8 ac50: a81e add r0, sp, #120 ; 0x78 ac52: 47a0 blx r4 if(dsc->outline_opa <= LV_OPA_MIN) return; ac54: f899 301c ldrb.w r3, [r9, #28] ac58: 9305 str r3, [sp, #20] ac5a: 2b05 cmp r3, #5 ac5c: f240 8162 bls.w af24 if(dsc->outline_width == 0) return; ac60: f9b9 3018 ldrsh.w r3, [r9, #24] ac64: 2b00 cmp r3, #0 ac66: f000 815d beq.w af24 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ac6a: 9b05 ldr r3, [sp, #20] lv_area_copy(&area_inner, coords); ac6c: 4d16 ldr r5, [pc, #88] ; (acc8 ) if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ac6e: 2bfb cmp r3, #251 ; 0xfb ac70: bf28 it cs ac72: 23ff movcs r3, #255 ; 0xff ac74: 9305 str r3, [sp, #20] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); ac76: 4b1e ldr r3, [pc, #120] ; (acf0 ) ac78: 4798 blx r3 lv_area_copy(&area_inner, coords); ac7a: 9904 ldr r1, [sp, #16] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); ac7c: 900a str r0, [sp, #40] ; 0x28 lv_area_copy(&area_inner, coords); ac7e: a812 add r0, sp, #72 ; 0x48 ac80: 47a8 blx r5 area_inner.x1 -= dsc->outline_pad; ac82: f8b9 701a ldrh.w r7, [r9, #26] ac86: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 area_inner.y1 -= dsc->outline_pad; ac8a: f8bd a04a ldrh.w sl, [sp, #74] ; 0x4a area_inner.x1 -= dsc->outline_pad; ac8e: 9306 str r3, [sp, #24] ac90: 1bdb subs r3, r3, r7 ac92: f8ad 3048 strh.w r3, [sp, #72] ; 0x48 area_inner.y1 -= dsc->outline_pad; ac96: ebaa 0307 sub.w r3, sl, r7 ac9a: f8ad 304a strh.w r3, [sp, #74] ; 0x4a area_inner.y2 += dsc->outline_pad; ac9e: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e area_inner.x2 += dsc->outline_pad; aca2: f8bd 404c ldrh.w r4, [sp, #76] ; 0x4c area_inner.y2 += dsc->outline_pad; aca6: 443b add r3, r7 aca8: b29b uxth r3, r3 area_inner.x2 += dsc->outline_pad; acaa: 443c add r4, r7 area_inner.y2 += dsc->outline_pad; acac: 9307 str r3, [sp, #28] acae: f8ad 304e strh.w r3, [sp, #78] ; 0x4e area_inner.x2 += dsc->outline_pad; acb2: b2a4 uxth r4, r4 int32_t rin = dsc->radius; acb4: f9b9 3000 ldrsh.w r3, [r9] acb8: 930b str r3, [sp, #44] ; 0x2c lv_area_copy(&area_outer, &area_inner); acba: a912 add r1, sp, #72 ; 0x48 int32_t rout = rin + dsc->outline_width; acbc: f9b9 3018 ldrsh.w r3, [r9, #24] area_inner.x2 += dsc->outline_pad; acc0: f8ad 404c strh.w r4, [sp, #76] ; 0x4c acc4: e016 b.n acf4 acc6: bf00 nop acc8: 00009ba1 .word 0x00009ba1 accc: 00009925 .word 0x00009925 acd0: 00009719 .word 0x00009719 acd4: 000061d9 .word 0x000061d9 acd8: 000097ad .word 0x000097ad acdc: 0000ebb1 .word 0x0000ebb1 ace0: 000101fd .word 0x000101fd ace4: 0000e179 .word 0x0000e179 ace8: 00007855 .word 0x00007855 acec: 00007885 .word 0x00007885 acf0: 000097fd .word 0x000097fd lv_area_copy(&area_outer, &area_inner); acf4: a814 add r0, sp, #80 ; 0x50 int32_t rout = rin + dsc->outline_width; acf6: 930c str r3, [sp, #48] ; 0x30 lv_area_copy(&area_outer, &area_inner); acf8: 47a8 blx r5 area_outer.x1 -= dsc->outline_width; acfa: f8b9 6018 ldrh.w r6, [r9, #24] acfe: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 area_outer.x2 += dsc->outline_width; ad02: f8bd b054 ldrh.w fp, [sp, #84] ; 0x54 area_outer.y2 += dsc->outline_width; ad06: f8bd 5056 ldrh.w r5, [sp, #86] ; 0x56 area_outer.x1 -= dsc->outline_width; ad0a: 9308 str r3, [sp, #32] ad0c: 1b9b subs r3, r3, r6 ad0e: f8ad 3050 strh.w r3, [sp, #80] ; 0x50 area_outer.y1 -= dsc->outline_width; ad12: f8bd 3052 ldrh.w r3, [sp, #82] ; 0x52 ad16: 9309 str r3, [sp, #36] ; 0x24 area_outer.x2 += dsc->outline_width; ad18: 44b3 add fp, r6 area_outer.y2 += dsc->outline_width; ad1a: 4435 add r5, r6 area_outer.y1 -= dsc->outline_width; ad1c: 1b9b subs r3, r3, r6 area_outer.x2 += dsc->outline_width; ad1e: fa1f fb8b uxth.w fp, fp area_outer.y2 += dsc->outline_width; ad22: b2ad uxth r5, r5 area_outer.y1 -= dsc->outline_width; ad24: f8ad 3052 strh.w r3, [sp, #82] ; 0x52 area_outer.x2 += dsc->outline_width; ad28: f8ad b054 strh.w fp, [sp, #84] ; 0x54 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ad2c: 4bc6 ldr r3, [pc, #792] ; (b048 ) area_outer.y2 += dsc->outline_width; ad2e: f8ad 5056 strh.w r5, [sp, #86] ; 0x56 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ad32: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ad34: 4bc5 ldr r3, [pc, #788] ; (b04c ) ad36: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, &area_outer, clip); ad38: 4bc5 ldr r3, [pc, #788] ; (b050 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ad3a: 9004 str r0, [sp, #16] is_common = _lv_area_intersect(&draw_area, &area_outer, clip); ad3c: 4642 mov r2, r8 ad3e: a914 add r1, sp, #80 ; 0x50 ad40: a816 add r0, sp, #88 ; 0x58 ad42: 4798 blx r3 if(is_common == false) return; ad44: 2800 cmp r0, #0 ad46: f000 80ed beq.w af24 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad4a: 9b06 ldr r3, [sp, #24] ad4c: 9908 ldr r1, [sp, #32] draw_area.x1 -= disp_area->x1; ad4e: f8bd 0058 ldrh.w r0, [sp, #88] ; 0x58 ad52: f1c3 0201 rsb r2, r3, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad56: f1ca 0a01 rsb sl, sl, #1 ad5a: 9b07 ldr r3, [sp, #28] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad5c: f1c1 0101 rsb r1, r1, #1 ad60: 4431 add r1, r6 ad62: 443a add r2, r7 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad64: 4457 add r7, sl ad66: 443b add r3, r7 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad68: 4422 add r2, r4 ad6a: 448b add fp, r1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad6c: 9909 ldr r1, [sp, #36] ; 0x24 int32_t inner_h = lv_area_get_height(&area_inner); ad6e: b21c sxth r4, r3 int32_t inner_w = lv_area_get_width(&area_inner); ad70: b212 sxth r2, r2 int32_t short_side = LV_MATH_MIN(inner_w, inner_h); ad72: 42a2 cmp r2, r4 ad74: f1c1 0101 rsb r1, r1, #1 ad78: 9b0b ldr r3, [sp, #44] ; 0x2c ad7a: bfa8 it ge ad7c: 4622 movge r2, r4 ad7e: 440e add r6, r1 if(rin > short_side >> 1) rin = short_side >> 1; ad80: 1052 asrs r2, r2, #1 ad82: 442e add r6, r5 ad84: 429a cmp r2, r3 int32_t coords_out_h = lv_area_get_height(&area_outer); ad86: b236 sxth r6, r6 int32_t coords_out_w = lv_area_get_width(&area_outer); ad88: fa0f fb8b sxth.w fp, fp ad8c: bfa8 it ge ad8e: 461a movge r2, r3 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); ad90: 455e cmp r6, fp int32_t rout = rin + dsc->outline_width; ad92: 9b0c ldr r3, [sp, #48] ; 0x30 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); ad94: bfa8 it ge ad96: 465e movge r6, fp int32_t rout = rin + dsc->outline_width; ad98: 4413 add r3, r2 if(rout > short_side >> 1) rout = short_side >> 1; ad9a: ea4f 0b66 mov.w fp, r6, asr #1 ad9e: 459b cmp fp, r3 ada0: bfa8 it ge ada2: 469b movge fp, r3 draw_area.x1 -= disp_area->x1; ada4: 9b04 ldr r3, [sp, #16] lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); ada6: 4eab ldr r6, [pc, #684] ; (b054 ) draw_area.x1 -= disp_area->x1; ada8: 8a19 ldrh r1, [r3, #16] adaa: 1a43 subs r3, r0, r1 adac: f8ad 3058 strh.w r3, [sp, #88] ; 0x58 draw_area.y1 -= disp_area->y1; adb0: 9b04 ldr r3, [sp, #16] adb2: 8a5c ldrh r4, [r3, #18] adb4: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a adb8: 1b1b subs r3, r3, r4 adba: f8ad 305a strh.w r3, [sp, #90] ; 0x5a draw_area.x2 -= disp_area->x1; adbe: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c adc2: 1a59 subs r1, r3, r1 adc4: f8ad 105c strh.w r1, [sp, #92] ; 0x5c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); adc8: 1c5d adds r5, r3, #1 draw_area.y2 -= disp_area->y1; adca: f8bd 105e ldrh.w r1, [sp, #94] ; 0x5e adce: 1a2d subs r5, r5, r0 add0: 1b09 subs r1, r1, r4 add2: b22b sxth r3, r5 add4: ee08 3a10 vmov s16, r3 add8: f8ad 105e strh.w r1, [sp, #94] ; 0x5e lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); addc: 2301 movs r3, #1 adde: a912 add r1, sp, #72 ; 0x48 ade0: a81e add r0, sp, #120 ; 0x78 ade2: 47b0 blx r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); ade4: 4c9c ldr r4, [pc, #624] ; (b058 ) ade6: 2100 movs r1, #0 ade8: a81e add r0, sp, #120 ; 0x78 adea: 47a0 blx r4 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); adec: fa0f f28b sxth.w r2, fp adf0: 2300 movs r3, #0 adf2: a914 add r1, sp, #80 ; 0x50 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); adf4: ee08 0a90 vmov s17, r0 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); adf8: a825 add r0, sp, #148 ; 0x94 adfa: 47b0 blx r6 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); adfc: 2100 movs r1, #0 adfe: a825 add r0, sp, #148 ; 0x94 ae00: 47a0 blx r4 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); ae02: 4b96 ldr r3, [pc, #600] ; (b05c ) int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); ae04: ee09 0a10 vmov s18, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); ae08: ee18 0a10 vmov r0, s16 ae0c: 4798 blx r3 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); ae0e: f9b9 3018 ldrsh.w r3, [r9, #24] fill_area.y1 = disp_area->y1 + draw_area.y1; ae12: f9bd 605a ldrsh.w r6, [sp, #90] ; 0x5a if(simple_mode) { ae16: 9a0a ldr r2, [sp, #40] ; 0x28 lv_color_t color = dsc->outline_color; ae18: f8b9 7016 ldrh.w r7, [r9, #22] fill_area.x2 = area_outer.x2; ae1c: f9bd 1054 ldrsh.w r1, [sp, #84] ; 0x54 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); ae20: 459b cmp fp, r3 ae22: bfbc itt lt ae24: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff ae28: 9307 strlt r3, [sp, #28] lv_blend_mode_t blend_mode = dsc->outline_blend_mode; ae2a: f899 301d ldrb.w r3, [r9, #29] ae2e: 9306 str r3, [sp, #24] int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; ae30: 9b04 ldr r3, [sp, #16] ae32: bfa8 it ge ae34: f8cd b01c strge.w fp, [sp, #28] ae38: f9b3 c012 ldrsh.w ip, [r3, #18] fill_area.y1 = disp_area->y1 + draw_area.y1; ae3c: eb0c 0306 add.w r3, ip, r6 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); ae40: 4604 mov r4, r0 fill_area.y1 = disp_area->y1 + draw_area.y1; ae42: b21b sxth r3, r3 fill_area.x1 = area_outer.x1; ae44: f9bd 0050 ldrsh.w r0, [sp, #80] ; 0x50 if(simple_mode) { ae48: 2a00 cmp r2, #0 ae4a: f040 8749 bne.w bce0 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; ae4e: f9bd 2052 ldrsh.w r2, [sp, #82] ; 0x52 ae52: 9d07 ldr r5, [sp, #28] fill_area.x1 = area_outer.x1; ae54: f8ad 0060 strh.w r0, [sp, #96] ; 0x60 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; ae58: eba2 020c sub.w r2, r2, ip ae5c: eb02 0a05 add.w sl, r2, r5 fill_area.x2 = area_outer.x2; ae60: f8ad 1064 strh.w r1, [sp, #100] ; 0x64 fill_area.y1 = disp_area->y1 + draw_area.y1; ae64: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; ae68: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { ae6c: 45b2 cmp sl, r6 ae6e: f280 8630 bge.w bad2 int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size; ae72: 9b04 ldr r3, [sp, #16] ae74: f9bd 6056 ldrsh.w r6, [sp, #86] ; 0x56 ae78: f9b3 3012 ldrsh.w r3, [r3, #18] ae7c: 9a07 ldr r2, [sp, #28] ae7e: 1af6 subs r6, r6, r3 ae80: 1ab6 subs r6, r6, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; ae82: 45b2 cmp sl, r6 ae84: bfa8 it ge ae86: f10a 0601 addge.w r6, sl, #1 fill_area.y1 = disp_area->y1 + lower_corner_end; ae8a: 4433 add r3, r6 ae8c: b21b sxth r3, r3 ae8e: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; ae92: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { ae96: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e ae9a: 429e cmp r6, r3 ae9c: f340 869a ble.w bbd4 fill_area.y1 = area_outer.y1 + corner_size + 1; aea0: f8bd 3052 ldrh.w r3, [sp, #82] ; 0x52 aea4: 9a07 ldr r2, [sp, #28] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); aea6: 4d6e ldr r5, [pc, #440] ; (b060 ) fill_area.y1 = area_outer.y1 + corner_size + 1; aea8: 3301 adds r3, #1 aeaa: fa13 f382 uxtah r3, r3, r2 aeae: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = area_outer.y2 - corner_size - 1; aeb2: f8bd 3056 ldrh.w r3, [sp, #86] ; 0x56 aeb6: 3b01 subs r3, #1 aeb8: 1a9b subs r3, r3, r2 aeba: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 fill_area.x1 = area_outer.x1; aebe: f9bd 3050 ldrsh.w r3, [sp, #80] ; 0x50 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; aec2: f8b9 2018 ldrh.w r2, [r9, #24] fill_area.x1 = area_outer.x1; aec6: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; aeca: 3b01 subs r3, #1 aecc: 4413 add r3, r2 aece: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); aed2: 9b06 ldr r3, [sp, #24] aed4: 9302 str r3, [sp, #8] aed6: 2601 movs r6, #1 aed8: 9b05 ldr r3, [sp, #20] aeda: 9301 str r3, [sp, #4] aedc: 463a mov r2, r7 aede: 2300 movs r3, #0 aee0: a918 add r1, sp, #96 ; 0x60 aee2: 4640 mov r0, r8 aee4: 9600 str r6, [sp, #0] aee6: 47a8 blx r5 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; aee8: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 aeec: f8b9 1018 ldrh.w r1, [r9, #24] fill_area.x2 = area_outer.x2; aef0: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; aef4: 1993 adds r3, r2, r6 aef6: 1a5b subs r3, r3, r1 aef8: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); aefc: 9b06 ldr r3, [sp, #24] aefe: 9302 str r3, [sp, #8] af00: 9b05 ldr r3, [sp, #20] af02: 463a mov r2, r7 af04: e9cd 6300 strd r6, r3, [sp] af08: a918 add r1, sp, #96 ; 0x60 af0a: 2300 movs r3, #0 af0c: 4640 mov r0, r8 af0e: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); af10: 4d54 ldr r5, [pc, #336] ; (b064 ) af12: ee18 0a90 vmov r0, s17 af16: 47a8 blx r5 lv_draw_mask_remove_id(mask_rout_id); af18: ee19 0a10 vmov r0, s18 af1c: 47a8 blx r5 _lv_mem_buf_release(mask_buf); af1e: 4b52 ldr r3, [pc, #328] ; (b068 ) af20: 4620 mov r0, r4 af22: 4798 blx r3 } af24: b02d add sp, #180 ; 0xb4 af26: ecbd 8b04 vpop {d8-d9} af2a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} _lv_memcpy(mask_buf, sh_buf_tmp, w); af2e: 4629 mov r1, r5 af30: 4b4e ldr r3, [pc, #312] ; (b06c ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af32: 4c4f ldr r4, [pc, #316] ; (b070 ) _lv_memcpy(mask_buf, sh_buf_tmp, w); af34: 4632 mov r2, r6 af36: ee18 0a10 vmov r0, s16 af3a: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af3c: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a af40: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 af44: 4633 mov r3, r6 af46: ee18 0a10 vmov r0, s16 af4a: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af4c: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 af50: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; af52: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af54: 9b07 ldr r3, [sp, #28] af56: 4c42 ldr r4, [pc, #264] ; (b060 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; af58: bf08 it eq af5a: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af5c: e9cd 0300 strd r0, r3, [sp] af60: a91e add r1, sp, #120 ; 0x78 af62: ee18 3a10 vmov r3, s16 af66: f8b9 201e ldrh.w r2, [r9, #30] af6a: 4640 mov r0, r8 af6c: 47a0 blx r4 fa.y1++; af6e: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a af72: 3301 adds r3, #1 af74: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; af78: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e af7c: 3301 adds r3, #1 af7e: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; af82: 4455 add r5, sl for(y = 0; y < h; y++) { af84: 3701 adds r7, #1 af86: f7ff ba28 b.w a3da _lv_memcpy(mask_buf, sh_buf_tmp, w); af8a: 4629 mov r1, r5 af8c: 4b37 ldr r3, [pc, #220] ; (b06c ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af8e: 4c38 ldr r4, [pc, #224] ; (b070 ) _lv_memcpy(mask_buf, sh_buf_tmp, w); af90: 4632 mov r2, r6 af92: ee18 0a10 vmov r0, s16 af96: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af98: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a af9c: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 afa0: 4633 mov r3, r6 afa2: ee18 0a10 vmov r0, s16 afa6: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, afa8: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 afac: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; afae: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, afb0: 9b07 ldr r3, [sp, #28] afb2: 4c2b ldr r4, [pc, #172] ; (b060 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; afb4: bf08 it eq afb6: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, afb8: e9cd 0300 strd r0, r3, [sp] afbc: a91e add r1, sp, #120 ; 0x78 afbe: ee18 3a10 vmov r3, s16 afc2: f8b9 201e ldrh.w r2, [r9, #30] afc6: 4640 mov r0, r8 afc8: 47a0 blx r4 fa.y1--; afca: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a afce: 3b01 subs r3, #1 afd0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2--; afd4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e afd8: 3b01 subs r3, #1 afda: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; afde: 4455 add r5, sl for(y = 0; y < h; y++) { afe0: 3701 adds r7, #1 afe2: f7ff ba4c b.w a47e _lv_memcpy(mask_buf, sh_buf_tmp, w); afe6: 4b21 ldr r3, [pc, #132] ; (b06c ) afe8: ee18 0a10 vmov r0, s16 afec: 462a mov r2, r5 afee: 4631 mov r1, r6 aff0: 4798 blx r3 if(simple_mode) { aff2: 9b06 ldr r3, [sp, #24] aff4: b953 cbnz r3, b00c mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); aff6: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a affa: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 affe: 4c1c ldr r4, [pc, #112] ; (b070 ) b000: ee18 0a10 vmov r0, s16 b004: 462b mov r3, r5 b006: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b008: 2801 cmp r0, #1 b00a: d100 bne.n b00e b00c: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, b00e: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 b012: 9302 str r3, [sp, #8] b014: f899 3028 ldrb.w r3, [r9, #40] ; 0x28 b018: 4c11 ldr r4, [pc, #68] ; (b060 ) b01a: e9cd 0300 strd r0, r3, [sp] b01e: a91e add r1, sp, #120 ; 0x78 b020: ee18 3a10 vmov r3, s16 b024: f8b9 201e ldrh.w r2, [r9, #30] b028: 4640 mov r0, r8 b02a: 47a0 blx r4 fa.y1++; b02c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b030: 3301 adds r3, #1 b032: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; b036: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b03a: 3301 adds r3, #1 b03c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { b040: 3701 adds r7, #1 b042: f7ff ba68 b.w a516 b046: bf00 nop b048: 00004fdd .word 0x00004fdd b04c: 0000da25 .word 0x0000da25 b050: 0000ded1 .word 0x0000ded1 b054: 00009925 .word 0x00009925 b058: 00009719 .word 0x00009719 b05c: 0000eefd .word 0x0000eefd b060: 000061d9 .word 0x000061d9 b064: 000097ad .word 0x000097ad b068: 0000ebb1 .word 0x0000ebb1 b06c: 0000ec79 .word 0x0000ec79 b070: 00009769 .word 0x00009769 lv_opa_t opa_tmp = sh_buf_tmp[0]; b074: 7833 ldrb r3, [r6, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b076: 9a07 ldr r2, [sp, #28] b078: ea02 0103 and.w r1, r2, r3 b07c: 29ff cmp r1, #255 ; 0xff b07e: bf1c itt ne b080: fb12 f303 smulbbne r3, r2, r3 b084: f3c3 2107 ubfxne r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); b088: ee18 0a10 vmov r0, s16 b08c: 4baa ldr r3, [pc, #680] ; (b338 ) b08e: 462a mov r2, r5 b090: 4798 blx r3 if(simple_mode) { b092: 9b06 ldr r3, [sp, #24] b094: b953 cbnz r3, b0ac mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b096: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a b09a: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 b09e: 4ca7 ldr r4, [pc, #668] ; (b33c ) b0a0: ee18 0a10 vmov r0, s16 b0a4: 462b mov r3, r5 b0a6: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b0a8: 2801 cmp r0, #1 b0aa: d100 bne.n b0ae b0ac: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b0ae: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 b0b2: 9302 str r3, [sp, #8] b0b4: 23ff movs r3, #255 ; 0xff b0b6: e9cd 0300 strd r0, r3, [sp] b0ba: 4ca1 ldr r4, [pc, #644] ; (b340 ) b0bc: f8b9 201e ldrh.w r2, [r9, #30] b0c0: ee18 3a10 vmov r3, s16 b0c4: a91e add r1, sp, #120 ; 0x78 b0c6: 4640 mov r0, r8 b0c8: 47a0 blx r4 fa.y1++; b0ca: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b0ce: 3301 adds r3, #1 b0d0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; b0d4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b0d8: 3301 adds r3, #1 b0da: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; b0de: 4456 add r6, sl for(y = 0; y < h; y++) { b0e0: 3701 adds r7, #1 b0e2: f7ff ba62 b.w a5aa lv_opa_t opa_tmp = sh_buf_tmp[0]; b0e6: 7833 ldrb r3, [r6, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b0e8: 9a07 ldr r2, [sp, #28] b0ea: ea02 0103 and.w r1, r2, r3 b0ee: 29ff cmp r1, #255 ; 0xff b0f0: bf1c itt ne b0f2: fb12 f303 smulbbne r3, r2, r3 b0f6: f3c3 2107 ubfxne r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); b0fa: ee18 0a10 vmov r0, s16 b0fe: 4b8e ldr r3, [pc, #568] ; (b338 ) b100: 462a mov r2, r5 b102: 4798 blx r3 if(simple_mode) { b104: 9b06 ldr r3, [sp, #24] b106: b953 cbnz r3, b11e mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b108: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a b10c: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 b110: 4c8a ldr r4, [pc, #552] ; (b33c ) b112: ee18 0a10 vmov r0, s16 b116: 462b mov r3, r5 b118: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b11a: 2801 cmp r0, #1 b11c: d100 bne.n b120 b11e: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b120: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 b124: 9302 str r3, [sp, #8] b126: 23ff movs r3, #255 ; 0xff b128: e9cd 0300 strd r0, r3, [sp] b12c: 4c84 ldr r4, [pc, #528] ; (b340 ) b12e: f8b9 201e ldrh.w r2, [r9, #30] b132: ee18 3a10 vmov r3, s16 b136: a91e add r1, sp, #120 ; 0x78 b138: 4640 mov r0, r8 b13a: 47a0 blx r4 fa.y1--; b13c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b140: 3b01 subs r3, #1 b142: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2--; b146: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b14a: 3b01 subs r3, #1 b14c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; b150: 4456 add r6, sl for(y = 0; y < h; y++) { b152: 3701 adds r7, #1 b154: f7ff ba75 b.w a642 _lv_memset(mask_buf, dsc->shadow_opa, w); b158: f899 1028 ldrb.w r1, [r9, #40] ; 0x28 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b15c: 4c78 ldr r4, [pc, #480] ; (b340 ) _lv_memset(mask_buf, dsc->shadow_opa, w); b15e: ee18 0a10 vmov r0, s16 b162: 4632 mov r2, r6 b164: 47d0 blx sl mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b166: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a b16a: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 b16e: 4633 mov r3, r6 b170: ee18 0a10 vmov r0, s16 b174: 47d8 blx fp _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b176: f899 3029 ldrb.w r3, [r9, #41] ; 0x29 b17a: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b17c: 2801 cmp r0, #1 b17e: bf08 it eq b180: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b182: 23ff movs r3, #255 ; 0xff b184: e9cd 0300 strd r0, r3, [sp] b188: a91e add r1, sp, #120 ; 0x78 b18a: ee18 3a10 vmov r3, s16 b18e: f8b9 201e ldrh.w r2, [r9, #30] b192: 4640 mov r0, r8 b194: 47a0 blx r4 fa.y1++; b196: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b19a: 3301 adds r3, #1 b19c: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; b1a0: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b1a4: 3301 adds r3, #1 b1a6: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { b1aa: 3501 adds r5, #1 b1ac: f7ff ba8b b.w a6c6 if(other_mask_cnt) simple_mode = false; b1b0: 2300 movs r3, #0 b1b2: f7ff bb0c b.w a7ce if(rout > 0) { b1b6: 2c00 cmp r4, #0 b1b8: f340 80ad ble.w b316 lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false); b1bc: 2300 movs r3, #0 b1be: 4622 mov r2, r4 b1c0: a916 add r1, sp, #88 ; 0x58 b1c2: a825 add r0, sp, #148 ; 0x94 b1c4: 4f5f ldr r7, [pc, #380] ; (b344 ) b1c6: 47b8 blx r7 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); b1c8: 4b5f ldr r3, [pc, #380] ; (b348 ) b1ca: 2100 movs r1, #0 b1cc: a825 add r0, sp, #148 ; 0x94 b1ce: 4798 blx r3 b1d0: 9009 str r0, [sp, #36] ; 0x24 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { b1d2: f899 3006 ldrb.w r3, [r9, #6] lv_color_t grad_color = dsc->bg_color; b1d6: f8b9 b002 ldrh.w fp, [r9, #2] if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { b1da: 2b02 cmp r3, #2 b1dc: f040 80a8 bne.w b330 b1e0: f8b9 2004 ldrh.w r2, [r9, #4] b1e4: 455a cmp r2, fp b1e6: f000 80a3 beq.w b330 grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); b1ea: 4b58 ldr r3, [pc, #352] ; (b34c ) b1ec: 0070 lsls r0, r6, #1 b1ee: 4798 blx r3 for(i = 0; i < coords_w; i++) { b1f0: 2700 movs r7, #0 grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); b1f2: 9006 str r0, [sp, #24] for(i = 0; i < coords_w; i++) { b1f4: 42be cmp r6, r7 b1f6: 4b56 ldr r3, [pc, #344] ; (b350 ) b1f8: f300 8091 bgt.w b31e b1fc: f9bd 205c ldrsh.w r2, [sp, #92] ; 0x5c b200: f9bd 1058 ldrsh.w r1, [sp, #88] ; 0x58 fill_area.x2 = coords_bg.x2; b204: f8ad 206c strh.w r2, [sp, #108] ; 0x6c b208: 1c53 adds r3, r2, #1 b20a: 1a5b subs r3, r3, r1 if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true; b20c: b21b sxth r3, r3 b20e: eba3 0344 sub.w r3, r3, r4, lsl #1 b212: 930a str r3, [sp, #40] ; 0x28 fill_area.y1 = disp_area->y1 + draw_area.y1; b214: 9b05 ldr r3, [sp, #20] b216: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 b21a: 8a5b ldrh r3, [r3, #18] fill_area.x1 = coords_bg.x1; b21c: f8ad 1068 strh.w r1, [sp, #104] ; 0x68 fill_area.y1 = disp_area->y1 + draw_area.y1; b220: 4413 add r3, r2 b222: b21b sxth r3, r3 b224: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area.y2 = fill_area.y1; b228: f8ad 306e strh.w r3, [sp, #110] ; 0x6e for(h = draw_area.y1; h <= draw_area.y2; h++) { b22c: 9207 str r2, [sp, #28] b22e: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 b232: 9a07 ldr r2, [sp, #28] b234: 429a cmp r2, r3 b236: f340 808f ble.w b358 if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) { b23a: f899 3006 ldrb.w r3, [r9, #6] b23e: 9a0c ldr r2, [sp, #48] ; 0x30 b240: 431a orrs r2, r3 b242: f012 03ff ands.w r3, r2, #255 ; 0xff b246: d15d bne.n b304 b248: 9a0a ldr r2, [sp, #40] ; 0x28 b24a: 2a32 cmp r2, #50 ; 0x32 b24c: dd5a ble.n b304 fill_area.x1 = coords_bg.x1 + rout; b24e: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 b252: b2a6 uxth r6, r4 b254: fa12 f484 uxtah r4, r2, r4 fill_area.x2 = coords_bg.x2 - rout; b258: f8bd 205c ldrh.w r2, [sp, #92] ; 0x5c fill_area.x1 = coords_bg.x1 + rout; b25c: f8ad 4068 strh.w r4, [sp, #104] ; 0x68 fill_area.x2 = coords_bg.x2 - rout; b260: 1b92 subs r2, r2, r6 b262: f8ad 206c strh.w r2, [sp, #108] ; 0x6c fill_area.y1 = coords_bg.y1; b266: f9bd 205a ldrsh.w r2, [sp, #90] ; 0x5a b26a: f8ad 206a strh.w r2, [sp, #106] ; 0x6a fill_area.y2 = coords_bg.y1 + rout; b26e: 4432 add r2, r6 b270: f8ad 206e strh.w r2, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area, b274: f899 200d ldrb.w r2, [r9, #13] b278: 4c31 ldr r4, [pc, #196] ; (b340 ) b27a: e9cd a201 strd sl, r2, [sp, #4] b27e: 2201 movs r2, #1 b280: 9200 str r2, [sp, #0] b282: f8b9 2002 ldrh.w r2, [r9, #2] b286: a91a add r1, sp, #104 ; 0x68 b288: 4640 mov r0, r8 b28a: 47a0 blx r4 fill_area.y1 = coords_bg.y2 - rout; b28c: f9bd 105e ldrsh.w r1, [sp, #94] ; 0x5e if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ b290: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area, b294: 4c2a ldr r4, [pc, #168] ; (b340 ) fill_area.y2 = coords_bg.y2; b296: f8ad 106e strh.w r1, [sp, #110] ; 0x6e fill_area.y1 = coords_bg.y2 - rout; b29a: 1b8a subs r2, r1, r6 b29c: b212 sxth r2, r2 if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ b29e: 429a cmp r2, r3 b2a0: bfd8 it le b2a2: 3301 addle r3, #1 fill_area.y1 = coords_bg.y2 - rout; b2a4: f8ad 206a strh.w r2, [sp, #106] ; 0x6a if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ b2a8: bfd8 it le b2aa: f8ad 306a strhle.w r3, [sp, #106] ; 0x6a _lv_blend_fill(clip, &fill_area, b2ae: f899 300d ldrb.w r3, [r9, #13] b2b2: e9cd a301 strd sl, r3, [sp, #4] b2b6: 2701 movs r7, #1 b2b8: 9700 str r7, [sp, #0] b2ba: f8b9 2002 ldrh.w r2, [r9, #2] b2be: 2300 movs r3, #0 b2c0: a91a add r1, sp, #104 ; 0x68 b2c2: 4640 mov r0, r8 b2c4: 47a0 blx r4 fill_area.x1 = coords_bg.x1; b2c6: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 b2ca: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area.x2 = coords_bg.x2; b2ce: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c b2d2: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area.y1 = coords_bg.y1 + rout + 1; b2d6: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a b2da: 443b add r3, r7 b2dc: 4433 add r3, r6 b2de: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area.y2 = coords_bg.y2 - rout - 1; b2e2: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e b2e6: 3b01 subs r3, #1 b2e8: 1b9e subs r6, r3, r6 _lv_blend_fill(clip, &fill_area, b2ea: f899 300d ldrb.w r3, [r9, #13] b2ee: 9700 str r7, [sp, #0] b2f0: e9cd a301 strd sl, r3, [sp, #4] fill_area.y2 = coords_bg.y2 - rout - 1; b2f4: f8ad 606e strh.w r6, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area, b2f8: f8b9 2002 ldrh.w r2, [r9, #2] b2fc: 2300 movs r3, #0 b2fe: a91a add r1, sp, #104 ; 0x68 b300: 4640 mov r0, r8 b302: 47a0 blx r4 if(grad_map) _lv_mem_buf_release(grad_map); b304: 9b06 ldr r3, [sp, #24] b306: 2b00 cmp r3, #0 b308: f43f aa94 beq.w a834 b30c: 4618 mov r0, r3 b30e: 4b11 ldr r3, [pc, #68] ; (b354 ) b310: 4798 blx r3 b312: f7ff ba8f b.w a834 int16_t mask_rout_id = LV_MASK_ID_INV; b316: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff b31a: 9309 str r3, [sp, #36] ; 0x24 b31c: e759 b.n b1d2 grad_map[i] = grad_get(dsc, coords_w, i); b31e: b23a sxth r2, r7 b320: 4631 mov r1, r6 b322: 4648 mov r0, r9 b324: 4798 blx r3 b326: 9b06 ldr r3, [sp, #24] b328: f823 0017 strh.w r0, [r3, r7, lsl #1] for(i = 0; i < coords_w; i++) { b32c: 3701 adds r7, #1 b32e: e761 b.n b1f4 lv_color_t * grad_map = NULL; b330: 2300 movs r3, #0 b332: 9306 str r3, [sp, #24] b334: e762 b.n b1fc b336: bf00 nop b338: 0000f001 .word 0x0000f001 b33c: 00009769 .word 0x00009769 b340: 000061d9 .word 0x000061d9 b344: 00009925 .word 0x00009925 b348: 00009719 .word 0x00009719 b34c: 0000eefd .word 0x0000eefd b350: 00009981 .word 0x00009981 b354: 0000ebb1 .word 0x0000ebb1 int32_t y = h + vdb->area.y1; b358: 9b05 ldr r3, [sp, #20] b35a: f9b3 7012 ldrsh.w r7, [r3, #18] b35e: 9b07 ldr r3, [sp, #28] b360: 441f add r7, r3 if(y > coords_bg.y1 + rout + 1 && b362: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a b366: 4423 add r3, r4 b368: 3301 adds r3, #1 b36a: 429f cmp r7, r3 b36c: dd09 ble.n b382 y < coords_bg.y2 - rout - 1) { b36e: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e b372: 1b1b subs r3, r3, r4 b374: 3b01 subs r3, #1 if(y > coords_bg.y1 + rout + 1 && b376: 429f cmp r7, r3 b378: da03 bge.n b382 if(simple_mode == false) { b37a: 9b08 ldr r3, [sp, #32] b37c: 2b00 cmp r3, #0 b37e: f040 8095 bne.w b4ac _lv_memset_ff(mask_buf, draw_area_w); b382: ee18 1a10 vmov r1, s16 b386: 4bbc ldr r3, [pc, #752] ; (b678 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b388: 4ebc ldr r6, [pc, #752] ; (b67c ) _lv_memset_ff(mask_buf, draw_area_w); b38a: 4628 mov r0, r5 b38c: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b38e: 9b05 ldr r3, [sp, #20] b390: 8a5a ldrh r2, [r3, #18] b392: 9b07 ldr r3, [sp, #28] b394: 441a add r2, r3 b396: 9b05 ldr r3, [sp, #20] b398: 8a19 ldrh r1, [r3, #16] b39a: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 b39e: 4419 add r1, r3 b3a0: b212 sxth r2, r2 b3a2: ee18 3a10 vmov r3, s16 b3a6: b209 sxth r1, r1 b3a8: 4628 mov r0, r5 b3aa: 47b0 blx r6 b3ac: 4606 mov r6, r0 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { b3ae: f899 3006 ldrb.w r3, [r9, #6] b3b2: 2b01 cmp r3, #1 b3b4: d112 bne.n b3dc b3b6: f8b9 2002 ldrh.w r2, [r9, #2] b3ba: f8b9 3004 ldrh.w r3, [r9, #4] b3be: 429a cmp r2, r3 b3c0: d00c beq.n b3dc return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b3c2: f8bd 105e ldrh.w r1, [sp, #94] ; 0x5e b3c6: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a b3ca: 3101 adds r1, #1 grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1); b3cc: 1afa subs r2, r7, r3 b3ce: 1ac9 subs r1, r1, r3 b3d0: b212 sxth r2, r2 b3d2: 4bab ldr r3, [pc, #684] ; (b680 ) b3d4: b209 sxth r1, r1 b3d6: 4648 mov r0, r9 b3d8: 4798 blx r3 b3da: 4683 mov fp, r0 if(simple_mode && split && b3dc: 9b08 ldr r3, [sp, #32] b3de: 2b00 cmp r3, #0 b3e0: d066 beq.n b4b0 b3e2: 9b0a ldr r3, [sp, #40] ; 0x28 b3e4: 2b32 cmp r3, #50 ; 0x32 b3e6: dd63 ble.n b4b0 (y < coords_bg.y1 + rout + 1 || b3e8: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a b3ec: 4423 add r3, r4 if(simple_mode && split && b3ee: 429f cmp r7, r3 b3f0: dd04 ble.n b3fc y > coords_bg.y2 - rout - 1)) { b3f2: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e b3f6: 1b1b subs r3, r3, r4 (y < coords_bg.y1 + rout + 1 || b3f8: 429f cmp r7, r3 b3fa: db59 blt.n b4b0 fill_area2.x1 = coords_bg.x1; b3fc: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 b400: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords_bg.x1 + rout - 1; b404: 3b01 subs r3, #1 b406: fa13 f384 uxtah r3, r3, r4 b40a: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.y1 = fill_area.y1; b40e: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a b412: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; b416: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e b41a: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area2, b41e: f899 300d ldrb.w r3, [r9, #13] b422: 4f98 ldr r7, [pc, #608] ; (b684 ) b424: 9600 str r6, [sp, #0] fill_area2.x2 = coords_bg.x1 + rout - 1; b426: b2a2 uxth r2, r4 _lv_blend_fill(clip, &fill_area2, b428: e9cd a301 strd sl, r3, [sp, #4] fill_area2.x2 = coords_bg.x1 + rout - 1; b42c: 920b str r2, [sp, #44] ; 0x2c _lv_blend_fill(clip, &fill_area2, b42e: 462b mov r3, r5 b430: 465a mov r2, fp b432: a91e add r1, sp, #120 ; 0x78 b434: 4640 mov r0, r8 b436: 47b8 blx r7 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { b438: f899 2006 ldrb.w r2, [r9, #6] b43c: 2a01 cmp r2, #1 b43e: d114 bne.n b46a fill_area2.x1 = coords_bg.x1 + rout; b440: 990b ldr r1, [sp, #44] ; 0x2c b442: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 b446: 440b add r3, r1 b448: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords_bg.x2 - rout; b44c: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c b450: 1a5b subs r3, r3, r1 b452: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, b456: f899 300d ldrb.w r3, [r9, #13] b45a: 9200 str r2, [sp, #0] b45c: e9cd a301 strd sl, r3, [sp, #4] b460: 465a mov r2, fp b462: 2300 movs r3, #0 b464: a91e add r1, sp, #120 ; 0x78 b466: 4640 mov r0, r8 b468: 47b8 blx r7 fill_area2.x1 = coords_bg.x2 - rout + 1; b46a: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c b46e: 990b ldr r1, [sp, #44] ; 0x2c fill_area2.x2 = coords_bg.x2; b470: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.x1 = coords_bg.x2 - rout + 1; b474: 1c5a adds r2, r3, #1 b476: 1a57 subs r7, r2, r1 int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b478: 9a05 ldr r2, [sp, #20] fill_area2.x1 = coords_bg.x2 - rout + 1; b47a: f8ad 7078 strh.w r7, [sp, #120] ; 0x78 int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b47e: f9b2 2010 ldrsh.w r2, [r2, #16] b482: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 b486: 1b1b subs r3, r3, r4 b488: 440a add r2, r1 b48a: 3301 adds r3, #1 b48c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, b48e: f899 200d ldrb.w r2, [r9, #13] b492: 9600 str r6, [sp, #0] b494: e9cd a201 strd sl, r2, [sp, #4] b498: 2b00 cmp r3, #0 b49a: bfac ite ge b49c: 18eb addge r3, r5, r3 b49e: 1c2b addlt r3, r5, #0 b4a0: 465a mov r2, fp b4a2: a91e add r1, sp, #120 ; 0x78 _lv_blend_fill(clip, &fill_area, b4a4: 4e77 ldr r6, [pc, #476] ; (b684 ) b4a6: 4640 mov r0, r8 b4a8: 47b0 blx r6 b4aa: e010 b.n b4ce mask_res = LV_DRAW_MASK_RES_FULL_COVER; b4ac: 2601 movs r6, #1 b4ae: e77e b.n b3ae if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { b4b0: f899 3006 ldrb.w r3, [r9, #6] b4b4: 2b02 cmp r3, #2 b4b6: d118 bne.n b4ea _lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode); b4b8: f899 300d ldrb.w r3, [r9, #13] b4bc: 9a06 ldr r2, [sp, #24] b4be: 9600 str r6, [sp, #0] b4c0: e9cd a301 strd sl, r3, [sp, #4] b4c4: 4e70 ldr r6, [pc, #448] ; (b688 ) b4c6: 462b mov r3, r5 b4c8: a91a add r1, sp, #104 ; 0x68 b4ca: 4640 mov r0, r8 b4cc: 47b0 blx r6 fill_area.y1++; b4ce: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a b4d2: 3301 adds r3, #1 b4d4: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area.y2++; b4d8: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e b4dc: 3301 adds r3, #1 b4de: f8ad 306e strh.w r3, [sp, #110] ; 0x6e for(h = draw_area.y1; h <= draw_area.y2; h++) { b4e2: 9b07 ldr r3, [sp, #28] b4e4: 3301 adds r3, #1 b4e6: 9307 str r3, [sp, #28] b4e8: e6a1 b.n b22e else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { b4ea: 2b01 cmp r3, #1 b4ec: d108 bne.n b500 _lv_blend_fill(clip, &fill_area, b4ee: f899 300d ldrb.w r3, [r9, #13] b4f2: 9600 str r6, [sp, #0] b4f4: e9cd a301 strd sl, r3, [sp, #4] b4f8: 465a mov r2, fp b4fa: 462b mov r3, r5 b4fc: a91a add r1, sp, #104 ; 0x68 b4fe: e7d1 b.n b4a4 else if(other_mask_cnt != 0 || !split) { b500: 9b0d ldr r3, [sp, #52] ; 0x34 b502: 2b00 cmp r3, #0 b504: d1f3 bne.n b4ee b506: 9b0a ldr r3, [sp, #40] ; 0x28 b508: 2b32 cmp r3, #50 ; 0x32 b50a: dce0 bgt.n b4ce b50c: e7ef b.n b4ee lv_draw_img_dsc_init(&img_dsc); b50e: 4b5f ldr r3, [pc, #380] ; (b68c ) img_w = header.w; b510: 9d25 ldr r5, [sp, #148] ; 0x94 img_h = header.h; b512: f8bd a096 ldrh.w sl, [sp, #150] ; 0x96 lv_draw_img_dsc_init(&img_dsc); b516: a81a add r0, sp, #104 ; 0x68 b518: 4798 blx r3 img_dsc.opa = dsc->pattern_opa; b51a: f899 3036 ldrb.w r3, [r9, #54] ; 0x36 b51e: f88d 3068 strb.w r3, [sp, #104] ; 0x68 img_dsc.recolor_opa = dsc->pattern_recolor_opa; b522: f899 3037 ldrb.w r3, [r9, #55] ; 0x37 b526: f88d 3072 strb.w r3, [sp, #114] ; 0x72 img_dsc.recolor = dsc->pattern_recolor; b52a: f8b9 3034 ldrh.w r3, [r9, #52] ; 0x34 b52e: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 img_w = header.w; b532: f3c5 258a ubfx r5, r5, #10, #11 img_h = header.h; b536: f3ca 1a4a ubfx sl, sl, #5, #11 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b53a: fa1f f78a uxth.w r7, sl b53e: 1e7b subs r3, r7, #1 b540: fa1f fb83 uxth.w fp, r3 if(dsc->pattern_repeat) { b544: f899 3038 ldrb.w r3, [r9, #56] ; 0x38 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); b548: f9b9 2000 ldrsh.w r2, [r9] if(dsc->pattern_repeat) { b54c: 07db lsls r3, r3, #31 b54e: f140 80cf bpl.w b6f0 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); b552: 9904 ldr r1, [sp, #16] b554: 4c4e ldr r4, [pc, #312] ; (b690 ) b556: 2300 movs r3, #0 b558: a825 add r0, sp, #148 ; 0x94 b55a: 47a0 blx r4 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); b55c: 4b4d ldr r3, [pc, #308] ; (b694 ) b55e: 2100 movs r1, #0 b560: a825 add r0, sp, #148 ; 0x94 b562: 4798 blx r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b564: 9b04 ldr r3, [sp, #16] b566: 889c ldrh r4, [r3, #4] b568: 881b ldrh r3, [r3, #0] b56a: 3401 adds r4, #1 b56c: 1ae4 subs r4, r4, r3 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; b56e: b224 sxth r4, r4 b570: fb94 f3f5 sdiv r3, r4, r5 b574: fb05 4413 mls r4, r5, r3, r4 b578: eb04 74d4 add.w r4, r4, r4, lsr #31 b57c: 1063 asrs r3, r4, #1 b57e: 9305 str r3, [sp, #20] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b580: 9b04 ldr r3, [sp, #16] b582: 885a ldrh r2, [r3, #2] b584: 88db ldrh r3, [r3, #6] b586: 3301 adds r3, #1 b588: 1a9b subs r3, r3, r2 int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2; b58a: b21b sxth r3, r3 b58c: fb93 f1fa sdiv r1, r3, sl b590: fb0a 3a11 mls sl, sl, r1, r3 b594: eb0a 7ada add.w sl, sl, sl, lsr #31 coords_tmp.y1 = coords->y1 - ofs_y; b598: eba2 0a6a sub.w sl, r2, sl, asr #1 b59c: fa1f fa8a uxth.w sl, sl b5a0: f8ad a062 strh.w sl, [sp, #98] ; 0x62 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); b5a4: ee08 0a10 vmov s16, r0 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b5a8: 44da add sl, fp if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); b5aa: f8df b10c ldr.w fp, [pc, #268] ; b6b8 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b5ae: f8ad a066 strh.w sl, [sp, #102] ; 0x66 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { b5b2: 9b04 ldr r3, [sp, #16] b5b4: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 b5b8: f9b3 3006 ldrsh.w r3, [r3, #6] b5bc: 429a cmp r2, r3 b5be: dd3a ble.n b636 lv_draw_mask_remove_id(radius_mask_id); b5c0: ee18 0a10 vmov r0, s16 lv_draw_mask_remove_id(radius_mask_id); b5c4: 4b34 ldr r3, [pc, #208] ; (b698 ) b5c6: 4798 blx r3 b5c8: f7ff b958 b.w a87c else if(src_type == LV_IMG_SRC_SYMBOL) { b5cc: 2802 cmp r0, #2 b5ce: d121 bne.n b614 lv_draw_label_dsc_init(&label_dsc); b5d0: 4b32 ldr r3, [pc, #200] ; (b69c ) _lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX, b5d2: 4c33 ldr r4, [pc, #204] ; (b6a0 ) lv_draw_label_dsc_init(&label_dsc); b5d4: a81e add r0, sp, #120 ; 0x78 b5d6: 4798 blx r3 label_dsc.color = dsc->pattern_recolor; b5d8: f8b9 3034 ldrh.w r3, [r9, #52] ; 0x34 b5dc: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 label_dsc.opa = dsc->pattern_opa; b5e0: f899 3036 ldrb.w r3, [r9, #54] ; 0x36 b5e4: f88d 3080 strb.w r3, [sp, #128] ; 0x80 _lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX, b5e8: 2100 movs r1, #0 b5ea: f647 4318 movw r3, #31768 ; 0x7c18 label_dsc.font = dsc->pattern_font; b5ee: f8d9 2030 ldr.w r2, [r9, #48] ; 0x30 b5f2: 921f str r2, [sp, #124] ; 0x7c _lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX, b5f4: e9cd 3101 strd r3, r1, [sp, #4] b5f8: f9bd 3082 ldrsh.w r3, [sp, #130] ; 0x82 b5fc: 9300 str r3, [sp, #0] b5fe: f8d9 102c ldr.w r1, [r9, #44] ; 0x2c b602: f9bd 3084 ldrsh.w r3, [sp, #132] ; 0x84 b606: a825 add r0, sp, #148 ; 0x94 b608: 47a0 blx r4 img_w = s.x; b60a: f9bd 5094 ldrsh.w r5, [sp, #148] ; 0x94 img_h = s.y; b60e: f9bd a096 ldrsh.w sl, [sp, #150] ; 0x96 b612: e792 b.n b53a LV_LOG_WARN("lv_img_design: image source type is unknown"); b614: 4b23 ldr r3, [pc, #140] ; (b6a4 ) b616: 9300 str r3, [sp, #0] b618: 4923 ldr r1, [pc, #140] ; (b6a8 ) b61a: 4b24 ldr r3, [pc, #144] ; (b6ac ) b61c: 4c24 ldr r4, [pc, #144] ; (b6b0 ) b61e: f240 52ae movw r2, #1454 ; 0x5ae b622: 2002 movs r0, #2 b624: 47a0 blx r4 lv_draw_img(coords, clip, NULL, NULL); b626: 2300 movs r3, #0 b628: 9804 ldr r0, [sp, #16] b62a: 4c22 ldr r4, [pc, #136] ; (b6b4 ) b62c: 461a mov r2, r3 b62e: 4641 mov r1, r8 b630: 47a0 blx r4 return; b632: f7ff b923 b.w a87c coords_tmp.x1 = coords->x1 - ofs_x; b636: 9b04 ldr r3, [sp, #16] b638: 9a05 ldr r2, [sp, #20] b63a: 881b ldrh r3, [r3, #0] coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b63c: fa1f fa85 uxth.w sl, r5 coords_tmp.x1 = coords->x1 - ofs_x; b640: 1a9b subs r3, r3, r2 b642: b29b uxth r3, r3 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b644: f10a 32ff add.w r2, sl, #4294967295 ; 0xffffffff coords_tmp.x1 = coords->x1 - ofs_x; b648: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b64c: 4413 add r3, r2 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { b64e: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 b652: 9b04 ldr r3, [sp, #16] b654: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 b658: f9b3 3004 ldrsh.w r3, [r3, #4] b65c: 429a cmp r2, r3 b65e: dd2d ble.n b6bc for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { b660: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b664: 443b add r3, r7 b666: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 b66a: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b66e: 443b add r3, r7 b670: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 b674: e79d b.n b5b2 b676: bf00 nop b678: 0000f0bd .word 0x0000f0bd b67c: 00009769 .word 0x00009769 b680: 00009981 .word 0x00009981 b684: 000061d9 .word 0x000061d9 b688: 000067d5 .word 0x000067d5 b68c: 00007551 .word 0x00007551 b690: 00009925 .word 0x00009925 b694: 00009719 .word 0x00009719 b698: 000097ad .word 0x000097ad b69c: 00007855 .word 0x00007855 b6a0: 000101fd .word 0x000101fd b6a4: 0001fe07 .word 0x0001fe07 b6a8: 0001fdb3 .word 0x0001fdb3 b6ac: 0001fe36 .word 0x0001fe36 b6b0: 0000e931 .word 0x0000e931 b6b4: 000075c1 .word 0x000075c1 b6b8: 00007885 .word 0x00007885 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); b6bc: 2e02 cmp r6, #2 b6be: f8d9 202c ldr.w r2, [r9, #44] ; 0x2c b6c2: d10f bne.n b6e4 b6c4: 2300 movs r3, #0 b6c6: 9300 str r3, [sp, #0] b6c8: 4641 mov r1, r8 b6ca: 4613 mov r3, r2 b6cc: a818 add r0, sp, #96 ; 0x60 b6ce: aa1e add r2, sp, #120 ; 0x78 b6d0: 47d8 blx fp for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { b6d2: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 b6d6: 4453 add r3, sl b6d8: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 b6dc: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 b6e0: 4453 add r3, sl b6e2: e7b4 b.n b64e else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); b6e4: 4cb2 ldr r4, [pc, #712] ; (b9b0 ) b6e6: ab1a add r3, sp, #104 ; 0x68 b6e8: 4641 mov r1, r8 b6ea: a818 add r0, sp, #96 ; 0x60 b6ec: 47a0 blx r4 b6ee: e7f0 b.n b6d2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b6f0: 9904 ldr r1, [sp, #16] b6f2: 9b04 ldr r3, [sp, #16] b6f4: 8889 ldrh r1, [r1, #4] b6f6: 881c ldrh r4, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b6f8: 8858 ldrh r0, [r3, #2] b6fa: 88db ldrh r3, [r3, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b6fc: 3101 adds r1, #1 b6fe: 1b09 subs r1, r1, r4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b700: 3301 adds r3, #1 b702: 1a1b subs r3, r3, r0 int32_t obj_w = lv_area_get_width(coords); b704: b209 sxth r1, r1 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b706: 1b49 subs r1, r1, r5 int32_t obj_h = lv_area_get_height(coords); b708: b21b sxth r3, r3 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b70a: eb01 71d1 add.w r1, r1, r1, lsr #31 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b70e: eba3 030a sub.w r3, r3, sl coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b712: eb04 0161 add.w r1, r4, r1, asr #1 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b716: eb03 74d3 add.w r4, r3, r3, lsr #31 b71a: eb00 0064 add.w r0, r0, r4, asr #1 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b71e: b289 uxth r1, r1 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b720: b280 uxth r0, r0 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b722: 3d01 subs r5, #1 b724: 440d add r5, r1 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b726: f8ad 1060 strh.w r1, [sp, #96] ; 0x60 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b72a: eb00 010b add.w r1, r0, fp b72e: b289 uxth r1, r1 if(src_type == LV_IMG_SRC_SYMBOL) { b730: 2e02 cmp r6, #2 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b732: f8ad 0062 strh.w r0, [sp, #98] ; 0x62 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b736: f8ad 5064 strh.w r5, [sp, #100] ; 0x64 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b73a: f8ad 1066 strh.w r1, [sp, #102] ; 0x66 if(src_type == LV_IMG_SRC_SYMBOL) { b73e: d107 bne.n b750 coords_tmp.y1 += y_corr; b740: f003 0301 and.w r3, r3, #1 b744: 4418 add r0, r3 coords_tmp.y2 += y_corr; b746: 440b add r3, r1 coords_tmp.y1 += y_corr; b748: f8ad 0062 strh.w r0, [sp, #98] ; 0x62 coords_tmp.y2 += y_corr; b74c: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { b750: 9904 ldr r1, [sp, #16] b752: 4b98 ldr r3, [pc, #608] ; (b9b4 ) b754: a818 add r0, sp, #96 ; 0x60 b756: 4798 blx r3 b758: 4604 mov r4, r0 b75a: b9c8 cbnz r0, b790 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); b75c: 4603 mov r3, r0 b75e: f9b9 2000 ldrsh.w r2, [r9] b762: 9904 ldr r1, [sp, #16] b764: 4d94 ldr r5, [pc, #592] ; (b9b8 ) b766: a825 add r0, sp, #148 ; 0x94 b768: 47a8 blx r5 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); b76a: 4621 mov r1, r4 b76c: 4b93 ldr r3, [pc, #588] ; (b9bc ) b76e: a825 add r0, sp, #148 ; 0x94 b770: 4798 blx r3 b772: 4604 mov r4, r0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); b774: 2e02 cmp r6, #2 b776: f8d9 202c ldr.w r2, [r9, #44] ; 0x2c b77a: d10c bne.n b796 b77c: 2300 movs r3, #0 b77e: 9300 str r3, [sp, #0] b780: 4d8f ldr r5, [pc, #572] ; (b9c0 ) b782: 4613 mov r3, r2 b784: 4641 mov r1, r8 b786: aa1e add r2, sp, #120 ; 0x78 b788: a818 add r0, sp, #96 ; 0x60 b78a: 47a8 blx r5 lv_draw_mask_remove_id(radius_mask_id); b78c: 4620 mov r0, r4 b78e: e719 b.n b5c4 int16_t radius_mask_id = LV_MASK_ID_INV; b790: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff b794: e7ee b.n b774 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); b796: 4d86 ldr r5, [pc, #536] ; (b9b0 ) b798: ab1a add r3, sp, #104 ; 0x68 b79a: 4641 mov r1, r8 b79c: a818 add r0, sp, #96 ; 0x60 b79e: 47a8 blx r5 b7a0: e7f4 b.n b78c if(other_mask_cnt) simple_mode = false; b7a2: 2300 movs r3, #0 b7a4: f7ff b8b9 b.w a91a int16_t mask_rout_id = LV_MASK_ID_INV; b7a8: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff b7ac: 930b str r3, [sp, #44] ; 0x2c b7ae: f7ff b903 b.w a9b8 _lv_memset_ff(mask_buf, draw_area_w); b7b2: 4b84 ldr r3, [pc, #528] ; (b9c4 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b7b4: 4f84 ldr r7, [pc, #528] ; (b9c8 ) _lv_memset_ff(mask_buf, draw_area_w); b7b6: 4651 mov r1, sl b7b8: 4620 mov r0, r4 b7ba: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b7bc: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 b7c0: f8bb 2012 ldrh.w r2, [fp, #18] b7c4: f8bb 1010 ldrh.w r1, [fp, #16] b7c8: 4432 add r2, r6 b7ca: 4419 add r1, r3 b7cc: b212 sxth r2, r2 b7ce: 4653 mov r3, sl b7d0: b209 sxth r1, r1 b7d2: 4620 mov r0, r4 b7d4: 47b8 blx r7 fill_area2.y1 = fill_area.y1; b7d6: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b7da: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; b7de: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b7e2: f8ad 306e strh.w r3, [sp, #110] ; 0x6e fill_area2.x1 = coords->x1; b7e6: 9b04 ldr r3, [sp, #16] mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b7e8: 900a str r0, [sp, #40] ; 0x28 fill_area2.x1 = coords->x1; b7ea: f9b3 3000 ldrsh.w r3, [r3] b7ee: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x1 + rout - 1; b7f2: 3b01 subs r3, #1 b7f4: 442b add r3, r5 b7f6: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); b7fa: 9b06 ldr r3, [sp, #24] b7fc: 9302 str r3, [sp, #8] b7fe: 9b05 ldr r3, [sp, #20] b800: 9301 str r3, [sp, #4] b802: ee18 2a10 vmov r2, s16 b806: 9000 str r0, [sp, #0] b808: 4623 mov r3, r4 b80a: a91a add r1, sp, #104 ; 0x68 b80c: 4f6f ldr r7, [pc, #444] ; (b9cc ) b80e: 4640 mov r0, r8 b810: 47b8 blx r7 if(fill_area2.y2 < coords->y1 + dsc->border_width) { b812: 9b04 ldr r3, [sp, #16] b814: f9b9 1010 ldrsh.w r1, [r9, #16] b818: f9b3 3002 ldrsh.w r3, [r3, #2] b81c: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e b820: 440b add r3, r1 b822: 429a cmp r2, r3 b824: da15 bge.n b852 fill_area2.x1 = coords->x1 + rout; b826: 9b04 ldr r3, [sp, #16] b828: 881b ldrh r3, [r3, #0] b82a: 442b add r3, r5 b82c: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x2 - rout; b830: 9b04 ldr r3, [sp, #16] b832: 889b ldrh r3, [r3, #4] b834: 1b5b subs r3, r3, r5 b836: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); b83a: 9b06 ldr r3, [sp, #24] b83c: 9302 str r3, [sp, #8] b83e: 9b05 ldr r3, [sp, #20] b840: 9301 str r3, [sp, #4] b842: 2301 movs r3, #1 b844: 9300 str r3, [sp, #0] b846: ee18 2a10 vmov r2, s16 b84a: 2300 movs r3, #0 b84c: a91a add r1, sp, #104 ; 0x68 b84e: 4640 mov r0, r8 b850: 47b8 blx r7 fill_area2.x1 = coords->x2 - rout + 1; b852: 9b04 ldr r3, [sp, #16] int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b854: f9bd 1050 ldrsh.w r1, [sp, #80] ; 0x50 fill_area2.x1 = coords->x2 - rout + 1; b858: f9b3 3004 ldrsh.w r3, [r3, #4] fill_area2.x2 = coords->x2; b85c: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = coords->x2 - rout + 1; b860: 1c5a adds r2, r3, #1 b862: 1b52 subs r2, r2, r5 b864: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b868: 9a08 ldr r2, [sp, #32] _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b86a: 4f58 ldr r7, [pc, #352] ; (b9cc ) int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b86c: 1a9b subs r3, r3, r2 b86e: f9bb 2010 ldrsh.w r2, [fp, #16] b872: 3301 adds r3, #1 b874: 440a add r2, r1 b876: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b878: 9a06 ldr r2, [sp, #24] b87a: 9202 str r2, [sp, #8] b87c: 9a05 ldr r2, [sp, #20] b87e: 9201 str r2, [sp, #4] b880: 9a0a ldr r2, [sp, #40] ; 0x28 b882: 9200 str r2, [sp, #0] b884: 2b00 cmp r3, #0 b886: bfac ite ge b888: 18e3 addge r3, r4, r3 b88a: 1c23 addlt r3, r4, #0 b88c: ee18 2a10 vmov r2, s16 b890: a91a add r1, sp, #104 ; 0x68 b892: 4640 mov r0, r8 b894: 47b8 blx r7 fill_area.y1++; b896: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b89a: 3301 adds r3, #1 b89c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; b8a0: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b8a4: 3301 adds r3, #1 b8a6: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { b8aa: 3601 adds r6, #1 b8ac: f7ff b900 b.w aab0 _lv_memset_ff(mask_buf, draw_area_w); b8b0: 4b44 ldr r3, [pc, #272] ; (b9c4 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b8b2: 4f45 ldr r7, [pc, #276] ; (b9c8 ) _lv_memset_ff(mask_buf, draw_area_w); b8b4: 4651 mov r1, sl b8b6: 4620 mov r0, r4 b8b8: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b8ba: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 b8be: f8bb 2012 ldrh.w r2, [fp, #18] b8c2: f8bb 1010 ldrh.w r1, [fp, #16] b8c6: 4432 add r2, r6 b8c8: 4419 add r1, r3 b8ca: b212 sxth r2, r2 b8cc: 4653 mov r3, sl b8ce: b209 sxth r1, r1 b8d0: 4620 mov r0, r4 b8d2: 47b8 blx r7 fill_area2.x1 = coords->x1; b8d4: 9b04 ldr r3, [sp, #16] mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b8d6: 9009 str r0, [sp, #36] ; 0x24 fill_area2.x1 = coords->x1; b8d8: f9b3 3000 ldrsh.w r3, [r3] b8dc: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x1 + rout - 1; b8e0: 3b01 subs r3, #1 b8e2: 442b add r3, r5 b8e4: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.y1 = fill_area.y1; b8e8: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b8ec: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; b8f0: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b8f4: f8ad 306e strh.w r3, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); b8f8: 9b06 ldr r3, [sp, #24] b8fa: 9302 str r3, [sp, #8] b8fc: 9b05 ldr r3, [sp, #20] b8fe: 9301 str r3, [sp, #4] b900: ee18 2a10 vmov r2, s16 b904: 9000 str r0, [sp, #0] b906: 4623 mov r3, r4 b908: a91a add r1, sp, #104 ; 0x68 b90a: 4f30 ldr r7, [pc, #192] ; (b9cc ) b90c: 4640 mov r0, r8 b90e: 47b8 blx r7 if(fill_area2.y2 > coords->y2 - dsc->border_width) { b910: 9b04 ldr r3, [sp, #16] b912: f9b9 1010 ldrsh.w r1, [r9, #16] b916: f9b3 3006 ldrsh.w r3, [r3, #6] b91a: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e b91e: 1a5b subs r3, r3, r1 b920: 429a cmp r2, r3 b922: dd15 ble.n b950 fill_area2.x1 = coords->x1 + rout; b924: 9b04 ldr r3, [sp, #16] b926: 881b ldrh r3, [r3, #0] b928: 442b add r3, r5 b92a: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x2 - rout; b92e: 9b04 ldr r3, [sp, #16] b930: 889b ldrh r3, [r3, #4] b932: 1b5b subs r3, r3, r5 b934: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); b938: 9b06 ldr r3, [sp, #24] b93a: 9302 str r3, [sp, #8] b93c: 9b05 ldr r3, [sp, #20] b93e: 9301 str r3, [sp, #4] b940: 2301 movs r3, #1 b942: 9300 str r3, [sp, #0] b944: ee18 2a10 vmov r2, s16 b948: 2300 movs r3, #0 b94a: a91a add r1, sp, #104 ; 0x68 b94c: 4640 mov r0, r8 b94e: 47b8 blx r7 fill_area2.x1 = coords->x2 - rout + 1; b950: 9b04 ldr r3, [sp, #16] int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b952: f9bd 1050 ldrsh.w r1, [sp, #80] ; 0x50 fill_area2.x1 = coords->x2 - rout + 1; b956: f9b3 3004 ldrsh.w r3, [r3, #4] fill_area2.x2 = coords->x2; b95a: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = coords->x2 - rout + 1; b95e: 1c5a adds r2, r3, #1 b960: 1b52 subs r2, r2, r5 b962: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b966: 9a08 ldr r2, [sp, #32] _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b968: 4f18 ldr r7, [pc, #96] ; (b9cc ) int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b96a: 1a9b subs r3, r3, r2 b96c: f9bb 2010 ldrsh.w r2, [fp, #16] b970: 3301 adds r3, #1 b972: 440a add r2, r1 b974: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b976: 9a06 ldr r2, [sp, #24] b978: 9202 str r2, [sp, #8] b97a: 9a05 ldr r2, [sp, #20] b97c: 9201 str r2, [sp, #4] b97e: 9a09 ldr r2, [sp, #36] ; 0x24 b980: 9200 str r2, [sp, #0] b982: 2b00 cmp r3, #0 b984: bfac ite ge b986: 18e3 addge r3, r4, r3 b988: 1c23 addlt r3, r4, #0 b98a: ee18 2a10 vmov r2, s16 b98e: a91a add r1, sp, #104 ; 0x68 b990: 4640 mov r0, r8 b992: 47b8 blx r7 fill_area.y1++; b994: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b998: 3301 adds r3, #1 b99a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; b99e: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b9a2: 3301 adds r3, #1 b9a4: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { b9a8: 3601 adds r6, #1 b9aa: f7ff b89d b.w aae8 b9ae: bf00 nop b9b0: 000075c1 .word 0x000075c1 b9b4: 0000e0d9 .word 0x0000e0d9 b9b8: 00009925 .word 0x00009925 b9bc: 00009719 .word 0x00009719 b9c0: 00007885 .word 0x00007885 b9c4: 0000f0bd .word 0x0000f0bd b9c8: 00009769 .word 0x00009769 b9cc: 000061d9 .word 0x000061d9 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; b9d0: f9b9 3012 ldrsh.w r3, [r9, #18] fill_area.x1 = coords->x1; b9d4: f8ad 1060 strh.w r1, [sp, #96] ; 0x60 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; b9d8: 2b04 cmp r3, #4 fill_area.x2 = coords->x2; b9da: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 fill_area.y1 = disp_area->y1 + draw_area.y1; b9de: f8ad 0062 strh.w r0, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; b9e2: f8ad 0066 strh.w r0, [sp, #102] ; 0x66 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; b9e6: d161 bne.n baac b9e8: 9a07 ldr r2, [sp, #28] b9ea: 188a adds r2, r1, r2 b9ec: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 volatile bool top_only = false; b9f0: 2200 movs r2, #0 if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; b9f2: 2b02 cmp r3, #2 volatile bool top_only = false; b9f4: f88d 203e strb.w r2, [sp, #62] ; 0x3e volatile bool bottom_only = false; b9f8: f88d 203f strb.w r2, [sp, #63] ; 0x3f if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; b9fc: d15d bne.n baba b9fe: 2301 movs r3, #1 ba00: f88d 303e strb.w r3, [sp, #62] ; 0x3e volatile bool normal = !top_only && !bottom_only ? true : false; ba04: f89d 303e ldrb.w r3, [sp, #62] ; 0x3e ba08: 2b00 cmp r3, #0 ba0a: d160 bne.n bace ba0c: f89d 303f ldrb.w r3, [sp, #63] ; 0x3f ba10: f083 0301 eor.w r3, r3, #1 ba14: f003 0301 and.w r3, r3, #1 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); ba18: 4dae ldr r5, [pc, #696] ; (bcd4 ) volatile bool normal = !top_only && !bottom_only ? true : false; ba1a: f88d 3040 strb.w r3, [sp, #64] ; 0x40 for(h = draw_area.y1; h <= draw_area.y2; h++) { ba1e: f9bd 3056 ldrsh.w r3, [sp, #86] ; 0x56 ba22: 429e cmp r6, r3 ba24: f73f a8a1 bgt.w ab6a if(normal || ba28: f89d 3040 ldrb.w r3, [sp, #64] ; 0x40 ba2c: b9ab cbnz r3, ba5a (top_only && fill_area.y1 <= coords->y1 + corner_size) || ba2e: f89d 303e ldrb.w r3, [sp, #62] ; 0x3e ba32: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 if(normal || ba36: b133 cbz r3, ba46 (top_only && fill_area.y1 <= coords->y1 + corner_size) || ba38: 9b04 ldr r3, [sp, #16] ba3a: 9907 ldr r1, [sp, #28] ba3c: f9b3 3002 ldrsh.w r3, [r3, #2] ba40: 440b add r3, r1 ba42: 429a cmp r2, r3 ba44: dd09 ble.n ba5a (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { ba46: f89d 303f ldrb.w r3, [sp, #63] ; 0x3f (top_only && fill_area.y1 <= coords->y1 + corner_size) || ba4a: b31b cbz r3, ba94 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { ba4c: 9b04 ldr r3, [sp, #16] ba4e: 9907 ldr r1, [sp, #28] ba50: f9b3 3006 ldrsh.w r3, [r3, #6] ba54: 1a5b subs r3, r3, r1 ba56: 429a cmp r2, r3 ba58: db1c blt.n ba94 _lv_memset_ff(mask_buf, draw_area_w); ba5a: 4b9f ldr r3, [pc, #636] ; (bcd8 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ba5c: 4f9f ldr r7, [pc, #636] ; (bcdc ) _lv_memset_ff(mask_buf, draw_area_w); ba5e: 4651 mov r1, sl ba60: 4620 mov r0, r4 ba62: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ba64: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 ba68: f8bb 2012 ldrh.w r2, [fp, #18] ba6c: f8bb 1010 ldrh.w r1, [fp, #16] ba70: 4432 add r2, r6 ba72: 4419 add r1, r3 ba74: b212 sxth r2, r2 ba76: 4653 mov r3, sl ba78: b209 sxth r1, r1 ba7a: 4620 mov r0, r4 ba7c: 47b8 blx r7 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); ba7e: 9b06 ldr r3, [sp, #24] ba80: 9302 str r3, [sp, #8] ba82: 9b05 ldr r3, [sp, #20] ba84: ee18 2a10 vmov r2, s16 ba88: e9cd 0300 strd r0, r3, [sp] ba8c: a918 add r1, sp, #96 ; 0x60 ba8e: 4623 mov r3, r4 ba90: 4640 mov r0, r8 ba92: 47a8 blx r5 fill_area.y1++; ba94: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 ba98: 3301 adds r3, #1 ba9a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; ba9e: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 baa2: 3301 adds r3, #1 baa4: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= draw_area.y2; h++) { baa8: 3601 adds r6, #1 baaa: e7b8 b.n ba1e else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; baac: 2b08 cmp r3, #8 baae: bf02 ittt eq bab0: 9907 ldreq r1, [sp, #28] bab2: 1a52 subeq r2, r2, r1 bab4: f8ad 2060 strheq.w r2, [sp, #96] ; 0x60 bab8: e79a b.n b9f0 if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; baba: 2b01 cmp r3, #1 babc: d004 beq.n bac8 if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) { babe: 2b03 cmp r3, #3 bac0: d1a0 bne.n ba04 top_only = true; bac2: 2301 movs r3, #1 bac4: f88d 303e strb.w r3, [sp, #62] ; 0x3e bottom_only = true; bac8: f88d 303f strb.w r3, [sp, #63] ; 0x3f bacc: e79a b.n ba04 volatile bool normal = !top_only && !bottom_only ? true : false; bace: 2300 movs r3, #0 bad0: e7a0 b.n ba14 _lv_memset_ff(mask_buf, draw_area_w); bad2: ee18 1a10 vmov r1, s16 bad6: 4b80 ldr r3, [pc, #512] ; (bcd8 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bad8: 4d80 ldr r5, [pc, #512] ; (bcdc ) _lv_memset_ff(mask_buf, draw_area_w); bada: 4620 mov r0, r4 badc: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bade: 9b04 ldr r3, [sp, #16] bae0: 8a5a ldrh r2, [r3, #18] bae2: 8a19 ldrh r1, [r3, #16] bae4: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 bae8: 4432 add r2, r6 baea: 4419 add r1, r3 baec: b212 sxth r2, r2 baee: ee18 3a10 vmov r3, s16 baf2: b209 sxth r1, r1 baf4: 4620 mov r0, r4 baf6: 47a8 blx r5 fill_area2.y1 = fill_area.y1; baf8: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bafc: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; bb00: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bb04: f8ad 306e strh.w r3, [sp, #110] ; 0x6e fill_area2.x1 = area_outer.x1; bb08: f9bd 3050 ldrsh.w r3, [sp, #80] ; 0x50 bb0c: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x1 + rout - 1; bb10: 3b01 subs r3, #1 bb12: fa13 f38b uxtah r3, r3, fp bb16: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bb1a: 9b06 ldr r3, [sp, #24] bb1c: 9302 str r3, [sp, #8] fill_area2.x2 = area_outer.x1 + rout - 1; bb1e: fa1f f28b uxth.w r2, fp _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bb22: 9b05 ldr r3, [sp, #20] mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bb24: 9009 str r0, [sp, #36] ; 0x24 fill_area2.x2 = area_outer.x1 + rout - 1; bb26: 9208 str r2, [sp, #32] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bb28: 9301 str r3, [sp, #4] bb2a: 9000 str r0, [sp, #0] bb2c: 4623 mov r3, r4 bb2e: 463a mov r2, r7 bb30: a91a add r1, sp, #104 ; 0x68 bb32: 4d68 ldr r5, [pc, #416] ; (bcd4 ) bb34: 4640 mov r0, r8 bb36: 47a8 blx r5 if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) { bb38: f9bd 3052 ldrsh.w r3, [sp, #82] ; 0x52 bb3c: f9b9 1018 ldrsh.w r1, [r9, #24] bb40: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e bb44: 440b add r3, r1 bb46: 429a cmp r2, r3 bb48: da15 bge.n bb76 fill_area2.x1 = area_outer.x1 + rout; bb4a: 9a08 ldr r2, [sp, #32] bb4c: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 bb50: 4413 add r3, r2 bb52: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x2 - rout; bb56: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 bb5a: 1a9b subs r3, r3, r2 bb5c: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); bb60: 9b06 ldr r3, [sp, #24] bb62: 9302 str r3, [sp, #8] bb64: 9b05 ldr r3, [sp, #20] bb66: 9301 str r3, [sp, #4] bb68: 2301 movs r3, #1 bb6a: 9300 str r3, [sp, #0] bb6c: 463a mov r2, r7 bb6e: 2300 movs r3, #0 bb70: a91a add r1, sp, #104 ; 0x68 bb72: 4640 mov r0, r8 bb74: 47a8 blx r5 fill_area2.x1 = area_outer.x2 - rout + 1; bb76: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 bb7a: 9908 ldr r1, [sp, #32] fill_area2.x2 = area_outer.x2; bb7c: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = area_outer.x2 - rout + 1; bb80: 1c5a adds r2, r3, #1 bb82: 1a52 subs r2, r2, r1 bb84: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bb88: 9a04 ldr r2, [sp, #16] bb8a: f9bd 1058 ldrsh.w r1, [sp, #88] ; 0x58 bb8e: f9b2 2010 ldrsh.w r2, [r2, #16] _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bb92: 4d50 ldr r5, [pc, #320] ; (bcd4 ) int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bb94: eba3 030b sub.w r3, r3, fp bb98: 440a add r2, r1 bb9a: 3301 adds r3, #1 bb9c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bb9e: 9a06 ldr r2, [sp, #24] bba0: 9202 str r2, [sp, #8] bba2: 9a05 ldr r2, [sp, #20] bba4: 9201 str r2, [sp, #4] bba6: 9a09 ldr r2, [sp, #36] ; 0x24 bba8: 9200 str r2, [sp, #0] bbaa: 2b00 cmp r3, #0 bbac: bfac ite ge bbae: 18e3 addge r3, r4, r3 bbb0: 1c23 addlt r3, r4, #0 bbb2: 463a mov r2, r7 bbb4: a91a add r1, sp, #104 ; 0x68 bbb6: 4640 mov r0, r8 bbb8: 47a8 blx r5 fill_area.y1++; bbba: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bbbe: 3301 adds r3, #1 bbc0: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; bbc4: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bbc8: 3301 adds r3, #1 bbca: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { bbce: 3601 adds r6, #1 bbd0: f7ff b94c b.w ae6c _lv_memset_ff(mask_buf, draw_area_w); bbd4: ee18 1a10 vmov r1, s16 bbd8: 4b3f ldr r3, [pc, #252] ; (bcd8 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bbda: 4d40 ldr r5, [pc, #256] ; (bcdc ) _lv_memset_ff(mask_buf, draw_area_w); bbdc: 4620 mov r0, r4 bbde: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bbe0: 9b04 ldr r3, [sp, #16] bbe2: 8a5a ldrh r2, [r3, #18] bbe4: 8a19 ldrh r1, [r3, #16] bbe6: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 bbea: 4432 add r2, r6 bbec: 4419 add r1, r3 bbee: b212 sxth r2, r2 bbf0: ee18 3a10 vmov r3, s16 bbf4: b209 sxth r1, r1 bbf6: 4620 mov r0, r4 bbf8: 47a8 blx r5 fill_area2.x1 = area_outer.x1; bbfa: f9bd 3050 ldrsh.w r3, [sp, #80] ; 0x50 bbfe: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x1 + rout - 1; bc02: 3b01 subs r3, #1 bc04: fa13 f38b uxtah r3, r3, fp bc08: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.y1 = fill_area.y1; bc0c: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bc10: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; bc14: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bc18: f8ad 306e strh.w r3, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bc1c: 9b06 ldr r3, [sp, #24] bc1e: 9302 str r3, [sp, #8] bc20: 9b05 ldr r3, [sp, #20] mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bc22: 9008 str r0, [sp, #32] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bc24: 9301 str r3, [sp, #4] bc26: 9000 str r0, [sp, #0] bc28: 4623 mov r3, r4 bc2a: 463a mov r2, r7 bc2c: a91a add r1, sp, #104 ; 0x68 bc2e: 4d29 ldr r5, [pc, #164] ; (bcd4 ) bc30: 4640 mov r0, r8 bc32: 47a8 blx r5 if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { bc34: f9bd 3056 ldrsh.w r3, [sp, #86] ; 0x56 bc38: f9b9 1018 ldrsh.w r1, [r9, #24] bc3c: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e bc40: 1a5b subs r3, r3, r1 bc42: 429a cmp r2, r3 fill_area2.x2 = area_outer.x1 + rout - 1; bc44: fa1f fa8b uxth.w sl, fp if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { bc48: dd15 ble.n bc76 fill_area2.x1 = area_outer.x1 + rout; bc4a: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 bc4e: 4453 add r3, sl bc50: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x2 - rout; bc54: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 bc58: eba3 030a sub.w r3, r3, sl bc5c: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); bc60: 9b06 ldr r3, [sp, #24] bc62: 9302 str r3, [sp, #8] bc64: 9b05 ldr r3, [sp, #20] bc66: 9301 str r3, [sp, #4] bc68: 2301 movs r3, #1 bc6a: 9300 str r3, [sp, #0] bc6c: 463a mov r2, r7 bc6e: 2300 movs r3, #0 bc70: a91a add r1, sp, #104 ; 0x68 bc72: 4640 mov r0, r8 bc74: 47a8 blx r5 fill_area2.x1 = area_outer.x2 - rout + 1; bc76: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bc7a: f9bd 1058 ldrsh.w r1, [sp, #88] ; 0x58 fill_area2.x2 = area_outer.x2; bc7e: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = area_outer.x2 - rout + 1; bc82: 1c5a adds r2, r3, #1 bc84: eba2 020a sub.w r2, r2, sl bc88: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bc8c: 9a04 ldr r2, [sp, #16] _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bc8e: 4d11 ldr r5, [pc, #68] ; (bcd4 ) int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bc90: f9b2 2010 ldrsh.w r2, [r2, #16] bc94: eba3 030b sub.w r3, r3, fp bc98: 440a add r2, r1 bc9a: 3301 adds r3, #1 bc9c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bc9e: 9a06 ldr r2, [sp, #24] bca0: 9202 str r2, [sp, #8] bca2: 9a05 ldr r2, [sp, #20] bca4: 9201 str r2, [sp, #4] bca6: 9a08 ldr r2, [sp, #32] bca8: 9200 str r2, [sp, #0] bcaa: 2b00 cmp r3, #0 bcac: bfac ite ge bcae: 18e3 addge r3, r4, r3 bcb0: 1c23 addlt r3, r4, #0 bcb2: 463a mov r2, r7 bcb4: a91a add r1, sp, #104 ; 0x68 bcb6: 4640 mov r0, r8 bcb8: 47a8 blx r5 fill_area.y1++; bcba: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bcbe: 3301 adds r3, #1 bcc0: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; bcc4: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bcc8: 3301 adds r3, #1 bcca: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { bcce: 3601 adds r6, #1 bcd0: f7ff b8e1 b.w ae96 bcd4: 000061d9 .word 0x000061d9 bcd8: 0000f0bd .word 0x0000f0bd bcdc: 00009769 .word 0x00009769 _lv_memset_ff(mask_buf, draw_area_w); bce0: f8df 9070 ldr.w r9, [pc, #112] ; bd54 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bce4: f8df b070 ldr.w fp, [pc, #112] ; bd58 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); bce8: f8df a070 ldr.w sl, [pc, #112] ; bd5c fill_area.x1 = area_outer.x1; bcec: f8ad 0060 strh.w r0, [sp, #96] ; 0x60 fill_area.x2 = area_outer.x2; bcf0: f8ad 1064 strh.w r1, [sp, #100] ; 0x64 fill_area.y1 = disp_area->y1 + draw_area.y1; bcf4: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; bcf8: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= draw_area.y2; h++) { bcfc: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e bd00: 429e cmp r6, r3 bd02: f73f a905 bgt.w af10 _lv_memset_ff(mask_buf, draw_area_w); bd06: ee18 1a10 vmov r1, s16 bd0a: 4620 mov r0, r4 bd0c: 47c8 blx r9 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bd0e: 9b04 ldr r3, [sp, #16] bd10: 8a5a ldrh r2, [r3, #18] bd12: 8a19 ldrh r1, [r3, #16] bd14: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 bd18: 4432 add r2, r6 bd1a: 4419 add r1, r3 bd1c: b212 sxth r2, r2 bd1e: ee18 3a10 vmov r3, s16 bd22: b209 sxth r1, r1 bd24: 4620 mov r0, r4 bd26: 47d8 blx fp _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); bd28: 9b06 ldr r3, [sp, #24] bd2a: 9302 str r3, [sp, #8] bd2c: 9b05 ldr r3, [sp, #20] bd2e: 463a mov r2, r7 bd30: e9cd 0300 strd r0, r3, [sp] bd34: a918 add r1, sp, #96 ; 0x60 bd36: 4623 mov r3, r4 bd38: 4640 mov r0, r8 bd3a: 47d0 blx sl fill_area.y1++; bd3c: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bd40: 3301 adds r3, #1 bd42: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; bd46: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bd4a: 3301 adds r3, #1 bd4c: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= draw_area.y2; h++) { bd50: 3601 adds r6, #1 bd52: e7d3 b.n bcfc bd54: 0000f0bd .word 0x0000f0bd bd58: 00009769 .word 0x00009769 bd5c: 000061d9 .word 0x000061d9 0000bd60 : { bd60: b5f0 push {r4, r5, r6, r7, lr} LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bd62: f1c2 03ff rsb r3, r2, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); bd66: f3c1 1445 ubfx r4, r1, #5, #6 bd6a: f3c0 1545 ubfx r5, r0, #5, #6 bd6e: 435c muls r4, r3 bd70: f248 0681 movw r6, #32897 ; 0x8081 bd74: fb05 4402 mla r4, r5, r2, r4 bd78: 4374 muls r4, r6 return ret; bd7a: f3c4 55c5 ubfx r5, r4, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); bd7e: f001 041f and.w r4, r1, #31 bd82: f000 071f and.w r7, r0, #31 bd86: 435c muls r4, r3 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bd88: f3c1 21c4 ubfx r1, r1, #11, #5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); bd8c: fb07 4402 mla r4, r7, r2, r4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bd90: f3c0 20c4 ubfx r0, r0, #11, #5 bd94: 4359 muls r1, r3 bd96: fb00 1302 mla r3, r0, r2, r1 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); bd9a: 4374 muls r4, r6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bd9c: 4373 muls r3, r6 return ret; bd9e: f3c4 54c4 ubfx r4, r4, #23, #5 bda2: ea44 1445 orr.w r4, r4, r5, lsl #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); bda6: 0ddb lsrs r3, r3, #23 } bda8: ea44 20c3 orr.w r0, r4, r3, lsl #11 bdac: bdf0 pop {r4, r5, r6, r7, pc} 0000bdae <_lv_memcpy_small.isra.0>: LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) bdae: 3901 subs r1, #1 bdb0: 4402 add r2, r0 while(len) { bdb2: 4290 cmp r0, r2 bdb4: d100 bne.n bdb8 <_lv_memcpy_small.isra.0+0xa> s8++; len--; } return dst; } bdb6: 4770 bx lr *d8 = *s8; bdb8: f811 3f01 ldrb.w r3, [r1, #1]! bdbc: f800 3b01 strb.w r3, [r0], #1 len--; bdc0: e7f7 b.n bdb2 <_lv_memcpy_small.isra.0+0x4> ... 0000bdc4 : * Not used in other cases. * @param safe true: check out of bounds * @return color of the point */ lv_color_t lv_img_buf_get_px_color(lv_img_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_color_t color) { bdc4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} lv_color_t p_color = LV_COLOR_BLACK; uint8_t * buf_u8 = (uint8_t *)dsc->data; bdc6: 6886 ldr r6, [r0, #8] { bdc8: 4607 mov r7, r0 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || bdca: 7800 ldrb r0, [r0, #0] { bdcc: 4615 mov r5, r2 lv_color_t p_color = LV_COLOR_BLACK; bdce: 2200 movs r2, #0 bdd0: f8ad 2004 strh.w r2, [sp, #4] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || bdd4: f000 021f and.w r2, r0, #31 { bdd8: 460c mov r4, r1 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || bdda: 1f11 subs r1, r2, #4 bddc: 2902 cmp r1, #2 bdde: d816 bhi.n be0e dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; bde0: 4b34 ldr r3, [pc, #208] ; (beb4 ) bde2: 4610 mov r0, r2 bde4: 4798 blx r3 uint32_t px = dsc->header.w * y * px_size + x * px_size; bde6: 683b ldr r3, [r7, #0] uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; bde8: f3c0 00c7 ubfx r0, r0, #3, #8 uint32_t px = dsc->header.w * y * px_size + x * px_size; bdec: f3c3 238a ubfx r3, r3, #10, #11 bdf0: fb13 f305 smulbb r3, r3, r5 bdf4: fb10 f104 smulbb r1, r0, r4 bdf8: fb00 1103 mla r1, r0, r3, r1 _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); bdfc: 2202 movs r2, #2 bdfe: 4b2e ldr r3, [pc, #184] ; (beb8 ) be00: 4431 add r1, r6 be02: a801 add r0, sp, #4 be04: 4798 blx r3 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { p_color = color; } return p_color; } be06: f8bd 0004 ldrh.w r0, [sp, #4] be0a: b003 add sp, #12 be0c: bdf0 pop {r4, r5, r6, r7, pc} else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT) { be0e: 2a07 cmp r2, #7 be10: d114 bne.n be3c p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); be12: f004 0307 and.w r3, r4, #7 be16: f1c3 0207 rsb r2, r3, #7 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; be1a: 683b ldr r3, [r7, #0] be1c: f3c3 238a ubfx r3, r3, #10, #11 be20: 3307 adds r3, #7 be22: 10db asrs r3, r3, #3 p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); be24: fb05 6303 mla r3, r5, r3, r6 be28: eb03 04e4 add.w r4, r3, r4, asr #3 be2c: 2101 movs r1, #1 be2e: 7a23 ldrb r3, [r4, #8] be30: 4091 lsls r1, r2 be32: 400b ands r3, r1 be34: 4113 asrs r3, r2 p_color = color; be36: f8ad 3004 strh.w r3, [sp, #4] be3a: e7e4 b.n be06 else if(dsc->header.cf == LV_IMG_CF_INDEXED_2BIT) { be3c: 2a08 cmp r2, #8 be3e: d116 bne.n be6e uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; be40: 6838 ldr r0, [r7, #0] be42: f3c0 208a ubfx r0, r0, #10, #11 be46: 3003 adds r0, #3 be48: 1080 asrs r0, r0, #2 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); be4a: fb05 6300 mla r3, r5, r0, r6 uint8_t bit = (x & 0x3) * 2; be4e: f004 0203 and.w r2, r4, #3 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); be52: eb03 04a4 add.w r4, r3, r4, asr #2 be56: 0052 lsls r2, r2, #1 be58: 7c23 ldrb r3, [r4, #16] be5a: f1c2 0206 rsb r2, r2, #6 be5e: 2103 movs r1, #3 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); be60: 4091 lsls r1, r2 be62: 400b ands r3, r1 be64: fa43 f202 asr.w r2, r3, r2 be68: f8ad 2004 strh.w r2, [sp, #4] be6c: e7cb b.n be06 else if(dsc->header.cf == LV_IMG_CF_INDEXED_4BIT) { be6e: 2a09 cmp r2, #9 be70: d111 bne.n be96 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; be72: 683b ldr r3, [r7, #0] be74: f3c3 238a ubfx r3, r3, #10, #11 be78: 3301 adds r3, #1 be7a: 105b asrs r3, r3, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); be7c: fb05 6303 mla r3, r5, r3, r6 uint8_t bit = (x & 0x1) * 4; be80: f004 0201 and.w r2, r4, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); be84: eb03 0464 add.w r4, r3, r4, asr #1 be88: 0092 lsls r2, r2, #2 be8a: f894 3040 ldrb.w r3, [r4, #64] ; 0x40 be8e: f1c2 0204 rsb r2, r2, #4 be92: 210f movs r1, #15 be94: e7e4 b.n be60 else if(dsc->header.cf == LV_IMG_CF_INDEXED_8BIT) { be96: 2a0a cmp r2, #10 be98: d108 bne.n beac uint32_t px = dsc->header.w * y + x; be9a: 683b ldr r3, [r7, #0] be9c: f3c3 238a ubfx r3, r3, #10, #11 bea0: fb15 4303 smlabb r3, r5, r3, r4 p_color.full = buf_u8[px]; bea4: 4433 add r3, r6 bea6: f893 3400 ldrb.w r3, [r3, #1024] ; 0x400 beaa: e7c4 b.n be36 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || beac: 3a0b subs r2, #11 beae: 2a03 cmp r2, #3 beb0: d8a9 bhi.n be06 beb2: e7c0 b.n be36 beb4: 00007579 .word 0x00007579 beb8: 0000bdaf .word 0x0000bdaf 0000bebc : * @param y x coordinate of the point to set * @param safe true: check out of bounds * @return alpha value of the point */ lv_opa_t lv_img_buf_get_px_alpha(lv_img_dsc_t * dsc, lv_coord_t x, lv_coord_t y) { bebc: b5f0 push {r4, r5, r6, r7, lr} bebe: 460b mov r3, r1 uint8_t * buf_u8 = (uint8_t *)dsc->data; if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { bec0: 7801 ldrb r1, [r0, #0] uint8_t * buf_u8 = (uint8_t *)dsc->data; bec2: 6885 ldr r5, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { bec4: f001 011f and.w r1, r1, #31 bec8: 2905 cmp r1, #5 { beca: b085 sub sp, #20 becc: 4604 mov r4, r0 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { bece: d10a bne.n bee6 uint32_t px = dsc->header.w * y * LV_IMG_PX_SIZE_ALPHA_BYTE + x * LV_IMG_PX_SIZE_ALPHA_BYTE; bed0: 6801 ldr r1, [r0, #0] bed2: f3c1 218a ubfx r1, r1, #10, #11 bed6: fb12 3301 smlabb r3, r2, r1, r3 return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; beda: eb03 0343 add.w r3, r3, r3, lsl #1 bede: 442b add r3, r5 bee0: 7898 ldrb r0, [r3, #2] uint32_t px = dsc->header.w * y + x; return buf_u8[px]; } return LV_OPA_COVER; } bee2: b005 add sp, #20 bee4: bdf0 pop {r4, r5, r6, r7, pc} else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT) { bee6: 290b cmp r1, #11 bee8: d116 bne.n bf18 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; beea: 6800 ldr r0, [r0, #0] beec: f3c0 208a ubfx r0, r0, #10, #11 bef0: 3007 adds r0, #7 bef2: 10c0 asrs r0, r0, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); bef4: fb02 5200 mla r2, r2, r0, r5 bef8: f003 0607 and.w r6, r3, #7 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; befc: 10db asrs r3, r3, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); befe: f1c6 0607 rsb r6, r6, #7 bf02: 5cd3 ldrb r3, [r2, r3] bf04: 2201 movs r2, #1 bf06: 40b2 lsls r2, r6 bf08: 4013 ands r3, r2 return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; bf0a: 4133 asrs r3, r6 bf0c: bf0c ite eq bf0e: f04f 30ff moveq.w r0, #4294967295 ; 0xffffffff bf12: 2000 movne r0, #0 bf14: b2c0 uxtb r0, r0 bf16: e7e4 b.n bee2 else if(dsc->header.cf == LV_IMG_CF_ALPHA_2BIT) { bf18: 290c cmp r1, #12 bf1a: d118 bne.n bf4e uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; bf1c: 6800 ldr r0, [r0, #0] const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ bf1e: 4920 ldr r1, [pc, #128] ; (bfa0 ) bf20: 9100 str r1, [sp, #0] uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; bf22: f3c0 208a ubfx r0, r0, #10, #11 bf26: 3003 adds r0, #3 bf28: 1080 asrs r0, r0, #2 uint8_t bit = (x & 0x3) * 2; bf2a: f003 0603 and.w r6, r3, #3 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); bf2e: fb02 5200 mla r2, r2, r0, r5 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; bf32: 109b asrs r3, r3, #2 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); bf34: 0076 lsls r6, r6, #1 bf36: 5cd3 ldrb r3, [r2, r3] bf38: f1c6 0606 rsb r6, r6, #6 bf3c: 2203 movs r2, #3 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); bf3e: 40b2 lsls r2, r6 bf40: 4013 ands r3, r2 bf42: 4133 asrs r3, r6 return opa_table[px_opa]; bf44: 3310 adds r3, #16 bf46: 446b add r3, sp bf48: f813 0c10 ldrb.w r0, [r3, #-16] bf4c: e7c9 b.n bee2 else if(dsc->header.cf == LV_IMG_CF_ALPHA_4BIT) { bf4e: 290d cmp r1, #13 bf50: d11b bne.n bf8a const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ bf52: 4e14 ldr r6, [pc, #80] ; (bfa4 ) bf54: 46ec mov ip, sp bf56: f106 0e10 add.w lr, r6, #16 bf5a: 6830 ldr r0, [r6, #0] bf5c: 6871 ldr r1, [r6, #4] bf5e: 4667 mov r7, ip bf60: c703 stmia r7!, {r0, r1} bf62: 3608 adds r6, #8 bf64: 4576 cmp r6, lr bf66: 46bc mov ip, r7 bf68: d1f7 bne.n bf5a uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; bf6a: 6820 ldr r0, [r4, #0] bf6c: f3c0 208a ubfx r0, r0, #10, #11 bf70: 3001 adds r0, #1 bf72: 1040 asrs r0, r0, #1 uint8_t bit = (x & 0x1) * 4; bf74: f003 0601 and.w r6, r3, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); bf78: fb02 5200 mla r2, r2, r0, r5 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; bf7c: 105b asrs r3, r3, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); bf7e: 00b6 lsls r6, r6, #2 bf80: 5cd3 ldrb r3, [r2, r3] bf82: f1c6 0604 rsb r6, r6, #4 bf86: 220f movs r2, #15 bf88: e7d9 b.n bf3e else if(dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { bf8a: 290e cmp r1, #14 uint32_t px = dsc->header.w * y + x; bf8c: bf03 ittte eq bf8e: 6801 ldreq r1, [r0, #0] bf90: f3c1 218a ubfxeq r1, r1, #10, #11 bf94: fb12 3301 smlabbeq r3, r2, r1, r3 return LV_OPA_COVER; bf98: 20ff movne r0, #255 ; 0xff return buf_u8[px]; bf9a: bf08 it eq bf9c: 5ce8 ldrbeq r0, [r5, r3] bf9e: e7a0 b.n bee2 bfa0: ffaa5500 .word 0xffaa5500 bfa4: 0001fe43 .word 0x0001fe43 0000bfa8 <_lv_img_buf_transform_init>: /** * Initialize a descriptor to tranform an image * @param dsc pointer to an `lv_img_transform_dsc_t` variable whose `cfg` field is initialized */ void _lv_img_buf_transform_init(lv_img_transform_dsc_t * dsc) { bfa8: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; bfac: f9b0 3008 ldrsh.w r3, [r0, #8] int32_t angle_low = dsc->cfg.angle / 10; int32_t angle_hight = angle_low + 1; int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); int32_t s1 = _lv_trigo_sin(-angle_low); bfb0: f8df 80ec ldr.w r8, [pc, #236] ; c0a0 <_lv_img_buf_transform_init+0xf8> dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; bfb4: 021b lsls r3, r3, #8 bfb6: 6243 str r3, [r0, #36] ; 0x24 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; bfb8: f9b0 300a ldrsh.w r3, [r0, #10] bfbc: 021b lsls r3, r3, #8 int32_t angle_low = dsc->cfg.angle / 10; bfbe: 260a movs r6, #10 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; bfc0: 6283 str r3, [r0, #40] ; 0x28 int32_t angle_low = dsc->cfg.angle / 10; bfc2: f9b0 300c ldrsh.w r3, [r0, #12] bfc6: fb93 f5f6 sdiv r5, r3, r6 int32_t s1 = _lv_trigo_sin(-angle_low); bfca: fa1f f985 uxth.w r9, r5 { bfce: 4604 mov r4, r0 int32_t s1 = _lv_trigo_sin(-angle_low); bfd0: f1c9 0000 rsb r0, r9, #0 int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); bfd4: f64f 77f6 movw r7, #65526 ; 0xfff6 int32_t s1 = _lv_trigo_sin(-angle_low); bfd8: b200 sxth r0, r0 int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); bfda: fb15 3707 smlabb r7, r5, r7, r3 int32_t s1 = _lv_trigo_sin(-angle_low); bfde: 47c0 blx r8 int32_t s2 = _lv_trigo_sin(-angle_hight); bfe0: 3501 adds r5, #1 bfe2: b2ad uxth r5, r5 int32_t s1 = _lv_trigo_sin(-angle_low); bfe4: 4682 mov sl, r0 int32_t s2 = _lv_trigo_sin(-angle_hight); bfe6: 4268 negs r0, r5 bfe8: b200 sxth r0, r0 bfea: 47c0 blx r8 bfec: 4683 mov fp, r0 int32_t c1 = _lv_trigo_sin(-angle_low + 90); bfee: f1c9 005a rsb r0, r9, #90 ; 0x5a bff2: b200 sxth r0, r0 bff4: 47c0 blx r8 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); bff6: f1c5 055a rsb r5, r5, #90 ; 0x5a int32_t c1 = _lv_trigo_sin(-angle_low + 90); bffa: 4681 mov r9, r0 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); bffc: b228 sxth r0, r5 bffe: 47c0 blx r8 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c000: 1bf5 subs r5, r6, r7 c002: fb07 f10b mul.w r1, r7, fp dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c006: fb07 f300 mul.w r3, r7, r0 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c00a: fb05 120a mla r2, r5, sl, r1 dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c00e: fb05 3009 mla r0, r5, r9, r3 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c012: fb92 f2f6 sdiv r2, r2, r6 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; c016: 4b20 ldr r3, [pc, #128] ; (c098 <_lv_img_buf_transform_init+0xf0>) dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c018: 62e2 str r2, [r4, #44] ; 0x2c dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c01a: fb90 f0f6 sdiv r0, r0, r6 c01e: 6320 str r0, [r4, #48] ; 0x30 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; c020: 7ca0 ldrb r0, [r4, #18] c022: 4798 blx r3 c024: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c028: f360 0300 bfi r3, r0, #0, #1 c02c: f884 3034 strb.w r3, [r4, #52] ; 0x34 dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; c030: 7ca0 ldrb r0, [r4, #18] c032: 4b1a ldr r3, [pc, #104] ; (c09c <_lv_img_buf_transform_init+0xf4>) c034: 4798 blx r3 if(dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR || dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c036: 7ca3 ldrb r3, [r4, #18] c038: 1f1a subs r2, r3, #4 c03a: 2a02 cmp r2, #2 c03c: bf8c ite hi c03e: 2100 movhi r1, #0 c040: 2101 movls r1, #1 dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; c042: 0042 lsls r2, r0, #1 c044: ea42 0281 orr.w r2, r2, r1, lsl #2 c048: f894 1034 ldrb.w r1, [r4, #52] ; 0x34 c04c: f002 0206 and.w r2, r2, #6 c050: f021 0106 bic.w r1, r1, #6 c054: 430a orrs r2, r1 c056: f884 2034 strb.w r2, [r4, #52] ; 0x34 } else { dsc->tmp.native_color = 0; } dsc->tmp.img_dsc.data = dsc->cfg.src; c05a: 6822 ldr r2, [r4, #0] c05c: 6222 str r2, [r4, #32] dsc->tmp.img_dsc.header.always_zero = 0; dsc->tmp.img_dsc.header.cf = dsc->cfg.cf; c05e: 88a2 ldrh r2, [r4, #4] c060: f003 031f and.w r3, r3, #31 c064: f3c2 020a ubfx r2, r2, #0, #11 c068: ea43 2382 orr.w r3, r3, r2, lsl #10 c06c: f9b4 2006 ldrsh.w r2, [r4, #6] c070: ea43 5342 orr.w r3, r3, r2, lsl #21 c074: 69a2 ldr r2, [r4, #24] c076: f402 7240 and.w r2, r2, #768 ; 0x300 c07a: 4313 orrs r3, r2 c07c: 61a3 str r3, [r4, #24] dsc->tmp.img_dsc.header.w = dsc->cfg.src_w; dsc->tmp.img_dsc.header.h = dsc->cfg.src_h; dsc->tmp.zoom_inv = (256 * 256) / dsc->cfg.zoom; c07e: 89e2 ldrh r2, [r4, #14] c080: f44f 3380 mov.w r3, #65536 ; 0x10000 c084: fbb3 f3f2 udiv r3, r3, r2 c088: 86e3 strh r3, [r4, #54] ; 0x36 dsc->res.opa = LV_OPA_COVER; c08a: 23ff movs r3, #255 ; 0xff c08c: 75a3 strb r3, [r4, #22] dsc->res.color = dsc->cfg.color; c08e: 8a23 ldrh r3, [r4, #16] c090: 82a3 strh r3, [r4, #20] } c092: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} c096: bf00 nop c098: 00007591 .word 0x00007591 c09c: 000075a5 .word 0x000075a5 c0a0: 0000e985 .word 0x0000e985 0000c0a4 <_lv_img_buf_get_transformed_area>: * @param zoom zoom, (256 no zoom) * @param pivot x,y pivot coordinates of rotation */ void _lv_img_buf_get_transformed_area(lv_area_t * res, lv_coord_t w, lv_coord_t h, int16_t angle, uint16_t zoom, lv_point_t * pivot) { c0a4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c0a8: b085 sub sp, #20 c0aa: 4607 mov r7, r0 #if LV_USE_IMG_TRANSFORM int32_t angle_low = angle / 10; int32_t angle_hight = angle_low + 1; int32_t angle_rem = angle - (angle_low * 10); int32_t s1 = _lv_trigo_sin(angle_low); c0ac: 4d5e ldr r5, [pc, #376] ; (c228 <_lv_img_buf_get_transformed_area+0x184>) { c0ae: f8bd 8038 ldrh.w r8, [sp, #56] ; 0x38 c0b2: 9102 str r1, [sp, #8] int32_t angle_low = angle / 10; c0b4: f04f 090a mov.w r9, #10 int32_t angle_rem = angle - (angle_low * 10); c0b8: f64f 7bf6 movw fp, #65526 ; 0xfff6 int32_t angle_low = angle / 10; c0bc: fb93 f6f9 sdiv r6, r3, r9 int32_t s1 = _lv_trigo_sin(angle_low); c0c0: 4630 mov r0, r6 int32_t angle_rem = angle - (angle_low * 10); c0c2: fb16 3b0b smlabb fp, r6, fp, r3 { c0c6: 4614 mov r4, r2 int32_t s1 = _lv_trigo_sin(angle_low); c0c8: 47a8 blx r5 c0ca: 9003 str r0, [sp, #12] int32_t s2 = _lv_trigo_sin(angle_hight); c0cc: 1c70 adds r0, r6, #1 c0ce: b200 sxth r0, r0 c0d0: 47a8 blx r5 int32_t c1 = _lv_trigo_sin(angle_low + 90); c0d2: b2b6 uxth r6, r6 int32_t s2 = _lv_trigo_sin(angle_hight); c0d4: 4682 mov sl, r0 int32_t c1 = _lv_trigo_sin(angle_low + 90); c0d6: f106 005a add.w r0, r6, #90 ; 0x5a c0da: b200 sxth r0, r0 c0dc: 47a8 blx r5 c0de: 9001 str r0, [sp, #4] int32_t c2 = _lv_trigo_sin(angle_hight + 90); c0e0: f106 005b add.w r0, r6, #91 ; 0x5b c0e4: b200 sxth r0, r0 c0e6: 47a8 blx r5 int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0e8: 9b03 ldr r3, [sp, #12] int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c0ea: 9901 ldr r1, [sp, #4] int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0ec: eba9 060b sub.w r6, r9, fp c0f0: fb0b f50a mul.w r5, fp, sl c0f4: fb06 5503 mla r5, r6, r3, r5 lv_coord_t xt; lv_coord_t yt; lv_area_t a; a.x1 = ((-pivot->x) * zoom) >> 8; c0f8: 9b0f ldr r3, [sp, #60] ; 0x3c int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0fa: fb95 f5f9 sdiv r5, r5, r9 a.y1 = ((-pivot->y) * zoom) >> 8; c0fe: f9b3 c002 ldrsh.w ip, [r3, #2] a.x1 = ((-pivot->x) * zoom) >> 8; c102: f9b3 e000 ldrsh.w lr, [r3] a.y1 = ((-pivot->y) * zoom) >> 8; c106: f1cc 0200 rsb r2, ip, #0 a.x1 = ((-pivot->x) * zoom) >> 8; c10a: f1ce 0300 rsb r3, lr, #0 c10e: fb08 f303 mul.w r3, r8, r3 a.y1 = ((-pivot->y) * zoom) >> 8; c112: fb08 f202 mul.w r2, r8, r2 int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c116: fb0b f000 mul.w r0, fp, r0 a.x2 = ((w - pivot->x) * zoom) >> 8; a.y2 = ((h - pivot->y) * zoom) >> 8; xt = a.x1; yt = a.y1; lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c11a: f343 230f sbfx r3, r3, #8, #16 c11e: f342 220f sbfx r2, r2, #8, #16 c122: fb05 fa02 mul.w sl, r5, r2 int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c126: fb06 0001 mla r0, r6, r1, r0 c12a: fb90 f0f9 sdiv r0, r0, r9 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c12e: fb00 f903 mul.w r9, r0, r3 lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c132: 4342 muls r2, r0 c134: 436b muls r3, r5 c136: 1899 adds r1, r3, r2 c138: 13c9 asrs r1, r1, #15 c13a: fa11 f18c uxtah r1, r1, ip c13e: b209 sxth r1, r1 c140: 9101 str r1, [sp, #4] a.x2 = ((w - pivot->x) * zoom) >> 8; c142: 9902 ldr r1, [sp, #8] c144: eba1 010e sub.w r1, r1, lr c148: fb08 f101 mul.w r1, r8, r1 xt = a.x2; yt = a.y1; rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c14c: f341 210f sbfx r1, r1, #8, #16 a.y2 = ((h - pivot->y) * zoom) >> 8; c150: eba4 040c sub.w r4, r4, ip rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c154: fb00 fb01 mul.w fp, r0, r1 a.y2 = ((h - pivot->y) * zoom) >> 8; c158: fb08 f404 mul.w r4, r8, r4 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c15c: eba9 060a sub.w r6, r9, sl rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; xt = a.x1; yt = a.y2; lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c160: f344 240f sbfx r4, r4, #8, #16 rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c164: ebab 0a0a sub.w sl, fp, sl rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c168: 4369 muls r1, r5 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c16a: 13f6 asrs r6, r6, #15 lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c16c: 4365 muls r5, r4 rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c16e: ea4f 3aea mov.w sl, sl, asr #15 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c172: fa16 f68e uxtah r6, r6, lr rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c176: fa1a fa8e uxtah sl, sl, lr lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c17a: eba9 0905 sub.w r9, r9, r5 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c17e: b236 sxth r6, r6 rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c180: fa0f fa8a sxth.w sl, sl lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c184: ea4f 39e9 mov.w r9, r9, asr #15 xt = a.x2; yt = a.y2; rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c188: 4556 cmp r6, sl lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c18a: fb00 f404 mul.w r4, r0, r4 lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c18e: fa19 f98e uxtah r9, r9, lr rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c192: ebab 0505 sub.w r5, fp, r5 lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c196: fa0f f989 sxth.w r9, r9 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c19a: 440a add r2, r1 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c19c: 4423 add r3, r4 rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c19e: ea4f 35e5 mov.w r5, r5, asr #15 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1a2: 440c add r4, r1 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c1a4: 4631 mov r1, r6 c1a6: bfa8 it ge c1a8: 4651 movge r1, sl c1aa: 4549 cmp r1, r9 rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c1ac: fa15 fe8e uxtah lr, r5, lr c1b0: fa0f fe8e sxth.w lr, lr res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c1b4: bfa8 it ge c1b6: 4649 movge r1, r9 c1b8: 4571 cmp r1, lr c1ba: bfa8 it ge c1bc: 4671 movge r1, lr res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c1be: 4556 cmp r6, sl c1c0: bfb8 it lt c1c2: 4656 movlt r6, sl c1c4: 45b1 cmp r9, r6 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1c6: ea4f 32e2 mov.w r2, r2, asr #15 res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c1ca: bfb8 it lt c1cc: 46b1 movlt r9, r6 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1ce: fa12 f28c uxtah r2, r2, ip res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c1d2: 8039 strh r1, [r7, #0] res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1d4: 9901 ldr r1, [sp, #4] rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1d6: b212 sxth r2, r2 res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c1d8: 45ce cmp lr, r9 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1da: ea4f 33e3 mov.w r3, r3, asr #15 res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c1de: bfb8 it lt c1e0: 46ce movlt lr, r9 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1e2: fa13 f38c uxtah r3, r3, ip res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1e6: 4291 cmp r1, r2 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1e8: b21b sxth r3, r3 res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1ea: bfa8 it ge c1ec: 4611 movge r1, r2 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1ee: 13e4 asrs r4, r4, #15 res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1f0: 4299 cmp r1, r3 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1f2: fa14 fc8c uxtah ip, r4, ip c1f6: fa0f fc8c sxth.w ip, ip res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1fa: bfa8 it ge c1fc: 4619 movge r1, r3 c1fe: 4561 cmp r1, ip c200: bfa8 it ge c202: 4661 movge r1, ip c204: 8079 strh r1, [r7, #2] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); c206: 9901 ldr r1, [sp, #4] res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c208: f8a7 e004 strh.w lr, [r7, #4] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); c20c: 428a cmp r2, r1 c20e: bfb8 it lt c210: 460a movlt r2, r1 c212: 4293 cmp r3, r2 c214: bfb8 it lt c216: 4613 movlt r3, r2 c218: 459c cmp ip, r3 c21a: bfb8 it lt c21c: 469c movlt ip, r3 c21e: f8a7 c006 strh.w ip, [r7, #6] res->x1 = 0; res->y1 = 0; res->x2 = w; res->y2 = h; #endif } c222: b005 add sp, #20 c224: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} c228: 0000e985 .word 0x0000e985 0000c22c <_lv_img_buf_transform_anti_alias>: /** * Continue transformation by taking the neighbors into account * @param dsc pointer to the transformation descriptor */ bool _lv_img_buf_transform_anti_alias(lv_img_transform_dsc_t * dsc) { c22c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c230: f890 2038 ldrb.w r2, [r0, #56] ; 0x38 const uint8_t * src_u8 = dsc->cfg.src; c234: f8d0 8000 ldr.w r8, [r0] /*Get the fractional part of the source pixel*/ int xs_fract = dsc->tmp.xs & 0xff; c238: f9b0 5038 ldrsh.w r5, [r0, #56] ; 0x38 int ys_fract = dsc->tmp.ys & 0xff; c23c: f9b0 603a ldrsh.w r6, [r0, #58] ; 0x3a c240: f890 303a ldrb.w r3, [r0, #58] ; 0x3a int32_t xn; /*x neightboor*/ lv_opa_t xr; /*x mix ratio*/ if(xs_fract < 0x70) { c244: 2a6f cmp r2, #111 ; 0x6f { c246: b089 sub sp, #36 ; 0x24 c248: 4604 mov r4, r0 if(xs_fract < 0x70) { c24a: f200 8093 bhi.w c374 <_lv_img_buf_transform_anti_alias+0x148> xn = - 1; if(dsc->tmp.xs_int + xn < 0) xn = 0; c24e: f9b0 903c ldrsh.w r9, [r0, #60] ; 0x3c c252: f1b9 0f00 cmp.w r9, #0 c256: bfd4 ite le c258: f04f 0900 movle.w r9, #0 c25c: f04f 0901 movgt.w r9, #1 c260: f1c9 0900 rsb r9, r9, #0 xr = xs_fract + 0x80; c264: 3d80 subs r5, #128 ; 0x80 } else if(xs_fract > 0x90) { xn = 1; if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; xr = (0xFF - xs_fract) + 0x80; c266: b2ed uxtb r5, r5 } int32_t yn; /*x neightboor*/ lv_opa_t yr; /*x mix ratio*/ if(ys_fract < 0x70) { c268: 2b6f cmp r3, #111 ; 0x6f c26a: f200 8098 bhi.w c39e <_lv_img_buf_transform_anti_alias+0x172> yn = - 1; if(dsc->tmp.ys_int + yn < 0) yn = 0; c26e: f9b4 703e ldrsh.w r7, [r4, #62] ; 0x3e c272: 2f00 cmp r7, #0 c274: bfd4 ite le c276: 2700 movle r7, #0 c278: 2701 movgt r7, #1 c27a: 427f negs r7, r7 yr = ys_fract + 0x80; c27c: 3e80 subs r6, #128 ; 0x80 } else if(ys_fract > 0x90) { yn = 1; if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; yr = (0xFF - ys_fract) + 0x80; c27e: b2f6 uxtb r6, r6 else { yn = 0; yr = 0xFF; } lv_color_t c00 = dsc->res.color; c280: 8aa3 ldrh r3, [r4, #20] c282: f8ad 300a strh.w r3, [sp, #10] lv_color_t c01; lv_color_t c10; lv_color_t c11; lv_opa_t a00 = dsc->res.opa; c286: 7da3 ldrb r3, [r4, #22] c288: 9301 str r3, [sp, #4] lv_opa_t a10 = 0; lv_opa_t a01 = 0; lv_opa_t a11 = 0; if(dsc->tmp.native_color) { c28a: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c28e: 0758 lsls r0, r3, #29 c290: f140 80aa bpl.w c3e8 <_lv_img_buf_transform_anti_alias+0x1bc> _lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t)); c294: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 c298: 6c21 ldr r1, [r4, #64] ; 0x40 c29a: f8df a244 ldr.w sl, [pc, #580] ; c4e0 <_lv_img_buf_transform_anti_alias+0x2b4> c29e: fb09 1103 mla r1, r9, r3, r1 c2a2: 2202 movs r2, #2 c2a4: 4441 add r1, r8 c2a6: a805 add r0, sp, #20 c2a8: 47d0 blx sl _lv_memcpy_small(&c10, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn], sizeof(lv_color_t)); c2aa: f894 1044 ldrb.w r1, [r4, #68] ; 0x44 c2ae: 88a3 ldrh r3, [r4, #4] c2b0: fb11 f303 smulbb r3, r1, r3 c2b4: 6c21 ldr r1, [r4, #64] ; 0x40 c2b6: fb07 1103 mla r1, r7, r3, r1 c2ba: 2202 movs r2, #2 c2bc: 4441 add r1, r8 c2be: a806 add r0, sp, #24 c2c0: 47d0 blx sl _lv_memcpy_small(&c11, &src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size * xn], c2c2: f894 2044 ldrb.w r2, [r4, #68] ; 0x44 c2c6: 88a3 ldrh r3, [r4, #4] c2c8: 6c21 ldr r1, [r4, #64] ; 0x40 c2ca: fb13 f302 smulbb r3, r3, r2 c2ce: fb09 1102 mla r1, r9, r2, r1 c2d2: fb07 1103 mla r1, r7, r3, r1 c2d6: 4441 add r1, r8 c2d8: 2202 movs r2, #2 c2da: a807 add r0, sp, #28 c2dc: 47d0 blx sl sizeof(lv_color_t)); if(dsc->tmp.has_alpha) { c2de: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c2e2: 0799 lsls r1, r3, #30 c2e4: d46c bmi.n c3c0 <_lv_img_buf_transform_anti_alias+0x194> lv_opa_t a11 = 0; c2e6: 2000 movs r0, #0 lv_opa_t a01 = 0; c2e8: 4607 mov r7, r0 lv_opa_t a10 = 0; c2ea: 4683 mov fp, r0 } } lv_opa_t xr0 = xr; lv_opa_t xr1 = xr; if(dsc->tmp.has_alpha) { c2ec: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c2f0: 079b lsls r3, r3, #30 c2f2: f140 80c8 bpl.w c486 <_lv_img_buf_transform_anti_alias+0x25a> lv_opa_t a0 = (a00 * xr + (a10 * (255 - xr))) >> 8; c2f6: 9a01 ldr r2, [sp, #4] c2f8: f1c5 03ff rsb r3, r5, #255 ; 0xff c2fc: fb12 fc05 smulbb ip, r2, r5 c300: fb03 cc0b mla ip, r3, fp, ip lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; c304: 4343 muls r3, r0 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; c306: f3cc 2c07 ubfx ip, ip, #8, #8 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; c30a: fb15 3307 smlabb r3, r5, r7, r3 c30e: f3c3 2307 ubfx r3, r3, #8, #8 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; c312: f1c6 02ff rsb r2, r6, #255 ; 0xff c316: fb06 f10c mul.w r1, r6, ip c31a: fb03 1202 mla r2, r3, r2, r1 c31e: 1212 asrs r2, r2, #8 if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; c320: f1bc 0f05 cmp.w ip, #5 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; c324: 75a2 strb r2, [r4, #22] if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; c326: f200 80aa bhi.w c47e <_lv_img_buf_transform_anti_alias+0x252> c32a: 2b05 cmp r3, #5 c32c: f240 80d4 bls.w c4d8 <_lv_img_buf_transform_anti_alias+0x2ac> if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP; c330: 2600 movs r6, #0 if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP; c332: 9b01 ldr r3, [sp, #4] c334: 2b05 cmp r3, #5 c336: bf94 ite ls c338: 2200 movls r2, #0 c33a: 462a movhi r2, r5 if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER; c33c: f1bb 0f05 cmp.w fp, #5 c340: bf98 it ls c342: 22ff movls r2, #255 ; 0xff if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP; c344: 2f05 cmp r7, #5 c346: bf98 it ls c348: 2500 movls r5, #0 if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; c34a: 2805 cmp r0, #5 c34c: bf98 it ls c34e: 25ff movls r5, #255 ; 0xff xr1 = xr; dsc->res.opa = LV_OPA_COVER; } lv_color_t c0; if(xr0 == LV_OPA_TRANSP) c0 = c01; c350: 2a00 cmp r2, #0 c352: f040 809c bne.w c48e <_lv_img_buf_transform_anti_alias+0x262> c356: f8bd 7014 ldrh.w r7, [sp, #20] else if(xr0 == LV_OPA_COVER) c0 = c00; else c0 = lv_color_mix(c00, c01, xr0); lv_color_t c1; if(xr1 == LV_OPA_TRANSP) c1 = c11; c35a: 2d00 cmp r5, #0 c35c: f040 80a4 bne.w c4a8 <_lv_img_buf_transform_anti_alias+0x27c> c360: f8bd 101c ldrh.w r1, [sp, #28] else if(xr1 == LV_OPA_COVER) c1 = c10; else c1 = lv_color_mix(c10, c11, xr1); if(yr == LV_OPA_TRANSP) dsc->res.color = c1; c364: 2e00 cmp r6, #0 c366: f040 80ad bne.w c4c4 <_lv_img_buf_transform_anti_alias+0x298> c36a: 82a1 strh r1, [r4, #20] else if(yr == LV_OPA_COVER) dsc->res.color = c0; else dsc->res.color = lv_color_mix(c0, c1, yr); return true; c36c: 2001 movs r0, #1 } c36e: b009 add sp, #36 ; 0x24 c370: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(xs_fract > 0x90) { c374: 2a90 cmp r2, #144 ; 0x90 c376: d90e bls.n c396 <_lv_img_buf_transform_anti_alias+0x16a> if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; c378: f9b0 903c ldrsh.w r9, [r0, #60] ; 0x3c c37c: f9b0 1004 ldrsh.w r1, [r0, #4] c380: f109 0901 add.w r9, r9, #1 c384: 4589 cmp r9, r1 c386: bfac ite ge c388: f04f 0900 movge.w r9, #0 c38c: f04f 0901 movlt.w r9, #1 xr = (0xFF - xs_fract) + 0x80; c390: f1c5 057f rsb r5, r5, #127 ; 0x7f c394: e767 b.n c266 <_lv_img_buf_transform_anti_alias+0x3a> xr = 0xFF; c396: 25ff movs r5, #255 ; 0xff xn = 0; c398: f04f 0900 mov.w r9, #0 c39c: e764 b.n c268 <_lv_img_buf_transform_anti_alias+0x3c> else if(ys_fract > 0x90) { c39e: 2b90 cmp r3, #144 ; 0x90 c3a0: d90b bls.n c3ba <_lv_img_buf_transform_anti_alias+0x18e> if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; c3a2: f9b4 703e ldrsh.w r7, [r4, #62] ; 0x3e c3a6: f9b4 2006 ldrsh.w r2, [r4, #6] c3aa: 3701 adds r7, #1 c3ac: 4297 cmp r7, r2 c3ae: bfac ite ge c3b0: 2700 movge r7, #0 c3b2: 2701 movlt r7, #1 yr = (0xFF - ys_fract) + 0x80; c3b4: f1c6 067f rsb r6, r6, #127 ; 0x7f c3b8: e761 b.n c27e <_lv_img_buf_transform_anti_alias+0x52> yr = 0xFF; c3ba: 26ff movs r6, #255 ; 0xff yn = 0; c3bc: 2700 movs r7, #0 c3be: e75f b.n c280 <_lv_img_buf_transform_anti_alias+0x54> a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c3c0: 6c23 ldr r3, [r4, #64] ; 0x40 c3c2: f894 1044 ldrb.w r1, [r4, #68] ; 0x44 a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; c3c6: 88a2 ldrh r2, [r4, #4] c3c8: 3b01 subs r3, #1 c3ca: 440b add r3, r1 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c3cc: fb09 3901 mla r9, r9, r1, r3 a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; c3d0: fb12 f201 smulbb r2, r2, r1 c3d4: 437a muls r2, r7 c3d6: eb08 0102 add.w r1, r8, r2 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c3da: f818 b009 ldrb.w fp, [r8, r9] a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; c3de: 5ccf ldrb r7, [r1, r3] a11 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c3e0: 44c8 add r8, r9 c3e2: f818 0002 ldrb.w r0, [r8, r2] c3e6: e781 b.n c2ec <_lv_img_buf_transform_anti_alias+0xc0> c01 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int, dsc->cfg.color); c3e8: 8fa1 ldrh r1, [r4, #60] ; 0x3c c3ea: f8df b0f8 ldr.w fp, [pc, #248] ; c4e4 <_lv_img_buf_transform_anti_alias+0x2b8> c3ee: 8a23 ldrh r3, [r4, #16] c3f0: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e c3f4: f104 0a18 add.w sl, r4, #24 c3f8: fa11 f189 uxtah r1, r1, r9 c3fc: b209 sxth r1, r1 c3fe: 4650 mov r0, sl c400: 47d8 blx fp c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); c402: 8fe2 ldrh r2, [r4, #62] ; 0x3e c404: f9b4 103c ldrsh.w r1, [r4, #60] ; 0x3c c01 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int, dsc->cfg.color); c408: f8ad 0014 strh.w r0, [sp, #20] c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); c40c: b2bb uxth r3, r7 c40e: fa12 f287 uxtah r2, r2, r7 c412: 9300 str r3, [sp, #0] c414: b212 sxth r2, r2 c416: 8a23 ldrh r3, [r4, #16] c418: 4650 mov r0, sl c41a: 47d8 blx fp c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color); c41c: 9b00 ldr r3, [sp, #0] c41e: 8fe2 ldrh r2, [r4, #62] ; 0x3e c420: 8fa1 ldrh r1, [r4, #60] ; 0x3c c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); c422: f8ad 0018 strh.w r0, [sp, #24] c01 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int, dsc->cfg.color); c426: fa1f f889 uxth.w r8, r9 c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color); c42a: 441a add r2, r3 c42c: 4441 add r1, r8 c42e: 8a23 ldrh r3, [r4, #16] c430: b212 sxth r2, r2 c432: b209 sxth r1, r1 c434: 4650 mov r0, sl c436: 47d8 blx fp if(dsc->tmp.has_alpha) { c438: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color); c43c: f8ad 001c strh.w r0, [sp, #28] if(dsc->tmp.has_alpha) { c440: 079a lsls r2, r3, #30 c442: f57f af50 bpl.w c2e6 <_lv_img_buf_transform_anti_alias+0xba> a10 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int); c446: f9b4 703c ldrsh.w r7, [r4, #60] ; 0x3c c44a: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e c44e: f8df 9098 ldr.w r9, [pc, #152] ; c4e8 <_lv_img_buf_transform_anti_alias+0x2bc> c452: 9203 str r2, [sp, #12] c454: 44b8 add r8, r7 c456: fa0f f888 sxth.w r8, r8 c45a: 4641 mov r1, r8 c45c: 4650 mov r0, sl c45e: 47c8 blx r9 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); c460: 9b00 ldr r3, [sp, #0] c462: 9a03 ldr r2, [sp, #12] c464: 4413 add r3, r2 c466: b21a sxth r2, r3 c468: 4639 mov r1, r7 a10 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int); c46a: 4683 mov fp, r0 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); c46c: 4650 mov r0, sl c46e: 9200 str r2, [sp, #0] c470: 47c8 blx r9 a11 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn); c472: 9a00 ldr r2, [sp, #0] a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); c474: 4607 mov r7, r0 a11 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn); c476: 4641 mov r1, r8 c478: 4650 mov r0, sl c47a: 47c8 blx r9 c47c: e736 b.n c2ec <_lv_img_buf_transform_anti_alias+0xc0> if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; c47e: 2b05 cmp r3, #5 c480: bf98 it ls c482: 26ff movls r6, #255 ; 0xff c484: e755 b.n c332 <_lv_img_buf_transform_anti_alias+0x106> dsc->res.opa = LV_OPA_COVER; c486: 23ff movs r3, #255 ; 0xff c488: 75a3 strb r3, [r4, #22] xr0 = xr; c48a: 462a mov r2, r5 c48c: e760 b.n c350 <_lv_img_buf_transform_anti_alias+0x124> else if(xr0 == LV_OPA_COVER) c0 = c00; c48e: 2aff cmp r2, #255 ; 0xff c490: d102 bne.n c498 <_lv_img_buf_transform_anti_alias+0x26c> c492: f8bd 700a ldrh.w r7, [sp, #10] c496: e760 b.n c35a <_lv_img_buf_transform_anti_alias+0x12e> else c0 = lv_color_mix(c00, c01, xr0); c498: f8bd 1014 ldrh.w r1, [sp, #20] c49c: f8bd 000a ldrh.w r0, [sp, #10] c4a0: 4b0e ldr r3, [pc, #56] ; (c4dc <_lv_img_buf_transform_anti_alias+0x2b0>) c4a2: 4798 blx r3 c4a4: 4607 mov r7, r0 c4a6: e758 b.n c35a <_lv_img_buf_transform_anti_alias+0x12e> else if(xr1 == LV_OPA_COVER) c1 = c10; c4a8: 2dff cmp r5, #255 ; 0xff c4aa: d102 bne.n c4b2 <_lv_img_buf_transform_anti_alias+0x286> c4ac: f8bd 1018 ldrh.w r1, [sp, #24] c4b0: e758 b.n c364 <_lv_img_buf_transform_anti_alias+0x138> else c1 = lv_color_mix(c10, c11, xr1); c4b2: f8bd 101c ldrh.w r1, [sp, #28] c4b6: f8bd 0018 ldrh.w r0, [sp, #24] c4ba: 4b08 ldr r3, [pc, #32] ; (c4dc <_lv_img_buf_transform_anti_alias+0x2b0>) c4bc: 462a mov r2, r5 c4be: 4798 blx r3 c4c0: 4601 mov r1, r0 c4c2: e74f b.n c364 <_lv_img_buf_transform_anti_alias+0x138> else if(yr == LV_OPA_COVER) dsc->res.color = c0; c4c4: 2eff cmp r6, #255 ; 0xff c4c6: d101 bne.n c4cc <_lv_img_buf_transform_anti_alias+0x2a0> c4c8: 82a7 strh r7, [r4, #20] c4ca: e74f b.n c36c <_lv_img_buf_transform_anti_alias+0x140> else dsc->res.color = lv_color_mix(c0, c1, yr); c4cc: 4b03 ldr r3, [pc, #12] ; (c4dc <_lv_img_buf_transform_anti_alias+0x2b0>) c4ce: 4632 mov r2, r6 c4d0: 4638 mov r0, r7 c4d2: 4798 blx r3 c4d4: 82a0 strh r0, [r4, #20] c4d6: e749 b.n c36c <_lv_img_buf_transform_anti_alias+0x140> if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; c4d8: 2000 movs r0, #0 c4da: e748 b.n c36e <_lv_img_buf_transform_anti_alias+0x142> c4dc: 0000bd61 .word 0x0000bd61 c4e0: 0000bdaf .word 0x0000bdaf c4e4: 0000bdc5 .word 0x0000bdc5 c4e8: 0000bebd .word 0x0000bebd 0000c4ec <_lv_img_cache_open>: * @param src source of the image. Path to file or pointer to an `lv_img_dsc_t` variable * @param style style of the image * @return pointer to the cache entry or NULL if can open the image */ lv_img_cache_entry_t * _lv_img_cache_open(const void * src, lv_color_t color) { c4ec: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} if(entry_cnt == 0) { c4f0: f8df 8190 ldr.w r8, [pc, #400] ; c684 <_lv_img_cache_open+0x198> c4f4: f8b8 4000 ldrh.w r4, [r8] { c4f8: 4605 mov r5, r0 c4fa: 460e mov r6, r1 if(entry_cnt == 0) { c4fc: b95c cbnz r4, c516 <_lv_img_cache_open+0x2a> LV_LOG_WARN("lv_img_cache_open: the cache size is 0"); c4fe: 4b52 ldr r3, [pc, #328] ; (c648 <_lv_img_cache_open+0x15c>) c500: 9300 str r3, [sp, #0] c502: 4952 ldr r1, [pc, #328] ; (c64c <_lv_img_cache_open+0x160>) c504: 4b52 ldr r3, [pc, #328] ; (c650 <_lv_img_cache_open+0x164>) c506: 4d53 ldr r5, [pc, #332] ; (c654 <_lv_img_cache_open+0x168>) c508: 2244 movs r2, #68 ; 0x44 c50a: 2002 movs r0, #2 c50c: 47a8 blx r5 if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; } return cached_src; } c50e: 4620 mov r0, r4 c510: b003 add sp, #12 c512: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); c516: 4b50 ldr r3, [pc, #320] ; (c658 <_lv_img_cache_open+0x16c>) if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { c518: 4850 ldr r0, [pc, #320] ; (c65c <_lv_img_cache_open+0x170>) lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); c51a: 681f ldr r7, [r3, #0] for(i = 0; i < entry_cnt; i++) { c51c: 2300 movs r3, #0 c51e: 463a mov r2, r7 if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { c520: 6a11 ldr r1, [r2, #32] for(i = 0; i < entry_cnt; i++) { c522: 3301 adds r3, #1 if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { c524: 4281 cmp r1, r0 cache[i].life -= LV_IMG_CACHE_AGING; c526: bfa8 it ge c528: f101 31ff addge.w r1, r1, #4294967295 ; 0xffffffff for(i = 0; i < entry_cnt; i++) { c52c: b29b uxth r3, r3 cache[i].life -= LV_IMG_CACHE_AGING; c52e: bfa8 it ge c530: 6211 strge r1, [r2, #32] for(i = 0; i < entry_cnt; i++) { c532: 429c cmp r4, r3 c534: f102 0224 add.w r2, r2, #36 ; 0x24 c538: d1f2 bne.n c520 <_lv_img_cache_open+0x34> if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; c53a: f8df b14c ldr.w fp, [pc, #332] ; c688 <_lv_img_cache_open+0x19c> c53e: f04f 0a00 mov.w sl, #0 lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); c542: f04f 0924 mov.w r9, #36 ; 0x24 for(i = 0; i < entry_cnt; i++) { c546: f8b8 1000 ldrh.w r1, [r8] c54a: fa1f f28a uxth.w r2, sl c54e: 4291 cmp r1, r2 c550: d839 bhi.n c5c6 <_lv_img_cache_open+0xda> c552: f107 0224 add.w r2, r7, #36 ; 0x24 cached_src = &cache[0]; c556: 463c mov r4, r7 for(i = 1; i < entry_cnt; i++) { c558: 2301 movs r3, #1 c55a: 4299 cmp r1, r3 c55c: d856 bhi.n c60c <_lv_img_cache_open+0x120> if(cached_src->dec_dsc.src) { c55e: 6863 ldr r3, [r4, #4] c560: f8df 80f0 ldr.w r8, [pc, #240] ; c654 <_lv_img_cache_open+0x168> c564: 2b00 cmp r3, #0 c566: d05a beq.n c61e <_lv_img_cache_open+0x132> lv_img_decoder_close(&cached_src->dec_dsc); c568: 4b3d ldr r3, [pc, #244] ; (c660 <_lv_img_cache_open+0x174>) c56a: 4620 mov r0, r4 c56c: 4798 blx r3 LV_LOG_INFO("image draw: cache miss, close and reuse an entry"); c56e: 4b3d ldr r3, [pc, #244] ; (c664 <_lv_img_cache_open+0x178>) c570: 9300 str r3, [sp, #0] c572: 4b37 ldr r3, [pc, #220] ; (c650 <_lv_img_cache_open+0x164>) c574: 2277 movs r2, #119 ; 0x77 LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); c576: 4935 ldr r1, [pc, #212] ; (c64c <_lv_img_cache_open+0x160>) c578: 2001 movs r0, #1 c57a: 47c0 blx r8 t_start = lv_tick_get(); c57c: 4b3a ldr r3, [pc, #232] ; (c668 <_lv_img_cache_open+0x17c>) c57e: 4798 blx r3 cached_src->dec_dsc.time_to_open = 0; c580: f04f 0900 mov.w r9, #0 lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); c584: 4629 mov r1, r5 c586: 4b39 ldr r3, [pc, #228] ; (c66c <_lv_img_cache_open+0x180>) cached_src->dec_dsc.time_to_open = 0; c588: f8c4 9014 str.w r9, [r4, #20] t_start = lv_tick_get(); c58c: 4607 mov r7, r0 lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); c58e: 4632 mov r2, r6 c590: 4620 mov r0, r4 c592: 4798 blx r3 if(open_res == LV_RES_INV) { c594: 4605 mov r5, r0 c596: 2800 cmp r0, #0 c598: d146 bne.n c628 <_lv_img_cache_open+0x13c> LV_LOG_WARN("Image draw cannot open the image resource"); c59a: 4b35 ldr r3, [pc, #212] ; (c670 <_lv_img_cache_open+0x184>) c59c: 492b ldr r1, [pc, #172] ; (c64c <_lv_img_cache_open+0x160>) c59e: 9300 str r3, [sp, #0] c5a0: 2283 movs r2, #131 ; 0x83 c5a2: 4b2b ldr r3, [pc, #172] ; (c650 <_lv_img_cache_open+0x164>) _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); c5a4: 4e33 ldr r6, [pc, #204] ; (c674 <_lv_img_cache_open+0x188>) LV_LOG_WARN("Image draw cannot open the image resource"); c5a6: 2002 movs r0, #2 c5a8: 47c0 blx r8 lv_img_decoder_close(&cached_src->dec_dsc); c5aa: 4b2d ldr r3, [pc, #180] ; (c660 <_lv_img_cache_open+0x174>) c5ac: 4620 mov r0, r4 c5ae: 4798 blx r3 _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); c5b0: 4620 mov r0, r4 c5b2: 2120 movs r1, #32 c5b4: 47b0 blx r6 _lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t)); c5b6: 4620 mov r0, r4 c5b8: 2124 movs r1, #36 ; 0x24 c5ba: 47b0 blx r6 cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */ c5bc: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 c5c0: 6223 str r3, [r4, #32] return NULL; c5c2: 462c mov r4, r5 c5c4: e7a3 b.n c50e <_lv_img_cache_open+0x22> lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); c5c6: fa1f f48a uxth.w r4, sl c5ca: fb09 7404 mla r4, r9, r4, r7 c5ce: 4b2a ldr r3, [pc, #168] ; (c678 <_lv_img_cache_open+0x18c>) c5d0: 6860 ldr r0, [r4, #4] c5d2: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { c5d4: b980 cbnz r0, c5f8 <_lv_img_cache_open+0x10c> if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; c5d6: 6862 ldr r2, [r4, #4] c5d8: 42aa cmp r2, r5 c5da: d114 bne.n c606 <_lv_img_cache_open+0x11a> c5dc: 8921 ldrh r1, [r4, #8] c5de: b2b2 uxth r2, r6 c5e0: 4291 cmp r1, r2 c5e2: d110 bne.n c606 <_lv_img_cache_open+0x11a> cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; c5e4: 6a23 ldr r3, [r4, #32] c5e6: 6962 ldr r2, [r4, #20] c5e8: 4413 add r3, r2 if(cached_src->life > LV_IMG_CACHE_LIFE_LIMIT) cached_src->life = LV_IMG_CACHE_LIFE_LIMIT; c5ea: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 c5ee: bfc8 it gt c5f0: f44f 737a movgt.w r3, #1000 ; 0x3e8 c5f4: 6223 str r3, [r4, #32] c5f6: e78a b.n c50e <_lv_img_cache_open+0x22> else if(src_type == LV_IMG_SRC_FILE) { c5f8: 2801 cmp r0, #1 c5fa: d104 bne.n c606 <_lv_img_cache_open+0x11a> if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; c5fc: 6860 ldr r0, [r4, #4] c5fe: 4629 mov r1, r5 c600: 47d8 blx fp c602: 2800 cmp r0, #0 c604: d0ee beq.n c5e4 <_lv_img_cache_open+0xf8> for(i = 0; i < entry_cnt; i++) { c606: f10a 0a01 add.w sl, sl, #1 c60a: e79c b.n c546 <_lv_img_cache_open+0x5a> if(cache[i].life < cached_src->life) { c60c: 6a17 ldr r7, [r2, #32] c60e: 6a20 ldr r0, [r4, #32] for(i = 1; i < entry_cnt; i++) { c610: 3301 adds r3, #1 if(cache[i].life < cached_src->life) { c612: 4287 cmp r7, r0 c614: bfb8 it lt c616: 4614 movlt r4, r2 for(i = 1; i < entry_cnt; i++) { c618: b29b uxth r3, r3 c61a: 3224 adds r2, #36 ; 0x24 c61c: e79d b.n c55a <_lv_img_cache_open+0x6e> LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); c61e: 4b17 ldr r3, [pc, #92] ; (c67c <_lv_img_cache_open+0x190>) c620: 9300 str r3, [sp, #0] c622: 227a movs r2, #122 ; 0x7a c624: 4b0a ldr r3, [pc, #40] ; (c650 <_lv_img_cache_open+0x164>) c626: e7a6 b.n c576 <_lv_img_cache_open+0x8a> if(cached_src->dec_dsc.time_to_open == 0) { c628: 6963 ldr r3, [r4, #20] cached_src->life = 0; c62a: f8c4 9020 str.w r9, [r4, #32] if(cached_src->dec_dsc.time_to_open == 0) { c62e: 2b00 cmp r3, #0 c630: f47f af6d bne.w c50e <_lv_img_cache_open+0x22> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); c634: 4b12 ldr r3, [pc, #72] ; (c680 <_lv_img_cache_open+0x194>) c636: 4638 mov r0, r7 c638: 4798 blx r3 if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; c63a: b108 cbz r0, c640 <_lv_img_cache_open+0x154> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); c63c: 6160 str r0, [r4, #20] c63e: e766 b.n c50e <_lv_img_cache_open+0x22> if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; c640: 2301 movs r3, #1 c642: 6163 str r3, [r4, #20] c644: e763 b.n c50e <_lv_img_cache_open+0x22> c646: bf00 nop c648: 0001fe9f .word 0x0001fe9f c64c: 0001fe6a .word 0x0001fe6a c650: 0001ff52 .word 0x0001ff52 c654: 0000e931 .word 0x0000e931 c658: 2000866c .word 0x2000866c c65c: 80000002 .word 0x80000002 c660: 0000d091 .word 0x0000d091 c664: 0001fec6 .word 0x0001fec6 c668: 0000da8d .word 0x0000da8d c66c: 0000cfc1 .word 0x0000cfc1 c670: 0001ff28 .word 0x0001ff28 c674: 0000f061 .word 0x0000f061 c678: 00007811 .word 0x00007811 c67c: 0001fef7 .word 0x0001fef7 c680: 0000daa1 .word 0x0000daa1 c684: 200085d0 .word 0x200085d0 c688: 00016359 .word 0x00016359 0000c68c : * @param src an image source path to a file or pointer to an `lv_img_dsc_t` variable. */ void lv_img_cache_invalidate_src(const void * src) { lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); c68c: 4b14 ldr r3, [pc, #80] ; (c6e0 ) { c68e: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); c692: 681f ldr r7, [r3, #0] uint16_t i; for(i = 0; i < entry_cnt; i++) { c694: 4e13 ldr r6, [pc, #76] ; (c6e4 ) if(cache[i].dec_dsc.src == src || src == NULL) { if(cache[i].dec_dsc.src != NULL) { lv_img_decoder_close(&cache[i].dec_dsc); } _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); c696: 4d14 ldr r5, [pc, #80] ; (c6e8 ) lv_img_decoder_close(&cache[i].dec_dsc); c698: f8df 8050 ldr.w r8, [pc, #80] ; c6ec { c69c: 4604 mov r4, r0 for(i = 0; i < entry_cnt; i++) { c69e: f04f 0900 mov.w r9, #0 c6a2: 8832 ldrh r2, [r6, #0] c6a4: fa1f f389 uxth.w r3, r9 c6a8: 429a cmp r2, r3 c6aa: d802 bhi.n c6b2 _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); } } } c6ac: b003 add sp, #12 c6ae: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(cache[i].dec_dsc.src == src || src == NULL) { c6b2: fa1f f389 uxth.w r3, r9 c6b6: 2024 movs r0, #36 ; 0x24 c6b8: fb00 7003 mla r0, r0, r3, r7 c6bc: 6843 ldr r3, [r0, #4] c6be: 42a3 cmp r3, r4 c6c0: d000 beq.n c6c4 c6c2: b94c cbnz r4, c6d8 if(cache[i].dec_dsc.src != NULL) { c6c4: b113 cbz r3, c6cc lv_img_decoder_close(&cache[i].dec_dsc); c6c6: 9001 str r0, [sp, #4] c6c8: 47c0 blx r8 c6ca: 9801 ldr r0, [sp, #4] _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); c6cc: 9001 str r0, [sp, #4] c6ce: 2120 movs r1, #32 c6d0: 47a8 blx r5 _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); c6d2: 9801 ldr r0, [sp, #4] c6d4: 2124 movs r1, #36 ; 0x24 c6d6: 47a8 blx r5 for(i = 0; i < entry_cnt; i++) { c6d8: f109 0901 add.w r9, r9, #1 c6dc: e7e1 b.n c6a2 c6de: bf00 nop c6e0: 2000866c .word 0x2000866c c6e4: 200085d0 .word 0x200085d0 c6e8: 0000f061 .word 0x0000f061 c6ec: 0000d091 .word 0x0000d091 0000c6f0 : { c6f0: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { c6f4: 4c1f ldr r4, [pc, #124] ; (c774 ) c6f6: 6823 ldr r3, [r4, #0] { c6f8: 4605 mov r5, r0 if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { c6fa: b12b cbz r3, c708 lv_img_cache_invalidate_src(NULL); c6fc: 4b1e ldr r3, [pc, #120] ; (c778 ) c6fe: 2000 movs r0, #0 c700: 4798 blx r3 lv_mem_free(LV_GC_ROOT(_lv_img_cache_array)); c702: 6820 ldr r0, [r4, #0] c704: 4b1d ldr r3, [pc, #116] ; (c77c ) c706: 4798 blx r3 LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); c708: 2724 movs r7, #36 ; 0x24 c70a: 4b1d ldr r3, [pc, #116] ; (c780 ) c70c: fb07 f005 mul.w r0, r7, r5 c710: 4798 blx r3 LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); c712: 4b1c ldr r3, [pc, #112] ; (c784 ) LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); c714: 6020 str r0, [r4, #0] LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); c716: 4798 blx r3 c718: 4606 mov r6, r0 c71a: b960 cbnz r0, c736 c71c: 4b1a ldr r3, [pc, #104] ; (c788 ) c71e: 491b ldr r1, [pc, #108] ; (c78c ) c720: 9300 str r3, [sp, #0] c722: 22a8 movs r2, #168 ; 0xa8 c724: 2003 movs r0, #3 c726: 4d1a ldr r5, [pc, #104] ; (c790 ) c728: 47a8 blx r5 c72a: 6822 ldr r2, [r4, #0] c72c: 4819 ldr r0, [pc, #100] ; (c794 ) c72e: 491a ldr r1, [pc, #104] ; (c798 ) c730: 4633 mov r3, r6 c732: 4788 blx r1 c734: e7fe b.n c734 if(LV_GC_ROOT(_lv_img_cache_array) == NULL) { c736: 6823 ldr r3, [r4, #0] c738: f8df 8060 ldr.w r8, [pc, #96] ; c79c c73c: b923 cbnz r3, c748 entry_cnt = 0; c73e: f8a8 3000 strh.w r3, [r8] } c742: b003 add sp, #12 c744: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); c748: f8df 9054 ldr.w r9, [pc, #84] ; c7a0 entry_cnt = new_entry_cnt; c74c: f8a8 5000 strh.w r5, [r8] for(i = 0; i < entry_cnt; i++) { c750: 2500 movs r5, #0 c752: f8b8 2000 ldrh.w r2, [r8] c756: b2ab uxth r3, r5 c758: 429a cmp r2, r3 c75a: d9f2 bls.n c742 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); c75c: 6820 ldr r0, [r4, #0] c75e: b2ae uxth r6, r5 c760: 437e muls r6, r7 c762: 2120 movs r1, #32 c764: 4430 add r0, r6 c766: 47c8 blx r9 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t)); c768: 6820 ldr r0, [r4, #0] c76a: 2124 movs r1, #36 ; 0x24 c76c: 4430 add r0, r6 c76e: 47c8 blx r9 for(i = 0; i < entry_cnt; i++) { c770: 3501 adds r5, #1 c772: e7ee b.n c752 c774: 2000866c .word 0x2000866c c778: 0000c68d .word 0x0000c68d c77c: 0000eb2d .word 0x0000eb2d c780: 0000ea75 .word 0x0000ea75 c784: 00001795 .word 0x00001795 c788: 0001ff65 .word 0x0001ff65 c78c: 0001fe6a .word 0x0001fe6a c790: 0000e931 .word 0x0000e931 c794: 0001ee02 .word 0x0001ee02 c798: 0000179d .word 0x0000179d c79c: 200085d0 .word 0x200085d0 c7a0: 0000f061 .word 0x0000f061 0000c7a4 : * @param src the image source: pointer to an `lv_img_dsc_t` variable, a file path or a symbol * @param header store the image data here * @return LV_RES_OK: the info is successfully stored in `header`; LV_RES_INV: unknown format or other error. */ lv_res_t lv_img_decoder_built_in_info(lv_img_decoder_t * decoder, const void * src, lv_img_header_t * header) { c7a4: b570 push {r4, r5, r6, lr} (void)decoder; /*Unused*/ lv_img_src_t src_type = lv_img_src_get_type(src); c7a6: 4b2c ldr r3, [pc, #176] ; (c858 ) { c7a8: b086 sub sp, #24 lv_img_src_t src_type = lv_img_src_get_type(src); c7aa: 4608 mov r0, r1 { c7ac: 460e mov r6, r1 c7ae: 4615 mov r5, r2 lv_img_src_t src_type = lv_img_src_get_type(src); c7b0: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { c7b2: 4604 mov r4, r0 c7b4: b9d8 cbnz r0, c7ee lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; c7b6: 7833 ldrb r3, [r6, #0] c7b8: f3c3 0304 ubfx r3, r3, #0, #5 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; c7bc: 3b04 subs r3, #4 c7be: b2db uxtb r3, r3 c7c0: 2b0a cmp r3, #10 c7c2: d811 bhi.n c7e8 header->w = ((lv_img_dsc_t *)src)->header.w; header->h = ((lv_img_dsc_t *)src)->header.h; c7c4: 8873 ldrh r3, [r6, #2] c7c6: 886a ldrh r2, [r5, #2] lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; c7c8: 6831 ldr r1, [r6, #0] header->h = ((lv_img_dsc_t *)src)->header.h; c7ca: f3c3 134a ubfx r3, r3, #5, #11 c7ce: f363 124f bfi r2, r3, #5, #11 c7d2: 806a strh r2, [r5, #2] header->cf = ((lv_img_dsc_t *)src)->header.cf; c7d4: 682b ldr r3, [r5, #0] c7d6: 4a21 ldr r2, [pc, #132] ; (c85c ) c7d8: f023 131f bic.w r3, r3, #2031647 ; 0x1f001f c7dc: f423 437c bic.w r3, r3, #64512 ; 0xfc00 c7e0: 400a ands r2, r1 * function*/ header->w = 1; header->h = 1; /* Symbols always have transparent parts. Important because of cover check in the design * function. The actual value doesn't matter because lv_draw_label will draw it*/ header->cf = LV_IMG_CF_ALPHA_1BIT; c7e2: 4313 orrs r3, r2 c7e4: 602b str r3, [r5, #0] } else { LV_LOG_WARN("Image get info found unknown src type"); return LV_RES_INV; } return LV_RES_OK; c7e6: 2401 movs r4, #1 } c7e8: 4620 mov r0, r4 c7ea: b006 add sp, #24 c7ec: bd70 pop {r4, r5, r6, pc} else if(src_type == LV_IMG_SRC_FILE) { c7ee: 2801 cmp r0, #1 c7f0: d125 bne.n c83e res = lv_fs_open(&file, src, LV_FS_MODE_RD); c7f2: 4b1b ldr r3, [pc, #108] ; (c860 ) c7f4: 2202 movs r2, #2 c7f6: 4631 mov r1, r6 c7f8: a804 add r0, sp, #16 c7fa: 4798 blx r3 if(res == LV_FS_RES_OK) { c7fc: b9b8 cbnz r0, c82e res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); c7fe: 4e19 ldr r6, [pc, #100] ; (c864 ) c800: ab03 add r3, sp, #12 c802: 2204 movs r2, #4 c804: 4629 mov r1, r5 c806: a804 add r0, sp, #16 c808: 47b0 blx r6 lv_fs_close(&file); c80a: 4b17 ldr r3, [pc, #92] ; (c868 ) res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); c80c: 4606 mov r6, r0 lv_fs_close(&file); c80e: a804 add r0, sp, #16 c810: 4798 blx r3 if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) { c812: b916 cbnz r6, c81a c814: 9b03 ldr r3, [sp, #12] c816: 2b04 cmp r3, #4 c818: d009 beq.n c82e LV_LOG_WARN("Image get info get read file header"); c81a: 4b14 ldr r3, [pc, #80] ; (c86c ) c81c: 9300 str r3, [sp, #0] c81e: 4b14 ldr r3, [pc, #80] ; (c870 ) c820: f240 1221 movw r2, #289 ; 0x121 LV_LOG_WARN("Image get info found unknown src type"); c824: 4913 ldr r1, [pc, #76] ; (c874 ) c826: 4c14 ldr r4, [pc, #80] ; (c878 ) c828: 2002 movs r0, #2 c82a: 47a0 blx r4 c82c: e005 b.n c83a if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; c82e: 782b ldrb r3, [r5, #0] c830: 331c adds r3, #28 c832: f003 031f and.w r3, r3, #31 c836: 2b0a cmp r3, #10 c838: d9d6 bls.n c7e8 return LV_RES_INV; c83a: 2400 movs r4, #0 c83c: e7d4 b.n c7e8 else if(src_type == LV_IMG_SRC_SYMBOL) { c83e: 2802 cmp r0, #2 c840: d104 bne.n c84c header->cf = LV_IMG_CF_ALPHA_1BIT; c842: 682b ldr r3, [r5, #0] c844: f403 7278 and.w r2, r3, #992 ; 0x3e0 c848: 4b0c ldr r3, [pc, #48] ; (c87c ) c84a: e7ca b.n c7e2 LV_LOG_WARN("Image get info found unknown src type"); c84c: 4b0c ldr r3, [pc, #48] ; (c880 ) c84e: 9300 str r3, [sp, #0] c850: f44f 729a mov.w r2, #308 ; 0x134 c854: 4b06 ldr r3, [pc, #24] ; (c870 ) c856: e7e5 b.n c824 c858: 00007811 .word 0x00007811 c85c: 001ffc1f .word 0x001ffc1f c860: 0000e4e9 .word 0x0000e4e9 c864: 0000e461 .word 0x0000e461 c868: 0000e431 .word 0x0000e431 c86c: 0001ffb2 .word 0x0001ffb2 c870: 00020120 .word 0x00020120 c874: 0001ff7b .word 0x0001ff7b c878: 0000e931 .word 0x0000e931 c87c: 0020040b .word 0x0020040b c880: 0001ffd6 .word 0x0001ffd6 0000c884 : * Close the pending decoding. Free resources etc. * @param decoder pointer to the decoder the function associated with * @param dsc pointer to decoder descriptor */ void lv_img_decoder_built_in_close(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t * dsc) { c884: b570 push {r4, r5, r6, lr} (void)decoder; /*Unused*/ lv_img_decoder_built_in_data_t * user_data = dsc->user_data; c886: 69cc ldr r4, [r1, #28] { c888: 460d mov r5, r1 if(user_data) { c88a: b184 cbz r4, c8ae #if LV_USE_FILESYSTEM if(user_data->f) { c88c: 6820 ldr r0, [r4, #0] c88e: 4e08 ldr r6, [pc, #32] ; (c8b0 ) c890: b118 cbz r0, c89a lv_fs_close(user_data->f); c892: 4b08 ldr r3, [pc, #32] ; (c8b4 ) c894: 4798 blx r3 lv_mem_free(user_data->f); c896: 6820 ldr r0, [r4, #0] c898: 47b0 blx r6 } #endif if(user_data->palette) lv_mem_free(user_data->palette); c89a: 6860 ldr r0, [r4, #4] c89c: b100 cbz r0, c8a0 c89e: 47b0 blx r6 if(user_data->opa) lv_mem_free(user_data->opa); c8a0: 68a0 ldr r0, [r4, #8] c8a2: b100 cbz r0, c8a6 c8a4: 47b0 blx r6 lv_mem_free(user_data); c8a6: 4620 mov r0, r4 c8a8: 47b0 blx r6 dsc->user_data = NULL; c8aa: 2300 movs r3, #0 c8ac: 61eb str r3, [r5, #28] } } c8ae: bd70 pop {r4, r5, r6, pc} c8b0: 0000eb2d .word 0x0000eb2d c8b4: 0000e431 .word 0x0000e431 0000c8b8 : { c8b8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c8bc: 7b08 ldrb r0, [r1, #12] { c8be: b08d sub sp, #52 ; 0x34 c8c0: 4698 mov r8, r3 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c8c2: f000 031e and.w r3, r0, #30 c8c6: 2b04 cmp r3, #4 { c8c8: f9bd a058 ldrsh.w sl, [sp, #88] ; 0x58 c8cc: 9e17 ldr r6, [sp, #92] ; 0x5c c8ce: 460d mov r5, r1 c8d0: 4614 mov r4, r2 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c8d2: d003 beq.n c8dc dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { c8d4: f000 031f and.w r3, r0, #31 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c8d8: 2b06 cmp r3, #6 c8da: d13d bne.n c958 if(dsc->src_type == LV_IMG_SRC_FILE) { c8dc: f895 900a ldrb.w r9, [r5, #10] c8e0: f1b9 0f01 cmp.w r9, #1 c8e4: d135 bne.n c952 lv_coord_t len, uint8_t * buf) { #if LV_USE_FILESYSTEM lv_img_decoder_built_in_data_t * user_data = dsc->user_data; lv_fs_res_t res; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c8e6: 4bb3 ldr r3, [pc, #716] ; (cbb4 ) lv_img_decoder_built_in_data_t * user_data = dsc->user_data; c8e8: f8d5 b01c ldr.w fp, [r5, #28] uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c8ec: f000 001f and.w r0, r0, #31 c8f0: 4798 blx r3 uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; c8f2: 68e9 ldr r1, [r5, #12] pos += 4; /*Skip the header*/ res = lv_fs_seek(user_data->f, pos); c8f4: 4bb0 ldr r3, [pc, #704] ; (cbb8 ) uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; c8f6: f3c1 218a ubfx r1, r1, #10, #11 c8fa: fb18 4101 smlabb r1, r8, r1, r4 c8fe: 4341 muls r1, r0 c900: 10c9 asrs r1, r1, #3 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c902: 4607 mov r7, r0 res = lv_fs_seek(user_data->f, pos); c904: 3104 adds r1, #4 c906: f8db 0000 ldr.w r0, [fp] c90a: 4798 blx r3 if(res != LV_FS_RES_OK) { c90c: b148 cbz r0, c922 LV_LOG_WARN("Built-in image decoder seek failed"); c90e: 4bab ldr r3, [pc, #684] ; (cbbc ) c910: 9300 str r3, [sp, #0] c912: 4bab ldr r3, [pc, #684] ; (cbc0 ) c914: f240 222e movw r2, #558 ; 0x22e LV_LOG_WARN("Built-in image decoder read not supports the color format"); c918: 49aa ldr r1, [pc, #680] ; (cbc4 ) c91a: 4cab ldr r4, [pc, #684] ; (cbc8 ) c91c: 2002 movs r0, #2 c91e: 47a0 blx r4 return LV_RES_INV; c920: e017 b.n c952 return LV_RES_INV; } uint32_t btr = len * (px_size >> 3); c922: f3c7 07c7 ubfx r7, r7, #3, #8 c926: fb17 fa0a smulbb sl, r7, sl uint32_t br = 0; c92a: 9008 str r0, [sp, #32] lv_fs_read(user_data->f, buf, btr, &br); c92c: ab08 add r3, sp, #32 c92e: f8db 0000 ldr.w r0, [fp] c932: 4da6 ldr r5, [pc, #664] ; (cbcc ) c934: 4652 mov r2, sl c936: 4631 mov r1, r6 c938: 47a8 blx r5 if(res != LV_FS_RES_OK || btr != br) { c93a: 9b08 ldr r3, [sp, #32] c93c: 459a cmp sl, r3 c93e: d079 beq.n ca34 LV_LOG_WARN("Built-in image decoder read failed"); c940: 4ba3 ldr r3, [pc, #652] ; (cbd0 ) c942: 9300 str r3, [sp, #0] c944: 499f ldr r1, [pc, #636] ; (cbc4 ) c946: 4b9e ldr r3, [pc, #632] ; (cbc0 ) c948: 4d9f ldr r5, [pc, #636] ; (cbc8 ) c94a: f240 2235 movw r2, #565 ; 0x235 c94e: 2002 movs r0, #2 c950: 47a8 blx r5 lv_res_t res = LV_RES_INV; c952: f04f 0900 mov.w r9, #0 c956: e06d b.n ca34 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || c958: f1a3 020b sub.w r2, r3, #11 c95c: 2a03 cmp r2, #3 c95e: f200 80ce bhi.w cafe static lv_res_t lv_img_decoder_built_in_line_alpha(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t * buf) { #if LV_IMG_CF_ALPHA const lv_opa_t alpha1_opa_table[2] = {0, 255}; /*Opacity mapping with bpp = 1 (Just for compatibility)*/ c962: f44f 437f mov.w r3, #65280 ; 0xff00 c966: f8ad 3018 strh.w r3, [sp, #24] const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ c96a: f5a3 03ad sub.w r3, r3, #5668864 ; 0x568000 c96e: f5a3 5328 sub.w r3, r3, #10752 ; 0x2a00 c972: 9307 str r3, [sp, #28] const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ c974: 4b97 ldr r3, [pc, #604] ; (cbd4 ) c976: aa08 add r2, sp, #32 c978: f103 0e10 add.w lr, r3, #16 c97c: 4617 mov r7, r2 c97e: 6818 ldr r0, [r3, #0] c980: 6859 ldr r1, [r3, #4] c982: 4694 mov ip, r2 c984: e8ac 0003 stmia.w ip!, {r0, r1} c988: 3308 adds r3, #8 c98a: 4573 cmp r3, lr c98c: 4662 mov r2, ip c98e: d1f6 bne.n c97e 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255 }; /*Simply fill the buffer with the color. Later only the alpha value will be modified.*/ lv_color_t bg_color = dsc->color; c990: 8929 ldrh r1, [r5, #8] lv_coord_t i; for(i = 0; i < len; i++) { c992: 4633 mov r3, r6 #if LV_COLOR_DEPTH == 8 || LV_COLOR_DEPTH == 1 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full; #elif LV_COLOR_DEPTH == 16 /*Because of Alpha byte 16 bit color can start on odd address which can cause crash*/ buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; c994: ea4f 2c11 mov.w ip, r1, lsr #8 for(i = 0; i < len; i++) { c998: 2200 movs r2, #0 c99a: b210 sxth r0, r2 c99c: 4582 cmp sl, r0 c99e: f103 0303 add.w r3, r3, #3 c9a2: dc14 bgt.n c9ce #error "Invalid LV_COLOR_DEPTH. Check it in lv_conf.h" #endif } const lv_opa_t * opa_table = NULL; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c9a4: 7b28 ldrb r0, [r5, #12] c9a6: 4b83 ldr r3, [pc, #524] ; (cbb4 ) c9a8: f000 001f and.w r0, r0, #31 c9ac: 4798 blx r3 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ c9ae: 2301 movs r3, #1 c9b0: 4083 lsls r3, r0 c9b2: 3b01 subs r3, #1 c9b4: b29b uxth r3, r3 c9b6: 9304 str r3, [sp, #16] lv_coord_t w = 0; uint32_t ofs = 0; int8_t pos = 0; switch(dsc->header.cf) { c9b8: 7b2b ldrb r3, [r5, #12] c9ba: f003 031f and.w r3, r3, #31 c9be: 3b0b subs r3, #11 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c9c0: 4681 mov r9, r0 switch(dsc->header.cf) { c9c2: 2b03 cmp r3, #3 c9c4: d86a bhi.n ca9c c9c6: e8df f003 tbb [pc, r3] c9ca: 3908 .short 0x3908 c9cc: 604d .short 0x604d buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; c9ce: f803 1c03 strb.w r1, [r3, #-3] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; c9d2: f803 cc02 strb.w ip, [r3, #-2] for(i = 0; i < len; i++) { c9d6: 3201 adds r2, #1 c9d8: e7df b.n c99a case LV_IMG_CF_ALPHA_1BIT: w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ c9da: 68eb ldr r3, [r5, #12] c9dc: f3c3 3247 ubfx r2, r3, #13, #8 if(dsc->header.w & 0x7) w++; c9e0: f413 5fe0 tst.w r3, #7168 ; 0x1c00 ofs += w * y + (x >> 3); /*First pixel*/ c9e4: ea4f 01e4 mov.w r1, r4, asr #3 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ c9e8: bf0c ite eq c9ea: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x7) w++; c9ee: f102 0b01 addne.w fp, r2, #1 pos = 7 - (x & 0x7); c9f2: 43e4 mvns r4, r4 ofs += w * y + (x >> 3); /*First pixel*/ c9f4: fb0b 1108 mla r1, fp, r8, r1 pos = 7 - (x & 0x7); c9f8: f004 0407 and.w r4, r4, #7 opa_table = alpha1_opa_table; c9fc: af06 add r7, sp, #24 pos = 0; break; } #if LV_USE_FILESYSTEM lv_img_decoder_built_in_data_t * user_data = dsc->user_data; c9fe: 69eb ldr r3, [r5, #28] ca00: 9303 str r3, [sp, #12] uint8_t * fs_buf = _lv_mem_buf_get(w); ca02: 4658 mov r0, fp ca04: 4b74 ldr r3, [pc, #464] ; (cbd8 ) ca06: 9105 str r1, [sp, #20] ca08: 4798 blx r3 #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { ca0a: 7aab ldrb r3, [r5, #10] ca0c: 9905 ldr r1, [sp, #20] uint8_t * fs_buf = _lv_mem_buf_get(w); ca0e: 4680 mov r8, r0 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { ca10: 2b00 cmp r3, #0 ca12: d147 bne.n caa4 const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; ca14: 686b ldr r3, [r5, #4] ca16: 689b ldr r3, [r3, #8] ca18: 4419 add r1, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; pos -= px_size; if(pos < 0) { pos = 8 - px_size; ca1a: f1c9 0008 rsb r0, r9, #8 data_tmp = fs_buf; ca1e: 2300 movs r3, #0 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = ca20: 3602 adds r6, #2 pos = 8 - px_size; ca22: b240 sxtb r0, r0 for(i = 0; i < len; i++) { ca24: b21a sxth r2, r3 ca26: 4592 cmp sl, r2 ca28: dc4b bgt.n cac2 pos = 8 - px_size; data_tmp++; } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); ca2a: 4b6c ldr r3, [pc, #432] ; (cbdc ) ca2c: 4640 mov r0, r8 ca2e: 4798 blx r3 res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf); ca30: f04f 0901 mov.w r9, #1 } ca34: 4648 mov r0, r9 ca36: b00d add sp, #52 ; 0x34 ca38: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ ca3c: 68eb ldr r3, [r5, #12] ofs += w * y + (x >> 2); /*First pixel*/ ca3e: 10a1 asrs r1, r4, #2 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ ca40: f3c3 3208 ubfx r2, r3, #12, #9 if(dsc->header.w & 0x3) w++; ca44: f413 6f40 tst.w r3, #3072 ; 0xc00 pos = 6 - ((x & 0x3) * 2); ca48: ea6f 0404 mvn.w r4, r4 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ ca4c: bf0c ite eq ca4e: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x3) w++; ca52: f102 0b01 addne.w fp, r2, #1 pos = 6 - ((x & 0x3) * 2); ca56: f004 0403 and.w r4, r4, #3 ofs += w * y + (x >> 2); /*First pixel*/ ca5a: fb0b 1108 mla r1, fp, r8, r1 pos = 6 - ((x & 0x3) * 2); ca5e: 0064 lsls r4, r4, #1 opa_table = alpha2_opa_table; ca60: af07 add r7, sp, #28 break; ca62: e7cc b.n c9fe w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ ca64: 68eb ldr r3, [r5, #12] if(dsc->header.w & 0x1) w++; ca66: 0559 lsls r1, r3, #21 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ ca68: f3c3 22c9 ubfx r2, r3, #11, #10 ofs += w * y + (x >> 1); /*First pixel*/ ca6c: ea4f 0164 mov.w r1, r4, asr #1 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ ca70: bf54 ite pl ca72: fa0f fb82 sxthpl.w fp, r2 if(dsc->header.w & 0x1) w++; ca76: f102 0b01 addmi.w fp, r2, #1 pos = 4 - ((x & 0x1) * 4); ca7a: f014 0f01 tst.w r4, #1 ofs += w * y + (x >> 1); /*First pixel*/ ca7e: fb0b 1108 mla r1, fp, r8, r1 pos = 4 - ((x & 0x1) * 4); ca82: bf0c ite eq ca84: 2404 moveq r4, #4 ca86: 2400 movne r4, #0 ca88: e7b9 b.n c9fe w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ ca8a: 68ea ldr r2, [r5, #12] ca8c: f3c2 218a ubfx r1, r2, #10, #11 ca90: 468b mov fp, r1 ofs += w * y + x; /*First pixel*/ ca92: fb18 4101 smlabb r1, r8, r1, r4 pos = 0; ca96: 2400 movs r4, #0 switch(dsc->header.cf) { ca98: 4627 mov r7, r4 ca9a: e7b0 b.n c9fe ca9c: 2400 movs r4, #0 ca9e: 4621 mov r1, r4 caa0: 46a3 mov fp, r4 caa2: e7f9 b.n ca98 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ caa4: 9b03 ldr r3, [sp, #12] caa6: 3104 adds r1, #4 caa8: 6818 ldr r0, [r3, #0] caaa: 4b43 ldr r3, [pc, #268] ; (cbb8 ) caac: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); caae: 9803 ldr r0, [sp, #12] cab0: 465a mov r2, fp cab2: 4641 mov r1, r8 cab4: 6800 ldr r0, [r0, #0] cab6: f8df b114 ldr.w fp, [pc, #276] ; cbcc caba: 2300 movs r3, #0 cabc: 47d8 blx fp data_tmp = fs_buf; cabe: 4641 mov r1, r8 cac0: e7ab b.n ca1a uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; cac2: 9a04 ldr r2, [sp, #16] cac4: f891 e000 ldrb.w lr, [r1] cac8: fa02 fc04 lsl.w ip, r2, r4 cacc: ea0e 020c and.w r2, lr, ip dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; cad0: f895 c00c ldrb.w ip, [r5, #12] uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; cad4: 4122 asrs r2, r4 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = cad6: f00c 0c1f and.w ip, ip, #31 cada: b2d2 uxtb r2, r2 pos -= px_size; cadc: eba4 0409 sub.w r4, r4, r9 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = cae0: f1bc 0f0e cmp.w ip, #14 pos -= px_size; cae4: b264 sxtb r4, r4 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = cae6: eb03 0c43 add.w ip, r3, r3, lsl #1 caea: bf18 it ne caec: 5cba ldrbne r2, [r7, r2] caee: f806 200c strb.w r2, [r6, ip] if(pos < 0) { caf2: 2c00 cmp r4, #0 pos = 8 - px_size; caf4: bfbc itt lt caf6: 4604 movlt r4, r0 data_tmp++; caf8: 3101 addlt r1, #1 for(i = 0; i < len; i++) { cafa: 3301 adds r3, #1 cafc: e792 b.n ca24 else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || cafe: 3b07 subs r3, #7 cb00: 2b03 cmp r3, #3 cb02: f200 80af bhi.w cc64 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); cb06: 4b2b ldr r3, [pc, #172] ; (cbb4 ) cb08: f000 001f and.w r0, r0, #31 cb0c: 4798 blx r3 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ cb0e: 2701 movs r7, #1 cb10: 4087 lsls r7, r0 cb12: 3f01 subs r7, #1 cb14: b2bb uxth r3, r7 cb16: 9303 str r3, [sp, #12] switch(dsc->header.cf) { cb18: 7b2b ldrb r3, [r5, #12] cb1a: f003 031f and.w r3, r3, #31 cb1e: 3b07 subs r3, #7 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); cb20: 4681 mov r9, r0 switch(dsc->header.cf) { cb22: 2b03 cmp r3, #3 cb24: f200 808c bhi.w cc40 cb28: e8df f003 tbb [pc, r3] cb2c: 806d5a02 .word 0x806d5a02 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ cb30: 68eb ldr r3, [r5, #12] cb32: f3c3 3247 ubfx r2, r3, #13, #8 if(dsc->header.w & 0x7) w++; cb36: f413 5fe0 tst.w r3, #7168 ; 0x1c00 ofs += w * y + (x >> 3); /*First pixel*/ cb3a: ea4f 01e4 mov.w r1, r4, asr #3 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ cb3e: bf0c ite eq cb40: b217 sxtheq r7, r2 if(dsc->header.w & 0x7) w++; cb42: 1c57 addne r7, r2, #1 ofs += w * y + (x >> 3); /*First pixel*/ cb44: fb07 1808 mla r8, r7, r8, r1 pos = 7 - (x & 0x7); cb48: 43e4 mvns r4, r4 ofs += 8; /*Skip the palette*/ cb4a: f108 0108 add.w r1, r8, #8 pos = 7 - (x & 0x7); cb4e: f004 0407 and.w r4, r4, #7 uint8_t * fs_buf = _lv_mem_buf_get(w); cb52: 4b21 ldr r3, [pc, #132] ; (cbd8 ) cb54: 9104 str r1, [sp, #16] cb56: 4638 mov r0, r7 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; cb58: f8d5 b01c ldr.w fp, [r5, #28] uint8_t * fs_buf = _lv_mem_buf_get(w); cb5c: 4798 blx r3 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cb5e: 7aab ldrb r3, [r5, #10] cb60: 9904 ldr r1, [sp, #16] uint8_t * fs_buf = _lv_mem_buf_get(w); cb62: 4680 mov r8, r0 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cb64: 2b00 cmp r3, #0 cb66: d16f bne.n cc48 data_tmp = img_dsc->data + ofs; cb68: 686b ldr r3, [r5, #4] cb6a: 689b ldr r3, [r3, #8] cb6c: 4419 add r1, r3 pos = 8 - px_size; cb6e: f1c9 0508 rsb r5, r9, #8 data_tmp = fs_buf; cb72: 2000 movs r0, #0 pos = 8 - px_size; cb74: b26d sxtb r5, r5 for(i = 0; i < len; i++) { cb76: b203 sxth r3, r0 cb78: 459a cmp sl, r3 cb7a: f77f af56 ble.w ca2a uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; cb7e: 9a03 ldr r2, [sp, #12] cb80: 780b ldrb r3, [r1, #0] cb82: 40a2 lsls r2, r4 cb84: 4013 ands r3, r2 cb86: 4123 asrs r3, r4 lv_color_t color = user_data->palette[val_act]; cb88: f8db 2004 ldr.w r2, [fp, #4] cb8c: b2db uxtb r3, r3 pos -= px_size; cb8e: eba4 0409 sub.w r4, r4, r9 lv_color_t color = user_data->palette[val_act]; cb92: f832 2013 ldrh.w r2, [r2, r3, lsl #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF; cb96: 7032 strb r2, [r6, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF; cb98: 0a12 lsrs r2, r2, #8 cb9a: 7072 strb r2, [r6, #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; cb9c: f8db 2008 ldr.w r2, [fp, #8] pos -= px_size; cba0: b264 sxtb r4, r4 if(pos < 0) { cba2: 2c00 cmp r4, #0 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; cba4: 5cd3 ldrb r3, [r2, r3] cba6: 70b3 strb r3, [r6, #2] pos = 8 - px_size; cba8: bfbc itt lt cbaa: 462c movlt r4, r5 data_tmp++; cbac: 3101 addlt r1, #1 for(i = 0; i < len; i++) { cbae: 3001 adds r0, #1 cbb0: 3603 adds r6, #3 cbb2: e7e0 b.n cb76 cbb4: 00007579 .word 0x00007579 cbb8: 0000e497 .word 0x0000e497 cbbc: 0001fffc .word 0x0001fffc cbc0: 0002013d .word 0x0002013d cbc4: 0001ff7b .word 0x0001ff7b cbc8: 0000e931 .word 0x0000e931 cbcc: 0000e461 .word 0x0000e461 cbd0: 0002001f .word 0x0002001f cbd4: 00020165 .word 0x00020165 cbd8: 0000eefd .word 0x0000eefd cbdc: 0000ebb1 .word 0x0000ebb1 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ cbe0: 68eb ldr r3, [r5, #12] cbe2: f3c3 3208 ubfx r2, r3, #12, #9 if(dsc->header.w & 0x3) w++; cbe6: f413 6f40 tst.w r3, #3072 ; 0xc00 ofs += w * y + (x >> 2); /*First pixel*/ cbea: ea4f 01a4 mov.w r1, r4, asr #2 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ cbee: bf0c ite eq cbf0: b217 sxtheq r7, r2 if(dsc->header.w & 0x3) w++; cbf2: 1c57 addne r7, r2, #1 pos = 6 - ((x & 0x3) * 2); cbf4: 43e4 mvns r4, r4 ofs += w * y + (x >> 2); /*First pixel*/ cbf6: fb07 1808 mla r8, r7, r8, r1 pos = 6 - ((x & 0x3) * 2); cbfa: f004 0403 and.w r4, r4, #3 ofs += 16; /*Skip the palette*/ cbfe: f108 0110 add.w r1, r8, #16 pos = 6 - ((x & 0x3) * 2); cc02: 0064 lsls r4, r4, #1 break; cc04: e7a5 b.n cb52 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ cc06: 68eb ldr r3, [r5, #12] cc08: f3c3 22c9 ubfx r2, r3, #11, #10 if(dsc->header.w & 0x1) w++; cc0c: 055b lsls r3, r3, #21 ofs += w * y + (x >> 1); /*First pixel*/ cc0e: ea4f 0164 mov.w r1, r4, asr #1 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ cc12: bf54 ite pl cc14: b217 sxthpl r7, r2 if(dsc->header.w & 0x1) w++; cc16: 1c57 addmi r7, r2, #1 ofs += w * y + (x >> 1); /*First pixel*/ cc18: fb07 1808 mla r8, r7, r8, r1 pos = 4 - ((x & 0x1) * 4); cc1c: f014 0f01 tst.w r4, #1 ofs += 64; /*Skip the palette*/ cc20: f108 0140 add.w r1, r8, #64 ; 0x40 pos = 4 - ((x & 0x1) * 4); cc24: bf0c ite eq cc26: 2404 moveq r4, #4 cc28: 2400 movne r4, #0 cc2a: e792 b.n cb52 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ cc2c: 68ef ldr r7, [r5, #12] cc2e: f3c7 218a ubfx r1, r7, #10, #11 ofs += w * y + x; /*First pixel*/ cc32: fb18 4801 smlabb r8, r8, r1, r4 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ cc36: 460f mov r7, r1 pos = 0; cc38: 2400 movs r4, #0 ofs += 1024; /*Skip the palette*/ cc3a: f508 6180 add.w r1, r8, #1024 ; 0x400 break; cc3e: e788 b.n cb52 switch(dsc->header.cf) { cc40: 2100 movs r1, #0 cc42: 460c mov r4, r1 cc44: 460f mov r7, r1 cc46: e784 b.n cb52 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ cc48: 4b09 ldr r3, [pc, #36] ; (cc70 ) cc4a: f8db 0000 ldr.w r0, [fp] lv_fs_read(user_data->f, fs_buf, w, NULL); cc4e: 4d09 ldr r5, [pc, #36] ; (cc74 ) lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ cc50: 3104 adds r1, #4 cc52: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); cc54: 4641 mov r1, r8 cc56: f8db 0000 ldr.w r0, [fp] cc5a: 2300 movs r3, #0 cc5c: 463a mov r2, r7 cc5e: 47a8 blx r5 data_tmp = fs_buf; cc60: 4641 mov r1, r8 cc62: e784 b.n cb6e LV_LOG_WARN("Built-in image decoder read not supports the color format"); cc64: 4b04 ldr r3, [pc, #16] ; (cc78 ) cc66: 9300 str r3, [sp, #0] cc68: f44f 72fe mov.w r2, #508 ; 0x1fc cc6c: 4b03 ldr r3, [pc, #12] ; (cc7c ) cc6e: e653 b.n c918 cc70: 0000e497 .word 0x0000e497 cc74: 0000e461 .word 0x0000e461 cc78: 00020042 .word 0x00020042 cc7c: 00020175 .word 0x00020175 0000cc80 : { cc80: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} cc84: 4606 mov r6, r0 if(dsc->src_type == LV_IMG_SRC_FILE) { cc86: 7a88 ldrb r0, [r1, #10] cc88: 2801 cmp r0, #1 { cc8a: 460c mov r4, r1 if(dsc->src_type == LV_IMG_SRC_FILE) { cc8c: d178 bne.n cd80 if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; cc8e: 6848 ldr r0, [r1, #4] cc90: 4b8b ldr r3, [pc, #556] ; (cec0 ) cc92: 4798 blx r3 cc94: 498b ldr r1, [pc, #556] ; (cec4 ) cc96: 4b8c ldr r3, [pc, #560] ; (cec8 ) cc98: 4798 blx r3 cc9a: 2800 cmp r0, #0 cc9c: f040 80a9 bne.w cdf2 lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD); cca0: 6861 ldr r1, [r4, #4] cca2: 4b8a ldr r3, [pc, #552] ; (cecc ) cca4: 2202 movs r2, #2 cca6: a802 add r0, sp, #8 cca8: 4798 blx r3 if(res != LV_FS_RES_OK) { ccaa: b138 cbz r0, ccbc LV_LOG_WARN("Built-in image decoder can't open the file"); ccac: 4b88 ldr r3, [pc, #544] ; (ced0 ) ccae: 9300 str r3, [sp, #0] ccb0: 4b88 ldr r3, [pc, #544] ; (ced4 ) ccb2: f44f 72a6 mov.w r2, #332 ; 0x14c LV_LOG_WARN("Image decoder open: unknown color format") ccb6: 4988 ldr r1, [pc, #544] ; (ced8 ) ccb8: 2002 movs r0, #2 ccba: e022 b.n cd02 if(dsc->user_data == NULL) { ccbc: 69e3 ldr r3, [r4, #28] ccbe: f8df 923c ldr.w r9, [pc, #572] ; cefc ccc2: f8df 823c ldr.w r8, [pc, #572] ; cf00 ccc6: bb13 cbnz r3, cd0e dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); ccc8: 200c movs r0, #12 ccca: 47c8 blx r9 cccc: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); ccce: 47c0 blx r8 ccd0: 4605 mov r5, r0 ccd2: b968 cbnz r0, ccf0 ccd4: 4b7f ldr r3, [pc, #508] ; (ced4 ) ccd6: 4980 ldr r1, [pc, #512] ; (ced8 ) ccd8: 9300 str r3, [sp, #0] ccda: f240 1253 movw r2, #339 ; 0x153 ccde: 2003 movs r0, #3 cce0: 4e7e ldr r6, [pc, #504] ; (cedc ) cce2: 47b0 blx r6 cce4: 69e2 ldr r2, [r4, #28] cce6: 487e ldr r0, [pc, #504] ; (cee0 ) cce8: 497e ldr r1, [pc, #504] ; (cee4 ) ccea: 462b mov r3, r5 ccec: 4788 blx r1 ccee: e7fe b.n ccee if(dsc->user_data == NULL) { ccf0: 69e0 ldr r0, [r4, #28] ccf2: b948 cbnz r0, cd08 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); ccf4: 4b7c ldr r3, [pc, #496] ; (cee8 ) ccf6: 9300 str r3, [sp, #0] ccf8: 4977 ldr r1, [pc, #476] ; (ced8 ) ccfa: 4b76 ldr r3, [pc, #472] ; (ced4 ) ccfc: f240 1255 movw r2, #341 ; 0x155 cd00: 2003 movs r0, #3 LV_LOG_WARN("Image decoder open: unknown color format") cd02: 4c76 ldr r4, [pc, #472] ; (cedc ) cd04: 47a0 blx r4 cd06: e074 b.n cdf2 _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); cd08: 4b78 ldr r3, [pc, #480] ; (ceec ) cd0a: 210c movs r1, #12 cd0c: 4798 blx r3 user_data->f = lv_mem_alloc(sizeof(f)); cd0e: 2008 movs r0, #8 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; cd10: 69e7 ldr r7, [r4, #28] user_data->f = lv_mem_alloc(sizeof(f)); cd12: 47c8 blx r9 cd14: 6038 str r0, [r7, #0] LV_ASSERT_MEM(user_data->f); cd16: 47c0 blx r8 cd18: 4605 mov r5, r0 cd1a: b968 cbnz r0, cd38 cd1c: 4b6d ldr r3, [pc, #436] ; (ced4 ) cd1e: 496e ldr r1, [pc, #440] ; (ced8 ) cd20: 9300 str r3, [sp, #0] cd22: f240 125d movw r2, #349 ; 0x15d cd26: 2003 movs r0, #3 cd28: 4c6c ldr r4, [pc, #432] ; (cedc ) cd2a: 47a0 blx r4 cd2c: 683a ldr r2, [r7, #0] cd2e: 486c ldr r0, [pc, #432] ; (cee0 ) cd30: 496c ldr r1, [pc, #432] ; (cee4 ) cd32: 462b mov r3, r5 cd34: 4788 blx r1 cd36: e7fe b.n cd36 if(user_data->f == NULL) { cd38: 683b ldr r3, [r7, #0] cd3a: b94b cbnz r3, cd50 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); cd3c: 4b6a ldr r3, [pc, #424] ; (cee8 ) cd3e: 9300 str r3, [sp, #0] cd40: 4b64 ldr r3, [pc, #400] ; (ced4 ) cd42: f240 125f movw r2, #351 ; 0x15f LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); cd46: 4964 ldr r1, [pc, #400] ; (ced8 ) cd48: 4d64 ldr r5, [pc, #400] ; (cedc ) cd4a: 2003 movs r0, #3 cd4c: 47a8 blx r5 cd4e: e04c b.n cdea cd50: aa02 add r2, sp, #8 cd52: f103 0108 add.w r1, r3, #8 *d8 = *s8; cd56: f812 0b01 ldrb.w r0, [r2], #1 cd5a: f803 0b01 strb.w r0, [r3], #1 while(len) { cd5e: 428b cmp r3, r1 cd60: d1f9 bne.n cd56 lv_img_cf_t cf = dsc->header.cf; cd62: 7b23 ldrb r3, [r4, #12] cd64: f003 001f and.w r0, r3, #31 if(cf == LV_IMG_CF_TRUE_COLOR || cf == LV_IMG_CF_TRUE_COLOR_ALPHA || cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { cd68: 1f02 subs r2, r0, #4 cd6a: 2a02 cmp r2, #2 cd6c: d811 bhi.n cd92 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cd6e: 7aa3 ldrb r3, [r4, #10] cd70: 2b00 cmp r3, #0 cd72: f040 8087 bne.w ce84 dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data; cd76: 6863 ldr r3, [r4, #4] cd78: 689b ldr r3, [r3, #8] dsc->img_data = NULL; cd7a: 6123 str r3, [r4, #16] return LV_RES_OK; cd7c: 2001 movs r0, #1 cd7e: e005 b.n cd8c else if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cd80: 2800 cmp r0, #0 cd82: d1ee bne.n cd62 if(((lv_img_dsc_t *)dsc->src)->data == NULL) { cd84: 684a ldr r2, [r1, #4] cd86: 6892 ldr r2, [r2, #8] cd88: 2a00 cmp r2, #0 cd8a: d1ea bne.n cd62 } cd8c: b004 add sp, #16 cd8e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} else if(cf == LV_IMG_CF_INDEXED_1BIT || cf == LV_IMG_CF_INDEXED_2BIT || cf == LV_IMG_CF_INDEXED_4BIT || cd92: 1fc2 subs r2, r0, #7 cd94: 2a03 cmp r2, #3 cd96: f200 80d4 bhi.w cf42 uint8_t px_size = lv_img_cf_get_px_size(cf); cd9a: 4b55 ldr r3, [pc, #340] ; (cef0 ) cd9c: f8df 915c ldr.w r9, [pc, #348] ; cefc cda0: f8df 815c ldr.w r8, [pc, #348] ; cf00 cda4: 4798 blx r3 if(dsc->user_data == NULL) { cda6: 69e3 ldr r3, [r4, #28] uint8_t px_size = lv_img_cf_get_px_size(cf); cda8: 4607 mov r7, r0 if(dsc->user_data == NULL) { cdaa: bb43 cbnz r3, cdfe dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); cdac: 200c movs r0, #12 cdae: 47c8 blx r9 cdb0: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); cdb2: 47c0 blx r8 cdb4: 4605 mov r5, r0 cdb6: b968 cbnz r0, cdd4 cdb8: 4b46 ldr r3, [pc, #280] ; (ced4 ) cdba: 4947 ldr r1, [pc, #284] ; (ced8 ) cdbc: 9300 str r3, [sp, #0] cdbe: f44f 72c6 mov.w r2, #396 ; 0x18c cdc2: 2003 movs r0, #3 cdc4: 4e45 ldr r6, [pc, #276] ; (cedc ) cdc6: 47b0 blx r6 cdc8: 69e2 ldr r2, [r4, #28] cdca: 4845 ldr r0, [pc, #276] ; (cee0 ) cdcc: 4945 ldr r1, [pc, #276] ; (cee4 ) cdce: 462b mov r3, r5 cdd0: 4788 blx r1 cdd2: e7fe b.n cdd2 if(dsc->user_data == NULL) { cdd4: 69e5 ldr r5, [r4, #28] cdd6: b975 cbnz r5, cdf6 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); cdd8: 4b43 ldr r3, [pc, #268] ; (cee8 ) cdda: 9300 str r3, [sp, #0] cddc: 493e ldr r1, [pc, #248] ; (ced8 ) cdde: 4b3d ldr r3, [pc, #244] ; (ced4 ) cde0: 4f3e ldr r7, [pc, #248] ; (cedc ) cde2: f44f 72c7 mov.w r2, #398 ; 0x18e cde6: 2003 movs r0, #3 cde8: 47b8 blx r7 lv_img_decoder_built_in_close(decoder, dsc); cdea: 4b42 ldr r3, [pc, #264] ; (cef4 ) cdec: 4621 mov r1, r4 cdee: 4630 mov r0, r6 cdf0: 4798 blx r3 return LV_RES_INV; cdf2: 2000 movs r0, #0 cdf4: e7ca b.n cd8c _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); cdf6: 4b3d ldr r3, [pc, #244] ; (ceec ) cdf8: 210c movs r1, #12 cdfa: 4628 mov r0, r5 cdfc: 4798 blx r3 user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); cdfe: 2002 movs r0, #2 ce00: 40b8 lsls r0, r7 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; ce02: 69e5 ldr r5, [r4, #28] user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); ce04: 47c8 blx r9 ce06: 6068 str r0, [r5, #4] LV_ASSERT_MEM(user_data->palette); ce08: 47c0 blx r8 ce0a: 4682 mov sl, r0 ce0c: b968 cbnz r0, ce2a ce0e: 4b31 ldr r3, [pc, #196] ; (ced4 ) ce10: 4931 ldr r1, [pc, #196] ; (ced8 ) ce12: 9300 str r3, [sp, #0] ce14: f240 1297 movw r2, #407 ; 0x197 ce18: 2003 movs r0, #3 ce1a: 4c30 ldr r4, [pc, #192] ; (cedc ) ce1c: 47a0 blx r4 ce1e: 686a ldr r2, [r5, #4] ce20: 482f ldr r0, [pc, #188] ; (cee0 ) ce22: 4930 ldr r1, [pc, #192] ; (cee4 ) ce24: 4653 mov r3, sl ce26: 4788 blx r1 ce28: e7fe b.n ce28 uint32_t palette_size = 1 << px_size; ce2a: 2001 movs r0, #1 ce2c: fa00 f707 lsl.w r7, r0, r7 user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t)); ce30: 4638 mov r0, r7 ce32: 47c8 blx r9 ce34: 60a8 str r0, [r5, #8] LV_ASSERT_MEM(user_data->opa); ce36: 47c0 blx r8 ce38: 4680 mov r8, r0 ce3a: b968 cbnz r0, ce58 ce3c: 4b25 ldr r3, [pc, #148] ; (ced4 ) ce3e: 4926 ldr r1, [pc, #152] ; (ced8 ) ce40: 9300 str r3, [sp, #0] ce42: f240 1299 movw r2, #409 ; 0x199 ce46: 2003 movs r0, #3 ce48: 4c24 ldr r4, [pc, #144] ; (cedc ) ce4a: 47a0 blx r4 ce4c: 68aa ldr r2, [r5, #8] ce4e: 4824 ldr r0, [pc, #144] ; (cee0 ) ce50: 4924 ldr r1, [pc, #144] ; (cee4 ) ce52: 4643 mov r3, r8 ce54: 4788 blx r1 ce56: e7fe b.n ce56 if(user_data->palette == NULL || user_data->opa == NULL) { ce58: 686b ldr r3, [r5, #4] ce5a: b10b cbz r3, ce60 ce5c: 68ab ldr r3, [r5, #8] ce5e: b92b cbnz r3, ce6c LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); ce60: 4b21 ldr r3, [pc, #132] ; (cee8 ) ce62: 9300 str r3, [sp, #0] ce64: f240 129b movw r2, #411 ; 0x19b ce68: 4b1a ldr r3, [pc, #104] ; (ced4 ) ce6a: e76c b.n cd46 if(dsc->src_type == LV_IMG_SRC_FILE) { ce6c: 7aa3 ldrb r3, [r4, #10] ce6e: 2b01 cmp r3, #1 ce70: d14a bne.n cf08 lv_fs_seek(user_data->f, 4); /*Skip the header*/ ce72: 6828 ldr r0, [r5, #0] ce74: 4b20 ldr r3, [pc, #128] ; (cef8 ) lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); ce76: f8df 808c ldr.w r8, [pc, #140] ; cf04 lv_fs_seek(user_data->f, 4); /*Skip the header*/ ce7a: 2104 movs r1, #4 ce7c: 4798 blx r3 for(i = 0; i < palette_size; i++) { ce7e: 2600 movs r6, #0 ce80: 42be cmp r6, r7 ce82: d101 bne.n ce88 dsc->img_data = NULL; ce84: 2300 movs r3, #0 ce86: e778 b.n cd7a lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); ce88: 2300 movs r3, #0 ce8a: 2204 movs r2, #4 ce8c: a902 add r1, sp, #8 ce8e: 6828 ldr r0, [r5, #0] ce90: 47c0 blx r8 #define LV_COLOR_MAKE(r8, g8, b8) ((lv_color_t){{b8, g8, r8, 0xff}}) /*Fix 0xff alpha*/ #endif static inline lv_color_t lv_color_make(uint8_t r, uint8_t g, uint8_t b) { return LV_COLOR_MAKE(r, g, b); ce92: f89d 3009 ldrb.w r3, [sp, #9] user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue); ce96: 686a ldr r2, [r5, #4] ce98: 0899 lsrs r1, r3, #2 ce9a: f89d 3008 ldrb.w r3, [sp, #8] ce9e: 08db lsrs r3, r3, #3 cea0: ea43 1341 orr.w r3, r3, r1, lsl #5 cea4: f89d 100a ldrb.w r1, [sp, #10] cea8: 08c9 lsrs r1, r1, #3 ceaa: ea43 23c1 orr.w r3, r3, r1, lsl #11 ceae: f822 3016 strh.w r3, [r2, r6, lsl #1] user_data->opa[i] = cur_color.ch.alpha; ceb2: 68ab ldr r3, [r5, #8] ceb4: f89d 200b ldrb.w r2, [sp, #11] ceb8: 559a strb r2, [r3, r6] for(i = 0; i < palette_size; i++) { ceba: 3601 adds r6, #1 cebc: e7e0 b.n ce80 cebe: bf00 nop cec0: 0000e5b5 .word 0x0000e5b5 cec4: 0002007c .word 0x0002007c cec8: 00016359 .word 0x00016359 cecc: 0000e4e9 .word 0x0000e4e9 ced0: 00020080 .word 0x00020080 ced4: 00020197 .word 0x00020197 ced8: 0001ff7b .word 0x0001ff7b cedc: 0000e931 .word 0x0000e931 cee0: 0001ee02 .word 0x0001ee02 cee4: 0000179d .word 0x0000179d cee8: 000200ab .word 0x000200ab ceec: 0000f061 .word 0x0000f061 cef0: 00007579 .word 0x00007579 cef4: 0000c885 .word 0x0000c885 cef8: 0000e497 .word 0x0000e497 cefc: 0000ea75 .word 0x0000ea75 cf00: 00001795 .word 0x00001795 cf04: 0000e461 .word 0x0000e461 lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data; cf08: 6863 ldr r3, [r4, #4] cf0a: 6899 ldr r1, [r3, #8] for(i = 0; i < palette_size; i++) { cf0c: 2000 movs r0, #0 cf0e: 42b8 cmp r0, r7 cf10: f101 0104 add.w r1, r1, #4 cf14: d0b6 beq.n ce84 cf16: f811 3c03 ldrb.w r3, [r1, #-3] user_data->palette[i] = lv_color_make(palette_p[i].ch.red, palette_p[i].ch.green, palette_p[i].ch.blue); cf1a: 686a ldr r2, [r5, #4] cf1c: 089e lsrs r6, r3, #2 cf1e: f811 3c04 ldrb.w r3, [r1, #-4] cf22: 08db lsrs r3, r3, #3 cf24: ea43 1346 orr.w r3, r3, r6, lsl #5 cf28: f811 6c02 ldrb.w r6, [r1, #-2] cf2c: 08f6 lsrs r6, r6, #3 cf2e: ea43 23c6 orr.w r3, r3, r6, lsl #11 cf32: f822 3010 strh.w r3, [r2, r0, lsl #1] user_data->opa[i] = palette_p[i].ch.alpha; cf36: 68ab ldr r3, [r5, #8] cf38: f811 2c01 ldrb.w r2, [r1, #-1] cf3c: 541a strb r2, [r3, r0] for(i = 0; i < palette_size; i++) { cf3e: 3001 adds r0, #1 cf40: e7e5 b.n cf0e else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT || cf42: f1a0 030b sub.w r3, r0, #11 cf46: 2b03 cmp r3, #3 cf48: d99c bls.n ce84 lv_img_decoder_built_in_close(decoder, dsc); cf4a: 4b05 ldr r3, [pc, #20] ; (cf60 ) cf4c: 4621 mov r1, r4 cf4e: 4630 mov r0, r6 cf50: 4798 blx r3 LV_LOG_WARN("Image decoder open: unknown color format") cf52: 4b04 ldr r3, [pc, #16] ; (cf64 ) cf54: 9300 str r3, [sp, #0] cf56: f240 12d3 movw r2, #467 ; 0x1d3 cf5a: 4b03 ldr r3, [pc, #12] ; (cf68 ) cf5c: e6ab b.n ccb6 cf5e: bf00 nop cf60: 0000c885 .word 0x0000c885 cf64: 000200d4 .word 0x000200d4 cf68: 00020197 .word 0x00020197 0000cf6c : { cf6c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} header->always_zero = 0; cf70: 780b ldrb r3, [r1, #0] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf72: f8df 8044 ldr.w r8, [pc, #68] ; cfb8 cf76: f8df 9044 ldr.w r9, [pc, #68] ; cfbc header->always_zero = 0; cf7a: f36f 1347 bfc r3, #5, #3 cf7e: 700b strb r3, [r1, #0] { cf80: 4607 mov r7, r0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf82: 4b0c ldr r3, [pc, #48] ; (cfb4 ) cf84: 480c ldr r0, [pc, #48] ; (cfb8 ) { cf86: 460e mov r6, r1 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf88: 4798 blx r3 lv_res_t res = LV_RES_INV; cf8a: 2400 movs r4, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf8c: 4605 mov r5, r0 cf8e: b915 cbnz r5, cf96 } cf90: 4620 mov r0, r4 cf92: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(d->info_cb) { cf96: 682c ldr r4, [r5, #0] cf98: b134 cbz r4, cfa8 res = d->info_cb(d, src, header); cf9a: 4632 mov r2, r6 cf9c: 4639 mov r1, r7 cf9e: 4628 mov r0, r5 cfa0: 47a0 blx r4 if(res == LV_RES_OK) break; cfa2: 2801 cmp r0, #1 res = d->info_cb(d, src, header); cfa4: 4604 mov r4, r0 if(res == LV_RES_OK) break; cfa6: d0f3 beq.n cf90 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cfa8: 4629 mov r1, r5 cfaa: 4640 mov r0, r8 cfac: 47c8 blx r9 cfae: 4605 mov r5, r0 cfb0: e7ed b.n cf8e cfb2: bf00 nop cfb4: 0000e6f1 .word 0x0000e6f1 cfb8: 20008654 .word 0x20008654 cfbc: 0000e6fd .word 0x0000e6fd 0000cfc0 : { cfc0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} dsc->src_type = lv_img_src_get_type(src); cfc4: 4b22 ldr r3, [pc, #136] ; (d050 ) dsc->color = color; cfc6: 8102 strh r2, [r0, #8] { cfc8: 4604 mov r4, r0 dsc->src_type = lv_img_src_get_type(src); cfca: 4608 mov r0, r1 { cfcc: 460f mov r7, r1 dsc->src_type = lv_img_src_get_type(src); cfce: 4798 blx r3 dsc->user_data = NULL; cfd0: 2300 movs r3, #0 if(dsc->src_type == LV_IMG_SRC_FILE) { cfd2: 2801 cmp r0, #1 dsc->src_type = lv_img_src_get_type(src); cfd4: 72a0 strb r0, [r4, #10] dsc->user_data = NULL; cfd6: 61e3 str r3, [r4, #28] if(dsc->src_type == LV_IMG_SRC_FILE) { cfd8: d11d bne.n d016 size_t fnlen = strlen(src); cfda: 4b1e ldr r3, [pc, #120] ; (d054 ) cfdc: 4638 mov r0, r7 cfde: 4798 blx r3 dsc->src = lv_mem_alloc(fnlen + 1); cfe0: 4b1d ldr r3, [pc, #116] ; (d058 ) cfe2: 3001 adds r0, #1 cfe4: 4798 blx r3 strcpy((char *)dsc->src, src); cfe6: 4b1d ldr r3, [pc, #116] ; (d05c ) dsc->src = lv_mem_alloc(fnlen + 1); cfe8: 6060 str r0, [r4, #4] strcpy((char *)dsc->src, src); cfea: 4639 mov r1, r7 cfec: 4798 blx r3 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cfee: 481c ldr r0, [pc, #112] ; (d060 ) cff0: 4b1c ldr r3, [pc, #112] ; (d064 ) cff2: f8df 906c ldr.w r9, [pc, #108] ; d060 cff6: f8df a074 ldr.w sl, [pc, #116] ; d06c cffa: 4798 blx r3 lv_res_t res = LV_RES_INV; cffc: 2600 movs r6, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cffe: 4605 mov r5, r0 res = d->info_cb(d, src, &dsc->header); d000: f104 080c add.w r8, r4, #12 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { d004: b94d cbnz r5, d01a if(res == LV_RES_INV) { d006: b91e cbnz r6, d010 _lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t)); d008: 4b17 ldr r3, [pc, #92] ; (d068 ) d00a: 2120 movs r1, #32 d00c: 4620 mov r0, r4 d00e: 4798 blx r3 } d010: 4630 mov r0, r6 d012: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} dsc->src = src; d016: 6067 str r7, [r4, #4] d018: e7e9 b.n cfee if(d->info_cb == NULL || d->open_cb == NULL) continue; d01a: 682b ldr r3, [r5, #0] d01c: b19b cbz r3, d046 d01e: 686a ldr r2, [r5, #4] d020: b18a cbz r2, d046 res = d->info_cb(d, src, &dsc->header); d022: 4642 mov r2, r8 d024: 4639 mov r1, r7 d026: 4628 mov r0, r5 d028: 4798 blx r3 if(res != LV_RES_OK) continue; d02a: 2801 cmp r0, #1 res = d->info_cb(d, src, &dsc->header); d02c: 4606 mov r6, r0 if(res != LV_RES_OK) continue; d02e: d10a bne.n d046 dsc->error_msg = NULL; d030: 2300 movs r3, #0 d032: 61a3 str r3, [r4, #24] dsc->img_data = NULL; d034: 6123 str r3, [r4, #16] dsc->decoder = d; d036: 6025 str r5, [r4, #0] res = d->open_cb(d, dsc); d038: 686b ldr r3, [r5, #4] d03a: 4621 mov r1, r4 d03c: 4628 mov r0, r5 d03e: 4798 blx r3 if(res == LV_RES_OK) break; d040: 2801 cmp r0, #1 res = d->open_cb(d, dsc); d042: 4606 mov r6, r0 if(res == LV_RES_OK) break; d044: d0e4 beq.n d010 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { d046: 4629 mov r1, r5 d048: 4648 mov r0, r9 d04a: 47d0 blx sl d04c: 4605 mov r5, r0 d04e: e7d9 b.n d004 d050: 00007811 .word 0x00007811 d054: 0001637d .word 0x0001637d d058: 0000ea75 .word 0x0000ea75 d05c: 0001636d .word 0x0001636d d060: 20008654 .word 0x20008654 d064: 0000e6f1 .word 0x0000e6f1 d068: 0000f061 .word 0x0000f061 d06c: 0000e6fd .word 0x0000e6fd 0000d070 : { d070: b573 push {r0, r1, r4, r5, r6, lr} if(dsc->decoder->read_line_cb) res = dsc->decoder->read_line_cb(dsc->decoder, dsc, x, y, len, buf); d072: 6805 ldr r5, [r0, #0] d074: 68ac ldr r4, [r5, #8] d076: b14c cbz r4, d08c d078: 9e06 ldr r6, [sp, #24] d07a: e9cd 3600 strd r3, r6, [sp] d07e: 4613 mov r3, r2 d080: 460a mov r2, r1 d082: 4601 mov r1, r0 d084: 4628 mov r0, r5 d086: 47a0 blx r4 } d088: b002 add sp, #8 d08a: bd70 pop {r4, r5, r6, pc} lv_res_t res = LV_RES_INV; d08c: 4620 mov r0, r4 d08e: e7fb b.n d088 0000d090 : { d090: b510 push {r4, lr} d092: 4604 mov r4, r0 if(dsc->decoder) { d094: 6800 ldr r0, [r0, #0] d096: b158 cbz r0, d0b0 if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); d098: 68c3 ldr r3, [r0, #12] d09a: b10b cbz r3, d0a0 d09c: 4621 mov r1, r4 d09e: 4798 blx r3 if(dsc->src_type == LV_IMG_SRC_FILE) { d0a0: 7aa3 ldrb r3, [r4, #10] d0a2: 2b01 cmp r3, #1 d0a4: d104 bne.n d0b0 lv_mem_free(dsc->src); d0a6: 4b03 ldr r3, [pc, #12] ; (d0b4 ) d0a8: 6860 ldr r0, [r4, #4] d0aa: 4798 blx r3 dsc->src = NULL; d0ac: 2300 movs r3, #0 d0ae: 6063 str r3, [r4, #4] } d0b0: bd10 pop {r4, pc} d0b2: bf00 nop d0b4: 0000eb2d .word 0x0000eb2d 0000d0b8 : { d0b8: b573 push {r0, r1, r4, r5, r6, lr} decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); d0ba: 4b0e ldr r3, [pc, #56] ; (d0f4 ) d0bc: 480e ldr r0, [pc, #56] ; (d0f8 ) d0be: 4798 blx r3 LV_ASSERT_MEM(decoder); d0c0: 4b0e ldr r3, [pc, #56] ; (d0fc ) decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); d0c2: 4604 mov r4, r0 LV_ASSERT_MEM(decoder); d0c4: 4798 blx r3 d0c6: 4605 mov r5, r0 d0c8: b960 cbnz r0, d0e4 d0ca: 4b0d ldr r3, [pc, #52] ; (d100 ) d0cc: 490d ldr r1, [pc, #52] ; (d104 ) d0ce: 9300 str r3, [sp, #0] d0d0: 22c9 movs r2, #201 ; 0xc9 d0d2: 2003 movs r0, #3 d0d4: 4e0c ldr r6, [pc, #48] ; (d108 ) d0d6: 47b0 blx r6 d0d8: 480c ldr r0, [pc, #48] ; (d10c ) d0da: 490d ldr r1, [pc, #52] ; (d110 ) d0dc: 4622 mov r2, r4 d0de: 462b mov r3, r5 d0e0: 4788 blx r1 d0e2: e7fe b.n d0e2 if(decoder == NULL) return NULL; d0e4: b11c cbz r4, d0ee _lv_memset_00(decoder, sizeof(lv_img_decoder_t)); d0e6: 4b0b ldr r3, [pc, #44] ; (d114 ) d0e8: 2110 movs r1, #16 d0ea: 4620 mov r0, r4 d0ec: 4798 blx r3 } d0ee: 4620 mov r0, r4 d0f0: b002 add sp, #8 d0f2: bd70 pop {r4, r5, r6, pc} d0f4: 0000e661 .word 0x0000e661 d0f8: 20008654 .word 0x20008654 d0fc: 00001795 .word 0x00001795 d100: 000201b4 .word 0x000201b4 d104: 0001ff7b .word 0x0001ff7b d108: 0000e931 .word 0x0000e931 d10c: 0001ee02 .word 0x0001ee02 d110: 0000179d .word 0x0000179d d114: 0000f061 .word 0x0000f061 0000d118 <_lv_img_decoder_init>: { d118: b537 push {r0, r1, r2, r4, r5, lr} _lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t)); d11a: 4b15 ldr r3, [pc, #84] ; (d170 <_lv_img_decoder_init+0x58>) d11c: 4815 ldr r0, [pc, #84] ; (d174 <_lv_img_decoder_init+0x5c>) d11e: 2110 movs r1, #16 d120: 4798 blx r3 decoder = lv_img_decoder_create(); d122: 4b15 ldr r3, [pc, #84] ; (d178 <_lv_img_decoder_init+0x60>) d124: 4798 blx r3 if(decoder == NULL) { d126: 4604 mov r4, r0 d128: b9b8 cbnz r0, d15a <_lv_img_decoder_init+0x42> LV_LOG_WARN("lv_img_decoder_init: out of memory"); d12a: 4a14 ldr r2, [pc, #80] ; (d17c <_lv_img_decoder_init+0x64>) d12c: 9200 str r2, [sp, #0] d12e: 2002 movs r0, #2 d130: 2247 movs r2, #71 ; 0x47 d132: 4b13 ldr r3, [pc, #76] ; (d180 <_lv_img_decoder_init+0x68>) d134: 4913 ldr r1, [pc, #76] ; (d184 <_lv_img_decoder_init+0x6c>) d136: 4d14 ldr r5, [pc, #80] ; (d188 <_lv_img_decoder_init+0x70>) d138: 47a8 blx r5 LV_ASSERT_MEM(decoder); d13a: 4a14 ldr r2, [pc, #80] ; (d18c <_lv_img_decoder_init+0x74>) d13c: 4620 mov r0, r4 d13e: 4790 blx r2 d140: b998 cbnz r0, d16a <_lv_img_decoder_init+0x52> d142: 4b0f ldr r3, [pc, #60] ; (d180 <_lv_img_decoder_init+0x68>) d144: 490f ldr r1, [pc, #60] ; (d184 <_lv_img_decoder_init+0x6c>) d146: 9300 str r3, [sp, #0] d148: 2248 movs r2, #72 ; 0x48 d14a: 2003 movs r0, #3 d14c: 47a8 blx r5 d14e: 4810 ldr r0, [pc, #64] ; (d190 <_lv_img_decoder_init+0x78>) d150: 4910 ldr r1, [pc, #64] ; (d194 <_lv_img_decoder_init+0x7c>) d152: 2200 movs r2, #0 d154: 2300 movs r3, #0 d156: 4788 blx r1 d158: e7fe b.n d158 <_lv_img_decoder_init+0x40> decoder->info_cb = info_cb; d15a: 4b0f ldr r3, [pc, #60] ; (d198 <_lv_img_decoder_init+0x80>) d15c: 6003 str r3, [r0, #0] decoder->open_cb = open_cb; d15e: 4b0f ldr r3, [pc, #60] ; (d19c <_lv_img_decoder_init+0x84>) d160: 6043 str r3, [r0, #4] decoder->read_line_cb = read_line_cb; d162: 4b0f ldr r3, [pc, #60] ; (d1a0 <_lv_img_decoder_init+0x88>) d164: 6083 str r3, [r0, #8] decoder->close_cb = close_cb; d166: 4b0f ldr r3, [pc, #60] ; (d1a4 <_lv_img_decoder_init+0x8c>) d168: 60c3 str r3, [r0, #12] } d16a: b003 add sp, #12 d16c: bd30 pop {r4, r5, pc} d16e: bf00 nop d170: 0000e64d .word 0x0000e64d d174: 20008654 .word 0x20008654 d178: 0000d0b9 .word 0x0000d0b9 d17c: 000200fd .word 0x000200fd d180: 000201ca .word 0x000201ca d184: 0001ff7b .word 0x0001ff7b d188: 0000e931 .word 0x0000e931 d18c: 00001795 .word 0x00001795 d190: 0001ee02 .word 0x0001ee02 d194: 0000179d .word 0x0000179d d198: 0000c7a5 .word 0x0000c7a5 d19c: 0000cc81 .word 0x0000cc81 d1a0: 0000c8b9 .word 0x0000c8b9 d1a4: 0000c885 .word 0x0000c885 0000d1a8 : * @param letter an UNICODE character code * @return pointer to the bitmap of the letter */ const uint8_t * lv_font_get_glyph_bitmap(const lv_font_t * font_p, uint32_t letter) { return font_p->get_glyph_bitmap(font_p, letter); d1a8: 6843 ldr r3, [r0, #4] d1aa: 4718 bx r3 0000d1ac : * @return true: descriptor is successfully loaded into `dsc_out`. * false: the letter was not found, no data is loaded to `dsc_out` */ bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t * dsc_out, uint32_t letter, uint32_t letter_next) { d1ac: b410 push {r4} return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); d1ae: 6804 ldr r4, [r0, #0] d1b0: 46a4 mov ip, r4 } d1b2: f85d 4b04 ldr.w r4, [sp], #4 return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); d1b6: 4760 bx ip 0000d1b8 : * @param letter an UNICODE letter * @param letter_next the next letter after `letter`. Used for kerning * @return the width of the glyph */ uint16_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter, uint32_t letter_next) { d1b8: b51f push {r0, r1, r2, r3, r4, lr} d1ba: 4613 mov r3, r2 lv_font_glyph_dsc_t g; bool ret; ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next); d1bc: 4c04 ldr r4, [pc, #16] ; (d1d0 ) d1be: 460a mov r2, r1 d1c0: a901 add r1, sp, #4 d1c2: 47a0 blx r4 if(ret) return g.adv_w; d1c4: b108 cbz r0, d1ca d1c6: f8bd 0004 ldrh.w r0, [sp, #4] else return 0; } d1ca: b004 add sp, #16 d1cc: bd10 pop {r4, pc} d1ce: bf00 nop d1d0: 0000d1ad .word 0x0000d1ad 0000d1d4 : { const uint8_t * ref8_p = ref; const uint8_t * element8_p = element; /*If the MSB is different it will matter. If not return the diff. of the LSB*/ if(ref8_p[0] != element8_p[0]) return (int32_t)ref8_p[0] - element8_p[0]; d1d4: 7803 ldrb r3, [r0, #0] d1d6: 780a ldrb r2, [r1, #0] d1d8: 4293 cmp r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; d1da: bf09 itett eq d1dc: 784b ldrbeq r3, [r1, #1] if(ref8_p[0] != element8_p[0]) return (int32_t)ref8_p[0] - element8_p[0]; d1de: 1a98 subne r0, r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; d1e0: 7840 ldrbeq r0, [r0, #1] d1e2: 1ac0 subeq r0, r0, r3 } d1e4: 4770 bx lr 0000d1e6 : { const uint16_t * ref16_p = ref; const uint16_t * element16_p = element; /*If the MSB is different it will matter. If not return the diff. of the LSB*/ if(ref16_p[0] != element16_p[0]) return (int32_t)ref16_p[0] - element16_p[0]; d1e6: 8803 ldrh r3, [r0, #0] d1e8: 880a ldrh r2, [r1, #0] d1ea: 4293 cmp r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; d1ec: bf09 itett eq d1ee: 884b ldrheq r3, [r1, #2] if(ref16_p[0] != element16_p[0]) return (int32_t)ref16_p[0] - element16_p[0]; d1f0: 1a98 subne r0, r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; d1f2: 8840 ldrheq r0, [r0, #2] d1f4: 1ac0 subeq r0, r0, r3 } d1f6: 4770 bx lr 0000d1f8 : * @return the read bits */ static inline uint8_t get_bits(const uint8_t * in, uint32_t bit_pos, uint8_t len) { uint8_t bit_mask; switch(len) { d1f8: 1e53 subs r3, r2, #1 { d1fa: b510 push {r4, lr} switch(len) { d1fc: 2b07 cmp r3, #7 d1fe: d820 bhi.n d242 d200: e8df f003 tbb [pc, r3] d204: 1b190424 .word 0x1b190424 d208: 1d1f1f1f .word 0x1d1f1f1f case 1: bit_mask = 0x1; break; case 2: bit_mask = 0x3; d20c: 2303 movs r3, #3 break; default: bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; } uint32_t byte_pos = bit_pos >> 3; d20e: 08cc lsrs r4, r1, #3 bit_pos = bit_pos & 0x7; d210: f001 0107 and.w r1, r1, #7 if(bit_pos + len >= 8) { d214: 440a add r2, r1 d216: 2a07 cmp r2, #7 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; d218: 5d01 ldrb r1, [r0, r4] return (in16 >> (16 - bit_pos - len)) & bit_mask; d21a: b25b sxtb r3, r3 if(bit_pos + len >= 8) { d21c: d918 bls.n d250 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; d21e: 4420 add r0, r4 return (in16 >> (16 - bit_pos - len)) & bit_mask; d220: f1c2 0210 rsb r2, r2, #16 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; d224: 7840 ldrb r0, [r0, #1] d226: eb00 2001 add.w r0, r0, r1, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; d22a: b280 uxth r0, r0 d22c: fa40 f202 asr.w r2, r0, r2 d230: 4013 ands r3, r2 } else { return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; d232: b2d8 uxtb r0, r3 } } d234: bd10 pop {r4, pc} bit_mask = 0x7; d236: 2307 movs r3, #7 break; d238: e7e9 b.n d20e bit_mask = 0xF; d23a: 230f movs r3, #15 break; d23c: e7e7 b.n d20e bit_mask = 0xFF; d23e: 23ff movs r3, #255 ; 0xff break; d240: e7e5 b.n d20e bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; d242: 2301 movs r3, #1 d244: 4093 lsls r3, r2 d246: 3b01 subs r3, #1 d248: b2db uxtb r3, r3 d24a: e7e0 b.n d20e switch(len) { d24c: 4613 mov r3, r2 d24e: e7de b.n d20e return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; d250: f1c2 0208 rsb r2, r2, #8 d254: fa41 f002 asr.w r0, r1, r2 d258: 4003 ands r3, r0 d25a: e7ea b.n d232 0000d25c : * @param len length of bits to write from `val`. (Counted from the LSB). * @note `len == 3` will be converted to `len = 4` and `val` will be upscaled too */ static inline void bits_write(uint8_t * out, uint32_t bit_pos, uint8_t val, uint8_t len) { if(len == 3) { d25c: 2b03 cmp r3, #3 { d25e: b530 push {r4, r5, lr} if(len == 3) { d260: d104 bne.n d26c len = 4; switch(val) { d262: 2a07 cmp r2, #7 d264: bf9c itt ls d266: 4b0b ldrls r3, [pc, #44] ; (d294 ) d268: 5c9a ldrbls r2, [r3, r2] len = 4; d26a: 2304 movs r3, #4 break; } } uint16_t byte_pos = bit_pos >> 3; bit_pos = bit_pos & 0x7; d26c: f001 0507 and.w r5, r1, #7 bit_pos = 8 - bit_pos - len; uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; out[byte_pos] &= ((~bit_mask) << bit_pos); d270: f3c1 04cf ubfx r4, r1, #3, #16 d274: f1c5 0508 rsb r5, r5, #8 d278: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff bit_pos = 8 - bit_pos - len; d27c: 1aed subs r5, r5, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); d27e: fa01 f303 lsl.w r3, r1, r3 d282: f063 03ff orn r3, r3, #255 ; 0xff d286: 5d01 ldrb r1, [r0, r4] d288: 40ab lsls r3, r5 d28a: 400b ands r3, r1 out[byte_pos] |= (val << bit_pos); d28c: 40aa lsls r2, r5 d28e: 431a orrs r2, r3 d290: 5502 strb r2, [r0, r4] } d292: bd30 pop {r4, r5, pc} d294: 00020217 .word 0x00020217 0000d298 : { d298: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} } else if(rle_state == RLE_STATE_COUNTER) { ret = rle_prev_v; rle_cnt--; if(rle_cnt == 0) { ret = get_bits(rle_in, rle_rdp, rle_bpp); d29c: 4c39 ldr r4, [pc, #228] ; (d384 ) d29e: f8df a0e8 ldr.w sl, [pc, #232] ; d388 d2a2: f8d4 9000 ldr.w r9, [r4] d2a6: 7927 ldrb r7, [r4, #4] d2a8: 1843 adds r3, r0, r1 d2aa: 4680 mov r8, r0 d2ac: 9300 str r3, [sp, #0] rle_state = RLE_STATE_COUNTER; d2ae: f04f 0b02 mov.w fp, #2 for(i = 0; i < w; i++) { d2b2: 9b00 ldr r3, [sp, #0] d2b4: 4543 cmp r3, r8 d2b6: d102 bne.n d2be } d2b8: b003 add sp, #12 d2ba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(rle_state == RLE_STATE_SINGLE) { d2be: 7963 ldrb r3, [r4, #5] d2c0: b9a3 cbnz r3, d2ec ret = get_bits(rle_in, rle_rdp, rle_bpp); d2c2: 68a6 ldr r6, [r4, #8] d2c4: 9301 str r3, [sp, #4] d2c6: 463a mov r2, r7 d2c8: 4631 mov r1, r6 d2ca: 4648 mov r0, r9 d2cc: 47d0 blx sl d2ce: 4605 mov r5, r0 if(rle_rdp != 0 && rle_prev_v == ret) { d2d0: b136 cbz r6, d2e0 d2d2: 7b22 ldrb r2, [r4, #12] d2d4: 9b01 ldr r3, [sp, #4] d2d6: 4282 cmp r2, r0 rle_cnt = 0; d2d8: bf02 ittt eq d2da: 7363 strbeq r3, [r4, #13] rle_state = RLE_STATE_REPEATE; d2dc: 2301 moveq r3, #1 d2de: 7163 strbeq r3, [r4, #5] rle_rdp += rle_bpp; d2e0: 443e add r6, r7 rle_prev_v = ret; d2e2: 7325 strb r5, [r4, #12] rle_rdp += rle_bpp; d2e4: 60a6 str r6, [r4, #8] out[i] = rle_next(); d2e6: f808 5b01 strb.w r5, [r8], #1 for(i = 0; i < w; i++) { d2ea: e7e2 b.n d2b2 else if(rle_state == RLE_STATE_REPEATE) { d2ec: 2b01 cmp r3, #1 d2ee: d131 bne.n d354 v = get_bits(rle_in, rle_rdp, 1); d2f0: 68a6 ldr r6, [r4, #8] d2f2: 461a mov r2, r3 d2f4: 4631 mov r1, r6 d2f6: 4648 mov r0, r9 d2f8: 47d0 blx sl rle_cnt++; d2fa: 7b63 ldrb r3, [r4, #13] d2fc: 3301 adds r3, #1 d2fe: b2db uxtb r3, r3 rle_rdp += 1; d300: 1c71 adds r1, r6, #1 if(v == 1) { d302: 2801 cmp r0, #1 rle_cnt++; d304: 7363 strb r3, [r4, #13] rle_rdp += 1; d306: 60a1 str r1, [r4, #8] if(v == 1) { d308: d118 bne.n d33c if(rle_cnt == 11) { d30a: 2b0b cmp r3, #11 ret = rle_prev_v; d30c: 7b25 ldrb r5, [r4, #12] if(rle_cnt == 11) { d30e: d1ea bne.n d2e6 rle_cnt = get_bits(rle_in, rle_rdp, 6); d310: 2206 movs r2, #6 d312: 4648 mov r0, r9 d314: 47d0 blx sl rle_rdp += 6; d316: 3607 adds r6, #7 rle_cnt = get_bits(rle_in, rle_rdp, 6); d318: 7360 strb r0, [r4, #13] rle_rdp += 6; d31a: 60a6 str r6, [r4, #8] if(rle_cnt != 0) { d31c: b110 cbz r0, d324 rle_state = RLE_STATE_COUNTER; d31e: f884 b005 strb.w fp, [r4, #5] d322: e7e0 b.n d2e6 d324: 9001 str r0, [sp, #4] ret = get_bits(rle_in, rle_rdp, rle_bpp); d326: 4631 mov r1, r6 d328: 463a mov r2, r7 d32a: 4648 mov r0, r9 d32c: 47d0 blx sl rle_rdp += rle_bpp; d32e: 443e add r6, r7 rle_state = RLE_STATE_SINGLE; d330: 9b01 ldr r3, [sp, #4] rle_prev_v = ret; d332: 7320 strb r0, [r4, #12] ret = get_bits(rle_in, rle_rdp, rle_bpp); d334: 4605 mov r5, r0 rle_rdp += rle_bpp; d336: 60a6 str r6, [r4, #8] rle_state = RLE_STATE_SINGLE; d338: 7163 strb r3, [r4, #5] d33a: e7d4 b.n d2e6 ret = get_bits(rle_in, rle_rdp, rle_bpp); d33c: 463a mov r2, r7 d33e: 4648 mov r0, r9 d340: 9101 str r1, [sp, #4] d342: 47d0 blx sl rle_rdp += rle_bpp; d344: 9901 ldr r1, [sp, #4] rle_prev_v = ret; d346: 7320 strb r0, [r4, #12] rle_rdp += rle_bpp; d348: 4439 add r1, r7 ret = get_bits(rle_in, rle_rdp, rle_bpp); d34a: 4605 mov r5, r0 rle_rdp += rle_bpp; d34c: 60a1 str r1, [r4, #8] rle_state = RLE_STATE_SINGLE; d34e: f04f 0300 mov.w r3, #0 d352: e7f1 b.n d338 else if(rle_state == RLE_STATE_COUNTER) { d354: 2b02 cmp r3, #2 d356: d112 bne.n d37e rle_cnt--; d358: 7b66 ldrb r6, [r4, #13] ret = rle_prev_v; d35a: 7b25 ldrb r5, [r4, #12] rle_cnt--; d35c: 3e01 subs r6, #1 d35e: b2f6 uxtb r6, r6 d360: 7366 strb r6, [r4, #13] if(rle_cnt == 0) { d362: 2e00 cmp r6, #0 d364: d1bf bne.n d2e6 ret = get_bits(rle_in, rle_rdp, rle_bpp); d366: 68a1 ldr r1, [r4, #8] d368: 9101 str r1, [sp, #4] d36a: 463a mov r2, r7 d36c: 4648 mov r0, r9 d36e: 47d0 blx sl rle_prev_v = ret; rle_rdp += rle_bpp; d370: 9901 ldr r1, [sp, #4] rle_prev_v = ret; d372: 7320 strb r0, [r4, #12] rle_rdp += rle_bpp; d374: 4439 add r1, r7 ret = get_bits(rle_in, rle_rdp, rle_bpp); d376: 4605 mov r5, r0 rle_rdp += rle_bpp; d378: 60a1 str r1, [r4, #8] rle_state = RLE_STATE_SINGLE; d37a: 7166 strb r6, [r4, #5] d37c: e7b3 b.n d2e6 uint8_t ret = 0; d37e: 2500 movs r5, #0 d380: e7b1 b.n d2e6 d382: bf00 nop d384: 200085d4 .word 0x200085d4 d388: 0000d1f9 .word 0x0000d1f9 0000d38c : * @retval > 0 Reference is less than element. * */ static int32_t unicode_list_compare(const void * ref, const void * element) { return ((int32_t)(*(uint16_t *)ref)) - ((int32_t)(*(uint16_t *)element)); d38c: 8800 ldrh r0, [r0, #0] d38e: 880b ldrh r3, [r1, #0] } d390: 1ac0 subs r0, r0, r3 d392: 4770 bx lr 0000d394 : { d394: b5f0 push {r4, r5, r6, r7, lr} if(letter == '\0') return 0; d396: 460c mov r4, r1 { d398: b085 sub sp, #20 if(letter == '\0') return 0; d39a: b121 cbz r1, d3a6 d39c: 6905 ldr r5, [r0, #16] if(letter == fdsc->last_letter) return fdsc->last_glyph_id; d39e: 69ab ldr r3, [r5, #24] d3a0: 4299 cmp r1, r3 d3a2: d147 bne.n d434 d3a4: 69ec ldr r4, [r5, #28] } d3a6: 4620 mov r0, r4 d3a8: b005 add sp, #20 d3aa: bdf0 pop {r4, r5, r6, r7, pc} uint32_t rcp = letter - fdsc->cmaps[i].range_start; d3ac: 68aa ldr r2, [r5, #8] d3ae: fb07 f603 mul.w r6, r7, r3 d3b2: 1991 adds r1, r2, r6 d3b4: 5992 ldr r2, [r2, r6] if(rcp > fdsc->cmaps[i].range_length) continue; d3b6: 8888 ldrh r0, [r1, #4] uint32_t rcp = letter - fdsc->cmaps[i].range_start; d3b8: 1aa2 subs r2, r4, r2 if(rcp > fdsc->cmaps[i].range_length) continue; d3ba: 4282 cmp r2, r0 uint32_t rcp = letter - fdsc->cmaps[i].range_start; d3bc: 9203 str r2, [sp, #12] if(rcp > fdsc->cmaps[i].range_length) continue; d3be: f103 0301 add.w r3, r3, #1 d3c2: d839 bhi.n d438 if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) { d3c4: 7c8b ldrb r3, [r1, #18] d3c6: b92b cbnz r3, d3d4 glyph_id = fdsc->cmaps[i].glyph_id_start + rcp; d3c8: 88c8 ldrh r0, [r1, #6] d3ca: 4410 add r0, r2 fdsc->last_glyph_id = glyph_id; d3cc: e9c5 4006 strd r4, r0, [r5, #24] return glyph_id; d3d0: 4604 mov r4, r0 d3d2: e7e8 b.n d3a6 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) { d3d4: 2b01 cmp r3, #1 d3d6: d104 bne.n d3e2 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp]; d3d8: 68cb ldr r3, [r1, #12] d3da: 5c98 ldrb r0, [r3, r2] d3dc: 88cb ldrh r3, [r1, #6] glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; d3de: 4418 add r0, r3 d3e0: e7f4 b.n d3cc else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) { d3e2: 2b02 cmp r3, #2 d3e4: d111 bne.n d40a uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, d3e6: 4819 ldr r0, [pc, #100] ; (d44c ) d3e8: 8a0a ldrh r2, [r1, #16] d3ea: 9000 str r0, [sp, #0] d3ec: 6889 ldr r1, [r1, #8] d3ee: 4f18 ldr r7, [pc, #96] ; (d450 ) d3f0: a803 add r0, sp, #12 d3f2: 47b8 blx r7 if(p) { d3f4: b908 cbnz r0, d3fa uint32_t glyph_id = 0; d3f6: 2000 movs r0, #0 d3f8: e7e8 b.n d3cc lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); d3fa: 68ab ldr r3, [r5, #8] d3fc: 441e add r6, r3 d3fe: 68b3 ldr r3, [r6, #8] d400: 1ac3 subs r3, r0, r3 glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; d402: 88f0 ldrh r0, [r6, #6] d404: eb00 0053 add.w r0, r0, r3, lsr #1 d408: e7e0 b.n d3cc else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) { d40a: 2b03 cmp r3, #3 d40c: d1f3 bne.n d3f6 uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, d40e: 4b0f ldr r3, [pc, #60] ; (d44c ) d410: 8a0a ldrh r2, [r1, #16] d412: 9300 str r3, [sp, #0] d414: 6889 ldr r1, [r1, #8] d416: 4f0e ldr r7, [pc, #56] ; (d450 ) d418: 2302 movs r3, #2 d41a: a803 add r0, sp, #12 d41c: 47b8 blx r7 if(p) { d41e: 2800 cmp r0, #0 d420: d0e9 beq.n d3f6 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); d422: 68ab ldr r3, [r5, #8] d424: 441e add r6, r3 d426: 68b3 ldr r3, [r6, #8] d428: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ d42a: 0840 lsrs r0, r0, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; d42c: 68f3 ldr r3, [r6, #12] d42e: 5c18 ldrb r0, [r3, r0] d430: 88f3 ldrh r3, [r6, #6] d432: e7d4 b.n d3de d434: 2300 movs r3, #0 d436: 2714 movs r7, #20 for(i = 0; i < fdsc->cmap_num; i++) { d438: 8a6a ldrh r2, [r5, #18] d43a: b299 uxth r1, r3 d43c: f3c2 0209 ubfx r2, r2, #0, #10 d440: 428a cmp r2, r1 d442: d8b3 bhi.n d3ac fdsc->last_letter = letter; d444: 61ac str r4, [r5, #24] fdsc->last_glyph_id = 0; d446: 2400 movs r4, #0 d448: 61ec str r4, [r5, #28] return 0; d44a: e7ac b.n d3a6 d44c: 0000d38d .word 0x0000d38d d450: 000102ed .word 0x000102ed 0000d454 : { d454: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} d458: ed2d 8b02 vpush {d8} if(unicode_letter == '\t') unicode_letter = ' '; d45c: 2909 cmp r1, #9 uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d45e: 4b68 ldr r3, [pc, #416] ; (d600 ) lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; d460: 6905 ldr r5, [r0, #16] { d462: b08b sub sp, #44 ; 0x2c uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d464: bf08 it eq d466: 2120 moveq r1, #32 d468: 4798 blx r3 if(!gid) return NULL; d46a: 4607 mov r7, r0 d46c: b928 cbnz r0, d47a d46e: 2000 movs r0, #0 } d470: b00b add sp, #44 ; 0x2c d472: ecbd 8b02 vpop {d8} d476: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { d47a: 7d2b ldrb r3, [r5, #20] const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d47c: f8d5 9004 ldr.w r9, [r5, #4] if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { d480: 079b lsls r3, r3, #30 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d482: eb09 08c0 add.w r8, r9, r0, lsl #3 if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { d486: d109 bne.n d49c if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index]; d488: f1b8 0f00 cmp.w r8, #0 d48c: d0ef beq.n d46e d48e: f859 3030 ldr.w r3, [r9, r0, lsl #3] d492: 6828 ldr r0, [r5, #0] d494: f3c3 0313 ubfx r3, r3, #0, #20 d498: 4418 add r0, r3 d49a: e7e9 b.n d470 uint32_t gsize = gdsc->box_w * gdsc->box_h; d49c: f898 4004 ldrb.w r4, [r8, #4] d4a0: f898 1005 ldrb.w r1, [r8, #5] d4a4: fb14 f401 smulbb r4, r4, r1 if(gsize == 0) return NULL; d4a8: 2c00 cmp r4, #0 d4aa: d0e0 beq.n d46e switch(fdsc->bpp) { d4ac: 7ceb ldrb r3, [r5, #19] d4ae: f3c3 0383 ubfx r3, r3, #2, #4 d4b2: 3b01 subs r3, #1 d4b4: 2b03 cmp r3, #3 d4b6: d805 bhi.n d4c4 d4b8: e8df f003 tbb [pc, r3] d4bc: 53535002 .word 0x53535002 buf_size = (gsize + 7) >> 3; d4c0: 3407 adds r4, #7 d4c2: 08e4 lsrs r4, r4, #3 if(_lv_mem_get_size(decompr_buf) < buf_size) { d4c4: 4e4f ldr r6, [pc, #316] ; (d604 ) d4c6: 4b50 ldr r3, [pc, #320] ; (d608 ) d4c8: 6930 ldr r0, [r6, #16] d4ca: 4798 blx r3 d4cc: 42a0 cmp r0, r4 d4ce: d34b bcc.n d568 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d4d0: f859 2037 ldr.w r2, [r9, r7, lsl #3] d4d4: 682b ldr r3, [r5, #0] d4d6: 7ced ldrb r5, [r5, #19] d4d8: f898 7004 ldrb.w r7, [r8, #4] d4dc: f3c2 0213 ubfx r2, r2, #0, #20 d4e0: 4413 add r3, r2 d4e2: 6932 ldr r2, [r6, #16] rle_in = in; d4e4: 6033 str r3, [r6, #0] decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d4e6: ee08 2a10 vmov s16, r2 d4ea: f898 2005 ldrb.w r2, [r8, #5] d4ee: 9207 str r2, [sp, #28] d4f0: f3c5 0283 ubfx r2, r5, #2, #4 d4f4: 2a03 cmp r2, #3 rle_state = RLE_STATE_SINGLE; d4f6: f04f 0b00 mov.w fp, #0 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d4fa: 4611 mov r1, r2 rle_bpp = bpp; d4fc: 7132 strb r2, [r6, #4] d4fe: bf08 it eq d500: 2104 moveq r1, #4 rle_state = RLE_STATE_SINGLE; d502: f886 b005 strb.w fp, [r6, #5] rle_rdp = 0; d506: f8c6 b008 str.w fp, [r6, #8] rle_prev_v = 0; d50a: f886 b00c strb.w fp, [r6, #12] rle_cnt = 0; d50e: f886 b00d strb.w fp, [r6, #13] uint8_t * line_buf1 = _lv_mem_buf_get(w); d512: 4638 mov r0, r7 d514: 4e3d ldr r6, [pc, #244] ; (d60c ) decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d516: 9203 str r2, [sp, #12] if(bpp == 3) wr_size = 4; d518: 9104 str r1, [sp, #16] uint8_t * line_buf1 = _lv_mem_buf_get(w); d51a: 47b0 blx r6 d51c: 4604 mov r4, r0 uint8_t * line_buf2 = _lv_mem_buf_get(w); d51e: 4638 mov r0, r7 d520: 47b0 blx r6 decompress_line(line_buf1, w); d522: 4b3b ldr r3, [pc, #236] ; (d610 ) uint8_t * line_buf2 = _lv_mem_buf_get(w); d524: 4606 mov r6, r0 decompress_line(line_buf1, w); d526: 4639 mov r1, r7 d528: 4620 mov r0, r4 d52a: 4798 blx r3 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d52c: 46b9 mov r9, r7 d52e: 46a0 mov r8, r4 d530: eb07 0a04 add.w sl, r7, r4 for(x = 0; x < w; x++) { d534: 45d0 cmp r8, sl d536: d131 bne.n d59c d538: 9b04 ldr r3, [sp, #16] d53a: fb17 f303 smulbb r3, r7, r3 d53e: 9306 str r3, [sp, #24] d540: 469a mov sl, r3 for(y = 1; y < h; y++) { d542: f04f 0801 mov.w r8, #1 d546: 9b07 ldr r3, [sp, #28] d548: 4543 cmp r3, r8 d54a: dc32 bgt.n d5b2 _lv_mem_buf_release(line_buf1); d54c: 4620 mov r0, r4 d54e: 4c31 ldr r4, [pc, #196] ; (d614 ) d550: 47a0 blx r4 _lv_mem_buf_release(line_buf2); d552: 4630 mov r0, r6 d554: 47a0 blx r4 return decompr_buf; d556: 4b2b ldr r3, [pc, #172] ; (d604 ) d558: 6918 ldr r0, [r3, #16] d55a: e789 b.n d470 buf_size = (gsize + 3) >> 2; d55c: 3403 adds r4, #3 d55e: 08a4 lsrs r4, r4, #2 break; d560: e7b0 b.n d4c4 buf_size = (gsize + 1) >> 1; d562: 3401 adds r4, #1 d564: 0864 lsrs r4, r4, #1 break; d566: e7ad b.n d4c4 decompr_buf = lv_mem_realloc(decompr_buf, buf_size); d568: 4621 mov r1, r4 d56a: 4b2b ldr r3, [pc, #172] ; (d618 ) d56c: 6930 ldr r0, [r6, #16] d56e: 4798 blx r3 LV_ASSERT_MEM(decompr_buf); d570: 4b2a ldr r3, [pc, #168] ; (d61c ) decompr_buf = lv_mem_realloc(decompr_buf, buf_size); d572: 6130 str r0, [r6, #16] LV_ASSERT_MEM(decompr_buf); d574: 4798 blx r3 d576: 4604 mov r4, r0 d578: b960 cbnz r0, d594 d57a: 4b29 ldr r3, [pc, #164] ; (d620 ) d57c: 4929 ldr r1, [pc, #164] ; (d624 ) d57e: 9300 str r3, [sp, #0] d580: 2272 movs r2, #114 ; 0x72 d582: 2003 movs r0, #3 d584: 4d28 ldr r5, [pc, #160] ; (d628 ) d586: 47a8 blx r5 d588: 6932 ldr r2, [r6, #16] d58a: 4828 ldr r0, [pc, #160] ; (d62c ) d58c: 4928 ldr r1, [pc, #160] ; (d630 ) d58e: 4623 mov r3, r4 d590: 4788 blx r1 d592: e7fe b.n d592 if(decompr_buf == NULL) return NULL; d594: 6933 ldr r3, [r6, #16] d596: 2b00 cmp r3, #0 d598: d19a bne.n d4d0 d59a: e768 b.n d46e bits_write(out, wrp, line_buf1[x], bpp); d59c: 9b03 ldr r3, [sp, #12] d59e: f818 2b01 ldrb.w r2, [r8], #1 d5a2: 4d24 ldr r5, [pc, #144] ; (d634 ) d5a4: 4659 mov r1, fp d5a6: ee18 0a10 vmov r0, s16 d5aa: 47a8 blx r5 wrp += wr_size; d5ac: 9b04 ldr r3, [sp, #16] d5ae: 449b add fp, r3 for(x = 0; x < w; x++) { d5b0: e7c0 b.n d534 decompress_line(line_buf2, w); d5b2: 4b17 ldr r3, [pc, #92] ; (d610 ) d5b4: 4649 mov r1, r9 d5b6: 4630 mov r0, r6 d5b8: 4798 blx r3 for(x = 0; x < w; x++) { d5ba: 1e63 subs r3, r4, #1 d5bc: 9305 str r3, [sp, #20] d5be: 19f3 adds r3, r6, r7 d5c0: 46b3 mov fp, r6 d5c2: 9308 str r3, [sp, #32] d5c4: 4651 mov r1, sl d5c6: 9b08 ldr r3, [sp, #32] d5c8: 459b cmp fp, r3 d5ca: d106 bne.n d5da d5cc: 9b06 ldr r3, [sp, #24] d5ce: f108 0801 add.w r8, r8, #1 d5d2: 449a add sl, r3 for(y = 1; y < h; y++) { d5d4: fa0f f888 sxth.w r8, r8 d5d8: e7b5 b.n d546 line_buf1[x] = line_buf2[x] ^ line_buf1[x]; d5da: 9805 ldr r0, [sp, #20] d5dc: f81b 2b01 ldrb.w r2, [fp], #1 d5e0: f810 3f01 ldrb.w r3, [r0, #1]! d5e4: 9005 str r0, [sp, #20] d5e6: 405a eors r2, r3 d5e8: 7002 strb r2, [r0, #0] bits_write(out, wrp, line_buf1[x], bpp); d5ea: 9b03 ldr r3, [sp, #12] d5ec: 4d11 ldr r5, [pc, #68] ; (d634 ) d5ee: 9109 str r1, [sp, #36] ; 0x24 d5f0: ee18 0a10 vmov r0, s16 d5f4: 47a8 blx r5 wrp += wr_size; d5f6: 9b04 ldr r3, [sp, #16] d5f8: 9909 ldr r1, [sp, #36] ; 0x24 d5fa: 4419 add r1, r3 for(x = 0; x < w; x++) { d5fc: e7e3 b.n d5c6 d5fe: bf00 nop d600: 0000d395 .word 0x0000d395 d604: 200085d4 .word 0x200085d4 d608: 0000eb95 .word 0x0000eb95 d60c: 0000eefd .word 0x0000eefd d610: 0000d299 .word 0x0000d299 d614: 0000ebb1 .word 0x0000ebb1 d618: 0000ee5d .word 0x0000ee5d d61c: 00001795 .word 0x00001795 d620: 0002021f .word 0x0002021f d624: 000201df .word 0x000201df d628: 0000e931 .word 0x0000e931 d62c: 0001ee02 .word 0x0001ee02 d630: 0000179d .word 0x0000179d d634: 0000d25d .word 0x0000d25d 0000d638 : if(unicode_letter == '\t') { d638: 2a09 cmp r2, #9 { d63a: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d63e: f8df a13c ldr.w sl, [pc, #316] ; d77c lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; d642: 6907 ldr r7, [r0, #16] { d644: 460c mov r4, r1 d646: 4611 mov r1, r2 unicode_letter = ' '; d648: bf08 it eq d64a: 2120 moveq r1, #32 { d64c: 4680 mov r8, r0 d64e: 4699 mov r9, r3 is_tab = true; d650: bf0c ite eq d652: 2601 moveq r6, #1 bool is_tab = false; d654: 2600 movne r6, #0 uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d656: 47d0 blx sl if(!gid) return false; d658: 4605 mov r5, r0 d65a: 2800 cmp r0, #0 d65c: f000 8086 beq.w d76c if(fdsc->kern_dsc) { d660: 68fb ldr r3, [r7, #12] d662: bb3b cbnz r3, d6b4 int8_t kvalue = 0; d664: 2300 movs r3, #0 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d666: 6878 ldr r0, [r7, #4] int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); d668: 8a3a ldrh r2, [r7, #16] const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d66a: eb00 05c5 add.w r5, r0, r5, lsl #3 int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); d66e: 4353 muls r3, r2 uint32_t adv_w = gdsc->adv_w; d670: 886a ldrh r2, [r5, #2] d672: f3c2 110b ubfx r1, r2, #4, #12 int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); d676: 111b asrs r3, r3, #4 uint32_t adv_w = gdsc->adv_w; d678: 460a mov r2, r1 if(is_tab) adv_w *= 2; d67a: b10e cbz r6, d680 d67c: b20a sxth r2, r1 d67e: 0052 lsls r2, r2, #1 adv_w = (adv_w + (1 << 3)) >> 4; d680: 3308 adds r3, #8 d682: 4413 add r3, r2 d684: 091b lsrs r3, r3, #4 dsc_out->adv_w = adv_w; d686: 8023 strh r3, [r4, #0] dsc_out->box_h = gdsc->box_h; d688: 796b ldrb r3, [r5, #5] d68a: 80a3 strh r3, [r4, #4] dsc_out->box_w = gdsc->box_w; d68c: 792b ldrb r3, [r5, #4] d68e: 8063 strh r3, [r4, #2] dsc_out->ofs_x = gdsc->ofs_x; d690: f995 2006 ldrsb.w r2, [r5, #6] d694: 80e2 strh r2, [r4, #6] dsc_out->ofs_y = gdsc->ofs_y; d696: f995 2007 ldrsb.w r2, [r5, #7] d69a: 8122 strh r2, [r4, #8] dsc_out->bpp = (uint8_t)fdsc->bpp; d69c: 7cfa ldrb r2, [r7, #19] d69e: f3c2 0283 ubfx r2, r2, #2, #4 d6a2: 72a2 strb r2, [r4, #10] if(is_tab) dsc_out->box_w = dsc_out->box_w * 2; d6a4: 2e00 cmp r6, #0 d6a6: d063 beq.n d770 d6a8: 005b lsls r3, r3, #1 d6aa: 8063 strh r3, [r4, #2] } d6ac: 4630 mov r0, r6 d6ae: b004 add sp, #16 d6b0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next); d6b4: 4649 mov r1, r9 d6b6: 4640 mov r0, r8 d6b8: 47d0 blx sl if(gid_next) { d6ba: 2800 cmp r0, #0 d6bc: d0d2 beq.n d664 kvalue = get_kern_value(font, gid, gid_next); d6be: f8d8 3010 ldr.w r3, [r8, #16] const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc; d6c2: f8d3 800c ldr.w r8, [r3, #12] if(fdsc->kern_classes == 0) { d6c6: 7cdb ldrb r3, [r3, #19] d6c8: 065b lsls r3, r3, #25 d6ca: d43a bmi.n d742 if(kdsc->glyph_ids_size == 0) { d6cc: f898 300b ldrb.w r3, [r8, #11] d6d0: f013 0303 ands.w r3, r3, #3 d6d4: d11b bne.n d70e const uint8_t * g_ids = kdsc->glyph_ids; d6d6: f8d8 9000 ldr.w r9, [r8] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 2, kern_pair_8_compare); d6da: f8d8 2008 ldr.w r2, [r8, #8] d6de: 4b25 ldr r3, [pc, #148] ; (d774 ) d6e0: 9300 str r3, [sp, #0] uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/ d6e2: eb05 2000 add.w r0, r5, r0, lsl #8 d6e6: f8ad 000c strh.w r0, [sp, #12] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 2, kern_pair_8_compare); d6ea: 2302 movs r3, #2 d6ec: f8df a090 ldr.w sl, [pc, #144] ; d780 d6f0: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 d6f4: 4649 mov r1, r9 d6f6: a803 add r0, sp, #12 d6f8: 47d0 blx sl if(kid_p) { d6fa: 4603 mov r3, r0 d6fc: 2800 cmp r0, #0 d6fe: d0b2 beq.n d666 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids); d700: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/ d704: 085b lsrs r3, r3, #1 value = kdsc->values[ofs]; d706: f8d8 2004 ldr.w r2, [r8, #4] d70a: 56d3 ldrsb r3, [r2, r3] d70c: e7ab b.n d666 else if(kdsc->glyph_ids_size == 1) { d70e: 2b01 cmp r3, #1 d710: d1a8 bne.n d664 const uint16_t * g_ids = kdsc->glyph_ids; d712: f8d8 9000 ldr.w r9, [r8] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 4, kern_pair_16_compare); d716: f8d8 2008 ldr.w r2, [r8, #8] d71a: 4b17 ldr r3, [pc, #92] ; (d778 ) d71c: 9300 str r3, [sp, #0] lv_uintptr_t g_id_both = (uint32_t)((uint32_t)gid_right << 8) + gid_left; /*Create one number from the ids*/ d71e: eb05 2000 add.w r0, r5, r0, lsl #8 d722: 9003 str r0, [sp, #12] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 4, kern_pair_16_compare); d724: 2304 movs r3, #4 d726: f8df a058 ldr.w sl, [pc, #88] ; d780 d72a: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 d72e: 4649 mov r1, r9 d730: a803 add r0, sp, #12 d732: 47d0 blx sl if(kid_p) { d734: 4603 mov r3, r0 d736: 2800 cmp r0, #0 d738: d095 beq.n d666 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids); d73a: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/ d73e: 091b lsrs r3, r3, #4 d740: e7e1 b.n d706 uint8_t left_class = kdsc->left_class_mapping[gid_left]; d742: f8d8 3004 ldr.w r3, [r8, #4] d746: 5d5a ldrb r2, [r3, r5] if(left_class > 0 && right_class > 0) { d748: 2a00 cmp r2, #0 d74a: d08b beq.n d664 uint8_t right_class = kdsc->right_class_mapping[gid_right]; d74c: f8d8 3008 ldr.w r3, [r8, #8] d750: 5c19 ldrb r1, [r3, r0] if(left_class > 0 && right_class > 0) { d752: 2900 cmp r1, #0 d754: d086 beq.n d664 value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)]; d756: f8d8 3000 ldr.w r3, [r8] d75a: f898 000d ldrb.w r0, [r8, #13] d75e: 3a01 subs r2, #1 d760: 440b add r3, r1 d762: fb00 3302 mla r3, r0, r2, r3 d766: f913 3c01 ldrsb.w r3, [r3, #-1] d76a: e77c b.n d666 if(!gid) return false; d76c: 4606 mov r6, r0 d76e: e79d b.n d6ac return true; d770: 2601 movs r6, #1 d772: e79b b.n d6ac d774: 0000d1d5 .word 0x0000d1d5 d778: 0000d1e7 .word 0x0000d1e7 d77c: 0000d395 .word 0x0000d395 d780: 000102ed .word 0x000102ed 0000d784 <_lv_font_clean_up_fmt_txt>: { d784: b510 push {r4, lr} if(decompr_buf) { d786: 4c04 ldr r4, [pc, #16] ; (d798 <_lv_font_clean_up_fmt_txt+0x14>) d788: 6920 ldr r0, [r4, #16] d78a: b118 cbz r0, d794 <_lv_font_clean_up_fmt_txt+0x10> lv_mem_free(decompr_buf); d78c: 4b03 ldr r3, [pc, #12] ; (d79c <_lv_font_clean_up_fmt_txt+0x18>) d78e: 4798 blx r3 decompr_buf = NULL; d790: 2300 movs r3, #0 d792: 6123 str r3, [r4, #16] } d794: bd10 pop {r4, pc} d796: bf00 nop d798: 200085d4 .word 0x200085d4 d79c: 0000eb2d .word 0x0000eb2d 0000d7a0 : * It is used to surly have known values in the fields ant not memory junk. * After it you can set the fields. * @param driver pointer to driver variable to initialize */ void lv_disp_drv_init(lv_disp_drv_t * driver) { d7a0: b510 push {r4, lr} _lv_memset_00(driver, sizeof(lv_disp_drv_t)); d7a2: 4b0d ldr r3, [pc, #52] ; (d7d8 ) d7a4: 212c movs r1, #44 ; 0x2c { d7a6: 4604 mov r4, r0 _lv_memset_00(driver, sizeof(lv_disp_drv_t)); d7a8: 4798 blx r3 driver->flush_cb = NULL; driver->hor_res = LV_HOR_RES_MAX; d7aa: 4b0c ldr r3, [pc, #48] ; (d7dc ) driver->flush_cb = NULL; d7ac: 2200 movs r2, #0 driver->ver_res = LV_VER_RES_MAX; driver->buffer = NULL; d7ae: e9c4 3200 strd r3, r2, [r4] driver->rotated = 0; driver->color_chroma_key = LV_COLOR_TRANSP; driver->dpi = LV_DPI; #if LV_ANTIALIAS driver->antialiasing = true; d7b2: 8923 ldrh r3, [r4, #8] driver->flush_cb = NULL; d7b4: 60e2 str r2, [r4, #12] driver->antialiasing = true; d7b6: f423 637f bic.w r3, r3, #4080 ; 0xff0 d7ba: f023 030f bic.w r3, r3, #15 d7be: f443 7302 orr.w r3, r3, #520 ; 0x208 d7c2: f043 0301 orr.w r3, r3, #1 d7c6: 8123 strh r3, [r4, #8] driver->color_chroma_key = LV_COLOR_TRANSP; d7c8: f44f 63fc mov.w r3, #2016 ; 0x7e0 driver->screen_transp = 1; #endif #if LV_USE_GPU driver->gpu_blend_cb = NULL; driver->gpu_fill_cb = NULL; d7cc: e9c4 2208 strd r2, r2, [r4, #32] driver->color_chroma_key = LV_COLOR_TRANSP; d7d0: 8523 strh r3, [r4, #40] ; 0x28 #if LV_USE_USER_DATA driver->user_data = NULL; #endif driver->set_px_cb = NULL; d7d2: 6162 str r2, [r4, #20] } d7d4: bd10 pop {r4, pc} d7d6: bf00 nop d7d8: 0000f061 .word 0x0000f061 d7dc: 011001e0 .word 0x011001e0 0000d7e0 : * It lets LVGL to render next frame into the other buffer while previous is being * sent. Set to `NULL` if unused. * @param size_in_px_cnt size of the `buf1` and `buf2` in pixel count. */ void lv_disp_buf_init(lv_disp_buf_t * disp_buf, void * buf1, void * buf2, uint32_t size_in_px_cnt) { d7e0: b5f8 push {r3, r4, r5, r6, r7, lr} d7e2: 4604 mov r4, r0 d7e4: 460d mov r5, r1 d7e6: 4617 mov r7, r2 d7e8: 461e mov r6, r3 _lv_memset_00(disp_buf, sizeof(lv_disp_buf_t)); d7ea: 2124 movs r1, #36 ; 0x24 d7ec: 4b03 ldr r3, [pc, #12] ; (d7fc ) d7ee: 4798 blx r3 disp_buf->buf1 = buf1; disp_buf->buf2 = buf2; d7f0: e9c4 5700 strd r5, r7, [r4] disp_buf->buf_act = disp_buf->buf1; disp_buf->size = size_in_px_cnt; d7f4: e9c4 5602 strd r5, r6, [r4, #8] } d7f8: bdf8 pop {r3, r4, r5, r6, r7, pc} d7fa: bf00 nop d7fc: 0000f061 .word 0x0000f061 0000d800 : * Automatically set the first display as active. * @param driver pointer to an initialized 'lv_disp_drv_t' variable (can be local variable) * @return pointer to the new display or NULL on error */ lv_disp_t * lv_disp_drv_register(lv_disp_drv_t * driver) { d800: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); d804: 4b3b ldr r3, [pc, #236] ; (d8f4 ) d806: 4e3c ldr r6, [pc, #240] ; (d8f8 ) { d808: 4605 mov r5, r0 lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); d80a: 483c ldr r0, [pc, #240] ; (d8fc ) d80c: 4798 blx r3 if(!disp) { d80e: 4604 mov r4, r0 d810: b998 cbnz r0, d83a LV_ASSERT_MEM(disp); d812: 47b0 blx r6 d814: b120 cbz r0, d820 return NULL; d816: 2400 movs r4, #0 disp_def = disp_def_tmp; /*Revert the default display*/ lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ return disp; } d818: 4620 mov r0, r4 d81a: b002 add sp, #8 d81c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ASSERT_MEM(disp); d820: 4b37 ldr r3, [pc, #220] ; (d900 ) d822: 4938 ldr r1, [pc, #224] ; (d904 ) d824: 9300 str r3, [sp, #0] d826: 227c movs r2, #124 ; 0x7c d828: 2003 movs r0, #3 d82a: 4c37 ldr r4, [pc, #220] ; (d908 ) d82c: 47a0 blx r4 d82e: 4837 ldr r0, [pc, #220] ; (d90c ) d830: 4937 ldr r1, [pc, #220] ; (d910 ) d832: 2200 movs r2, #0 d834: 2300 movs r3, #0 d836: 4788 blx r1 d838: e7fe b.n d838 _lv_memset_00(disp, sizeof(lv_disp_t)); d83a: 4b36 ldr r3, [pc, #216] ; (d914 ) d83c: f44f 71b8 mov.w r1, #368 ; 0x170 d840: 4798 blx r3 _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); d842: 4629 mov r1, r5 d844: 4b34 ldr r3, [pc, #208] ; (d918 ) if(disp_def == NULL) disp_def = disp; d846: 4d35 ldr r5, [pc, #212] ; (d91c ) _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); d848: 222c movs r2, #44 ; 0x2c d84a: 4620 mov r0, r4 d84c: 4798 blx r3 _lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t)); d84e: 4b34 ldr r3, [pc, #208] ; (d920 ) d850: 214c movs r1, #76 ; 0x4c d852: f104 0030 add.w r0, r4, #48 ; 0x30 d856: 4798 blx r3 disp->last_activity_time = 0; d858: 2300 movs r3, #0 d85a: f8c4 316c str.w r3, [r4, #364] ; 0x16c if(disp_def == NULL) disp_def = disp; d85e: 682b ldr r3, [r5, #0] d860: b903 cbnz r3, d864 d862: 602c str r4, [r5, #0] disp->refr_task = lv_task_create(_lv_disp_refr_task, LV_DISP_DEF_REFR_PERIOD, LV_REFR_TASK_PRIO, disp); d864: 4623 mov r3, r4 d866: 2203 movs r2, #3 d868: 211e movs r1, #30 d86a: 482e ldr r0, [pc, #184] ; (d924 ) d86c: f8df 80cc ldr.w r8, [pc, #204] ; d93c lv_disp_t * disp_def_tmp = disp_def; d870: 682f ldr r7, [r5, #0] disp_def = disp; /*Temporarily change the default screen to create the default screens on the d872: 602c str r4, [r5, #0] disp->refr_task = lv_task_create(_lv_disp_refr_task, LV_DISP_DEF_REFR_PERIOD, LV_REFR_TASK_PRIO, disp); d874: 47c0 blx r8 d876: 62e0 str r0, [r4, #44] ; 0x2c LV_ASSERT_MEM(disp->refr_task); d878: 47b0 blx r6 d87a: 4606 mov r6, r0 d87c: b960 cbnz r0, d898 d87e: 4b20 ldr r3, [pc, #128] ; (d900 ) d880: 4920 ldr r1, [pc, #128] ; (d904 ) d882: 9300 str r3, [sp, #0] d884: 228d movs r2, #141 ; 0x8d d886: 2003 movs r0, #3 d888: 4d1f ldr r5, [pc, #124] ; (d908 ) d88a: 47a8 blx r5 d88c: 6ae2 ldr r2, [r4, #44] ; 0x2c d88e: 481f ldr r0, [pc, #124] ; (d90c ) d890: 491f ldr r1, [pc, #124] ; (d910 ) d892: 4633 mov r3, r6 d894: 4788 blx r1 d896: e7fe b.n d896 if(disp->refr_task == NULL) return NULL; d898: 6ae3 ldr r3, [r4, #44] ; 0x2c d89a: 2b00 cmp r3, #0 d89c: d0bb beq.n d816 disp->inv_p = 0; d89e: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ d8a2: 4e21 ldr r6, [pc, #132] ; (d928 ) disp->inv_p = 0; d8a4: f36f 0309 bfc r3, #0, #10 disp->last_activity_time = 0; d8a8: 2100 movs r1, #0 disp->inv_p = 0; d8aa: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 disp->last_activity_time = 0; d8ae: f8c4 116c str.w r1, [r4, #364] ; 0x16c disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ d8b2: 4608 mov r0, r1 d8b4: 47b0 blx r6 disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ d8b6: 2100 movs r1, #0 disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ d8b8: 63e0 str r0, [r4, #60] ; 0x3c disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ d8ba: 4608 mov r0, r1 d8bc: 47b0 blx r6 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ d8be: 2100 movs r1, #0 disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ d8c0: 6420 str r0, [r4, #64] ; 0x40 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ d8c2: 4608 mov r0, r1 d8c4: 47b0 blx r6 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); d8c6: 4e19 ldr r6, [pc, #100] ; (d92c ) disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ d8c8: 6460 str r0, [r4, #68] ; 0x44 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); d8ca: 2100 movs r1, #0 d8cc: 6c20 ldr r0, [r4, #64] ; 0x40 d8ce: 47b0 blx r6 lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN); d8d0: 6c60 ldr r0, [r4, #68] ; 0x44 d8d2: 2100 movs r1, #0 d8d4: 47b0 blx r6 lv_obj_set_click(disp->top_layer, false); d8d6: 6c20 ldr r0, [r4, #64] ; 0x40 d8d8: 4e15 ldr r6, [pc, #84] ; (d930 ) d8da: 2100 movs r1, #0 d8dc: 47b0 blx r6 lv_obj_set_click(disp->sys_layer, false); d8de: 6c60 ldr r0, [r4, #68] ; 0x44 d8e0: 2100 movs r1, #0 d8e2: 47b0 blx r6 lv_obj_invalidate(disp->act_scr); d8e4: 6be0 ldr r0, [r4, #60] ; 0x3c d8e6: 4b13 ldr r3, [pc, #76] ; (d934 ) d8e8: 4798 blx r3 lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ d8ea: 6ae0 ldr r0, [r4, #44] ; 0x2c d8ec: 4b12 ldr r3, [pc, #72] ; (d938 ) disp_def = disp_def_tmp; /*Revert the default display*/ d8ee: 602f str r7, [r5, #0] lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ d8f0: 4798 blx r3 return disp; d8f2: e791 b.n d818 d8f4: 0000e661 .word 0x0000e661 d8f8: 00001795 .word 0x00001795 d8fc: 2000860c .word 0x2000860c d900: 00023f13 .word 0x00023f13 d904: 00023ee0 .word 0x00023ee0 d908: 0000e931 .word 0x0000e931 d90c: 0001ee02 .word 0x0001ee02 d910: 0000179d .word 0x0000179d d914: 0000f061 .word 0x0000f061 d918: 0000ec79 .word 0x0000ec79 d91c: 200085e8 .word 0x200085e8 d920: 0000e64d .word 0x0000e64d d924: 00004fe9 .word 0x00004fe9 d928: 000030c5 .word 0x000030c5 d92c: 00002e79 .word 0x00002e79 d930: 00001e0d .word 0x00001e0d d934: 00002739 .word 0x00002739 d938: 0000fc9d .word 0x0000fc9d d93c: 0000fc2d .word 0x0000fc2d 0000d940 : * @return pointer to the default display */ lv_disp_t * lv_disp_get_default(void) { return disp_def; } d940: 4b01 ldr r3, [pc, #4] ; (d948 ) d942: 6818 ldr r0, [r3, #0] d944: 4770 bx lr d946: bf00 nop d948: 200085e8 .word 0x200085e8 0000d94c : * @param disp pointer to a display (NULL to use the default display) * @return the horizontal resolution of the display */ lv_coord_t lv_disp_get_hor_res(lv_disp_t * disp) { if(disp == NULL) disp = lv_disp_get_default(); d94c: b910 cbnz r0, d954 return disp_def; d94e: 4b07 ldr r3, [pc, #28] ; (d96c ) d950: 6818 ldr r0, [r3, #0] if(disp == NULL) d952: b138 cbz r0, d964 return LV_HOR_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; d954: 7a03 ldrb r3, [r0, #8] d956: 079b lsls r3, r3, #30 d958: bf54 ite pl d95a: f9b0 0000 ldrshpl.w r0, [r0] d95e: f9b0 0002 ldrshmi.w r0, [r0, #2] d962: 4770 bx lr return LV_HOR_RES_MAX; d964: f44f 70f0 mov.w r0, #480 ; 0x1e0 } d968: 4770 bx lr d96a: bf00 nop d96c: 200085e8 .word 0x200085e8 0000d970 : * @param disp pointer to a display (NULL to use the default display) * @return the vertical resolution of the display */ lv_coord_t lv_disp_get_ver_res(lv_disp_t * disp) { if(disp == NULL) disp = lv_disp_get_default(); d970: b910 cbnz r0, d978 return disp_def; d972: 4b07 ldr r3, [pc, #28] ; (d990 ) d974: 6818 ldr r0, [r3, #0] if(disp == NULL) d976: b138 cbz r0, d988 return LV_VER_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; d978: 7a03 ldrb r3, [r0, #8] d97a: 079b lsls r3, r3, #30 d97c: bf54 ite pl d97e: f9b0 0002 ldrshpl.w r0, [r0, #2] d982: f9b0 0000 ldrshmi.w r0, [r0] d986: 4770 bx lr return LV_VER_RES_MAX; d988: f44f 7088 mov.w r0, #272 ; 0x110 } d98c: 4770 bx lr d98e: bf00 nop d990: 200085e8 .word 0x200085e8 0000d994 : * @param disp pointer to a display (NULL to use the default display) * @return dpi of the display */ lv_coord_t lv_disp_get_dpi(lv_disp_t * disp) { if(disp == NULL) disp = lv_disp_get_default(); d994: b910 cbnz r0, d99c return disp_def; d996: 4b04 ldr r3, [pc, #16] ; (d9a8 ) d998: 6818 ldr r0, [r3, #0] if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ d99a: b118 cbz r0, d9a4 return disp->driver.dpi; d99c: 8900 ldrh r0, [r0, #8] d99e: f3c0 0089 ubfx r0, r0, #2, #10 d9a2: 4770 bx lr if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ d9a4: 2082 movs r0, #130 ; 0x82 } d9a6: 4770 bx lr d9a8: 200085e8 .word 0x200085e8 0000d9ac : * Get the size category of the display based on it's hor. res. and dpi. * @param disp pointer to a display (NULL to use the default display) * @return LV_DISP_SIZE_SMALL/MEDIUM/LARGE/EXTRA_LARGE */ lv_disp_size_t lv_disp_get_size_category(lv_disp_t * disp) { d9ac: b508 push {r3, lr} if(disp == NULL) disp = lv_disp_get_default(); d9ae: 4601 mov r1, r0 d9b0: b910 cbnz r0, d9b8 return disp_def; d9b2: 4b0f ldr r3, [pc, #60] ; (d9f0 ) d9b4: 6819 ldr r1, [r3, #0] uint32_t w; if(disp == NULL) w = LV_HOR_RES_MAX; d9b6: b199 cbz r1, d9e0 else w = lv_disp_get_hor_res(disp); d9b8: 4b0e ldr r3, [pc, #56] ; (d9f4 ) d9ba: 4608 mov r0, r1 d9bc: 4798 blx r3 d9be: 4602 mov r2, r0 uint32_t dpi = lv_disp_get_dpi(disp); d9c0: 4b0d ldr r3, [pc, #52] ; (d9f8 ) d9c2: 4608 mov r0, r1 d9c4: 4798 blx r3 w = w * 10 / dpi; d9c6: 230a movs r3, #10 d9c8: 435a muls r2, r3 d9ca: fbb2 f0f0 udiv r0, r2, r0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; d9ce: 281d cmp r0, #29 d9d0: d909 bls.n d9e6 if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; d9d2: 2831 cmp r0, #49 ; 0x31 d9d4: d909 bls.n d9ea if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE; else return LV_DISP_SIZE_EXTRA_LARGE; d9d6: 2846 cmp r0, #70 ; 0x46 d9d8: bf34 ite cc d9da: 2002 movcc r0, #2 d9dc: 2003 movcs r0, #3 } d9de: bd08 pop {r3, pc} if(disp == NULL) w = LV_HOR_RES_MAX; d9e0: f44f 72f0 mov.w r2, #480 ; 0x1e0 d9e4: e7ec b.n d9c0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; d9e6: 2000 movs r0, #0 d9e8: e7f9 b.n d9de if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; d9ea: 2001 movs r0, #1 d9ec: e7f7 b.n d9de d9ee: bf00 nop d9f0: 200085e8 .word 0x200085e8 d9f4: 0000d94d .word 0x0000d94d d9f8: 0000d995 .word 0x0000d995 0000d9fc : if(disp_drv->screen_transp) { _lv_memset_00(disp_drv->buffer->buf_act, disp_drv->buffer->size * sizeof(lv_color32_t)); } #endif disp_drv->buffer->flushing = 0; d9fc: 6843 ldr r3, [r0, #4] d9fe: 2200 movs r2, #0 da00: 619a str r2, [r3, #24] disp_drv->buffer->flushing_last = 0; da02: 61da str r2, [r3, #28] } da04: 4770 bx lr ... 0000da08 : * @param disp pointer to the current display. NULL to initialize. * @return the next display or NULL if no more. Give the first display when the parameter is NULL */ lv_disp_t * lv_disp_get_next(lv_disp_t * disp) { if(disp == NULL) da08: 4601 mov r1, r0 return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); da0a: 4803 ldr r0, [pc, #12] ; (da18 ) if(disp == NULL) da0c: b909 cbnz r1, da12 return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); da0e: 4b03 ldr r3, [pc, #12] ; (da1c ) da10: 4718 bx r3 else return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp); da12: 4b03 ldr r3, [pc, #12] ; (da20 ) da14: 4718 bx r3 da16: bf00 nop da18: 2000860c .word 0x2000860c da1c: 0000e6f1 .word 0x0000e6f1 da20: 0000e6fd .word 0x0000e6fd 0000da24 : * @return pointer to the internal buffers */ lv_disp_buf_t * lv_disp_get_buf(lv_disp_t * disp) { return disp->driver.buffer; } da24: 6840 ldr r0, [r0, #4] da26: 4770 bx lr 0000da28 : * @param disp pointer to to display to check * @return true: double buffered; false: not double buffered */ bool lv_disp_is_double_buf(lv_disp_t * disp) { if(disp->driver.buffer->buf1 && disp->driver.buffer->buf2) da28: 6843 ldr r3, [r0, #4] da2a: 6818 ldr r0, [r3, #0] da2c: b118 cbz r0, da36 da2e: 6858 ldr r0, [r3, #4] da30: 3800 subs r0, #0 da32: bf18 it ne da34: 2001 movne r0, #1 return true; else return false; } da36: 4770 bx lr 0000da38 : * `size` is screen sized) * @param disp pointer to to display to check * @return true: double buffered; false: not double buffered */ bool lv_disp_is_true_double_buf(lv_disp_t * disp) { da38: b508 push {r3, lr} uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { da3a: 4b07 ldr r3, [pc, #28] ; (da58 ) { da3c: 4602 mov r2, r0 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { da3e: 4798 blx r3 da40: b140 cbz r0, da54 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; da42: 8850 ldrh r0, [r2, #2] da44: 8813 ldrh r3, [r2, #0] if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { da46: 6852 ldr r2, [r2, #4] uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; da48: fb13 f300 smulbb r3, r3, r0 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { da4c: 68d0 ldr r0, [r2, #12] da4e: 1a1b subs r3, r3, r0 da50: 4258 negs r0, r3 da52: 4158 adcs r0, r3 return true; } else { return false; } } da54: bd08 pop {r3, pc} da56: bf00 nop da58: 0000da29 .word 0x0000da29 0000da5c : * @return the next input devise or NULL if no more. Give the first input device when the parameter * is NULL */ lv_indev_t * lv_indev_get_next(lv_indev_t * indev) { if(indev == NULL) da5c: 4601 mov r1, r0 return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); da5e: 4803 ldr r0, [pc, #12] ; (da6c ) if(indev == NULL) da60: b909 cbnz r1, da66 return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); da62: 4b03 ldr r3, [pc, #12] ; (da70 ) da64: 4718 bx r3 else return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev); da66: 4b03 ldr r3, [pc, #12] ; (da74 ) da68: 4718 bx r3 da6a: bf00 nop da6c: 20008618 .word 0x20008618 da70: 0000e6f1 .word 0x0000e6f1 da74: 0000e6fd .word 0x0000e6fd 0000da78 : * You have to call this function periodically * @param tick_period the call period of this function in milliseconds */ LV_ATTRIBUTE_TICK_INC void lv_tick_inc(uint32_t tick_period) { tick_irq_flag = 0; da78: 4b03 ldr r3, [pc, #12] ; (da88 ) da7a: 2200 movs r2, #0 da7c: 701a strb r2, [r3, #0] sys_time += tick_period; da7e: 685a ldr r2, [r3, #4] da80: 4410 add r0, r2 da82: 6058 str r0, [r3, #4] } da84: 4770 bx lr da86: bf00 nop da88: 200085ec .word 0x200085ec 0000da8c : { #if LV_TICK_CUSTOM == 0 uint32_t result; do { tick_irq_flag = 1; result = sys_time; da8c: 4b03 ldr r3, [pc, #12] ; (da9c ) da8e: 6858 ldr r0, [r3, #4] tick_irq_flag = 1; da90: 2101 movs r1, #1 da92: 7019 strb r1, [r3, #0] } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt. da94: 781a ldrb r2, [r3, #0] da96: 2a00 cmp r2, #0 da98: d0fb beq.n da92 return result; #else return LV_TICK_CUSTOM_SYS_TIME_EXPR; #endif } da9a: 4770 bx lr da9c: 200085ec .word 0x200085ec 0000daa0 : * Get the elapsed milliseconds since a previous time stamp * @param prev_tick a previous time stamp (return value of systick_get() ) * @return the elapsed milliseconds since 'prev_tick' */ uint32_t lv_tick_elaps(uint32_t prev_tick) { daa0: b510 push {r4, lr} uint32_t act_time = lv_tick_get(); daa2: 4b02 ldr r3, [pc, #8] ; (daac ) { daa4: 4604 mov r4, r0 uint32_t act_time = lv_tick_get(); daa6: 4798 blx r3 prev_tick = UINT32_MAX - prev_tick + 1; prev_tick += act_time; } return prev_tick; } daa8: 1b00 subs r0, r0, r4 daaa: bd10 pop {r4, pc} daac: 0000da8d .word 0x0000da8d 0000dab0 : { LV_UNUSED(path); /*Calculate the current step*/ uint32_t step; if(a->time == a->act_time) { dab0: e9d1 3008 ldrd r3, r0, [r1, #32] dab4: 4283 cmp r3, r0 step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/ } else { step = ((int32_t)a->act_time * LV_ANIM_RESOLUTION) / a->time; dab6: bf1c itt ne dab8: 0280 lslne r0, r0, #10 daba: fb90 f0f3 sdivne r0, r0, r3 } /* Get the new value which will be proportional to `step` * and the `start` and `end` values*/ int32_t new_value; new_value = (int32_t)step * (a->end - a->start); dabe: e9d1 2306 ldrd r2, r3, [r1, #24] step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/ dac2: bf08 it eq dac4: f44f 6080 moveq.w r0, #1024 ; 0x400 new_value = (int32_t)step * (a->end - a->start); dac8: 1a9b subs r3, r3, r2 daca: 4358 muls r0, r3 new_value = new_value >> LV_ANIM_RES_SHIFT; new_value += a->start; dacc: eb02 20a0 add.w r0, r2, r0, asr #10 return (lv_anim_value_t)new_value; } dad0: b200 sxth r0, r0 dad2: 4770 bx lr 0000dad4 : } return anim_list_changed; } static void anim_mark_list_change(void) { dad4: b510 push {r4, lr} anim_list_changed = true; dad6: 4c07 ldr r4, [pc, #28] ; (daf4 ) if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) dad8: 4807 ldr r0, [pc, #28] ; (daf8 ) anim_list_changed = true; dada: 2301 movs r3, #1 dadc: 7023 strb r3, [r4, #0] if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) dade: 4b07 ldr r3, [pc, #28] ; (dafc ) dae0: 4798 blx r3 dae2: 4b07 ldr r3, [pc, #28] ; (db00 ) dae4: 4601 mov r1, r0 dae6: b918 cbnz r0, daf0 lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); else lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); dae8: 6860 ldr r0, [r4, #4] } daea: e8bd 4010 ldmia.w sp!, {r4, lr} lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); daee: 4718 bx r3 daf0: 2104 movs r1, #4 daf2: e7f9 b.n dae8 daf4: 200085f4 .word 0x200085f4 daf8: 2000863c .word 0x2000863c dafc: 0000e6f1 .word 0x0000e6f1 db00: 0000fbc9 .word 0x0000fbc9 0000db04 : { db04: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { db08: 484f ldr r0, [pc, #316] ; (dc48 ) db0a: 4d50 ldr r5, [pc, #320] ; (dc4c ) db0c: 4c4e ldr r4, [pc, #312] ; (dc48 ) db0e: 4e50 ldr r6, [pc, #320] ; (dc50 ) { db10: b090 sub sp, #64 ; 0x40 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { db12: 47a8 blx r5 db14: b9a0 cbnz r0, db40 uint32_t elaps = lv_tick_elaps(last_task_run); db16: 4e4f ldr r6, [pc, #316] ; (dc54 ) db18: 4b4f ldr r3, [pc, #316] ; (dc58 ) db1a: 68b0 ldr r0, [r6, #8] a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); db1c: f8df 8128 ldr.w r8, [pc, #296] ; dc48 db20: f8df 912c ldr.w r9, [pc, #300] ; dc50 _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); db24: f8df a148 ldr.w sl, [pc, #328] ; dc70 uint32_t elaps = lv_tick_elaps(last_task_run); db28: 4798 blx r3 db2a: 4607 mov r7, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); db2c: 4846 ldr r0, [pc, #280] ; (dc48 ) db2e: 47a8 blx r5 db30: 4604 mov r4, r0 while(a != NULL) { db32: b97c cbnz r4, db54 last_task_run = lv_tick_get(); db34: 4b49 ldr r3, [pc, #292] ; (dc5c ) db36: 4798 blx r3 db38: 60b0 str r0, [r6, #8] } db3a: b010 add sp, #64 ; 0x40 db3c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} a->has_run = 0; db40: f890 303c ldrb.w r3, [r0, #60] ; 0x3c db44: f36f 0341 bfc r3, #1, #1 db48: f880 303c strb.w r3, [r0, #60] ; 0x3c _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { db4c: 4601 mov r1, r0 db4e: 4620 mov r0, r4 db50: 47b0 blx r6 db52: e7df b.n db14 anim_list_changed = false; db54: 2300 movs r3, #0 db56: 7033 strb r3, [r6, #0] if(!a->has_run) { db58: f894 303c ldrb.w r3, [r4, #60] ; 0x3c db5c: 079a lsls r2, r3, #30 db5e: d46e bmi.n dc3e a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/ db60: f043 0302 orr.w r3, r3, #2 db64: f884 303c strb.w r3, [r4, #60] ; 0x3c int32_t new_act_time = a->act_time + elaps; db68: 6a63 ldr r3, [r4, #36] ; 0x24 if(a->act_time <= 0 && new_act_time >= 0) { db6a: 2b00 cmp r3, #0 db6c: dc05 bgt.n db7a db6e: 42fb cmn r3, r7 db70: d403 bmi.n db7a if(a->start_cb) a->start_cb(a); db72: 68a3 ldr r3, [r4, #8] db74: b10b cbz r3, db7a db76: 4620 mov r0, r4 db78: 4798 blx r3 a->act_time += elaps; db7a: 6a63 ldr r3, [r4, #36] ; 0x24 db7c: 443b add r3, r7 if(a->act_time >= 0) { db7e: 2b00 cmp r3, #0 a->act_time += elaps; db80: 6263 str r3, [r4, #36] ; 0x24 if(a->act_time >= 0) { db82: db2d blt.n dbe0 if(a->act_time > a->time) a->act_time = a->time; db84: 6a22 ldr r2, [r4, #32] if(a->path.cb) new_value = a->path.cb(&a->path, a); db86: 4620 mov r0, r4 if(a->act_time > a->time) a->act_time = a->time; db88: 4293 cmp r3, r2 if(a->path.cb) new_value = a->path.cb(&a->path, a); db8a: f850 3f10 ldr.w r3, [r0, #16]! if(a->act_time > a->time) a->act_time = a->time; db8e: bfc8 it gt db90: 6262 strgt r2, [r4, #36] ; 0x24 if(a->path.cb) new_value = a->path.cb(&a->path, a); db92: 4621 mov r1, r4 db94: b353 cbz r3, dbec db96: 4798 blx r3 if(a->exec_cb) a->exec_cb(a->var, new_value); db98: 6863 ldr r3, [r4, #4] db9a: b113 cbz r3, dba2 db9c: b201 sxth r1, r0 db9e: 6820 ldr r0, [r4, #0] dba0: 4798 blx r3 if(a->act_time >= a->time) { dba2: e9d4 3208 ldrd r3, r2, [r4, #32] dba6: 429a cmp r2, r3 dba8: db1a blt.n dbe0 if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { dbaa: f894 303c ldrb.w r3, [r4, #60] ; 0x3c dbae: 6ae1 ldr r1, [r4, #44] ; 0x2c dbb0: f013 0301 ands.w r3, r3, #1 dbb4: d123 bne.n dbfe dbb6: 8ea2 ldrh r2, [r4, #52] ; 0x34 dbb8: b9da cbnz r2, dbf2 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { dbba: 2900 cmp r1, #0 dbbc: d13c bne.n dc38 _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); dbbe: 2240 movs r2, #64 ; 0x40 dbc0: 4621 mov r1, r4 dbc2: 4668 mov r0, sp dbc4: 47d0 blx sl _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); dbc6: 4621 mov r1, r4 dbc8: 4b25 ldr r3, [pc, #148] ; (dc60 ) dbca: 4640 mov r0, r8 dbcc: 4798 blx r3 lv_mem_free(a); dbce: 4b25 ldr r3, [pc, #148] ; (dc64 ) dbd0: 4620 mov r0, r4 dbd2: 4798 blx r3 anim_mark_list_change(); dbd4: 4b24 ldr r3, [pc, #144] ; (dc68 ) dbd6: 4798 blx r3 if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp); dbd8: 9b03 ldr r3, [sp, #12] dbda: b10b cbz r3, dbe0 dbdc: 4668 mov r0, sp dbde: 4798 blx r3 if(anim_list_changed) dbe0: 7833 ldrb r3, [r6, #0] dbe2: b363 cbz r3, dc3e a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dbe4: 4640 mov r0, r8 dbe6: 47a8 blx r5 a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dbe8: 4604 mov r4, r0 dbea: e7a2 b.n db32 else new_value = lv_anim_path_linear(&a->path, a); dbec: 4b1f ldr r3, [pc, #124] ; (dc6c ) dbee: 4798 blx r3 dbf0: e7d2 b.n db98 if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { dbf2: f64f 70ff movw r0, #65535 ; 0xffff dbf6: 4282 cmp r2, r0 dbf8: d004 beq.n dc04 a->repeat_cnt--; dbfa: 3a01 subs r2, #1 dbfc: 86a2 strh r2, [r4, #52] ; 0x34 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { dbfe: 8ea2 ldrh r2, [r4, #52] ; 0x34 dc00: 2a00 cmp r2, #0 dc02: d0da beq.n dbba a->act_time = -a->repeat_delay; /*Restart the animation*/ dc04: 6b22 ldr r2, [r4, #48] ; 0x30 dc06: 4252 negs r2, r2 dc08: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { dc0a: 2900 cmp r1, #0 dc0c: d0e8 beq.n dbe0 if(a->playback_now == 0) a->act_time = -a->playback_delay; dc0e: b913 cbnz r3, dc16 dc10: 6aa2 ldr r2, [r4, #40] ; 0x28 dc12: 4252 negs r2, r2 dc14: 6262 str r2, [r4, #36] ; 0x24 a->playback_now = a->playback_now == 0 ? 1 : 0; dc16: f083 0201 eor.w r2, r3, #1 dc1a: f894 303c ldrb.w r3, [r4, #60] ; 0x3c dc1e: f362 0300 bfi r3, r2, #0, #1 a->start = a->end; dc22: e9d4 0206 ldrd r0, r2, [r4, #24] a->playback_now = a->playback_now == 0 ? 1 : 0; dc26: f884 303c strb.w r3, [r4, #60] ; 0x3c a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; dc2a: 07db lsls r3, r3, #31 dc2c: bf58 it pl dc2e: 6ba1 ldrpl r1, [r4, #56] ; 0x38 dc30: 6221 str r1, [r4, #32] a->end = tmp; dc32: e9c4 2006 strd r2, r0, [r4, #24] a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; dc36: e7d3 b.n dbe0 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { dc38: 2b00 cmp r3, #0 dc3a: d0e3 beq.n dc04 dc3c: e7bf b.n dbbe a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dc3e: 4621 mov r1, r4 dc40: 4640 mov r0, r8 dc42: 47c8 blx r9 dc44: e7d0 b.n dbe8 dc46: bf00 nop dc48: 2000863c .word 0x2000863c dc4c: 0000e6f1 .word 0x0000e6f1 dc50: 0000e6fd .word 0x0000e6fd dc54: 200085f4 .word 0x200085f4 dc58: 0000daa1 .word 0x0000daa1 dc5c: 0000da8d .word 0x0000da8d dc60: 0000e7b5 .word 0x0000e7b5 dc64: 0000eb2d .word 0x0000eb2d dc68: 0000dad5 .word 0x0000dad5 dc6c: 0000dab1 .word 0x0000dab1 dc70: 0000ec79 .word 0x0000ec79 0000dc74 <_lv_anim_core_init>: { dc74: b538 push {r3, r4, r5, lr} _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); dc76: 2140 movs r1, #64 ; 0x40 dc78: 4809 ldr r0, [pc, #36] ; (dca0 <_lv_anim_core_init+0x2c>) dc7a: 4b0a ldr r3, [pc, #40] ; (dca4 <_lv_anim_core_init+0x30>) last_task_run = lv_tick_get(); dc7c: 4c0a ldr r4, [pc, #40] ; (dca8 <_lv_anim_core_init+0x34>) _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc7e: 4d0b ldr r5, [pc, #44] ; (dcac <_lv_anim_core_init+0x38>) _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); dc80: 4798 blx r3 last_task_run = lv_tick_get(); dc82: 4b0b ldr r3, [pc, #44] ; (dcb0 <_lv_anim_core_init+0x3c>) dc84: 4798 blx r3 _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc86: 2300 movs r3, #0 last_task_run = lv_tick_get(); dc88: 60a0 str r0, [r4, #8] _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc8a: 2204 movs r2, #4 dc8c: 211e movs r1, #30 dc8e: 4809 ldr r0, [pc, #36] ; (dcb4 <_lv_anim_core_init+0x40>) dc90: 47a8 blx r5 anim_mark_list_change(); /*Turn off the animation task*/ dc92: 4b09 ldr r3, [pc, #36] ; (dcb8 <_lv_anim_core_init+0x44>) _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc94: 6060 str r0, [r4, #4] anim_mark_list_change(); /*Turn off the animation task*/ dc96: 4798 blx r3 anim_list_changed = false; /*The list has not actaully changed*/ dc98: 2300 movs r3, #0 dc9a: 7023 strb r3, [r4, #0] } dc9c: bd38 pop {r3, r4, r5, pc} dc9e: bf00 nop dca0: 2000863c .word 0x2000863c dca4: 0000e64d .word 0x0000e64d dca8: 200085f4 .word 0x200085f4 dcac: 0000fc2d .word 0x0000fc2d dcb0: 0000da8d .word 0x0000da8d dcb4: 0000db05 .word 0x0000db05 dcb8: 0000dad5 .word 0x0000dad5 0000dcbc : { dcbc: b510 push {r4, lr} _lv_memset_00(a, sizeof(lv_anim_t)); dcbe: 4b0b ldr r3, [pc, #44] ; (dcec ) { dcc0: 4604 mov r4, r0 _lv_memset_00(a, sizeof(lv_anim_t)); dcc2: 2140 movs r1, #64 ; 0x40 dcc4: 4798 blx r3 a->time = 500; dcc6: f44f 73fa mov.w r3, #500 ; 0x1f4 dcca: 6223 str r3, [r4, #32] a->end = 100; dccc: 2100 movs r1, #0 dcce: 2364 movs r3, #100 ; 0x64 dcd0: e9c4 1306 strd r1, r3, [r4, #24] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; dcd4: 4b06 ldr r3, [pc, #24] ; (dcf0 ) dcd6: 6123 str r3, [r4, #16] a->repeat_cnt = 1; dcd8: 2301 movs r3, #1 dcda: 86a3 strh r3, [r4, #52] ; 0x34 a->early_apply = 1; dcdc: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 dce0: f043 0301 orr.w r3, r3, #1 dce4: f884 3036 strb.w r3, [r4, #54] ; 0x36 } dce8: bd10 pop {r4, pc} dcea: bf00 nop dcec: 0000f061 .word 0x0000f061 dcf0: 0000dab1 .word 0x0000dab1 0000dcf4 : { dcf4: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dcf8: 4b14 ldr r3, [pc, #80] ; (dd4c ) a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dcfa: f8df 9054 ldr.w r9, [pc, #84] ; dd50 dcfe: f8df a05c ldr.w sl, [pc, #92] ; dd5c _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); dd02: f8df b05c ldr.w fp, [pc, #92] ; dd60 { dd06: 4606 mov r6, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dd08: 4811 ldr r0, [pc, #68] ; (dd50 ) { dd0a: 460d mov r5, r1 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dd0c: 4798 blx r3 bool del = false; dd0e: f04f 0800 mov.w r8, #0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dd12: 4604 mov r4, r0 while(a != NULL) { dd14: b914 cbnz r4, dd1c } dd16: 4640 mov r0, r8 dd18: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dd1c: 4621 mov r1, r4 dd1e: 4648 mov r0, r9 dd20: 47d0 blx sl if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { dd22: 6823 ldr r3, [r4, #0] dd24: 42b3 cmp r3, r6 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dd26: 4607 mov r7, r0 if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { dd28: d10d bne.n dd46 dd2a: 6863 ldr r3, [r4, #4] dd2c: 42ab cmp r3, r5 dd2e: d000 beq.n dd32 dd30: b94d cbnz r5, dd46 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); dd32: 4621 mov r1, r4 dd34: 4648 mov r0, r9 dd36: 47d8 blx fp lv_mem_free(a); dd38: 4b06 ldr r3, [pc, #24] ; (dd54 ) dd3a: 4620 mov r0, r4 dd3c: 4798 blx r3 anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in dd3e: 4b06 ldr r3, [pc, #24] ; (dd58 ) dd40: 4798 blx r3 del = true; dd42: f04f 0801 mov.w r8, #1 dd46: 463c mov r4, r7 dd48: e7e4 b.n dd14 dd4a: bf00 nop dd4c: 0000e6f1 .word 0x0000e6f1 dd50: 2000863c .word 0x2000863c dd54: 0000eb2d .word 0x0000eb2d dd58: 0000dad5 .word 0x0000dad5 dd5c: 0000e6fd .word 0x0000e6fd dd60: 0000e7b5 .word 0x0000e7b5 0000dd64 : { dd64: b573 push {r0, r1, r4, r5, r6, lr} if(a->exec_cb != NULL) lv_anim_del(a->var, a->exec_cb); /*fp == NULL would delete all animations of var*/ dd66: 6841 ldr r1, [r0, #4] { dd68: 4605 mov r5, r0 if(a->exec_cb != NULL) lv_anim_del(a->var, a->exec_cb); /*fp == NULL would delete all animations of var*/ dd6a: b111 cbz r1, dd72 dd6c: 6800 ldr r0, [r0, #0] dd6e: 4b1d ldr r3, [pc, #116] ; (dde4 ) dd70: 4798 blx r3 if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) { dd72: 481d ldr r0, [pc, #116] ; (dde8 ) dd74: 4b1d ldr r3, [pc, #116] ; (ddec ) dd76: 4798 blx r3 dd78: b120 cbz r0, dd84 last_task_run = lv_tick_get() - 1; dd7a: 4b1d ldr r3, [pc, #116] ; (ddf0 ) dd7c: 4798 blx r3 dd7e: 4b1d ldr r3, [pc, #116] ; (ddf4 ) dd80: 3801 subs r0, #1 dd82: 6098 str r0, [r3, #8] lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); dd84: 4b1c ldr r3, [pc, #112] ; (ddf8 ) dd86: 4818 ldr r0, [pc, #96] ; (dde8 ) dd88: 4798 blx r3 LV_ASSERT_MEM(new_anim); dd8a: 4b1c ldr r3, [pc, #112] ; (ddfc ) lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); dd8c: 4604 mov r4, r0 LV_ASSERT_MEM(new_anim); dd8e: 4798 blx r3 dd90: 4606 mov r6, r0 dd92: b960 cbnz r0, ddae dd94: 4b1a ldr r3, [pc, #104] ; (de00 ) dd96: 491b ldr r1, [pc, #108] ; (de04 ) dd98: 9300 str r3, [sp, #0] dd9a: 226a movs r2, #106 ; 0x6a dd9c: 2003 movs r0, #3 dd9e: 4d1a ldr r5, [pc, #104] ; (de08 ) dda0: 47a8 blx r5 dda2: 481a ldr r0, [pc, #104] ; (de0c ) dda4: 491a ldr r1, [pc, #104] ; (de10 ) dda6: 4622 mov r2, r4 dda8: 4633 mov r3, r6 ddaa: 4788 blx r1 ddac: e7fe b.n ddac if(new_anim == NULL) return; ddae: b1b4 cbz r4, ddde a->time_orig = a->time; ddb0: 6a2b ldr r3, [r5, #32] ddb2: 63ab str r3, [r5, #56] ; 0x38 _lv_memcpy(new_anim, a, sizeof(lv_anim_t)); ddb4: 2240 movs r2, #64 ; 0x40 ddb6: 4b17 ldr r3, [pc, #92] ; (de14 ) ddb8: 4629 mov r1, r5 ddba: 4620 mov r0, r4 ddbc: 4798 blx r3 if(new_anim->early_apply) { ddbe: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 ddc2: 07db lsls r3, r3, #31 ddc4: d506 bpl.n ddd4 if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start); ddc6: 6863 ldr r3, [r4, #4] ddc8: b123 cbz r3, ddd4 ddca: 6820 ldr r0, [r4, #0] ddcc: b110 cbz r0, ddd4 ddce: f9b4 1018 ldrsh.w r1, [r4, #24] ddd2: 4798 blx r3 anim_mark_list_change(); ddd4: 4b10 ldr r3, [pc, #64] ; (de18 ) } ddd6: b002 add sp, #8 ddd8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} anim_mark_list_change(); dddc: 4718 bx r3 } ddde: b002 add sp, #8 dde0: bd70 pop {r4, r5, r6, pc} dde2: bf00 nop dde4: 0000dcf5 .word 0x0000dcf5 dde8: 2000863c .word 0x2000863c ddec: 0000e919 .word 0x0000e919 ddf0: 0000da8d .word 0x0000da8d ddf4: 200085f4 .word 0x200085f4 ddf8: 0000e661 .word 0x0000e661 ddfc: 00001795 .word 0x00001795 de00: 00023f58 .word 0x00023f58 de04: 00023f28 .word 0x00023f28 de08: 0000e931 .word 0x0000e931 de0c: 0001ee02 .word 0x0001ee02 de10: 0000179d .word 0x0000179d de14: 0000ec79 .word 0x0000ec79 de18: 0000dad5 .word 0x0000dad5 0000de1c : { de1c: b5f8 push {r3, r4, r5, r6, r7, lr} _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { de1e: 4b09 ldr r3, [pc, #36] ; (de44 ) de20: 4e09 ldr r6, [pc, #36] ; (de48 ) de22: 4f0a ldr r7, [pc, #40] ; (de4c ) { de24: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { de26: 4808 ldr r0, [pc, #32] ; (de48 ) { de28: 460d mov r5, r1 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { de2a: 4798 blx r3 de2c: b900 cbnz r0, de30 } de2e: bdf8 pop {r3, r4, r5, r6, r7, pc} if(a->var == var && a->exec_cb == exec_cb) { de30: 6803 ldr r3, [r0, #0] de32: 42a3 cmp r3, r4 de34: d102 bne.n de3c de36: 6843 ldr r3, [r0, #4] de38: 42ab cmp r3, r5 de3a: d0f8 beq.n de2e _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { de3c: 4601 mov r1, r0 de3e: 4630 mov r0, r6 de40: 47b8 blx r7 de42: e7f3 b.n de2c de44: 0000e6f1 .word 0x0000e6f1 de48: 2000863c .word 0x2000863c de4c: 0000e6fd .word 0x0000e6fd 0000de50 : int32_t d = LV_MATH_ABS((int32_t)start - end); de50: 1a89 subs r1, r1, r2 de52: 2900 cmp r1, #0 de54: bfb8 it lt de56: 4249 neglt r1, r1 uint32_t time = (int32_t)((int32_t)(d * 1000) / speed); de58: f44f 727a mov.w r2, #1000 ; 0x3e8 de5c: 4351 muls r1, r2 de5e: fbb1 f0f0 udiv r0, r1, r0 de62: 2801 cmp r0, #1 de64: bf38 it cc de66: 2001 movcc r0, #1 return time; de68: f64f 73ff movw r3, #65535 ; 0xffff de6c: 4298 cmp r0, r3 de6e: bf28 it cs de70: 4618 movcs r0, r3 } de72: b280 uxth r0, r0 de74: 4770 bx lr 0000de76 : /********************** * STATIC FUNCTIONS **********************/ static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p) de76: b530 push {r4, r5, lr} { lv_coord_t r = (area->x2 - area->x1) / 2; de78: f9b0 3004 ldrsh.w r3, [r0, #4] de7c: f9b0 5000 ldrsh.w r5, [r0] lv_coord_t cx = area->x1 + r; lv_coord_t cy = area->y1 + r; /*Simplify the code by moving everything to (0, 0) */ lv_coord_t px = p->x - cx; lv_coord_t py = p->y - cy; de80: 8840 ldrh r0, [r0, #2] lv_coord_t r = (area->x2 - area->x1) / 2; de82: 1b5b subs r3, r3, r5 de84: eb03 73d3 add.w r3, r3, r3, lsr #31 lv_coord_t py = p->y - cy; de88: 1a12 subs r2, r2, r0 lv_coord_t r = (area->x2 - area->x1) / 2; de8a: 105c asrs r4, r3, #1 lv_coord_t px = p->x - cx; de8c: 1b49 subs r1, r1, r5 lv_coord_t cx = area->x1 + r; de8e: f3c3 034f ubfx r3, r3, #1, #16 lv_coord_t px = p->x - cx; de92: 1ac9 subs r1, r1, r3 lv_coord_t py = p->y - cy; de94: 1ad3 subs r3, r2, r3 int32_t r_sqrd = r * r; int32_t dist = (px * px) + (py * py); de96: fb13 f303 smulbb r3, r3, r3 int32_t r_sqrd = r * r; de9a: 4364 muls r4, r4 int32_t dist = (px * px) + (py * py); de9c: fb11 3101 smlabb r1, r1, r1, r3 if(dist <= r_sqrd) return true; else return false; } dea0: 428c cmp r4, r1 dea2: bfb4 ite lt dea4: 2000 movlt r0, #0 dea6: 2001 movge r0, #1 dea8: bd30 pop {r4, r5, pc} 0000deaa : area_p->y2 = area_p->y1 + h - 1; deaa: 8843 ldrh r3, [r0, #2] deac: 3901 subs r1, #1 deae: 4419 add r1, r3 deb0: 80c1 strh r1, [r0, #6] } deb2: 4770 bx lr 0000deb4 : size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1); deb4: f9b0 3000 ldrsh.w r3, [r0] deb8: f9b0 2004 ldrsh.w r2, [r0, #4] debc: 1ad2 subs r2, r2, r3 debe: f9b0 3006 ldrsh.w r3, [r0, #6] dec2: f9b0 0002 ldrsh.w r0, [r0, #2] dec6: 1a18 subs r0, r3, r0 dec8: 3001 adds r0, #1 } deca: fb02 0000 mla r0, r2, r0, r0 dece: 4770 bx lr 0000ded0 <_lv_area_intersect>: res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); ded0: f9b1 3000 ldrsh.w r3, [r1] { ded4: b570 push {r4, r5, r6, lr} res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); ded6: f9b2 5000 ldrsh.w r5, [r2] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); deda: f9b1 4002 ldrsh.w r4, [r1, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); dede: f9b1 6004 ldrsh.w r6, [r1, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); dee2: f9b1 1006 ldrsh.w r1, [r1, #6] res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); dee6: 429d cmp r5, r3 dee8: bfb8 it lt deea: 461d movlt r5, r3 res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); deec: f9b2 3002 ldrsh.w r3, [r2, #2] res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); def0: 8005 strh r5, [r0, #0] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); def2: 42a3 cmp r3, r4 def4: bfb8 it lt def6: 4623 movlt r3, r4 res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); def8: f9b2 4004 ldrsh.w r4, [r2, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); defc: f9b2 2006 ldrsh.w r2, [r2, #6] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); df00: 8043 strh r3, [r0, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); df02: 42b4 cmp r4, r6 df04: bfa8 it ge df06: 4634 movge r4, r6 res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); df08: 428a cmp r2, r1 df0a: bfa8 it ge df0c: 460a movge r2, r1 if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { df0e: 42a5 cmp r5, r4 res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); df10: 8084 strh r4, [r0, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); df12: 80c2 strh r2, [r0, #6] if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { df14: dc04 bgt.n df20 <_lv_area_intersect+0x50> df16: 4293 cmp r3, r2 df18: bfcc ite gt df1a: 2000 movgt r0, #0 df1c: 2001 movle r0, #1 } df1e: bd70 pop {r4, r5, r6, pc} union_ok = false; df20: 2000 movs r0, #0 df22: e7fc b.n df1e <_lv_area_intersect+0x4e> 0000df24 <_lv_area_join>: a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); df24: f9b2 3000 ldrsh.w r3, [r2] { df28: b510 push {r4, lr} a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); df2a: f9b1 4000 ldrsh.w r4, [r1] df2e: 42a3 cmp r3, r4 df30: bfa8 it ge df32: 4623 movge r3, r4 df34: 8003 strh r3, [r0, #0] a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1); df36: f9b1 4002 ldrsh.w r4, [r1, #2] df3a: f9b2 3002 ldrsh.w r3, [r2, #2] df3e: 42a3 cmp r3, r4 df40: bfa8 it ge df42: 4623 movge r3, r4 df44: 8043 strh r3, [r0, #2] a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2); df46: f9b1 4004 ldrsh.w r4, [r1, #4] df4a: f9b2 3004 ldrsh.w r3, [r2, #4] df4e: 42a3 cmp r3, r4 df50: bfb8 it lt df52: 4623 movlt r3, r4 df54: 8083 strh r3, [r0, #4] a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2); df56: f9b2 3006 ldrsh.w r3, [r2, #6] df5a: f9b1 2006 ldrsh.w r2, [r1, #6] df5e: 4293 cmp r3, r2 df60: bfb8 it lt df62: 4613 movlt r3, r2 df64: 80c3 strh r3, [r0, #6] } df66: bd10 pop {r4, pc} 0000df68 <_lv_area_is_point_on>: { df68: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if((p_p->x >= a_p->x1 && p_p->x <= a_p->x2) && ((p_p->y >= a_p->y1 && p_p->y <= a_p->y2))) { df6c: f9b1 9000 ldrsh.w r9, [r1] df70: f9b0 4000 ldrsh.w r4, [r0] df74: 45a1 cmp r9, r4 { df76: b087 sub sp, #28 df78: 4688 mov r8, r1 if((p_p->x >= a_p->x1 && p_p->x <= a_p->x2) && ((p_p->y >= a_p->y1 && p_p->y <= a_p->y2))) { df7a: f2c0 808b blt.w e094 <_lv_area_is_point_on+0x12c> df7e: f9b0 3004 ldrsh.w r3, [r0, #4] df82: 9300 str r3, [sp, #0] df84: 4599 cmp r9, r3 df86: f300 8085 bgt.w e094 <_lv_area_is_point_on+0x12c> df8a: f9b1 a002 ldrsh.w sl, [r1, #2] df8e: f9b0 b002 ldrsh.w fp, [r0, #2] df92: 45da cmp sl, fp df94: db7e blt.n e094 <_lv_area_is_point_on+0x12c> df96: f9b0 3006 ldrsh.w r3, [r0, #6] df9a: 459a cmp sl, r3 df9c: dc7a bgt.n e094 <_lv_area_is_point_on+0x12c> if(radius <= 0) { df9e: 2a00 cmp r2, #0 dfa0: dc03 bgt.n dfaa <_lv_area_is_point_on+0x42> return true; dfa2: 2001 movs r0, #1 } dfa4: b007 add sp, #28 dfa6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} * @param area_p pointer to an area * @return the width of the area (if x1 == x2 -> width = 1) */ static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p) { return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); dfaa: f8bd 0000 ldrh.w r0, [sp] dfae: 9002 str r0, [sp, #8] dfb0: b2a6 uxth r6, r4 dfb2: 3001 adds r0, #1 dfb4: 1b80 subs r0, r0, r6 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); dfb6: b29f uxth r7, r3 dfb8: fa1f fc8b uxth.w ip, fp corner_area.x1 = a_p->x1; dfbc: f8ad 4010 strh.w r4, [sp, #16] dfc0: 1c7d adds r5, r7, #1 lv_coord_t w = lv_area_get_width(a_p) / 2; dfc2: f3c0 34c0 ubfx r4, r0, #15, #1 dfc6: fa04 f080 sxtah r0, r4, r0 dfca: eba5 040c sub.w r4, r5, ip lv_coord_t h = lv_area_get_height(a_p) / 2; dfce: f3c4 35c0 ubfx r5, r4, #15, #1 dfd2: fa05 f584 sxtah r5, r5, r4 lv_coord_t max_radius = LV_MATH_MIN(w, h); dfd6: 106d asrs r5, r5, #1 dfd8: 1044 asrs r4, r0, #1 corner_area.x2 = a_p->x1 + radius; dfda: 42ac cmp r4, r5 dfdc: bfa8 it ge dfde: 462c movge r4, r5 dfe0: 42a2 cmp r2, r4 dfe2: bfa8 it ge dfe4: 4622 movge r2, r4 dfe6: fa16 f682 uxtah r6, r6, r2 dfea: b295 uxth r5, r2 corner_area.y2 = a_p->y1 + radius; dfec: fa1c f282 uxtah r2, ip, r2 dff0: 9303 str r3, [sp, #12] dff2: b214 sxth r4, r2 dff4: b293 uxth r3, r2 corner_area.x2 = a_p->x1 + radius; dff6: b2b6 uxth r6, r6 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { dff8: 2200 movs r2, #0 dffa: a804 add r0, sp, #16 corner_area.y2 = a_p->y1 + radius; dffc: 9301 str r3, [sp, #4] corner_area.x2 = a_p->x1 + radius; dffe: f8ad 6014 strh.w r6, [sp, #20] corner_area.y1 = a_p->y1; e002: f8ad b012 strh.w fp, [sp, #18] corner_area.y2 = a_p->y1 + radius; e006: f8ad 4016 strh.w r4, [sp, #22] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e00a: f7ff ffad bl df68 <_lv_area_is_point_on> e00e: 9b03 ldr r3, [sp, #12] e010: 4602 mov r2, r0 e012: b138 cbz r0, e024 <_lv_area_is_point_on+0xbc> corner_area.x2 += radius; e014: 442e add r6, r5 e016: f8ad 6014 strh.w r6, [sp, #20] corner_area.y2 += radius; e01a: 9b01 ldr r3, [sp, #4] e01c: 441d add r5, r3 e01e: f8ad 5016 strh.w r5, [sp, #22] e022: e011 b.n e048 <_lv_area_is_point_on+0xe0> corner_area.y1 = a_p->y2 - radius; e024: 1b7f subs r7, r7, r5 e026: b2bf uxth r7, r7 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e028: 4641 mov r1, r8 e02a: a804 add r0, sp, #16 corner_area.y1 = a_p->y2 - radius; e02c: f8ad 7012 strh.w r7, [sp, #18] corner_area.y2 = a_p->y2; e030: f8ad 3016 strh.w r3, [sp, #22] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e034: f7ff ff98 bl df68 <_lv_area_is_point_on> e038: 4602 mov r2, r0 e03a: b158 cbz r0, e054 <_lv_area_is_point_on+0xec> corner_area.x2 += radius; e03c: 442e add r6, r5 e03e: f8ad 6014 strh.w r6, [sp, #20] corner_area.y1 -= radius; e042: 1b7d subs r5, r7, r5 e044: f8ad 5012 strh.w r5, [sp, #18] return lv_point_within_circle(&corner_area, p_p); e048: 4b13 ldr r3, [pc, #76] ; (e098 <_lv_area_is_point_on+0x130>) e04a: 4652 mov r2, sl e04c: 4649 mov r1, r9 e04e: a804 add r0, sp, #16 e050: 4798 blx r3 e052: e7a7 b.n dfa4 <_lv_area_is_point_on+0x3c> corner_area.x1 = a_p->x2 - radius; e054: 9b02 ldr r3, [sp, #8] e056: 1b5e subs r6, r3, r5 e058: b2b6 uxth r6, r6 corner_area.x2 = a_p->x2; e05a: 9b00 ldr r3, [sp, #0] corner_area.x1 = a_p->x2 - radius; e05c: f8ad 6010 strh.w r6, [sp, #16] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e060: 4641 mov r1, r8 e062: a804 add r0, sp, #16 corner_area.x2 = a_p->x2; e064: f8ad 3014 strh.w r3, [sp, #20] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e068: f7ff ff7e bl df68 <_lv_area_is_point_on> e06c: 4602 mov r2, r0 e06e: b118 cbz r0, e078 <_lv_area_is_point_on+0x110> corner_area.x1 -= radius; e070: 1b76 subs r6, r6, r5 e072: f8ad 6010 strh.w r6, [sp, #16] e076: e7e4 b.n e042 <_lv_area_is_point_on+0xda> if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e078: 4641 mov r1, r8 e07a: a804 add r0, sp, #16 corner_area.y1 = a_p->y1; e07c: f8ad b012 strh.w fp, [sp, #18] corner_area.y2 = a_p->y1 + radius; e080: f8ad 4016 strh.w r4, [sp, #22] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e084: f7ff ff70 bl df68 <_lv_area_is_point_on> e088: 2800 cmp r0, #0 e08a: d08a beq.n dfa2 <_lv_area_is_point_on+0x3a> corner_area.x1 -= radius; e08c: 1b76 subs r6, r6, r5 e08e: f8ad 6010 strh.w r6, [sp, #16] e092: e7c2 b.n e01a <_lv_area_is_point_on+0xb2> return false; e094: 2000 movs r0, #0 e096: e785 b.n dfa4 <_lv_area_is_point_on+0x3c> e098: 0000de77 .word 0x0000de77 0000e09c <_lv_area_is_on>: if((a1_p->x1 <= a2_p->x2) && (a1_p->x2 >= a2_p->x1) && (a1_p->y1 <= a2_p->y2) && (a1_p->y2 >= a2_p->y1)) { e09c: f9b0 2000 ldrsh.w r2, [r0] e0a0: f9b1 3004 ldrsh.w r3, [r1, #4] e0a4: 429a cmp r2, r3 e0a6: dc14 bgt.n e0d2 <_lv_area_is_on+0x36> e0a8: f9b0 2004 ldrsh.w r2, [r0, #4] e0ac: f9b1 3000 ldrsh.w r3, [r1] e0b0: 429a cmp r2, r3 e0b2: db0e blt.n e0d2 <_lv_area_is_on+0x36> e0b4: f9b0 2002 ldrsh.w r2, [r0, #2] e0b8: f9b1 3006 ldrsh.w r3, [r1, #6] e0bc: 429a cmp r2, r3 e0be: dc08 bgt.n e0d2 <_lv_area_is_on+0x36> e0c0: f9b0 0006 ldrsh.w r0, [r0, #6] e0c4: f9b1 3002 ldrsh.w r3, [r1, #2] e0c8: 4298 cmp r0, r3 e0ca: bfb4 ite lt e0cc: 2000 movlt r0, #0 e0ce: 2001 movge r0, #1 e0d0: 4770 bx lr return false; e0d2: 2000 movs r0, #0 } e0d4: 4770 bx lr ... 0000e0d8 <_lv_area_is_in>: { e0d8: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && e0dc: f9b0 7000 ldrsh.w r7, [r0] e0e0: f9b1 3000 ldrsh.w r3, [r1] e0e4: 42bb cmp r3, r7 { e0e6: 4605 mov r5, r0 e0e8: 460c mov r4, r1 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && e0ea: dc24 bgt.n e136 <_lv_area_is_in+0x5e> e0ec: f9b0 1002 ldrsh.w r1, [r0, #2] e0f0: f9b4 3002 ldrsh.w r3, [r4, #2] e0f4: 4299 cmp r1, r3 e0f6: db1e blt.n e136 <_lv_area_is_in+0x5e> e0f8: f9b0 1004 ldrsh.w r1, [r0, #4] e0fc: f9b4 3004 ldrsh.w r3, [r4, #4] e100: 4299 cmp r1, r3 e102: dc18 bgt.n e136 <_lv_area_is_in+0x5e> e104: f9b0 3006 ldrsh.w r3, [r0, #6] e108: f9b4 0006 ldrsh.w r0, [r4, #6] e10c: 4283 cmp r3, r0 e10e: bfcc ite gt e110: 2000 movgt r0, #0 e112: 2001 movle r0, #1 if(radius == 0) return is_in; e114: b162 cbz r2, e130 <_lv_area_is_in+0x58> p.y = ain_p->y1; e116: 886b ldrh r3, [r5, #2] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e118: 4e16 ldr r6, [pc, #88] ; (e174 <_lv_area_is_in+0x9c>) e11a: 9201 str r2, [sp, #4] e11c: a903 add r1, sp, #12 e11e: 4620 mov r0, r4 p.x = ain_p->x1; e120: f8ad 700c strh.w r7, [sp, #12] p.y = ain_p->y1; e124: f8ad 300e strh.w r3, [sp, #14] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e128: 47b0 blx r6 e12a: 9a01 ldr r2, [sp, #4] e12c: b928 cbnz r0, e13a <_lv_area_is_in+0x62> e12e: 2000 movs r0, #0 } e130: b004 add sp, #16 e132: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} bool is_in = false; e136: 2000 movs r0, #0 e138: e7ec b.n e114 <_lv_area_is_in+0x3c> p.x = ain_p->x2; e13a: f9b5 8004 ldrsh.w r8, [r5, #4] e13e: f8ad 800c strh.w r8, [sp, #12] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e142: a903 add r1, sp, #12 e144: 4620 mov r0, r4 e146: 9201 str r2, [sp, #4] e148: 47b0 blx r6 e14a: 2800 cmp r0, #0 e14c: d0ef beq.n e12e <_lv_area_is_in+0x56> p.y = ain_p->y2; e14e: 88eb ldrh r3, [r5, #6] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e150: 9a01 ldr r2, [sp, #4] p.x = ain_p->x1; e152: f8ad 700c strh.w r7, [sp, #12] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e156: a903 add r1, sp, #12 e158: 4620 mov r0, r4 p.y = ain_p->y2; e15a: f8ad 300e strh.w r3, [sp, #14] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e15e: 47b0 blx r6 e160: 2800 cmp r0, #0 e162: d0e4 beq.n e12e <_lv_area_is_in+0x56> if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e164: 9a01 ldr r2, [sp, #4] p.x = ain_p->x2; e166: f8ad 800c strh.w r8, [sp, #12] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e16a: a903 add r1, sp, #12 e16c: 4620 mov r0, r4 e16e: 47b0 blx r6 e170: e7de b.n e130 <_lv_area_is_in+0x58> e172: bf00 nop e174: 0000df69 .word 0x0000df69 0000e178 <_lv_area_align>: { e178: b5f0 push {r4, r5, r6, r7, lr} e17a: 8844 ldrh r4, [r0, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e17c: 8805 ldrh r5, [r0, #0] switch(align) { e17e: 2a14 cmp r2, #20 e180: d83f bhi.n e202 <_lv_area_align+0x8a> e182: e8df f012 tbh [pc, r2, lsl #1] e186: 0015 .short 0x0015 e188: 0045003b .word 0x0045003b e18c: 0061005a .word 0x0061005a e190: 007c0069 .word 0x007c0069 e194: 00850083 .word 0x00850083 e198: 0093008c .word 0x0093008c e19c: 00ad00a6 .word 0x00ad00a6 e1a0: 00c600b3 .word 0x00c600b3 e1a4: 00d200cd .word 0x00d200cd e1a8: 00dc00d7 .word 0x00dc00d7 e1ac: 00e200df .word 0x00e200df e1b0: 8882 ldrh r2, [r0, #4] e1b2: 880f ldrh r7, [r1, #0] e1b4: 3201 adds r2, #1 e1b6: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e1b8: f3c2 36c0 ubfx r6, r2, #15, #1 e1bc: fa06 f682 sxtah r6, r6, r2 e1c0: 888a ldrh r2, [r1, #4] e1c2: 3201 adds r2, #1 e1c4: 1bd2 subs r2, r2, r7 e1c6: f3c2 37c0 ubfx r7, r2, #15, #1 e1ca: fa07 f282 sxtah r2, r7, r2 e1ce: 1052 asrs r2, r2, #1 e1d0: ebc2 0266 rsb r2, r2, r6, asr #1 res->x = lv_area_get_width(base); e1d4: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e1d6: 88c2 ldrh r2, [r0, #6] e1d8: 3201 adds r2, #1 e1da: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; e1dc: f3c2 30c0 ubfx r0, r2, #15, #1 e1e0: fa00 f082 sxtah r0, r0, r2 e1e4: 88ca ldrh r2, [r1, #6] e1e6: 8849 ldrh r1, [r1, #2] e1e8: 3201 adds r2, #1 e1ea: 1a52 subs r2, r2, r1 e1ec: f3c2 31c0 ubfx r1, r2, #15, #1 e1f0: fa01 f282 sxtah r2, r1, r2 e1f4: 1052 asrs r2, r2, #1 e1f6: ebc2 0260 rsb r2, r2, r0, asr #1 e1fa: e001 b.n e200 <_lv_area_align+0x88> res->x = 0; e1fc: 2200 movs r2, #0 e1fe: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); e200: 805a strh r2, [r3, #2] res->x += base->x1; e202: 881a ldrh r2, [r3, #0] e204: 4415 add r5, r2 res->y += base->y1; e206: 885a ldrh r2, [r3, #2] res->x += base->x1; e208: 801d strh r5, [r3, #0] res->y += base->y1; e20a: 4414 add r4, r2 e20c: 805c strh r4, [r3, #2] } e20e: bdf0 pop {r4, r5, r6, r7, pc} return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e210: 8882 ldrh r2, [r0, #4] e212: 3201 adds r2, #1 e214: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e216: f3c2 30c0 ubfx r0, r2, #15, #1 e21a: fa00 f082 sxtah r0, r0, r2 e21e: 888a ldrh r2, [r1, #4] e220: 8809 ldrh r1, [r1, #0] e222: 3201 adds r2, #1 e224: 1a52 subs r2, r2, r1 e226: f3c2 31c0 ubfx r1, r2, #15, #1 e22a: fa01 f282 sxtah r2, r1, r2 e22e: 1052 asrs r2, r2, #1 e230: ebc2 0260 rsb r2, r2, r0, asr #1 res->x = lv_area_get_width(base); e234: 801a strh r2, [r3, #0] res->y = 0; e236: 2200 movs r2, #0 e238: e7e2 b.n e200 <_lv_area_align+0x88> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e23a: 880a ldrh r2, [r1, #0] e23c: 8889 ldrh r1, [r1, #4] e23e: 1a52 subs r2, r2, r1 e240: 8881 ldrh r1, [r0, #4] e242: 440a add r2, r1 e244: 1b52 subs r2, r2, r5 e246: e7f5 b.n e234 <_lv_area_align+0xbc> res->x = 0; e248: 2200 movs r2, #0 res->x = lv_area_get_width(base); e24a: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); e24c: 884a ldrh r2, [r1, #2] e24e: 88c9 ldrh r1, [r1, #6] e250: 1a52 subs r2, r2, r1 e252: 88c1 ldrh r1, [r0, #6] e254: 440a add r2, r1 e256: e047 b.n e2e8 <_lv_area_align+0x170> e258: 8882 ldrh r2, [r0, #4] e25a: 880f ldrh r7, [r1, #0] e25c: 3201 adds r2, #1 e25e: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e260: f3c2 36c0 ubfx r6, r2, #15, #1 e264: fa06 f682 sxtah r6, r6, r2 e268: 888a ldrh r2, [r1, #4] e26a: 3201 adds r2, #1 e26c: 1bd2 subs r2, r2, r7 e26e: f3c2 37c0 ubfx r7, r2, #15, #1 e272: fa07 f282 sxtah r2, r7, r2 e276: 1052 asrs r2, r2, #1 e278: ebc2 0266 rsb r2, r2, r6, asr #1 e27c: e7e5 b.n e24a <_lv_area_align+0xd2> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e27e: 888e ldrh r6, [r1, #4] e280: 880a ldrh r2, [r1, #0] e282: 1b92 subs r2, r2, r6 e284: 8886 ldrh r6, [r0, #4] e286: 4432 add r2, r6 e288: 1b52 subs r2, r2, r5 e28a: e7de b.n e24a <_lv_area_align+0xd2> res->x = 0; e28c: 2200 movs r2, #0 e28e: e7a1 b.n e1d4 <_lv_area_align+0x5c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e290: 888e ldrh r6, [r1, #4] e292: 880a ldrh r2, [r1, #0] e294: 1b92 subs r2, r2, r6 e296: 8886 ldrh r6, [r0, #4] e298: 4432 add r2, r6 e29a: 1b52 subs r2, r2, r5 e29c: e79a b.n e1d4 <_lv_area_align+0x5c> res->x = 0; e29e: 2200 movs r2, #0 res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e2a0: 801a strh r2, [r3, #0] res->y = -lv_area_get_height(to_align); e2a2: 884a ldrh r2, [r1, #2] e2a4: 88c9 ldrh r1, [r1, #6] e2a6: 3a01 subs r2, #1 e2a8: 1a52 subs r2, r2, r1 e2aa: e7a9 b.n e200 <_lv_area_align+0x88> e2ac: 8882 ldrh r2, [r0, #4] e2ae: 880e ldrh r6, [r1, #0] e2b0: 3201 adds r2, #1 e2b2: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e2b4: f3c2 30c0 ubfx r0, r2, #15, #1 e2b8: fa00 f082 sxtah r0, r0, r2 e2bc: 888a ldrh r2, [r1, #4] e2be: 3201 adds r2, #1 e2c0: 1b92 subs r2, r2, r6 e2c2: f3c2 36c0 ubfx r6, r2, #15, #1 e2c6: fa06 f282 sxtah r2, r6, r2 e2ca: 1052 asrs r2, r2, #1 e2cc: ebc2 0260 rsb r2, r2, r0, asr #1 e2d0: e7e6 b.n e2a0 <_lv_area_align+0x128> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e2d2: 880a ldrh r2, [r1, #0] e2d4: 888e ldrh r6, [r1, #4] e2d6: 8880 ldrh r0, [r0, #4] e2d8: 1b92 subs r2, r2, r6 e2da: 4402 add r2, r0 e2dc: 1b52 subs r2, r2, r5 e2de: e7df b.n e2a0 <_lv_area_align+0x128> res->x = 0; e2e0: 2200 movs r2, #0 res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e2e2: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e2e4: 88c2 ldrh r2, [r0, #6] e2e6: 3201 adds r2, #1 res->y = lv_area_get_height(base) - lv_area_get_height(to_align); e2e8: 1b12 subs r2, r2, r4 e2ea: e789 b.n e200 <_lv_area_align+0x88> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e2ec: 8882 ldrh r2, [r0, #4] e2ee: 3201 adds r2, #1 e2f0: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e2f2: f3c2 36c0 ubfx r6, r2, #15, #1 e2f6: fa06 f682 sxtah r6, r6, r2 e2fa: 888a ldrh r2, [r1, #4] e2fc: 8809 ldrh r1, [r1, #0] e2fe: 3201 adds r2, #1 e300: 1a52 subs r2, r2, r1 e302: f3c2 31c0 ubfx r1, r2, #15, #1 e306: fa01 f282 sxtah r2, r1, r2 e30a: 1052 asrs r2, r2, #1 e30c: ebc2 0266 rsb r2, r2, r6, asr #1 e310: e7e7 b.n e2e2 <_lv_area_align+0x16a> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e312: 880a ldrh r2, [r1, #0] e314: 8889 ldrh r1, [r1, #4] e316: 1a52 subs r2, r2, r1 e318: 8881 ldrh r1, [r0, #4] e31a: 440a add r2, r1 e31c: 1b52 subs r2, r2, r5 e31e: e7e0 b.n e2e2 <_lv_area_align+0x16a> res->x = -lv_area_get_width(to_align); e320: 880a ldrh r2, [r1, #0] e322: 8889 ldrh r1, [r1, #4] e324: 3a01 subs r2, #1 e326: 1a52 subs r2, r2, r1 e328: e784 b.n e234 <_lv_area_align+0xbc> res->x = -lv_area_get_width(to_align); e32a: 880a ldrh r2, [r1, #0] e32c: 888e ldrh r6, [r1, #4] e32e: 3a01 subs r2, #1 e330: 1b92 subs r2, r2, r6 e332: e74f b.n e1d4 <_lv_area_align+0x5c> res->x = -lv_area_get_width(to_align); e334: 880a ldrh r2, [r1, #0] e336: 888e ldrh r6, [r1, #4] e338: 3a01 subs r2, #1 e33a: 1b92 subs r2, r2, r6 e33c: e785 b.n e24a <_lv_area_align+0xd2> e33e: 8882 ldrh r2, [r0, #4] e340: 3201 adds r2, #1 e342: e77f b.n e244 <_lv_area_align+0xcc> e344: 8882 ldrh r2, [r0, #4] e346: 3201 adds r2, #1 e348: e7a7 b.n e29a <_lv_area_align+0x122> e34a: 8882 ldrh r2, [r0, #4] e34c: 3201 adds r2, #1 e34e: e79b b.n e288 <_lv_area_align+0x110> 0000e350 : LV_ATTRIBUTE_FAST_MEM void lv_color_fill(lv_color_t * buf, lv_color_t color, uint32_t px_num) { #if LV_COLOR_DEPTH == 16 uintptr_t buf_int = (uintptr_t) buf; if(buf_int & 0x3) { e350: 0783 lsls r3, r0, #30 { e352: b510 push {r4, lr} e354: b28c uxth r4, r1 *buf = color; e356: bf1c itt ne e358: f820 1b02 strhne.w r1, [r0], #2 buf++; px_num--; e35c: f102 32ff addne.w r2, r2, #4294967295 ; 0xffffffff } uint32_t c32 = color.full + (color.full << 16); e360: eb04 4304 add.w r3, r4, r4, lsl #16 uint32_t * buf32 = (uint32_t *)buf; while(px_num > 16) { e364: 2a10 cmp r2, #16 e366: 4601 mov r1, r0 e368: f100 0020 add.w r0, r0, #32 e36c: d804 bhi.n e378 e36e: eb01 0242 add.w r2, r1, r2, lsl #1 px_num -= 16; } buf = (lv_color_t *)buf32; while(px_num) { e372: 4291 cmp r1, r2 e374: d10a bne.n e38c *buf = color; buf++; px_num --; } #endif } e376: bd10 pop {r4, pc} *buf32 = c32; e378: e940 3308 strd r3, r3, [r0, #-32] *buf32 = c32; e37c: e940 3306 strd r3, r3, [r0, #-24] *buf32 = c32; e380: e940 3304 strd r3, r3, [r0, #-16] *buf32 = c32; e384: e940 3302 strd r3, r3, [r0, #-8] px_num -= 16; e388: 3a10 subs r2, #16 e38a: e7eb b.n e364 *buf = color; e38c: f821 4b02 strh.w r4, [r1], #2 px_num --; e390: e7ef b.n e372 0000e392 : lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl) { e392: b530 push {r4, r5, lr} { lv_color_t ret; #if LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e394: f3c0 1345 ubfx r3, r0, #5, #6 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e398: f1c1 05ff rsb r5, r1, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e39c: 436b muls r3, r5 e39e: 243f movs r4, #63 ; 0x3f e3a0: fb14 3301 smlabb r3, r4, r1, r3 e3a4: f248 0481 movw r4, #32897 ; 0x8081 e3a8: 4363 muls r3, r4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e3aa: ebc1 1241 rsb r2, r1, r1, lsl #5 #else /*LV_COLOR_DEPTH == 1*/ ret.full = mix > LV_OPA_50 ? c1.full : c2.full; #endif return ret; e3ae: f3c3 51c5 ubfx r1, r3, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e3b2: f000 031f and.w r3, r0, #31 e3b6: fb05 2303 mla r3, r5, r3, r2 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e3ba: f3c0 20c4 ubfx r0, r0, #11, #5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e3be: 4363 muls r3, r4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e3c0: fb05 2000 mla r0, r5, r0, r2 e3c4: 4360 muls r0, r4 e3c6: f3c3 53c4 ubfx r3, r3, #23, #5 e3ca: ea43 1341 orr.w r3, r3, r1, lsl #5 e3ce: 0dc0 lsrs r0, r0, #23 return lv_color_mix(LV_COLOR_WHITE, c, lvl); } e3d0: ea43 20c0 orr.w r0, r3, r0, lsl #11 e3d4: bd30 pop {r4, r5, pc} 0000e3d6 : e3d6: f1c1 01ff rsb r1, r1, #255 ; 0xff LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e3da: f3c0 1345 ubfx r3, r0, #5, #6 lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl) { e3de: b510 push {r4, lr} e3e0: 434b muls r3, r1 e3e2: f248 0481 movw r4, #32897 ; 0x8081 e3e6: 4363 muls r3, r4 e3e8: 0dda lsrs r2, r3, #23 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e3ea: f000 031f and.w r3, r0, #31 e3ee: 434b muls r3, r1 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e3f0: f3c0 20c4 ubfx r0, r0, #11, #5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e3f4: 4363 muls r3, r4 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e3f6: 4348 muls r0, r1 e3f8: 4360 muls r0, r4 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e3fa: 0ddb lsrs r3, r3, #23 e3fc: ea43 1342 orr.w r3, r3, r2, lsl #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e400: 0dc0 lsrs r0, r0, #23 return lv_color_mix(LV_COLOR_BLACK, c, lvl); } e402: ea43 20c0 orr.w r0, r3, r0, lsl #11 e406: bd10 pop {r4, pc} 0000e408 : static const char * lv_fs_get_real_path(const char * path) { /* Example path: "S:/folder/file.txt" * Leave the letter and the : / \ characters*/ path++; /*Ignore the driver letter*/ e408: 1c43 adds r3, r0, #1 e40a: 4618 mov r0, r3 while(*path != '\0') { e40c: f813 2b01 ldrb.w r2, [r3], #1 e410: b12a cbz r2, e41e if(*path == ':' || *path == '\\' || *path == '/') { e412: 2a3a cmp r2, #58 ; 0x3a e414: d0f9 beq.n e40a e416: 2a5c cmp r2, #92 ; 0x5c e418: d0f7 beq.n e40a e41a: 2a2f cmp r2, #47 ; 0x2f e41c: d0f5 beq.n e40a break; } } return path; } e41e: 4770 bx lr 0000e420 <_lv_fs_init>: _lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t)); e420: 4801 ldr r0, [pc, #4] ; (e428 <_lv_fs_init+0x8>) e422: 4b02 ldr r3, [pc, #8] ; (e42c <_lv_fs_init+0xc>) e424: 2144 movs r1, #68 ; 0x44 e426: 4718 bx r3 e428: 20008624 .word 0x20008624 e42c: 0000e64d .word 0x0000e64d 0000e430 : { e430: b538 push {r3, r4, r5, lr} e432: 4604 mov r4, r0 if(file_p->drv == NULL) { e434: 6840 ldr r0, [r0, #4] e436: b160 cbz r0, e452 if(file_p->drv->close_cb == NULL) { e438: 6903 ldr r3, [r0, #16] e43a: b163 cbz r3, e456 lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); e43c: 6821 ldr r1, [r4, #0] e43e: 4798 blx r3 lv_mem_free(file_p->file_d); /*Clean up*/ e440: 4b06 ldr r3, [pc, #24] ; (e45c ) lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); e442: 4605 mov r5, r0 lv_mem_free(file_p->file_d); /*Clean up*/ e444: 6820 ldr r0, [r4, #0] e446: 4798 blx r3 file_p->file_d = NULL; e448: 2300 movs r3, #0 file_p->drv = NULL; e44a: e9c4 3300 strd r3, r3, [r4] } e44e: 4628 mov r0, r5 e450: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_INV_PARAM; e452: 250b movs r5, #11 e454: e7fb b.n e44e return LV_FS_RES_NOT_IMP; e456: 2509 movs r5, #9 e458: e7f9 b.n e44e e45a: bf00 nop e45c: 0000eb2d .word 0x0000eb2d 0000e460 : { e460: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} if(br != NULL) *br = 0; e462: 461c mov r4, r3 e464: b10b cbz r3, e46a e466: 2300 movs r3, #0 e468: 6023 str r3, [r4, #0] if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; e46a: 6845 ldr r5, [r0, #4] e46c: b17d cbz r5, e48e if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; e46e: 69ae ldr r6, [r5, #24] e470: b17e cbz r6, e492 uint32_t br_tmp = 0; e472: 2300 movs r3, #0 e474: 9303 str r3, [sp, #12] lv_fs_res_t res = file_p->drv->read_cb(file_p->drv, file_p->file_d, buf, btr, &br_tmp); e476: ab03 add r3, sp, #12 e478: 9300 str r3, [sp, #0] e47a: 4613 mov r3, r2 e47c: 460a mov r2, r1 e47e: 6801 ldr r1, [r0, #0] e480: 4628 mov r0, r5 e482: 47b0 blx r6 if(br != NULL) *br = br_tmp; e484: b10c cbz r4, e48a e486: 9b03 ldr r3, [sp, #12] e488: 6023 str r3, [r4, #0] } e48a: b004 add sp, #16 e48c: bd70 pop {r4, r5, r6, pc} if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; e48e: 200b movs r0, #11 e490: e7fb b.n e48a if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; e492: 2009 movs r0, #9 e494: e7f9 b.n e48a 0000e496 : if(file_p->drv == NULL) { e496: 6843 ldr r3, [r0, #4] { e498: b410 push {r4} e49a: 460a mov r2, r1 if(file_p->drv == NULL) { e49c: b13b cbz r3, e4ae if(file_p->drv->seek_cb == NULL) { e49e: 6a1c ldr r4, [r3, #32] e4a0: b14c cbz r4, e4b6 lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); e4a2: 6801 ldr r1, [r0, #0] e4a4: 4618 mov r0, r3 e4a6: 4623 mov r3, r4 } e4a8: f85d 4b04 ldr.w r4, [sp], #4 lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); e4ac: 4718 bx r3 return LV_FS_RES_INV_PARAM; e4ae: 200b movs r0, #11 } e4b0: f85d 4b04 ldr.w r4, [sp], #4 e4b4: 4770 bx lr return LV_FS_RES_NOT_IMP; e4b6: 2009 movs r0, #9 e4b8: e7fa b.n e4b0 ... 0000e4bc : { e4bc: b570 push {r4, r5, r6, lr} _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { e4be: 4b07 ldr r3, [pc, #28] ; (e4dc ) e4c0: 4d07 ldr r5, [pc, #28] ; (e4e0 ) e4c2: 4e08 ldr r6, [pc, #32] ; (e4e4 ) { e4c4: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { e4c6: 4806 ldr r0, [pc, #24] ; (e4e0 ) e4c8: 4798 blx r3 e4ca: b900 cbnz r0, e4ce } e4cc: bd70 pop {r4, r5, r6, pc} if(drv->letter == letter) { e4ce: 7803 ldrb r3, [r0, #0] e4d0: 42a3 cmp r3, r4 e4d2: d0fb beq.n e4cc _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { e4d4: 4601 mov r1, r0 e4d6: 4628 mov r0, r5 e4d8: 47b0 blx r6 e4da: e7f6 b.n e4ca e4dc: 0000e6f1 .word 0x0000e6f1 e4e0: 20008624 .word 0x20008624 e4e4: 0000e6fd .word 0x0000e6fd 0000e4e8 : file_p->drv = NULL; e4e8: 2300 movs r3, #0 { e4ea: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} file_p->file_d = NULL; e4ee: e9c0 3300 strd r3, r3, [r0] { e4f2: 4604 mov r4, r0 e4f4: 4617 mov r7, r2 if(path == NULL) return LV_FS_RES_INV_PARAM; e4f6: 460e mov r6, r1 e4f8: 2900 cmp r1, #0 e4fa: d043 beq.n e584 file_p->drv = lv_fs_get_drv(letter); e4fc: 7808 ldrb r0, [r1, #0] e4fe: 4b23 ldr r3, [pc, #140] ; (e58c ) e500: 4798 blx r3 e502: 6060 str r0, [r4, #4] if(file_p->drv == NULL) { e504: b928 cbnz r0, e512 file_p->file_d = NULL; e506: 6020 str r0, [r4, #0] return LV_FS_RES_NOT_EX; e508: 2503 movs r5, #3 } e50a: 4628 mov r0, r5 e50c: b002 add sp, #8 e50e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(file_p->drv->ready_cb != NULL) { e512: 6883 ldr r3, [r0, #8] e514: b12b cbz r3, e522 if(file_p->drv->ready_cb(file_p->drv) == false) { e516: 4798 blx r3 e518: b918 cbnz r0, e522 file_p->file_d = NULL; e51a: e9c4 0000 strd r0, r0, [r4] return LV_FS_RES_HW_ERR; e51e: 2501 movs r5, #1 e520: e7f3 b.n e50a file_p->file_d = lv_mem_alloc(file_p->drv->file_size); e522: 6863 ldr r3, [r4, #4] e524: 8858 ldrh r0, [r3, #2] e526: 4b1a ldr r3, [pc, #104] ; (e590 ) e528: 4798 blx r3 LV_ASSERT_MEM(file_p->file_d); e52a: 4b1a ldr r3, [pc, #104] ; (e594 ) file_p->file_d = lv_mem_alloc(file_p->drv->file_size); e52c: 6020 str r0, [r4, #0] LV_ASSERT_MEM(file_p->file_d); e52e: 4798 blx r3 e530: 4605 mov r5, r0 e532: b960 cbnz r0, e54e e534: 4b18 ldr r3, [pc, #96] ; (e598 ) e536: 4919 ldr r1, [pc, #100] ; (e59c ) e538: 9300 str r3, [sp, #0] e53a: 226f movs r2, #111 ; 0x6f e53c: 2003 movs r0, #3 e53e: 4e18 ldr r6, [pc, #96] ; (e5a0 ) e540: 47b0 blx r6 e542: 6822 ldr r2, [r4, #0] e544: 4817 ldr r0, [pc, #92] ; (e5a4 ) e546: 4918 ldr r1, [pc, #96] ; (e5a8 ) e548: 462b mov r3, r5 e54a: 4788 blx r1 e54c: e7fe b.n e54c if(file_p->file_d == NULL) { e54e: 6821 ldr r1, [r4, #0] e550: b911 cbnz r1, e558 file_p->drv = NULL; e552: 6061 str r1, [r4, #4] return LV_FS_RES_OUT_OF_MEM; /* Out of memory */ e554: 250a movs r5, #10 e556: e7d8 b.n e50a if(file_p->drv->open_cb == NULL) { e558: f8d4 8004 ldr.w r8, [r4, #4] e55c: f8d8 500c ldr.w r5, [r8, #12] e560: b195 cbz r5, e588 const char * real_path = lv_fs_get_real_path(path); e562: 4b12 ldr r3, [pc, #72] ; (e5ac ) e564: 4630 mov r0, r6 e566: 4798 blx r3 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); e568: 463b mov r3, r7 const char * real_path = lv_fs_get_real_path(path); e56a: 4602 mov r2, r0 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); e56c: 4640 mov r0, r8 e56e: 47a8 blx r5 if(res != LV_FS_RES_OK) { e570: 4605 mov r5, r0 e572: 2800 cmp r0, #0 e574: d0c9 beq.n e50a lv_mem_free(file_p->file_d); e576: 4b0e ldr r3, [pc, #56] ; (e5b0 ) e578: 6820 ldr r0, [r4, #0] e57a: 4798 blx r3 file_p->file_d = NULL; e57c: 2300 movs r3, #0 file_p->drv = NULL; e57e: e9c4 3300 strd r3, r3, [r4] e582: e7c2 b.n e50a if(path == NULL) return LV_FS_RES_INV_PARAM; e584: 250b movs r5, #11 e586: e7c0 b.n e50a return LV_FS_RES_NOT_IMP; e588: 2509 movs r5, #9 e58a: e7be b.n e50a e58c: 0000e4bd .word 0x0000e4bd e590: 0000ea75 .word 0x0000ea75 e594: 00001795 .word 0x00001795 e598: 00023fb1 .word 0x00023fb1 e59c: 00023f70 .word 0x00023f70 e5a0: 0000e931 .word 0x0000e931 e5a4: 0001ee02 .word 0x0001ee02 e5a8: 0000179d .word 0x0000179d e5ac: 0000e409 .word 0x0000e409 e5b0: 0000eb2d .word 0x0000eb2d 0000e5b4 : { e5b4: b510 push {r4, lr} for(i = strlen(fn); i > 0; i--) { e5b6: 4b09 ldr r3, [pc, #36] ; (e5dc ) { e5b8: 4604 mov r4, r0 for(i = strlen(fn); i > 0; i--) { e5ba: 4798 blx r3 e5bc: b908 cbnz r0, e5c2 return ""; /*No extension if a '\' or '/' found*/ e5be: 4808 ldr r0, [pc, #32] ; (e5e0 ) e5c0: e004 b.n e5cc if(fn[i] == '.') { e5c2: 5c23 ldrb r3, [r4, r0] e5c4: 2b2e cmp r3, #46 ; 0x2e e5c6: d102 bne.n e5ce return &fn[i + 1]; e5c8: 3001 adds r0, #1 e5ca: 4420 add r0, r4 } e5cc: bd10 pop {r4, pc} else if(fn[i] == '/' || fn[i] == '\\') { e5ce: 2b2f cmp r3, #47 ; 0x2f e5d0: d0f5 beq.n e5be e5d2: 2b5c cmp r3, #92 ; 0x5c e5d4: d0f3 beq.n e5be for(i = strlen(fn); i > 0; i--) { e5d6: 3801 subs r0, #1 e5d8: e7f0 b.n e5bc e5da: bf00 nop e5dc: 0001637d .word 0x0001637d e5e0: 0001f81c .word 0x0001f81c 0000e5e4 <_lv_memcpy_small.constprop.0.isra.0>: while(len) { e5e4: 3901 subs r1, #1 e5e6: 1d03 adds r3, r0, #4 *d8 = *s8; e5e8: f811 2f01 ldrb.w r2, [r1, #1]! e5ec: f800 2b01 strb.w r2, [r0], #1 while(len) { e5f0: 4298 cmp r0, r3 e5f2: d1f9 bne.n e5e8 <_lv_memcpy_small.constprop.0.isra.0+0x4> s8++; len--; } return dst; } e5f4: 4770 bx lr ... 0000e5f8 : * @param ll_p pointer to linked list * @param act pointer to a node which prev. node pointer should be set * @param prev pointer to a node which should be the previous node before 'act' */ static void node_set_prev(lv_ll_t * ll_p, lv_ll_node_t * act, lv_ll_node_t * prev) { e5f8: b507 push {r0, r1, r2, lr} e5fa: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the prev node of `NULL`*/ e5fc: b129 cbz r1, e60a uint32_t node_p_size = sizeof(lv_ll_node_t *); if(prev) _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); e5fe: 6800 ldr r0, [r0, #0] e600: 4408 add r0, r1 if(prev) e602: b12a cbz r2, e610 _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); e604: 4b04 ldr r3, [pc, #16] ; (e618 ) e606: a901 add r1, sp, #4 e608: 4798 blx r3 else _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); } e60a: b003 add sp, #12 e60c: f85d fb04 ldr.w pc, [sp], #4 _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); e610: 4b02 ldr r3, [pc, #8] ; (e61c ) e612: 2104 movs r1, #4 e614: 4798 blx r3 e616: e7f8 b.n e60a e618: 0000e5e5 .word 0x0000e5e5 e61c: 0000f061 .word 0x0000f061 0000e620 : * @param ll_p pointer to linked list * @param act pointer to a node which next node pointer should be set * @param next pointer to a node which should be the next node before 'act' */ static void node_set_next(lv_ll_t * ll_p, lv_ll_node_t * act, lv_ll_node_t * next) { e620: b507 push {r0, r1, r2, lr} e622: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the next node of `NULL`*/ e624: b131 cbz r1, e634 uint32_t node_p_size = sizeof(lv_ll_node_t *); if(next) _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); e626: 6800 ldr r0, [r0, #0] e628: 3004 adds r0, #4 e62a: 4408 add r0, r1 if(next) e62c: b12a cbz r2, e63a _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); e62e: 4b05 ldr r3, [pc, #20] ; (e644 ) e630: a901 add r1, sp, #4 e632: 4798 blx r3 else _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); } e634: b003 add sp, #12 e636: f85d fb04 ldr.w pc, [sp], #4 _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); e63a: 4b03 ldr r3, [pc, #12] ; (e648 ) e63c: 2104 movs r1, #4 e63e: 4798 blx r3 e640: e7f8 b.n e634 e642: bf00 nop e644: 0000e5e5 .word 0x0000e5e5 e648: 0000f061 .word 0x0000f061 0000e64c <_lv_ll_init>: ll_p->head = NULL; e64c: 2300 movs r3, #0 ll_p->tail = NULL; e64e: e9c0 3301 strd r3, r3, [r0, #4] if(node_size & 0x3) { e652: 078b lsls r3, r1, #30 node_size = node_size & (~0x3); e654: bf1c itt ne e656: f021 0103 bicne.w r1, r1, #3 node_size += 4; e65a: 3104 addne r1, #4 ll_p->n_size = node_size; e65c: 6001 str r1, [r0, #0] } e65e: 4770 bx lr 0000e660 <_lv_ll_ins_head>: { e660: b570 push {r4, r5, r6, lr} e662: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); e664: 6800 ldr r0, [r0, #0] e666: 4b0d ldr r3, [pc, #52] ; (e69c <_lv_ll_ins_head+0x3c>) e668: 3008 adds r0, #8 e66a: 4798 blx r3 if(n_new != NULL) { e66c: 4605 mov r5, r0 e66e: b190 cbz r0, e696 <_lv_ll_ins_head+0x36> node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/ e670: 4601 mov r1, r0 e672: 2200 movs r2, #0 e674: 4620 mov r0, r4 e676: 4e0a ldr r6, [pc, #40] ; (e6a0 <_lv_ll_ins_head+0x40>) e678: 47b0 blx r6 node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/ e67a: 4629 mov r1, r5 e67c: 6862 ldr r2, [r4, #4] e67e: 4b09 ldr r3, [pc, #36] ; (e6a4 <_lv_ll_ins_head+0x44>) e680: 4620 mov r0, r4 e682: 4798 blx r3 if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/ e684: 6861 ldr r1, [r4, #4] e686: b111 cbz r1, e68e <_lv_ll_ins_head+0x2e> node_set_prev(ll_p, ll_p->head, n_new); e688: 462a mov r2, r5 e68a: 4620 mov r0, r4 e68c: 47b0 blx r6 if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ e68e: 68a3 ldr r3, [r4, #8] ll_p->head = n_new; /*Set the new head in the dsc.*/ e690: 6065 str r5, [r4, #4] if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ e692: b903 cbnz r3, e696 <_lv_ll_ins_head+0x36> ll_p->tail = n_new; e694: 60a5 str r5, [r4, #8] } e696: 4628 mov r0, r5 e698: bd70 pop {r4, r5, r6, pc} e69a: bf00 nop e69c: 0000ea75 .word 0x0000ea75 e6a0: 0000e5f9 .word 0x0000e5f9 e6a4: 0000e621 .word 0x0000e621 0000e6a8 <_lv_ll_ins_tail>: { e6a8: b570 push {r4, r5, r6, lr} e6aa: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); e6ac: 6800 ldr r0, [r0, #0] e6ae: 4b0d ldr r3, [pc, #52] ; (e6e4 <_lv_ll_ins_tail+0x3c>) e6b0: 3008 adds r0, #8 e6b2: 4798 blx r3 if(n_new != NULL) { e6b4: 4605 mov r5, r0 e6b6: b190 cbz r0, e6de <_lv_ll_ins_tail+0x36> node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/ e6b8: 4601 mov r1, r0 e6ba: 2200 movs r2, #0 e6bc: 4620 mov r0, r4 e6be: 4e0a ldr r6, [pc, #40] ; (e6e8 <_lv_ll_ins_tail+0x40>) e6c0: 47b0 blx r6 node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/ e6c2: 4629 mov r1, r5 e6c4: 68a2 ldr r2, [r4, #8] e6c6: 4b09 ldr r3, [pc, #36] ; (e6ec <_lv_ll_ins_tail+0x44>) e6c8: 4620 mov r0, r4 e6ca: 4798 blx r3 if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/ e6cc: 68a1 ldr r1, [r4, #8] e6ce: b111 cbz r1, e6d6 <_lv_ll_ins_tail+0x2e> node_set_next(ll_p, ll_p->tail, n_new); e6d0: 462a mov r2, r5 e6d2: 4620 mov r0, r4 e6d4: 47b0 blx r6 if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ e6d6: 6863 ldr r3, [r4, #4] ll_p->tail = n_new; /*Set the new tail in the dsc.*/ e6d8: 60a5 str r5, [r4, #8] if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ e6da: b903 cbnz r3, e6de <_lv_ll_ins_tail+0x36> ll_p->head = n_new; e6dc: 6065 str r5, [r4, #4] } e6de: 4628 mov r0, r5 e6e0: bd70 pop {r4, r5, r6, pc} e6e2: bf00 nop e6e4: 0000ea75 .word 0x0000ea75 e6e8: 0000e621 .word 0x0000e621 e6ec: 0000e5f9 .word 0x0000e5f9 0000e6f0 <_lv_ll_get_head>: if(ll_p != NULL) { e6f0: b100 cbz r0, e6f4 <_lv_ll_get_head+0x4> head = ll_p->head; e6f2: 6840 ldr r0, [r0, #4] } e6f4: 4770 bx lr 0000e6f6 <_lv_ll_get_tail>: if(ll_p != NULL) { e6f6: b100 cbz r0, e6fa <_lv_ll_get_tail+0x4> tail = ll_p->tail; e6f8: 6880 ldr r0, [r0, #8] } e6fa: 4770 bx lr 0000e6fc <_lv_ll_get_next>: { e6fc: b507 push {r0, r1, r2, lr} void * next = NULL; e6fe: 2300 movs r3, #0 e700: 9301 str r3, [sp, #4] if(ll_p != NULL) { e702: b128 cbz r0, e710 <_lv_ll_get_next+0x14> _lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *)); e704: 6803 ldr r3, [r0, #0] e706: 3304 adds r3, #4 e708: 4419 add r1, r3 e70a: a801 add r0, sp, #4 e70c: 4b02 ldr r3, [pc, #8] ; (e718 <_lv_ll_get_next+0x1c>) e70e: 4798 blx r3 } e710: 9801 ldr r0, [sp, #4] e712: b003 add sp, #12 e714: f85d fb04 ldr.w pc, [sp], #4 e718: 0000e5e5 .word 0x0000e5e5 0000e71c <_lv_ll_get_prev>: { e71c: b507 push {r0, r1, r2, lr} void * prev = NULL; e71e: 2300 movs r3, #0 e720: 9301 str r3, [sp, #4] if(ll_p != NULL) { e722: b120 cbz r0, e72e <_lv_ll_get_prev+0x12> _lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *)); e724: 6803 ldr r3, [r0, #0] e726: a801 add r0, sp, #4 e728: 4419 add r1, r3 e72a: 4b03 ldr r3, [pc, #12] ; (e738 <_lv_ll_get_prev+0x1c>) e72c: 4798 blx r3 } e72e: 9801 ldr r0, [sp, #4] e730: b003 add sp, #12 e732: f85d fb04 ldr.w pc, [sp], #4 e736: bf00 nop e738: 0000e5e5 .word 0x0000e5e5 0000e73c <_lv_ll_ins_prev>: { e73c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} e740: 460e mov r6, r1 if(NULL == ll_p || NULL == n_act) return NULL; e742: 4604 mov r4, r0 e744: b340 cbz r0, e798 <_lv_ll_ins_prev+0x5c> e746: b349 cbz r1, e79c <_lv_ll_ins_prev+0x60> if(_lv_ll_get_head(ll_p) == n_act) { e748: 6843 ldr r3, [r0, #4] e74a: 4299 cmp r1, r3 e74c: d103 bne.n e756 <_lv_ll_ins_prev+0x1a> } e74e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} n_new = _lv_ll_ins_head(ll_p); e752: 4b13 ldr r3, [pc, #76] ; (e7a0 <_lv_ll_ins_prev+0x64>) e754: 4718 bx r3 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); e756: 6800 ldr r0, [r0, #0] e758: 4b12 ldr r3, [pc, #72] ; (e7a4 <_lv_ll_ins_prev+0x68>) e75a: 3008 adds r0, #8 e75c: 4798 blx r3 if(n_new == NULL) return NULL; e75e: 4605 mov r5, r0 e760: b1b8 cbz r0, e792 <_lv_ll_ins_prev+0x56> n_prev = _lv_ll_get_prev(ll_p, n_act); e762: 4b11 ldr r3, [pc, #68] ; (e7a8 <_lv_ll_ins_prev+0x6c>) node_set_next(ll_p, n_prev, n_new); e764: f8df 8048 ldr.w r8, [pc, #72] ; e7b0 <_lv_ll_ins_prev+0x74> n_prev = _lv_ll_get_prev(ll_p, n_act); e768: 4631 mov r1, r6 e76a: 4620 mov r0, r4 e76c: 4798 blx r3 node_set_next(ll_p, n_prev, n_new); e76e: 462a mov r2, r5 n_prev = _lv_ll_get_prev(ll_p, n_act); e770: 4607 mov r7, r0 node_set_next(ll_p, n_prev, n_new); e772: 4601 mov r1, r0 e774: 4620 mov r0, r4 e776: 47c0 blx r8 node_set_prev(ll_p, n_new, n_prev); e778: 463a mov r2, r7 e77a: 4629 mov r1, r5 e77c: 4f0b ldr r7, [pc, #44] ; (e7ac <_lv_ll_ins_prev+0x70>) e77e: 4620 mov r0, r4 e780: 47b8 blx r7 node_set_prev(ll_p, n_act, n_new); e782: 462a mov r2, r5 e784: 4631 mov r1, r6 e786: 4620 mov r0, r4 e788: 47b8 blx r7 node_set_next(ll_p, n_new, n_act); e78a: 4632 mov r2, r6 e78c: 4629 mov r1, r5 e78e: 4620 mov r0, r4 e790: 47c0 blx r8 } e792: 4628 mov r0, r5 e794: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(NULL == ll_p || NULL == n_act) return NULL; e798: 4605 mov r5, r0 e79a: e7fa b.n e792 <_lv_ll_ins_prev+0x56> e79c: 460d mov r5, r1 e79e: e7f8 b.n e792 <_lv_ll_ins_prev+0x56> e7a0: 0000e661 .word 0x0000e661 e7a4: 0000ea75 .word 0x0000ea75 e7a8: 0000e71d .word 0x0000e71d e7ac: 0000e5f9 .word 0x0000e5f9 e7b0: 0000e621 .word 0x0000e621 0000e7b4 <_lv_ll_remove>: { e7b4: b570 push {r4, r5, r6, lr} e7b6: 460d mov r5, r1 if(ll_p != NULL) { e7b8: 4604 mov r4, r0 e7ba: b1f8 cbz r0, e7fc <_lv_ll_remove+0x48> if(_lv_ll_get_head(ll_p) == node_p) { e7bc: 6843 ldr r3, [r0, #4] e7be: 4299 cmp r1, r3 e7c0: d10c bne.n e7dc <_lv_ll_remove+0x28> ll_p->head = _lv_ll_get_next(ll_p, node_p); e7c2: 4629 mov r1, r5 e7c4: 4b17 ldr r3, [pc, #92] ; (e824 <_lv_ll_remove+0x70>) e7c6: 4620 mov r0, r4 e7c8: 4798 blx r3 e7ca: 4601 mov r1, r0 e7cc: 6060 str r0, [r4, #4] if(ll_p->head == NULL) { e7ce: b908 cbnz r0, e7d4 <_lv_ll_remove+0x20> ll_p->tail = NULL; e7d0: 60a0 str r0, [r4, #8] } e7d2: bd70 pop {r4, r5, r6, pc} node_set_prev(ll_p, ll_p->head, NULL); e7d4: 2200 movs r2, #0 node_set_prev(ll_p, n_next, n_prev); e7d6: 4b14 ldr r3, [pc, #80] ; (e828 <_lv_ll_remove+0x74>) e7d8: 4620 mov r0, r4 e7da: e00c b.n e7f6 <_lv_ll_remove+0x42> else if(_lv_ll_get_tail(ll_p) == node_p) { e7dc: 6883 ldr r3, [r0, #8] e7de: 4299 cmp r1, r3 e7e0: d10e bne.n e800 <_lv_ll_remove+0x4c> ll_p->tail = _lv_ll_get_prev(ll_p, node_p); e7e2: 4b12 ldr r3, [pc, #72] ; (e82c <_lv_ll_remove+0x78>) e7e4: 4798 blx r3 e7e6: 4601 mov r1, r0 e7e8: 60a0 str r0, [r4, #8] if(ll_p->tail == NULL) { e7ea: b908 cbnz r0, e7f0 <_lv_ll_remove+0x3c> ll_p->head = NULL; e7ec: 6060 str r0, [r4, #4] e7ee: e7f0 b.n e7d2 <_lv_ll_remove+0x1e> node_set_next(ll_p, ll_p->tail, NULL); e7f0: 4b0f ldr r3, [pc, #60] ; (e830 <_lv_ll_remove+0x7c>) e7f2: 2200 movs r2, #0 e7f4: 4620 mov r0, r4 } e7f6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} node_set_prev(ll_p, n_next, n_prev); e7fa: 4718 bx r3 if(_lv_ll_get_head(ll_p) == node_p) { e7fc: 2900 cmp r1, #0 e7fe: d0e0 beq.n e7c2 <_lv_ll_remove+0xe> lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); e800: 4629 mov r1, r5 e802: 4b0a ldr r3, [pc, #40] ; (e82c <_lv_ll_remove+0x78>) e804: 4620 mov r0, r4 e806: 4798 blx r3 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); e808: 4629 mov r1, r5 lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); e80a: 4606 mov r6, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); e80c: 4b05 ldr r3, [pc, #20] ; (e824 <_lv_ll_remove+0x70>) e80e: 4620 mov r0, r4 e810: 4798 blx r3 node_set_next(ll_p, n_prev, n_next); e812: 4631 mov r1, r6 e814: 4602 mov r2, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); e816: 4605 mov r5, r0 node_set_next(ll_p, n_prev, n_next); e818: 4b05 ldr r3, [pc, #20] ; (e830 <_lv_ll_remove+0x7c>) e81a: 4620 mov r0, r4 e81c: 4798 blx r3 node_set_prev(ll_p, n_next, n_prev); e81e: 4632 mov r2, r6 e820: 4629 mov r1, r5 e822: e7d8 b.n e7d6 <_lv_ll_remove+0x22> e824: 0000e6fd .word 0x0000e6fd e828: 0000e5f9 .word 0x0000e5f9 e82c: 0000e71d .word 0x0000e71d e830: 0000e621 .word 0x0000e621 0000e834 <_lv_ll_chg_list>: { e834: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} e838: 460c mov r4, r1 e83a: 461e mov r6, r3 _lv_ll_remove(ll_ori_p, node); e83c: 4611 mov r1, r2 e83e: 4b16 ldr r3, [pc, #88] ; (e898 <_lv_ll_chg_list+0x64>) e840: f8df 805c ldr.w r8, [pc, #92] ; e8a0 <_lv_ll_chg_list+0x6c> e844: 4f15 ldr r7, [pc, #84] ; (e89c <_lv_ll_chg_list+0x68>) { e846: 4615 mov r5, r2 _lv_ll_remove(ll_ori_p, node); e848: 4798 blx r3 if(head) { e84a: b196 cbz r6, e872 <_lv_ll_chg_list+0x3e> node_set_prev(ll_new_p, node, NULL); e84c: 2200 movs r2, #0 e84e: 4629 mov r1, r5 e850: 4620 mov r0, r4 e852: 47c0 blx r8 node_set_next(ll_new_p, node, ll_new_p->head); e854: 4629 mov r1, r5 e856: 6862 ldr r2, [r4, #4] e858: 4620 mov r0, r4 e85a: 47b8 blx r7 if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/ e85c: 6861 ldr r1, [r4, #4] e85e: b111 cbz r1, e866 <_lv_ll_chg_list+0x32> node_set_prev(ll_new_p, ll_new_p->head, node); e860: 462a mov r2, r5 e862: 4620 mov r0, r4 e864: 47c0 blx r8 if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ e866: 68a3 ldr r3, [r4, #8] ll_new_p->head = node; /*Set the new head in the dsc.*/ e868: 6065 str r5, [r4, #4] if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ e86a: b903 cbnz r3, e86e <_lv_ll_chg_list+0x3a> ll_new_p->tail = node; e86c: 60a5 str r5, [r4, #8] } e86e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} node_set_prev(ll_new_p, node, ll_new_p->tail); e872: 68a2 ldr r2, [r4, #8] e874: 4629 mov r1, r5 e876: 4620 mov r0, r4 e878: 47c0 blx r8 node_set_next(ll_new_p, node, NULL); e87a: 4629 mov r1, r5 e87c: 4632 mov r2, r6 e87e: 4620 mov r0, r4 e880: 47b8 blx r7 if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/ e882: 68a1 ldr r1, [r4, #8] e884: b111 cbz r1, e88c <_lv_ll_chg_list+0x58> node_set_next(ll_new_p, ll_new_p->tail, node); e886: 462a mov r2, r5 e888: 4620 mov r0, r4 e88a: 47b8 blx r7 if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ e88c: 6863 ldr r3, [r4, #4] ll_new_p->tail = node; /*Set the new tail in the dsc.*/ e88e: 60a5 str r5, [r4, #8] if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ e890: 2b00 cmp r3, #0 e892: d1ec bne.n e86e <_lv_ll_chg_list+0x3a> ll_new_p->head = node; e894: 6065 str r5, [r4, #4] } e896: e7ea b.n e86e <_lv_ll_chg_list+0x3a> e898: 0000e7b5 .word 0x0000e7b5 e89c: 0000e621 .word 0x0000e621 e8a0: 0000e5f9 .word 0x0000e5f9 0000e8a4 <_lv_ll_move_before>: if(n_act == n_after) return; /*Can't move before itself*/ e8a4: 4291 cmp r1, r2 { e8a6: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} e8aa: 4604 mov r4, r0 e8ac: 460d mov r5, r1 e8ae: 4617 mov r7, r2 if(n_act == n_after) return; /*Can't move before itself*/ e8b0: d022 beq.n e8f8 <_lv_ll_move_before+0x54> if(n_after != NULL) e8b2: b31a cbz r2, e8fc <_lv_ll_move_before+0x58> n_before = _lv_ll_get_prev(ll_p, n_after); e8b4: 4b14 ldr r3, [pc, #80] ; (e908 <_lv_ll_move_before+0x64>) e8b6: 4611 mov r1, r2 e8b8: 4798 blx r3 e8ba: 4606 mov r6, r0 if(n_act == n_before) return; /*Already before `n_after`*/ e8bc: 42ae cmp r6, r5 e8be: d01b beq.n e8f8 <_lv_ll_move_before+0x54> _lv_ll_remove(ll_p, n_act); e8c0: 4b12 ldr r3, [pc, #72] ; (e90c <_lv_ll_move_before+0x68>) node_set_next(ll_p, n_before, n_act); e8c2: f8df 804c ldr.w r8, [pc, #76] ; e910 <_lv_ll_move_before+0x6c> node_set_prev(ll_p, n_act, n_before); e8c6: f8df 904c ldr.w r9, [pc, #76] ; e914 <_lv_ll_move_before+0x70> _lv_ll_remove(ll_p, n_act); e8ca: 4629 mov r1, r5 e8cc: 4620 mov r0, r4 e8ce: 4798 blx r3 node_set_next(ll_p, n_before, n_act); e8d0: 462a mov r2, r5 e8d2: 4631 mov r1, r6 e8d4: 4620 mov r0, r4 e8d6: 47c0 blx r8 node_set_prev(ll_p, n_act, n_before); e8d8: 4632 mov r2, r6 e8da: 4629 mov r1, r5 e8dc: 4620 mov r0, r4 e8de: 47c8 blx r9 node_set_prev(ll_p, n_after, n_act); e8e0: 462a mov r2, r5 e8e2: 4639 mov r1, r7 e8e4: 4620 mov r0, r4 e8e6: 47c8 blx r9 node_set_next(ll_p, n_act, n_after); e8e8: 463a mov r2, r7 e8ea: 4629 mov r1, r5 e8ec: 4620 mov r0, r4 e8ee: 47c0 blx r8 if(n_after == NULL) ll_p->tail = n_act; e8f0: b907 cbnz r7, e8f4 <_lv_ll_move_before+0x50> e8f2: 60a5 str r5, [r4, #8] if(n_before == NULL) ll_p->head = n_act; e8f4: b906 cbnz r6, e8f8 <_lv_ll_move_before+0x54> e8f6: 6065 str r5, [r4, #4] } e8f8: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(ll_p != NULL) { e8fc: b108 cbz r0, e902 <_lv_ll_move_before+0x5e> tail = ll_p->tail; e8fe: 6886 ldr r6, [r0, #8] e900: e7dc b.n e8bc <_lv_ll_move_before+0x18> void * tail = NULL; e902: 4606 mov r6, r0 e904: e7da b.n e8bc <_lv_ll_move_before+0x18> e906: bf00 nop e908: 0000e71d .word 0x0000e71d e90c: 0000e7b5 .word 0x0000e7b5 e910: 0000e621 .word 0x0000e621 e914: 0000e5f9 .word 0x0000e5f9 0000e918 <_lv_ll_is_empty>: if(ll_p == NULL) return true; e918: b130 cbz r0, e928 <_lv_ll_is_empty+0x10> if(ll_p->head == NULL && ll_p->tail == NULL) return true; e91a: 6843 ldr r3, [r0, #4] e91c: b933 cbnz r3, e92c <_lv_ll_is_empty+0x14> e91e: 6880 ldr r0, [r0, #8] e920: fab0 f080 clz r0, r0 e924: 0940 lsrs r0, r0, #5 e926: 4770 bx lr if(ll_p == NULL) return true; e928: 2001 movs r0, #1 e92a: 4770 bx lr return false; e92c: 2000 movs r0, #0 } e92e: 4770 bx lr 0000e930 <_lv_log_add>: * @param func name of the function when the log added * @param format printf-like format string * @param ... parameters for `format` */ void _lv_log_add(lv_log_level_t level, const char * file, int line, const char * func, const char * format, ...) { e930: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} e934: 461f mov r7, r3 if(level >= _LV_LOG_LEVEL_NUM) return; /*Invalid level*/ if(level >= LV_LOG_LEVEL) { e936: 1e43 subs r3, r0, #1 e938: b2db uxtb r3, r3 e93a: 2b04 cmp r3, #4 { e93c: b0c5 sub sp, #276 ; 0x114 e93e: 4604 mov r4, r0 e940: 460d mov r5, r1 e942: 4616 mov r6, r2 if(level >= LV_LOG_LEVEL) { e944: d817 bhi.n e976 <_lv_log_add+0x46> va_list args; va_start(args, format); e946: ab4d add r3, sp, #308 ; 0x134 char buf[256]; lv_vsnprintf(buf, sizeof(buf), format, args); e948: f10d 0910 add.w r9, sp, #16 e94c: f8df 8030 ldr.w r8, [pc, #48] ; e980 <_lv_log_add+0x50> va_start(args, format); e950: 9303 str r3, [sp, #12] lv_vsnprintf(buf, sizeof(buf), format, args); e952: 9a4c ldr r2, [sp, #304] ; 0x130 e954: f44f 7180 mov.w r1, #256 ; 0x100 e958: 4648 mov r0, r9 e95a: 47c0 blx r8 } static const char * lvl_prefix[] = {"Trace", "Info", "Warn", "Error", "User"}; printf("%s: %s \t(%s #%d %s())\n", lvl_prefix[level], buf, &file[p], line, func); #else if(custom_print_cb) custom_print_cb(level, file, line, func, buf); e95c: 4b07 ldr r3, [pc, #28] ; (e97c <_lv_log_add+0x4c>) e95e: f8d3 8000 ldr.w r8, [r3] e962: f1b8 0f00 cmp.w r8, #0 e966: d006 beq.n e976 <_lv_log_add+0x46> e968: f8cd 9000 str.w r9, [sp] e96c: 463b mov r3, r7 e96e: 4632 mov r2, r6 e970: 4629 mov r1, r5 e972: 4620 mov r0, r4 e974: 47c0 blx r8 #endif } } e976: b045 add sp, #276 ; 0x114 e978: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} e97c: 20008784 .word 0x20008784 e980: 0000f869 .word 0x0000f869 0000e984 <_lv_trigo_sin>: * @return sinus of 'angle'. sin(-90) = -32767, sin(90) = 32767 */ LV_ATTRIBUTE_FAST_MEM int16_t _lv_trigo_sin(int16_t angle) { int16_t ret = 0; angle = angle % 360; e984: f44f 73b4 mov.w r3, #360 ; 0x168 e988: fb90 f2f3 sdiv r2, r0, r3 e98c: fb02 0013 mls r0, r2, r3, r0 e990: b200 sxth r0, r0 if(angle < 0) angle = 360 + angle; e992: 2800 cmp r0, #0 e994: bfbc itt lt e996: 18c0 addlt r0, r0, r3 e998: b200 sxthlt r0, r0 if(angle < 90) { e99a: 2859 cmp r0, #89 ; 0x59 e99c: 4b0e ldr r3, [pc, #56] ; (e9d8 <_lv_trigo_sin+0x54>) e99e: dc02 bgt.n e9a6 <_lv_trigo_sin+0x22> ret = sin0_90_table[angle]; } else if(angle >= 90 && angle < 180) { angle = 180 - angle; ret = sin0_90_table[angle]; e9a0: f933 0010 ldrsh.w r0, [r3, r0, lsl #1] e9a4: 4770 bx lr else if(angle >= 90 && angle < 180) { e9a6: b280 uxth r0, r0 e9a8: f1a0 025a sub.w r2, r0, #90 ; 0x5a e9ac: 2a59 cmp r2, #89 ; 0x59 e9ae: d803 bhi.n e9b8 <_lv_trigo_sin+0x34> angle = 180 - angle; e9b0: f1c0 00b4 rsb r0, r0, #180 ; 0xb4 ret = sin0_90_table[angle]; e9b4: b280 uxth r0, r0 e9b6: e7f3 b.n e9a0 <_lv_trigo_sin+0x1c> } else if(angle >= 180 && angle < 270) { e9b8: f1a0 02b4 sub.w r2, r0, #180 ; 0xb4 e9bc: b292 uxth r2, r2 e9be: 2a59 cmp r2, #89 ; 0x59 angle = angle - 180; ret = -sin0_90_table[angle]; } else { /*angle >=270*/ angle = 360 - angle; e9c0: bf85 ittet hi e9c2: f5c0 70b4 rsbhi r0, r0, #360 ; 0x168 ret = -sin0_90_table[angle]; e9c6: b280 uxthhi r0, r0 ret = -sin0_90_table[angle]; e9c8: f833 0012 ldrhls.w r0, [r3, r2, lsl #1] ret = -sin0_90_table[angle]; e9cc: f833 0010 ldrhhi.w r0, [r3, r0, lsl #1] e9d0: 4240 negs r0, r0 e9d2: b200 sxth r0, r0 } return ret; } e9d4: 4770 bx lr e9d6: bf00 nop e9d8: 00023fcc .word 0x00023fcc 0000e9dc <_lv_sqrt>: * If root < 16: mask = 0x80 * If root < 256: mask = 0x800 * Else: mask = 0x8000 */ LV_ATTRIBUTE_FAST_MEM void _lv_sqrt(uint32_t x, lv_sqrt_res_t * q, uint32_t mask) { e9dc: b530 push {r4, r5, lr} x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/ e9de: 0200 lsls r0, r0, #8 uint32_t root = 0; e9e0: 2300 movs r3, #0 uint32_t trial; // http://ww1.microchip.com/...en/AppNotes/91040a.pdf do { trial = root + mask; e9e2: 18d4 adds r4, r2, r3 if((uint32_t)trial * trial <= x) root = trial; e9e4: fb04 f504 mul.w r5, r4, r4 e9e8: 4285 cmp r5, r0 e9ea: bf98 it ls e9ec: 4623 movls r3, r4 mask = mask >> 1; } while(mask); e9ee: 0852 lsrs r2, r2, #1 e9f0: d1f7 bne.n e9e2 <_lv_sqrt+0x6> q->i = (uint32_t) root >> 4; e9f2: 091a lsrs r2, r3, #4 q->f = (uint32_t)(root & 0xf) << 4; e9f4: 011b lsls r3, r3, #4 e9f6: b2db uxtb r3, r3 q->i = (uint32_t) root >> 4; e9f8: 800a strh r2, [r1, #0] q->f = (uint32_t)(root & 0xf) << 4; e9fa: 804b strh r3, [r1, #2] } e9fc: bd30 pop {r4, r5, pc} ... 0000ea00 : static lv_mem_ent_t * ent_get_next(lv_mem_ent_t * act_e) { lv_mem_ent_t * next_e = NULL; if(act_e == NULL) { /*NULL means: get the first entry*/ next_e = (lv_mem_ent_t *)work_mem; ea00: 4b07 ldr r3, [pc, #28] ; (ea20 ) ea02: 681b ldr r3, [r3, #0] if(act_e == NULL) { /*NULL means: get the first entry*/ ea04: b150 cbz r0, ea1c } else { /*Get the next entry */ uint8_t * data = &act_e->first_data; next_e = (lv_mem_ent_t *)&data[act_e->header.s.d_size]; ea06: f850 2b04 ldr.w r2, [r0], #4 ea0a: eb00 0052 add.w r0, r0, r2, lsr #1 if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL; ea0e: 1d02 adds r2, r0, #4 ea10: f503 4380 add.w r3, r3, #16384 ; 0x4000 ea14: 429a cmp r2, r3 ea16: bf28 it cs ea18: 2000 movcs r0, #0 ea1a: 4770 bx lr next_e = (lv_mem_ent_t *)work_mem; ea1c: 4618 mov r0, r3 } return next_e; } ea1e: 4770 bx lr ea20: 20008788 .word 0x20008788 0000ea24 : size = size & (~0x7); size += 8; } #else /*Round the size up to 4*/ if(size & 0x3) { ea24: 078b lsls r3, r1, #30 size = size & (~0x3); ea26: bf18 it ne ea28: f021 0103 bicne.w r1, r1, #3 size += 4; } #endif /*Don't let empty space only for a header without data*/ if(e->header.s.d_size == size + sizeof(lv_mem_header_t)) { ea2c: 6802 ldr r2, [r0, #0] size += 4; ea2e: bf18 it ne ea30: 3104 addne r1, #4 { ea32: b510 push {r4, lr} if(e->header.s.d_size == size + sizeof(lv_mem_header_t)) { ea34: 1d0c adds r4, r1, #4 ea36: ebb4 0f52 cmp.w r4, r2, lsr #1 ea3a: f3c2 035e ubfx r3, r2, #1, #31 ea3e: d00b beq.n ea58 size = e->header.s.d_size; } /* Create the new entry after the current if there is space for it */ if(e->header.s.d_size != size) { ea40: 428b cmp r3, r1 ea42: d004 beq.n ea4e uint8_t * e_data = &e->first_data; lv_mem_ent_t * after_new_e = (lv_mem_ent_t *)&e_data[size]; after_new_e->header.s.used = 0; after_new_e->header.s.d_size = (uint32_t)e->header.s.d_size - size - sizeof(lv_mem_header_t); ea44: 3b04 subs r3, #4 after_new_e->header.s.used = 0; ea46: 1842 adds r2, r0, r1 after_new_e->header.s.d_size = (uint32_t)e->header.s.d_size - size - sizeof(lv_mem_header_t); ea48: 1a5b subs r3, r3, r1 after_new_e->header.s.used = 0; ea4a: 005b lsls r3, r3, #1 ea4c: 6053 str r3, [r2, #4] } /* Set the new size for the original entry */ e->header.s.d_size = (uint32_t)size; ea4e: 6803 ldr r3, [r0, #0] ea50: f361 035f bfi r3, r1, #1, #31 ea54: 6003 str r3, [r0, #0] } ea56: bd10 pop {r4, pc} ea58: 4619 mov r1, r3 ea5a: e7f8 b.n ea4e 0000ea5c <_lv_mem_init>: work_mem = (uint8_t *)work_mem_int; ea5c: 4a03 ldr r2, [pc, #12] ; (ea6c <_lv_mem_init+0x10>) ea5e: 4b04 ldr r3, [pc, #16] ; (ea70 <_lv_mem_init+0x14>) ea60: 6013 str r3, [r2, #0] full->header.s.used = 0; ea62: f647 72f8 movw r2, #32760 ; 0x7ff8 ea66: 601a str r2, [r3, #0] } ea68: 4770 bx lr ea6a: bf00 nop ea6c: 20008788 .word 0x20008788 ea70: 20008794 .word 0x20008794 0000ea74 : { ea74: b537 push {r0, r1, r2, r4, r5, lr} if(size == 0) { ea76: 4601 mov r1, r0 ea78: b1e0 cbz r0, eab4 if(size & 0x3) { ea7a: 0782 lsls r2, r0, #30 size = size & (~0x3); ea7c: bf18 it ne ea7e: f020 0103 bicne.w r1, r0, #3 e = ent_get_next(e); ea82: 4d12 ldr r5, [pc, #72] ; (eacc ) size += 4; ea84: bf18 it ne ea86: 3104 addne r1, #4 lv_mem_ent_t * e = NULL; ea88: 2400 movs r4, #0 e = ent_get_next(e); ea8a: 4620 mov r0, r4 ea8c: 47a8 blx r5 if(e != NULL) { ea8e: 4604 mov r4, r0 ea90: b190 cbz r0, eab8 if(e->header.s.used == 0 && e->header.s.d_size >= size) { ea92: 7803 ldrb r3, [r0, #0] ea94: 07db lsls r3, r3, #31 ea96: d4f8 bmi.n ea8a ea98: 6803 ldr r3, [r0, #0] ea9a: ebb1 0f53 cmp.w r1, r3, lsr #1 ea9e: d8f4 bhi.n ea8a ent_trunc(e, size); eaa0: 4b0b ldr r3, [pc, #44] ; (ead0 ) eaa2: 4798 blx r3 e->header.s.used = 1; eaa4: 7803 ldrb r3, [r0, #0] eaa6: f043 0301 orr.w r3, r3, #1 eaaa: f804 3b04 strb.w r3, [r4], #4 } eaae: 4620 mov r0, r4 eab0: b003 add sp, #12 eab2: bd30 pop {r4, r5, pc} return &zero_mem; eab4: 4c07 ldr r4, [pc, #28] ; (ead4 ) eab6: e7fa b.n eaae if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory"); eab8: 4b07 ldr r3, [pc, #28] ; (ead8 ) eaba: 9300 str r3, [sp, #0] eabc: 4907 ldr r1, [pc, #28] ; (eadc ) eabe: 4b08 ldr r3, [pc, #32] ; (eae0 ) eac0: 4d08 ldr r5, [pc, #32] ; (eae4 ) eac2: 22d1 movs r2, #209 ; 0xd1 eac4: 2002 movs r0, #2 eac6: 47a8 blx r5 eac8: e7f1 b.n eaae eaca: bf00 nop eacc: 0000ea01 .word 0x0000ea01 ead0: 0000ea25 .word 0x0000ea25 ead4: 2000878c .word 0x2000878c ead8: 000240b1 .word 0x000240b1 eadc: 00024082 .word 0x00024082 eae0: 00024196 .word 0x00024196 eae4: 0000e931 .word 0x0000e931 0000eae8 : { eae8: b538 push {r3, r4, r5, lr} next_e = (lv_mem_ent_t *)work_mem; eaea: 4b0e ldr r3, [pc, #56] ; (eb24 ) e_free = ent_get_next(e_free); eaec: 4c0e ldr r4, [pc, #56] ; (eb28 ) next_e = (lv_mem_ent_t *)work_mem; eaee: 6819 ldr r1, [r3, #0] while(e_free != NULL) { eaf0: b901 cbnz r1, eaf4 } eaf2: bd38 pop {r3, r4, r5, pc} e_free = ent_get_next(e_free); eaf4: 4608 mov r0, r1 eaf6: 47a0 blx r4 if(e_free->header.s.used != 0) { eaf8: 780b ldrb r3, [r1, #0] eafa: 07da lsls r2, r3, #31 eafc: d50f bpl.n eb1e { eafe: 4601 mov r1, r0 eb00: e7f6 b.n eaf0 if(e_next->header.s.used == 0) { eb02: 7803 ldrb r3, [r0, #0] eb04: 07db lsls r3, r3, #31 eb06: d4fa bmi.n eafe e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header); eb08: 680b ldr r3, [r1, #0] eb0a: 6805 ldr r5, [r0, #0] eb0c: f3c3 025e ubfx r2, r3, #1, #31 eb10: 3204 adds r2, #4 eb12: eb02 0255 add.w r2, r2, r5, lsr #1 eb16: f362 035f bfi r3, r2, #1, #31 eb1a: 600b str r3, [r1, #0] e_next = ent_get_next(e_next); eb1c: 47a0 blx r4 while(e_next != NULL) { eb1e: 2800 cmp r0, #0 eb20: d1ef bne.n eb02 eb22: e7e6 b.n eaf2 eb24: 20008788 .word 0x20008788 eb28: 0000ea01 .word 0x0000ea01 0000eb2c : if(data == &zero_mem) return; eb2c: 4a16 ldr r2, [pc, #88] ; (eb88 ) eb2e: 1d13 adds r3, r2, #4 eb30: 4298 cmp r0, r3 { eb32: b570 push {r4, r5, r6, lr} eb34: 4601 mov r1, r0 if(data == &zero_mem) return; eb36: d010 beq.n eb5a if(data == NULL) return; eb38: b178 cbz r0, eb5a e->header.s.used = 0; eb3a: f810 3c04 ldrb.w r3, [r0, #-4] eb3e: f36f 0300 bfc r3, #0, #1 eb42: f800 3c04 strb.w r3, [r0, #-4] full_defrag_cnt++; eb46: 8913 ldrh r3, [r2, #8] eb48: 3301 adds r3, #1 eb4a: b29b uxth r3, r3 if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { eb4c: 2b0f cmp r3, #15 full_defrag_cnt++; eb4e: 8113 strh r3, [r2, #8] if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { eb50: d814 bhi.n eb7c e_next = ent_get_next(e); eb52: 4c0e ldr r4, [pc, #56] ; (eb8c ) eb54: 3804 subs r0, #4 e_next = ent_get_next(e_next); eb56: 47a0 blx r4 while(e_next != NULL) { eb58: b900 cbnz r0, eb5c } eb5a: bd70 pop {r4, r5, r6, pc} if(e_next->header.s.used == 0) { eb5c: 7803 ldrb r3, [r0, #0] eb5e: 07db lsls r3, r3, #31 eb60: d4fb bmi.n eb5a e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); eb62: f851 3c04 ldr.w r3, [r1, #-4] eb66: 6805 ldr r5, [r0, #0] eb68: f3c3 025e ubfx r2, r3, #1, #31 eb6c: 3204 adds r2, #4 eb6e: eb02 0255 add.w r2, r2, r5, lsr #1 eb72: f362 035f bfi r3, r2, #1, #31 eb76: f841 3c04 str.w r3, [r1, #-4] eb7a: e7ec b.n eb56 full_defrag_cnt = 0; eb7c: 2300 movs r3, #0 eb7e: 8113 strh r3, [r2, #8] } eb80: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_mem_defrag(); eb84: 4b02 ldr r3, [pc, #8] ; (eb90 ) eb86: 4718 bx r3 eb88: 20008788 .word 0x20008788 eb8c: 0000ea01 .word 0x0000ea01 eb90: 0000eae9 .word 0x0000eae9 0000eb94 <_lv_mem_get_size>: if(data == NULL) return 0; eb94: b140 cbz r0, eba8 <_lv_mem_get_size+0x14> if(data == &zero_mem) return 0; eb96: 4b05 ldr r3, [pc, #20] ; (ebac <_lv_mem_get_size+0x18>) eb98: 4298 cmp r0, r3 eb9a: d004 beq.n eba6 <_lv_mem_get_size+0x12> return e->header.s.d_size; eb9c: f850 0c04 ldr.w r0, [r0, #-4] eba0: f3c0 005e ubfx r0, r0, #1, #31 eba4: 4770 bx lr if(data == NULL) return 0; eba6: 2000 movs r0, #0 } eba8: 4770 bx lr ebaa: bf00 nop ebac: 2000878c .word 0x2000878c 0000ebb0 <_lv_mem_buf_release>: if(mem_buf_small[i].p == p) { ebb0: 4b16 ldr r3, [pc, #88] ; (ec0c <_lv_mem_buf_release+0x5c>) ebb2: 681a ldr r2, [r3, #0] ebb4: 4290 cmp r0, r2 { ebb6: b513 push {r0, r1, r4, lr} if(mem_buf_small[i].p == p) { ebb8: d00b beq.n ebd2 <_lv_mem_buf_release+0x22> ebba: 689a ldr r2, [r3, #8] ebbc: 4290 cmp r0, r2 ebbe: d10a bne.n ebd6 <_lv_mem_buf_release+0x26> ebc0: 2201 movs r2, #1 mem_buf_small[i].used = 0; ebc2: eb03 03c2 add.w r3, r3, r2, lsl #3 ebc6: 799a ldrb r2, [r3, #6] ebc8: f36f 0200 bfc r2, #0, #1 ebcc: 719a strb r2, [r3, #6] } ebce: b002 add sp, #8 ebd0: bd10 pop {r4, pc} if(mem_buf_small[i].p == p) { ebd2: 2200 movs r2, #0 ebd4: e7f5 b.n ebc2 <_lv_mem_buf_release+0x12> if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { ebd6: 4a0e ldr r2, [pc, #56] ; (ec10 <_lv_mem_buf_release+0x60>) if(mem_buf_small[i].p == p) { ebd8: 2300 movs r3, #0 if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { ebda: f852 4033 ldr.w r4, [r2, r3, lsl #3] ebde: 4284 cmp r4, r0 ebe0: eb02 01c3 add.w r1, r2, r3, lsl #3 ebe4: d104 bne.n ebf0 <_lv_mem_buf_release+0x40> LV_GC_ROOT(_lv_mem_buf[i]).used = 0; ebe6: 798b ldrb r3, [r1, #6] ebe8: f36f 0300 bfc r3, #0, #1 ebec: 718b strb r3, [r1, #6] return; ebee: e7ee b.n ebce <_lv_mem_buf_release+0x1e> for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ebf0: 3301 adds r3, #1 ebf2: 2b10 cmp r3, #16 ebf4: d1f1 bne.n ebda <_lv_mem_buf_release+0x2a> LV_LOG_ERROR("lv_mem_buf_release: p is not a known buffer") ebf6: 4b07 ldr r3, [pc, #28] ; (ec14 <_lv_mem_buf_release+0x64>) ebf8: 9300 str r3, [sp, #0] ebfa: 4907 ldr r1, [pc, #28] ; (ec18 <_lv_mem_buf_release+0x68>) ebfc: 4b07 ldr r3, [pc, #28] ; (ec1c <_lv_mem_buf_release+0x6c>) ebfe: 4c08 ldr r4, [pc, #32] ; (ec20 <_lv_mem_buf_release+0x70>) ec00: f240 2232 movw r2, #562 ; 0x232 ec04: 2003 movs r0, #3 ec06: 47a0 blx r4 ec08: e7e1 b.n ebce <_lv_mem_buf_release+0x1e> ec0a: bf00 nop ec0c: 20000044 .word 0x20000044 ec10: 20008674 .word 0x20008674 ec14: 000240ca .word 0x000240ca ec18: 00024082 .word 0x00024082 ec1c: 000241a3 .word 0x000241a3 ec20: 0000e931 .word 0x0000e931 0000ec24 <_lv_mem_buf_free_all>: mem_buf_small[i].used = 0; ec24: 4b11 ldr r3, [pc, #68] ; (ec6c <_lv_mem_buf_free_all+0x48>) ec26: 799a ldrb r2, [r3, #6] ec28: f36f 0200 bfc r2, #0, #1 { ec2c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mem_buf_small[i].used = 0; ec30: 719a strb r2, [r3, #6] ec32: 7b9a ldrb r2, [r3, #14] ec34: 4c0e ldr r4, [pc, #56] ; (ec70 <_lv_mem_buf_free_all+0x4c>) lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); ec36: f8df 803c ldr.w r8, [pc, #60] ; ec74 <_lv_mem_buf_free_all+0x50> mem_buf_small[i].used = 0; ec3a: f36f 0200 bfc r2, #0, #1 ec3e: 2500 movs r5, #0 ec40: 739a strb r2, [r3, #14] for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ec42: 4627 mov r7, r4 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; ec44: 462e mov r6, r5 if(LV_GC_ROOT(_lv_mem_buf[i]).p) { ec46: 6820 ldr r0, [r4, #0] ec48: b140 cbz r0, ec5c <_lv_mem_buf_free_all+0x38> lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); ec4a: 47c0 blx r8 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; ec4c: eb07 03c5 add.w r3, r7, r5, lsl #3 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; ec50: 6026 str r6, [r4, #0] LV_GC_ROOT(_lv_mem_buf[i]).used = 0; ec52: 799a ldrb r2, [r3, #6] ec54: f366 0200 bfi r2, r6, #0, #1 ec58: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = 0; ec5a: 80a6 strh r6, [r4, #4] for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ec5c: 3501 adds r5, #1 ec5e: 2d10 cmp r5, #16 ec60: f104 0408 add.w r4, r4, #8 ec64: d1ef bne.n ec46 <_lv_mem_buf_free_all+0x22> } ec66: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} ec6a: bf00 nop ec6c: 20000044 .word 0x20000044 ec70: 20008674 .word 0x20008674 ec74: 0000eb2d .word 0x0000eb2d 0000ec78 <_lv_memcpy>: { ec78: b570 push {r4, r5, r6, lr} lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; ec7a: f000 0503 and.w r5, r0, #3 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; ec7e: f001 0603 and.w r6, r1, #3 if(s_align != d_align) { ec82: 42b5 cmp r5, r6 lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; ec84: 4604 mov r4, r0 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; ec86: 460b mov r3, r1 if(s_align != d_align) { ec88: f040 8098 bne.w edbc <_lv_memcpy+0x144> if(d_align) { ec8c: 2d00 cmp r5, #0 ec8e: f040 80a8 bne.w ede2 <_lv_memcpy+0x16a> uint8_t * d8 = dst; ec92: 4605 mov r5, r0 ec94: 462b mov r3, r5 while(len > 32) { ec96: 2a20 cmp r2, #32 ec98: 461c mov r4, r3 ec9a: f101 0520 add.w r5, r1, #32 ec9e: f103 0320 add.w r3, r3, #32 eca2: f200 80b0 bhi.w ee06 <_lv_memcpy+0x18e> while(len > 4) { eca6: 2a04 cmp r2, #4 eca8: 460e mov r6, r1 ecaa: f240 809f bls.w edec <_lv_memcpy+0x174> COPY32; ecae: f851 3b04 ldr.w r3, [r1], #4 ecb2: f844 3b04 str.w r3, [r4], #4 len -= 4; ecb6: 3a04 subs r2, #4 ecb8: e7f5 b.n eca6 <_lv_memcpy+0x2e> REPEAT8(COPY8); ecba: f813 1c20 ldrb.w r1, [r3, #-32] ecbe: f804 1c20 strb.w r1, [r4, #-32] ecc2: f813 1c1f ldrb.w r1, [r3, #-31] ecc6: f804 1c1f strb.w r1, [r4, #-31] ecca: f813 1c1e ldrb.w r1, [r3, #-30] ecce: f804 1c1e strb.w r1, [r4, #-30] ecd2: f813 1c1d ldrb.w r1, [r3, #-29] ecd6: f804 1c1d strb.w r1, [r4, #-29] ecda: f813 1c1c ldrb.w r1, [r3, #-28] ecde: f804 1c1c strb.w r1, [r4, #-28] ece2: f813 1c1b ldrb.w r1, [r3, #-27] ece6: f804 1c1b strb.w r1, [r4, #-27] ecea: f813 1c1a ldrb.w r1, [r3, #-26] ecee: f804 1c1a strb.w r1, [r4, #-26] ecf2: f813 1c19 ldrb.w r1, [r3, #-25] ecf6: f804 1c19 strb.w r1, [r4, #-25] REPEAT8(COPY8); ecfa: f813 1c18 ldrb.w r1, [r3, #-24] ecfe: f804 1c18 strb.w r1, [r4, #-24] ed02: f813 1c17 ldrb.w r1, [r3, #-23] ed06: f804 1c17 strb.w r1, [r4, #-23] ed0a: f813 1c16 ldrb.w r1, [r3, #-22] ed0e: f804 1c16 strb.w r1, [r4, #-22] ed12: f813 1c15 ldrb.w r1, [r3, #-21] ed16: f804 1c15 strb.w r1, [r4, #-21] ed1a: f813 1c14 ldrb.w r1, [r3, #-20] ed1e: f804 1c14 strb.w r1, [r4, #-20] ed22: f813 1c13 ldrb.w r1, [r3, #-19] ed26: f804 1c13 strb.w r1, [r4, #-19] ed2a: f813 1c12 ldrb.w r1, [r3, #-18] ed2e: f804 1c12 strb.w r1, [r4, #-18] ed32: f813 1c11 ldrb.w r1, [r3, #-17] ed36: f804 1c11 strb.w r1, [r4, #-17] REPEAT8(COPY8); ed3a: f813 1c10 ldrb.w r1, [r3, #-16] ed3e: f804 1c10 strb.w r1, [r4, #-16] ed42: f813 1c0f ldrb.w r1, [r3, #-15] ed46: f804 1c0f strb.w r1, [r4, #-15] ed4a: f813 1c0e ldrb.w r1, [r3, #-14] ed4e: f804 1c0e strb.w r1, [r4, #-14] ed52: f813 1c0d ldrb.w r1, [r3, #-13] ed56: f804 1c0d strb.w r1, [r4, #-13] ed5a: f813 1c0c ldrb.w r1, [r3, #-12] ed5e: f804 1c0c strb.w r1, [r4, #-12] ed62: f813 1c0b ldrb.w r1, [r3, #-11] ed66: f804 1c0b strb.w r1, [r4, #-11] ed6a: f813 1c0a ldrb.w r1, [r3, #-10] ed6e: f804 1c0a strb.w r1, [r4, #-10] ed72: f813 1c09 ldrb.w r1, [r3, #-9] ed76: f804 1c09 strb.w r1, [r4, #-9] REPEAT8(COPY8); ed7a: f813 1c08 ldrb.w r1, [r3, #-8] ed7e: f804 1c08 strb.w r1, [r4, #-8] ed82: f813 1c07 ldrb.w r1, [r3, #-7] ed86: f804 1c07 strb.w r1, [r4, #-7] ed8a: f813 1c06 ldrb.w r1, [r3, #-6] ed8e: f804 1c06 strb.w r1, [r4, #-6] ed92: f813 1c05 ldrb.w r1, [r3, #-5] ed96: f804 1c05 strb.w r1, [r4, #-5] ed9a: f813 1c04 ldrb.w r1, [r3, #-4] ed9e: f804 1c04 strb.w r1, [r4, #-4] eda2: f813 1c03 ldrb.w r1, [r3, #-3] eda6: f804 1c03 strb.w r1, [r4, #-3] edaa: f813 1c02 ldrb.w r1, [r3, #-2] edae: f804 1c02 strb.w r1, [r4, #-2] edb2: f813 1c01 ldrb.w r1, [r3, #-1] edb6: f804 1c01 strb.w r1, [r4, #-1] len -= 32; edba: 3a20 subs r2, #32 while(len > 32) { edbc: 2a20 cmp r2, #32 edbe: 461d mov r5, r3 edc0: 4621 mov r1, r4 edc2: f103 0320 add.w r3, r3, #32 edc6: f104 0420 add.w r4, r4, #32 edca: f63f af76 bhi.w ecba <_lv_memcpy+0x42> edce: 1e6b subs r3, r5, #1 edd0: 440a add r2, r1 while(len) { edd2: 4291 cmp r1, r2 edd4: d100 bne.n edd8 <_lv_memcpy+0x160> } edd6: bd70 pop {r4, r5, r6, pc} COPY8 edd8: f813 4f01 ldrb.w r4, [r3, #1]! eddc: f801 4b01 strb.w r4, [r1], #1 len--; ede0: e7f7 b.n edd2 <_lv_memcpy+0x15a> d_align = ALIGN_MASK + 1 - d_align; ede2: f1c5 0504 rsb r5, r5, #4 ede6: 4405 add r5, r0 ede8: 461e mov r6, r3 while(d_align && len) { edea: b912 cbnz r2, edf2 <_lv_memcpy+0x17a> edec: 1e73 subs r3, r6, #1 edee: 4422 add r2, r4 edf0: e030 b.n ee54 <_lv_memcpy+0x1dc> COPY8; edf2: f813 1b01 ldrb.w r1, [r3], #1 edf6: f804 1b01 strb.w r1, [r4], #1 while(d_align && len) { edfa: 42ac cmp r4, r5 COPY8; edfc: 4619 mov r1, r3 len--; edfe: f102 32ff add.w r2, r2, #4294967295 ; 0xffffffff while(d_align && len) { ee02: d1f1 bne.n ede8 <_lv_memcpy+0x170> ee04: e746 b.n ec94 <_lv_memcpy+0x1c> REPEAT8(COPY32) ee06: f855 1c20 ldr.w r1, [r5, #-32] ee0a: f843 1c20 str.w r1, [r3, #-32] ee0e: f855 1c1c ldr.w r1, [r5, #-28] ee12: f843 1c1c str.w r1, [r3, #-28] ee16: f855 1c18 ldr.w r1, [r5, #-24] ee1a: f843 1c18 str.w r1, [r3, #-24] ee1e: f855 1c14 ldr.w r1, [r5, #-20] ee22: f843 1c14 str.w r1, [r3, #-20] ee26: f855 1c10 ldr.w r1, [r5, #-16] ee2a: f843 1c10 str.w r1, [r3, #-16] ee2e: f855 1c0c ldr.w r1, [r5, #-12] ee32: f843 1c0c str.w r1, [r3, #-12] ee36: f855 1c08 ldr.w r1, [r5, #-8] ee3a: f843 1c08 str.w r1, [r3, #-8] ee3e: f855 1c04 ldr.w r1, [r5, #-4] ee42: f843 1c04 str.w r1, [r3, #-4] len -= 32; ee46: 3a20 subs r2, #32 ee48: 4629 mov r1, r5 ee4a: e724 b.n ec96 <_lv_memcpy+0x1e> COPY8 ee4c: f813 1f01 ldrb.w r1, [r3, #1]! ee50: f804 1b01 strb.w r1, [r4], #1 while(len) { ee54: 4294 cmp r4, r2 ee56: d1f9 bne.n ee4c <_lv_memcpy+0x1d4> ee58: e7bd b.n edd6 <_lv_memcpy+0x15e> ... 0000ee5c : if(new_size & 0x3) { ee5c: 078b lsls r3, r1, #30 { ee5e: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} ee60: 460d mov r5, r1 new_size = new_size & (~0x3); ee62: bf18 it ne ee64: f021 0503 bicne.w r5, r1, #3 { ee68: 4604 mov r4, r0 new_size += 4; ee6a: bf18 it ne ee6c: 3504 addne r5, #4 if(data_p != NULL) { ee6e: b128 cbz r0, ee7c if(e->header.s.used == 0) { ee70: f810 3c04 ldrb.w r3, [r0, #-4] data_p = NULL; ee74: f013 0f01 tst.w r3, #1 ee78: bf08 it eq ee7a: 2400 moveq r4, #0 uint32_t old_size = _lv_mem_get_size(data_p); ee7c: 4b16 ldr r3, [pc, #88] ; (eed8 ) ee7e: 4620 mov r0, r4 ee80: 4798 blx r3 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ ee82: 4285 cmp r5, r0 uint32_t old_size = _lv_mem_get_size(data_p); ee84: 4607 mov r7, r0 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ ee86: d004 beq.n ee92 if(new_size < old_size) { ee88: d205 bcs.n ee96 ent_trunc(e, new_size); ee8a: 4b14 ldr r3, [pc, #80] ; (eedc ) ee8c: 4629 mov r1, r5 ee8e: 1f20 subs r0, r4, #4 ee90: 4798 blx r3 return &e->first_data; ee92: 4626 mov r6, r4 ee94: e00d b.n eeb2 new_p = lv_mem_alloc(new_size); ee96: 4b12 ldr r3, [pc, #72] ; (eee0 ) ee98: 4628 mov r0, r5 ee9a: 4798 blx r3 if(new_p == NULL) { ee9c: 4606 mov r6, r0 ee9e: b958 cbnz r0, eeb8 LV_LOG_WARN("Couldn't allocate memory"); eea0: 4b10 ldr r3, [pc, #64] ; (eee4 ) eea2: 9300 str r3, [sp, #0] eea4: 4910 ldr r1, [pc, #64] ; (eee8 ) eea6: 4b11 ldr r3, [pc, #68] ; (eeec ) eea8: 4c11 ldr r4, [pc, #68] ; (eef0 ) eeaa: f240 123f movw r2, #319 ; 0x13f eeae: 2002 movs r0, #2 eeb0: 47a0 blx r4 } eeb2: 4630 mov r0, r6 eeb4: b003 add sp, #12 eeb6: bdf0 pop {r4, r5, r6, r7, pc} if(data_p != NULL) { eeb8: 2c00 cmp r4, #0 eeba: d0fa beq.n eeb2 if(old_size != 0) { eebc: 2f00 cmp r7, #0 eebe: d0f8 beq.n eeb2 _lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size)); eec0: 42bd cmp r5, r7 eec2: 462a mov r2, r5 eec4: 4b0b ldr r3, [pc, #44] ; (eef4 ) eec6: bf28 it cs eec8: 463a movcs r2, r7 eeca: 4621 mov r1, r4 eecc: 4798 blx r3 lv_mem_free(data_p); eece: 4b0a ldr r3, [pc, #40] ; (eef8 ) eed0: 4620 mov r0, r4 eed2: 4798 blx r3 eed4: e7ed b.n eeb2 eed6: bf00 nop eed8: 0000eb95 .word 0x0000eb95 eedc: 0000ea25 .word 0x0000ea25 eee0: 0000ea75 .word 0x0000ea75 eee4: 000240b1 .word 0x000240b1 eee8: 00024082 .word 0x00024082 eeec: 000241b7 .word 0x000241b7 eef0: 0000e931 .word 0x0000e931 eef4: 0000ec79 .word 0x0000ec79 eef8: 0000eb2d .word 0x0000eb2d 0000eefc <_lv_mem_buf_get>: { eefc: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} if(size == 0) return NULL; eefe: b190 cbz r0, ef26 <_lv_mem_buf_get+0x2a> if(size <= MEM_BUF_SMALL_SIZE) { ef00: 2810 cmp r0, #16 ef02: d812 bhi.n ef2a <_lv_mem_buf_get+0x2e> if(mem_buf_small[i].used == 0) { ef04: 4a36 ldr r2, [pc, #216] ; (efe0 <_lv_mem_buf_get+0xe4>) ef06: 7993 ldrb r3, [r2, #6] ef08: f013 0301 ands.w r3, r3, #1 ef0c: d003 beq.n ef16 <_lv_mem_buf_get+0x1a> ef0e: 7b93 ldrb r3, [r2, #14] ef10: 07de lsls r6, r3, #31 ef12: d40a bmi.n ef2a <_lv_mem_buf_get+0x2e> ef14: 2301 movs r3, #1 mem_buf_small[i].used = 1; ef16: eb02 00c3 add.w r0, r2, r3, lsl #3 ef1a: 7981 ldrb r1, [r0, #6] ef1c: f041 0101 orr.w r1, r1, #1 ef20: 7181 strb r1, [r0, #6] return mem_buf_small[i].p; ef22: f852 0033 ldr.w r0, [r2, r3, lsl #3] } ef26: b003 add sp, #12 ef28: bdf0 pop {r4, r5, r6, r7, pc} if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { ef2a: 4c2e ldr r4, [pc, #184] ; (efe4 <_lv_mem_buf_get+0xe8>) if(mem_buf_small[i].used == 0) { ef2c: 2300 movs r3, #0 ef2e: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { ef32: 1d27 adds r7, r4, #4 ef34: eb04 06c3 add.w r6, r4, r3, lsl #3 ef38: 79b5 ldrb r5, [r6, #6] ef3a: 4629 mov r1, r5 ef3c: 07ed lsls r5, r5, #31 ef3e: d413 bmi.n ef68 <_lv_mem_buf_get+0x6c> ef40: f837 5033 ldrh.w r5, [r7, r3, lsl #3] ef44: 4285 cmp r5, r0 ef46: d30f bcc.n ef68 <_lv_mem_buf_get+0x6c> if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) { ef48: d105 bne.n ef56 <_lv_mem_buf_get+0x5a> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef4a: f041 0101 orr.w r1, r1, #1 return LV_GC_ROOT(_lv_mem_buf[i]).p; ef4e: f854 0033 ldr.w r0, [r4, r3, lsl #3] LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef52: 71b1 strb r1, [r6, #6] return LV_GC_ROOT(_lv_mem_buf[i]).p; ef54: e7e7 b.n ef26 <_lv_mem_buf_get+0x2a> else if(i_guess < 0) { ef56: 1c56 adds r6, r2, #1 ef58: d101 bne.n ef5e <_lv_mem_buf_get+0x62> i_guess = i; ef5a: b25a sxtb r2, r3 ef5c: e004 b.n ef68 <_lv_mem_buf_get+0x6c> else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) { ef5e: eb04 01c2 add.w r1, r4, r2, lsl #3 ef62: 8889 ldrh r1, [r1, #4] ef64: 42a9 cmp r1, r5 ef66: d8f8 bhi.n ef5a <_lv_mem_buf_get+0x5e> for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ef68: 3301 adds r3, #1 ef6a: 2b10 cmp r3, #16 ef6c: d1e2 bne.n ef34 <_lv_mem_buf_get+0x38> if(i_guess >= 0) { ef6e: 1c55 adds r5, r2, #1 ef70: d008 beq.n ef84 <_lv_mem_buf_get+0x88> LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; ef72: eb04 01c2 add.w r1, r4, r2, lsl #3 return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; ef76: f854 0032 ldr.w r0, [r4, r2, lsl #3] LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; ef7a: 798b ldrb r3, [r1, #6] ef7c: f043 0301 orr.w r3, r3, #1 ef80: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; ef82: e7d0 b.n ef26 <_lv_mem_buf_get+0x2a> ef84: 2500 movs r5, #0 if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) { ef86: eb04 03c5 add.w r3, r4, r5, lsl #3 ef8a: 7999 ldrb r1, [r3, #6] ef8c: 460a mov r2, r1 ef8e: 07c9 lsls r1, r1, #31 ef90: d417 bmi.n efc2 <_lv_mem_buf_get+0xc6> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef92: f042 0201 orr.w r2, r2, #1 LV_GC_ROOT(_lv_mem_buf[i]).size = size; ef96: 8098 strh r0, [r3, #4] LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef98: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).p = lv_mem_realloc(LV_GC_ROOT(_lv_mem_buf[i]).p, size); ef9a: 4601 mov r1, r0 ef9c: 4b12 ldr r3, [pc, #72] ; (efe8 <_lv_mem_buf_get+0xec>) ef9e: f854 0035 ldr.w r0, [r4, r5, lsl #3] efa2: 4798 blx r3 efa4: f844 0035 str.w r0, [r4, r5, lsl #3] if(LV_GC_ROOT(_lv_mem_buf[i]).p == NULL) { efa8: b940 cbnz r0, efbc <_lv_mem_buf_get+0xc0> LV_LOG_ERROR("lv_mem_buf_get: Out of memory, can't allocate a new buffer (increase your LV_MEM_SIZE/heap size)") efaa: 4b10 ldr r3, [pc, #64] ; (efec <_lv_mem_buf_get+0xf0>) efac: 9300 str r3, [sp, #0] efae: 4910 ldr r1, [pc, #64] ; (eff0 <_lv_mem_buf_get+0xf4>) efb0: 4b10 ldr r3, [pc, #64] ; (eff4 <_lv_mem_buf_get+0xf8>) efb2: 4e11 ldr r6, [pc, #68] ; (eff8 <_lv_mem_buf_get+0xfc>) efb4: f44f 7204 mov.w r2, #528 ; 0x210 efb8: 2003 movs r0, #3 efba: 47b0 blx r6 return LV_GC_ROOT(_lv_mem_buf[i]).p; efbc: f854 0035 ldr.w r0, [r4, r5, lsl #3] efc0: e7b1 b.n ef26 <_lv_mem_buf_get+0x2a> for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { efc2: 3501 adds r5, #1 efc4: 2d10 cmp r5, #16 efc6: d1de bne.n ef86 <_lv_mem_buf_get+0x8a> LV_LOG_ERROR("lv_mem_buf_get: no free buffer. Increase LV_DRAW_BUF_MAX_NUM."); efc8: 4b0c ldr r3, [pc, #48] ; (effc <_lv_mem_buf_get+0x100>) efca: 9300 str r3, [sp, #0] efcc: 2003 movs r0, #3 efce: 4b09 ldr r3, [pc, #36] ; (eff4 <_lv_mem_buf_get+0xf8>) efd0: 4907 ldr r1, [pc, #28] ; (eff0 <_lv_mem_buf_get+0xf4>) efd2: 4c09 ldr r4, [pc, #36] ; (eff8 <_lv_mem_buf_get+0xfc>) efd4: f240 2216 movw r2, #534 ; 0x216 efd8: 47a0 blx r4 return NULL; efda: 2000 movs r0, #0 efdc: e7a3 b.n ef26 <_lv_mem_buf_get+0x2a> efde: bf00 nop efe0: 20000044 .word 0x20000044 efe4: 20008674 .word 0x20008674 efe8: 0000ee5d .word 0x0000ee5d efec: 000240f6 .word 0x000240f6 eff0: 00024082 .word 0x00024082 eff4: 000241c6 .word 0x000241c6 eff8: 0000e931 .word 0x0000e931 effc: 00024158 .word 0x00024158 0000f000 <_lv_memset>: if(d_align) { f000: f010 0303 ands.w r3, r0, #3 { f004: b410 push {r4} if(d_align) { f006: d009 beq.n f01c <_lv_memset+0x1c> d_align = ALIGN_MASK + 1 - d_align; f008: f1c3 0304 rsb r3, r3, #4 f00c: 4403 add r3, r0 while(d_align && len) { f00e: b12a cbz r2, f01c <_lv_memset+0x1c> *d8 = v; f010: f800 1b01 strb.w r1, [r0], #1 while(d_align && len) { f014: 4298 cmp r0, r3 len--; f016: f102 32ff add.w r2, r2, #4294967295 ; 0xffffffff while(d_align && len) { f01a: d1f8 bne.n f00e <_lv_memset+0xe> uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); f01c: eb01 2401 add.w r4, r1, r1, lsl #8 f020: eb04 4401 add.w r4, r4, r1, lsl #16 f024: eb04 6401 add.w r4, r4, r1, lsl #24 while(len > 32) { f028: 4603 mov r3, r0 f02a: 2a20 cmp r2, #32 f02c: 4618 mov r0, r3 f02e: f103 0320 add.w r3, r3, #32 f032: d805 bhi.n f040 <_lv_memset+0x40> while(len > 4) { f034: 2a04 cmp r2, #4 f036: d80d bhi.n f054 <_lv_memset+0x54> *d8 = v; f038: 4b08 ldr r3, [pc, #32] ; (f05c <_lv_memset+0x5c>) } f03a: f85d 4b04 ldr.w r4, [sp], #4 *d8 = v; f03e: 4718 bx r3 SET32(v32); f040: e943 4408 strd r4, r4, [r3, #-32] SET32(v32); f044: e943 4406 strd r4, r4, [r3, #-24] SET32(v32); f048: e943 4404 strd r4, r4, [r3, #-16] SET32(v32); f04c: e943 4402 strd r4, r4, [r3, #-8] len -= 32; f050: 3a20 subs r2, #32 f052: e7ea b.n f02a <_lv_memset+0x2a> SET32(v32); f054: f840 4b04 str.w r4, [r0], #4 len -= 4; f058: 3a04 subs r2, #4 f05a: e7eb b.n f034 <_lv_memset+0x34> f05c: 00016349 .word 0x00016349 0000f060 <_lv_memset_00>: if(d_align) { f060: f010 0303 ands.w r3, r0, #3 f064: d10d bne.n f082 <_lv_memset_00+0x22> f066: 4603 mov r3, r0 SET32(0); f068: 2200 movs r2, #0 while(len > 32) { f06a: 2920 cmp r1, #32 f06c: 4618 mov r0, r3 f06e: f103 0320 add.w r3, r3, #32 f072: d816 bhi.n f0a2 <_lv_memset_00+0x42> SET32(0); f074: 2300 movs r3, #0 while(len > 4) { f076: 2904 cmp r1, #4 f078: d908 bls.n f08c <_lv_memset_00+0x2c> SET32(0); f07a: f840 3b04 str.w r3, [r0], #4 len -= 4; f07e: 3904 subs r1, #4 f080: e7f9 b.n f076 <_lv_memset_00+0x16> d_align = ALIGN_MASK + 1 - d_align; f082: f1c3 0304 rsb r3, r3, #4 f086: 4403 add r3, r0 *d8 = 0x00; f088: 2200 movs r2, #0 while(d_align && len) { f08a: b919 cbnz r1, f094 <_lv_memset_00+0x34> *d8 = 0; f08c: 460a mov r2, r1 f08e: 4b0a ldr r3, [pc, #40] ; (f0b8 <_lv_memset_00+0x58>) f090: 2100 movs r1, #0 f092: 4718 bx r3 *d8 = 0x00; f094: f800 2b01 strb.w r2, [r0], #1 while(d_align && len) { f098: 4283 cmp r3, r0 len--; f09a: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff while(d_align && len) { f09e: d1f4 bne.n f08a <_lv_memset_00+0x2a> f0a0: e7e1 b.n f066 <_lv_memset_00+0x6> SET32(0); f0a2: e943 2208 strd r2, r2, [r3, #-32] SET32(0); f0a6: e943 2206 strd r2, r2, [r3, #-24] SET32(0); f0aa: e943 2204 strd r2, r2, [r3, #-16] SET32(0); f0ae: e943 2202 strd r2, r2, [r3, #-8] len -= 32; f0b2: 3920 subs r1, #32 f0b4: e7d9 b.n f06a <_lv_memset_00+0xa> f0b6: bf00 nop f0b8: 00016349 .word 0x00016349 0000f0bc <_lv_memset_ff>: if(d_align) { f0bc: f010 0303 ands.w r3, r0, #3 f0c0: d10f bne.n f0e2 <_lv_memset_ff+0x26> f0c2: 4603 mov r3, r0 SET32(0xFFFFFFFF); f0c4: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff while(len > 32) { f0c8: 2920 cmp r1, #32 f0ca: 4618 mov r0, r3 f0cc: f103 0320 add.w r3, r3, #32 f0d0: d817 bhi.n f102 <_lv_memset_ff+0x46> SET32(0xFFFFFFFF); f0d2: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff while(len > 4) { f0d6: 2904 cmp r1, #4 f0d8: d908 bls.n f0ec <_lv_memset_ff+0x30> SET32(0xFFFFFFFF); f0da: f840 3b04 str.w r3, [r0], #4 len -= 4; f0de: 3904 subs r1, #4 f0e0: e7f9 b.n f0d6 <_lv_memset_ff+0x1a> d_align = ALIGN_MASK + 1 - d_align; f0e2: f1c3 0304 rsb r3, r3, #4 f0e6: 4403 add r3, r0 *d8 = 0xFF; f0e8: 22ff movs r2, #255 ; 0xff while(d_align && len) { f0ea: b919 cbnz r1, f0f4 <_lv_memset_ff+0x38> *d8 = 0xFF; f0ec: 460a mov r2, r1 f0ee: 4b0a ldr r3, [pc, #40] ; (f118 <_lv_memset_ff+0x5c>) f0f0: 21ff movs r1, #255 ; 0xff f0f2: 4718 bx r3 *d8 = 0xFF; f0f4: f800 2b01 strb.w r2, [r0], #1 while(d_align && len) { f0f8: 4283 cmp r3, r0 len--; f0fa: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff while(d_align && len) { f0fe: d1f4 bne.n f0ea <_lv_memset_ff+0x2e> f100: e7df b.n f0c2 <_lv_memset_ff+0x6> SET32(0xFFFFFFFF); f102: e943 2208 strd r2, r2, [r3, #-32] SET32(0xFFFFFFFF); f106: e943 2206 strd r2, r2, [r3, #-24] SET32(0xFFFFFFFF); f10a: e943 2204 strd r2, r2, [r3, #-16] SET32(0xFFFFFFFF); f10e: e943 2202 strd r2, r2, [r3, #-8] len -= 32; f112: 3920 subs r1, #32 f114: e7d8 b.n f0c8 <_lv_memset_ff+0xc> f116: bf00 nop f118: 00016349 .word 0x00016349 0000f11c <_out_buffer>: // internal buffer output static inline void _out_buffer(char character, void * buffer, size_t idx, size_t maxlen) { if(idx < maxlen) { f11c: 429a cmp r2, r3 ((char *)buffer)[idx] = character; f11e: bf38 it cc f120: 5488 strbcc r0, [r1, r2] } } f122: 4770 bx lr 0000f124 <_out_null>: { (void)character; (void)buffer; (void)idx; (void)maxlen; } f124: 4770 bx lr 0000f126 <_ntoa_format>: // internal itoa format static size_t _ntoa_format(out_fct_type out, char * buffer, size_t idx, size_t maxlen, char * buf, size_t len, bool negative, unsigned int base, unsigned int prec, unsigned int width, unsigned int flags) { f126: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} f12a: 4617 mov r7, r2 f12c: e9dd 6211 ldrd r6, r2, [sp, #68] ; 0x44 // pad leading zeros if(!(flags & FLAGS_LEFT)) { f130: f012 0a02 ands.w sl, r2, #2 { f134: 4680 mov r8, r0 f136: e9dd 540c ldrd r5, r4, [sp, #48] ; 0x30 f13a: e9dd 0c0f ldrd r0, ip, [sp, #60] ; 0x3c f13e: f89d e038 ldrb.w lr, [sp, #56] ; 0x38 if(!(flags & FLAGS_LEFT)) { f142: d11f bne.n f184 <_ntoa_format+0x5e> if(width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { f144: f002 0901 and.w r9, r2, #1 f148: b14e cbz r6, f15e <_ntoa_format+0x38> f14a: f1b9 0f00 cmp.w r9, #0 f14e: d006 beq.n f15e <_ntoa_format+0x38> f150: f1be 0f00 cmp.w lr, #0 f154: d102 bne.n f15c <_ntoa_format+0x36> f156: f012 0f0c tst.w r2, #12 f15a: d000 beq.n f15e <_ntoa_format+0x38> width--; f15c: 3e01 subs r6, #1 } while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = '0'; f15e: f04f 0b30 mov.w fp, #48 ; 0x30 f162: e004 b.n f16e <_ntoa_format+0x48> while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f164: 2c20 cmp r4, #32 f166: d004 beq.n f172 <_ntoa_format+0x4c> buf[len++] = '0'; f168: f805 b004 strb.w fp, [r5, r4] f16c: 3401 adds r4, #1 while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f16e: 45a4 cmp ip, r4 f170: d8f8 bhi.n f164 <_ntoa_format+0x3e> } while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = '0'; f172: f04f 0b30 mov.w fp, #48 ; 0x30 while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f176: f1b9 0f00 cmp.w r9, #0 f17a: d003 beq.n f184 <_ntoa_format+0x5e> f17c: 42a6 cmp r6, r4 f17e: d901 bls.n f184 <_ntoa_format+0x5e> f180: 2c20 cmp r4, #32 f182: d137 bne.n f1f4 <_ntoa_format+0xce> } } // handle hash if(flags & FLAGS_HASH) { f184: f012 0f10 tst.w r2, #16 f188: d019 beq.n f1be <_ntoa_format+0x98> if(!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) { f18a: f412 6f80 tst.w r2, #1024 ; 0x400 f18e: d136 bne.n f1fe <_ntoa_format+0xd8> f190: b3ac cbz r4, f1fe <_ntoa_format+0xd8> f192: 4564 cmp r4, ip f194: d001 beq.n f19a <_ntoa_format+0x74> f196: 42b4 cmp r4, r6 f198: d131 bne.n f1fe <_ntoa_format+0xd8> len--; if(len && (base == 16U)) { f19a: f1b4 0c01 subs.w ip, r4, #1 f19e: d02d beq.n f1fc <_ntoa_format+0xd6> f1a0: 2810 cmp r0, #16 f1a2: d16a bne.n f27a <_ntoa_format+0x154> len--; f1a4: 3c02 subs r4, #2 } } if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f1a6: 0690 lsls r0, r2, #26 f1a8: d431 bmi.n f20e <_ntoa_format+0xe8> f1aa: 2c1f cmp r4, #31 f1ac: d80f bhi.n f1ce <_ntoa_format+0xa8> buf[len++] = 'x'; f1ae: 2078 movs r0, #120 ; 0x78 } else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = 'X'; } else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = 'b'; f1b0: 5528 strb r0, [r5, r4] f1b2: 3401 adds r4, #1 } if(len < PRINTF_NTOA_BUFFER_SIZE) { f1b4: 2c1f cmp r4, #31 f1b6: d80a bhi.n f1ce <_ntoa_format+0xa8> buf[len++] = '0'; f1b8: 2030 movs r0, #48 ; 0x30 f1ba: 5528 strb r0, [r5, r4] f1bc: 3401 adds r4, #1 } } if(len < PRINTF_NTOA_BUFFER_SIZE) { f1be: 2c20 cmp r4, #32 f1c0: d005 beq.n f1ce <_ntoa_format+0xa8> if(negative) { f1c2: f1be 0f00 cmp.w lr, #0 f1c6: d026 beq.n f216 <_ntoa_format+0xf0> buf[len++] = '-'; f1c8: 202d movs r0, #45 ; 0x2d } else if(flags & FLAGS_PLUS) { buf[len++] = '+'; // ignore the space if the '+' exists } else if(flags & FLAGS_SPACE) { buf[len++] = ' '; f1ca: 5528 strb r0, [r5, r4] f1cc: 3401 adds r4, #1 if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { f1ce: 0792 lsls r2, r2, #30 f1d0: d03b beq.n f24a <_ntoa_format+0x124> f1d2: 463a mov r2, r7 f1d4: 4425 add r5, r4 f1d6: 4414 add r4, r2 while(len) { f1d8: 42a2 cmp r2, r4 f1da: d13a bne.n f252 <_ntoa_format+0x12c> if(flags & FLAGS_LEFT) { f1dc: f1ba 0f00 cmp.w sl, #0 f1e0: d004 beq.n f1ec <_ntoa_format+0xc6> f1e2: 1bd5 subs r5, r2, r7 while(idx - start_idx < width) { f1e4: 42b5 cmp r5, r6 f1e6: eb05 0407 add.w r4, r5, r7 f1ea: d33d bcc.n f268 <_ntoa_format+0x142> } } return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); } f1ec: 4620 mov r0, r4 f1ee: b003 add sp, #12 f1f0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} buf[len++] = '0'; f1f4: f805 b004 strb.w fp, [r5, r4] f1f8: 3401 adds r4, #1 f1fa: e7bc b.n f176 <_ntoa_format+0x50> f1fc: 4664 mov r4, ip if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f1fe: 2810 cmp r0, #16 f200: d0d1 beq.n f1a6 <_ntoa_format+0x80> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f202: 2802 cmp r0, #2 f204: d1d6 bne.n f1b4 <_ntoa_format+0x8e> f206: 2c1f cmp r4, #31 f208: d8e1 bhi.n f1ce <_ntoa_format+0xa8> buf[len++] = 'b'; f20a: 2062 movs r0, #98 ; 0x62 f20c: e7d0 b.n f1b0 <_ntoa_format+0x8a> else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f20e: 2c1f cmp r4, #31 f210: d8dd bhi.n f1ce <_ntoa_format+0xa8> buf[len++] = 'X'; f212: 2058 movs r0, #88 ; 0x58 f214: e7cc b.n f1b0 <_ntoa_format+0x8a> else if(flags & FLAGS_PLUS) { f216: 0750 lsls r0, r2, #29 f218: d501 bpl.n f21e <_ntoa_format+0xf8> buf[len++] = '+'; // ignore the space if the '+' exists f21a: 202b movs r0, #43 ; 0x2b f21c: e7d5 b.n f1ca <_ntoa_format+0xa4> else if(flags & FLAGS_SPACE) { f21e: 0710 lsls r0, r2, #28 f220: d5d5 bpl.n f1ce <_ntoa_format+0xa8> buf[len++] = ' '; f222: 2020 movs r0, #32 f224: e7d1 b.n f1ca <_ntoa_format+0xa4> out(' ', buffer, idx++, maxlen); f226: 2020 movs r0, #32 f228: e9cd 1300 strd r1, r3, [sp] f22c: 47c0 blx r8 for(i = len; i < width; i++) { f22e: e9dd 1300 ldrd r1, r3, [sp] f232: f109 0901 add.w r9, r9, #1 f236: 454e cmp r6, r9 f238: eb0b 0209 add.w r2, fp, r9 f23c: d8f3 bhi.n f226 <_ntoa_format+0x100> f23e: 1b32 subs r2, r6, r4 f240: 42b4 cmp r4, r6 f242: bf88 it hi f244: 2200 movhi r2, #0 f246: 443a add r2, r7 f248: e7c4 b.n f1d4 <_ntoa_format+0xae> f24a: 46a1 mov r9, r4 f24c: eba7 0b04 sub.w fp, r7, r4 f250: e7f1 b.n f236 <_ntoa_format+0x110> out(buf[--len], buffer, idx++, maxlen); f252: f102 0901 add.w r9, r2, #1 f256: f815 0d01 ldrb.w r0, [r5, #-1]! f25a: e9cd 1300 strd r1, r3, [sp] f25e: 47c0 blx r8 f260: e9dd 1300 ldrd r1, r3, [sp] f264: 464a mov r2, r9 f266: e7b7 b.n f1d8 <_ntoa_format+0xb2> out(' ', buffer, idx++, maxlen); f268: 4622 mov r2, r4 f26a: 2020 movs r0, #32 f26c: 9301 str r3, [sp, #4] f26e: 9100 str r1, [sp, #0] f270: 3501 adds r5, #1 f272: 47c0 blx r8 f274: e9dd 1300 ldrd r1, r3, [sp] f278: e7b4 b.n f1e4 <_ntoa_format+0xbe> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f27a: 2802 cmp r0, #2 f27c: 4664 mov r4, ip f27e: d199 bne.n f1b4 <_ntoa_format+0x8e> f280: e7c3 b.n f20a <_ntoa_format+0xe4> ... 0000f284 <_ntoa_long>: // internal itoa for 'long' type static size_t _ntoa_long(out_fct_type out, char * buffer, size_t idx, size_t maxlen, unsigned long value, bool negative, unsigned long base, unsigned int prec, unsigned int width, unsigned int flags) { f284: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} f288: b091 sub sp, #68 ; 0x44 f28a: 9d18 ldr r5, [sp, #96] ; 0x60 f28c: 9e1a ldr r6, [sp, #104] ; 0x68 f28e: 9f1d ldr r7, [sp, #116] ; 0x74 char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { f290: b90d cbnz r5, f296 <_ntoa_long+0x12> flags &= ~FLAGS_HASH; f292: f027 0710 bic.w r7, r7, #16 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { f296: 057c lsls r4, r7, #21 f298: d500 bpl.n f29c <_ntoa_long+0x18> f29a: b315 cbz r5, f2e2 <_ntoa_long+0x5e> f29c: f017 0f20 tst.w r7, #32 f2a0: bf14 ite ne f2a2: f04f 0e41 movne.w lr, #65 ; 0x41 f2a6: f04f 0e61 moveq.w lr, #97 ; 0x61 do { const char digit = (char)(value % base); buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f2aa: 46ac mov ip, r5 f2ac: f10d 0820 add.w r8, sp, #32 f2b0: 2500 movs r5, #0 f2b2: f1ae 0e0a sub.w lr, lr, #10 const char digit = (char)(value % base); f2b6: fbbc f9f6 udiv r9, ip, r6 f2ba: fb06 c919 mls r9, r6, r9, ip f2be: fa5f f489 uxtb.w r4, r9 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f2c2: f1b9 0f09 cmp.w r9, #9 f2c6: bf94 ite ls f2c8: 3430 addls r4, #48 ; 0x30 f2ca: 4474 addhi r4, lr f2cc: b2e4 uxtb r4, r4 value /= base; } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f2ce: 45b4 cmp ip, r6 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f2d0: f808 4b01 strb.w r4, [r8], #1 value /= base; f2d4: fbbc f4f6 udiv r4, ip, r6 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f2d8: f105 0501 add.w r5, r5, #1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f2dc: d301 bcc.n f2e2 <_ntoa_long+0x5e> f2de: 2d20 cmp r5, #32 f2e0: d110 bne.n f304 <_ntoa_long+0x80> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); f2e2: 9c1c ldr r4, [sp, #112] ; 0x70 f2e4: 9405 str r4, [sp, #20] f2e6: 9c1b ldr r4, [sp, #108] ; 0x6c f2e8: 9706 str r7, [sp, #24] f2ea: e9cd 6403 strd r6, r4, [sp, #12] f2ee: f89d 4064 ldrb.w r4, [sp, #100] ; 0x64 f2f2: e9cd 5401 strd r5, r4, [sp, #4] f2f6: ac08 add r4, sp, #32 f2f8: 9400 str r4, [sp, #0] f2fa: 4c03 ldr r4, [pc, #12] ; (f308 <_ntoa_long+0x84>) f2fc: 47a0 blx r4 } f2fe: b011 add sp, #68 ; 0x44 f300: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} value /= base; f304: 46a4 mov ip, r4 f306: e7d6 b.n f2b6 <_ntoa_long+0x32> f308: 0000f127 .word 0x0000f127 0000f30c <_ntoa_long_long>: // internal itoa for 'long long' type #if defined(PRINTF_SUPPORT_LONG_LONG) static size_t _ntoa_long_long(out_fct_type out, char * buffer, size_t idx, size_t maxlen, unsigned long long value, bool negative, unsigned long long base, unsigned int prec, unsigned int width, unsigned int flags) { f30c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f310: ed2d 8b04 vpush {d8-d9} f314: b093 sub sp, #76 ; 0x4c f316: e9dd 6520 ldrd r6, r5, [sp, #128] ; 0x80 f31a: 469a mov sl, r3 char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { f31c: ea56 0305 orrs.w r3, r6, r5 flags &= ~FLAGS_HASH; f320: bf02 ittt eq f322: 9b28 ldreq r3, [sp, #160] ; 0xa0 f324: f023 0310 biceq.w r3, r3, #16 f328: 9328 streq r3, [sp, #160] ; 0xa0 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { f32a: 9b28 ldr r3, [sp, #160] ; 0xa0 f32c: 055b lsls r3, r3, #21 { f32e: e9dd b924 ldrd fp, r9, [sp, #144] ; 0x90 f332: ee08 0a10 vmov s16, r0 f336: ee08 1a90 vmov s17, r1 f33a: ee09 2a10 vmov s18, r2 if(!(flags & FLAGS_PRECISION) || value) { f33e: d502 bpl.n f346 <_ntoa_long_long+0x3a> f340: ea56 0305 orrs.w r3, r6, r5 f344: d03f beq.n f3c6 <_ntoa_long_long+0xba> f346: 9b28 ldr r3, [sp, #160] ; 0xa0 f348: f013 0f20 tst.w r3, #32 f34c: bf14 ite ne f34e: 2341 movne r3, #65 ; 0x41 f350: 2361 moveq r3, #97 ; 0x61 do { const char digit = (char)(value % base); buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f352: 3b0a subs r3, #10 f354: f10d 0828 add.w r8, sp, #40 ; 0x28 f358: 2400 movs r4, #0 f35a: 9309 str r3, [sp, #36] ; 0x24 const char digit = (char)(value % base); f35c: 4f1b ldr r7, [pc, #108] ; (f3cc <_ntoa_long_long+0xc0>) f35e: 465a mov r2, fp f360: 464b mov r3, r9 f362: 4630 mov r0, r6 f364: 4629 mov r1, r5 f366: 47b8 blx r7 f368: b2d2 uxtb r2, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f36a: 2a09 cmp r2, #9 f36c: bf8a itet hi f36e: 9b09 ldrhi r3, [sp, #36] ; 0x24 f370: 3230 addls r2, #48 ; 0x30 f372: 18d2 addhi r2, r2, r3 value /= base; } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f374: 455e cmp r6, fp buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f376: b2d2 uxtb r2, r2 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f378: eb75 0309 sbcs.w r3, r5, r9 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f37c: f808 2b01 strb.w r2, [r8], #1 f380: f104 0401 add.w r4, r4, #1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f384: d301 bcc.n f38a <_ntoa_long_long+0x7e> f386: 2c20 cmp r4, #32 f388: d11a bne.n f3c0 <_ntoa_long_long+0xb4> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); f38a: 9b28 ldr r3, [sp, #160] ; 0xa0 f38c: 9306 str r3, [sp, #24] f38e: 9b27 ldr r3, [sp, #156] ; 0x9c f390: 9305 str r3, [sp, #20] f392: 9b26 ldr r3, [sp, #152] ; 0x98 f394: e9cd b303 strd fp, r3, [sp, #12] f398: f89d 3088 ldrb.w r3, [sp, #136] ; 0x88 f39c: e9cd 4301 strd r4, r3, [sp, #4] f3a0: ab0a add r3, sp, #40 ; 0x28 f3a2: 9300 str r3, [sp, #0] f3a4: ee19 2a10 vmov r2, s18 f3a8: ee18 1a90 vmov r1, s17 f3ac: ee18 0a10 vmov r0, s16 f3b0: 4c07 ldr r4, [pc, #28] ; (f3d0 <_ntoa_long_long+0xc4>) f3b2: 4653 mov r3, sl f3b4: 47a0 blx r4 } f3b6: b013 add sp, #76 ; 0x4c f3b8: ecbd 8b04 vpop {d8-d9} f3bc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} value /= base; f3c0: 4606 mov r6, r0 f3c2: 460d mov r5, r1 f3c4: e7ca b.n f35c <_ntoa_long_long+0x50> size_t len = 0U; f3c6: 2400 movs r4, #0 f3c8: e7df b.n f38a <_ntoa_long_long+0x7e> f3ca: bf00 nop f3cc: 00015f8d .word 0x00015f8d f3d0: 0000f127 .word 0x0000f127 0000f3d4 <_vsnprintf.constprop.0>: #endif // PRINTF_SUPPORT_EXPONENTIAL #endif // PRINTF_SUPPORT_FLOAT // internal vsnprintf static int _vsnprintf(out_fct_type out, char * buffer, const size_t maxlen, const char * format, va_list va) f3d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f3d8: b091 sub sp, #68 ; 0x44 f3da: 461f mov r7, r3 f3dc: 920a str r2, [sp, #40] ; 0x28 unsigned int flags, width, precision, n; size_t idx = 0U; if(!buffer) { // use null output function out = _out_null; f3de: 4bac ldr r3, [pc, #688] ; (f690 <_vsnprintf.constprop.0+0x2bc>) f3e0: 4aac ldr r2, [pc, #688] ; (f694 <_vsnprintf.constprop.0+0x2c0>) static int _vsnprintf(out_fct_type out, char * buffer, const size_t maxlen, const char * format, va_list va) f3e2: 4689 mov r9, r1 out = _out_null; f3e4: 1e01 subs r1, r0, #0 f3e6: bf14 ite ne f3e8: 4692 movne sl, r2 f3ea: 469a moveq sl, r3 out('%', buffer, idx++, maxlen); format++; break; default : out(*format, buffer, idx++, maxlen); f3ec: 2400 movs r4, #0 while(*format) { f3ee: 9b0a ldr r3, [sp, #40] ; 0x28 f3f0: 7818 ldrb r0, [r3, #0] f3f2: b958 cbnz r0, f40c <_vsnprintf.constprop.0+0x38> break; } } // termination out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen); f3f4: 454c cmp r4, r9 f3f6: bf2c ite cs f3f8: f109 32ff addcs.w r2, r9, #4294967295 ; 0xffffffff f3fc: 4622 movcc r2, r4 f3fe: 464b mov r3, r9 f400: 2000 movs r0, #0 f402: 47d0 blx sl // return written chars without terminating \0 return (int)idx; } f404: 4620 mov r0, r4 f406: b011 add sp, #68 ; 0x44 f408: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} format++; f40c: 9b0a ldr r3, [sp, #40] ; 0x28 if(*format != '%') { f40e: 2825 cmp r0, #37 ; 0x25 format++; f410: f103 0301 add.w r3, r3, #1 f414: 930a str r3, [sp, #40] ; 0x28 if(*format != '%') { f416: d006 beq.n f426 <_vsnprintf.constprop.0+0x52> out(*format, buffer, idx++, maxlen); f418: 4622 mov r2, r4 f41a: 1c65 adds r5, r4, #1 f41c: 464b mov r3, r9 f41e: 910b str r1, [sp, #44] ; 0x2c f420: 47d0 blx sl f422: 462c mov r4, r5 f424: e217 b.n f856 <_vsnprintf.constprop.0+0x482> flags = 0U; f426: 2500 movs r5, #0 f428: e006 b.n f438 <_vsnprintf.constprop.0+0x64> switch(*format) { f42a: 2b2d cmp r3, #45 ; 0x2d f42c: d016 beq.n f45c <_vsnprintf.constprop.0+0x88> f42e: 2b30 cmp r3, #48 ; 0x30 f430: d10c bne.n f44c <_vsnprintf.constprop.0+0x78> flags |= FLAGS_ZEROPAD; f432: f045 0501 orr.w r5, r5, #1 format++; f436: 920a str r2, [sp, #40] ; 0x28 switch(*format) { f438: 9a0a ldr r2, [sp, #40] ; 0x28 f43a: f812 3b01 ldrb.w r3, [r2], #1 f43e: 2b2b cmp r3, #43 ; 0x2b f440: d00f beq.n f462 <_vsnprintf.constprop.0+0x8e> f442: d8f2 bhi.n f42a <_vsnprintf.constprop.0+0x56> f444: 2b20 cmp r3, #32 f446: d00f beq.n f468 <_vsnprintf.constprop.0+0x94> f448: 2b23 cmp r3, #35 ; 0x23 f44a: d010 beq.n f46e <_vsnprintf.constprop.0+0x9a> if(_is_digit(*format)) { f44c: f1a3 0030 sub.w r0, r3, #48 ; 0x30 f450: 2809 cmp r0, #9 f452: d82c bhi.n f4ae <_vsnprintf.constprop.0+0xda> unsigned int i = 0U; f454: f04f 0800 mov.w r8, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); f458: 200a movs r0, #10 f45a: e010 b.n f47e <_vsnprintf.constprop.0+0xaa> flags |= FLAGS_LEFT; f45c: f045 0502 orr.w r5, r5, #2 } while(n); f460: e7e9 b.n f436 <_vsnprintf.constprop.0+0x62> flags |= FLAGS_PLUS; f462: f045 0504 orr.w r5, r5, #4 } while(n); f466: e7e6 b.n f436 <_vsnprintf.constprop.0+0x62> flags |= FLAGS_SPACE; f468: f045 0508 orr.w r5, r5, #8 } while(n); f46c: e7e3 b.n f436 <_vsnprintf.constprop.0+0x62> flags |= FLAGS_HASH; f46e: f045 0510 orr.w r5, r5, #16 } while(n); f472: e7e0 b.n f436 <_vsnprintf.constprop.0+0x62> i = i * 10U + (unsigned int)(*((*str)++) - '0'); f474: fb00 3808 mla r8, r0, r8, r3 f478: f1a8 0830 sub.w r8, r8, #48 ; 0x30 f47c: 920a str r2, [sp, #40] ; 0x28 while(_is_digit(**str)) { f47e: 9a0a ldr r2, [sp, #40] ; 0x28 f480: f812 3b01 ldrb.w r3, [r2], #1 f484: f1a3 0630 sub.w r6, r3, #48 ; 0x30 f488: 2e09 cmp r6, #9 f48a: d9f3 bls.n f474 <_vsnprintf.constprop.0+0xa0> if(*format == '.') { f48c: 9b0a ldr r3, [sp, #40] ; 0x28 f48e: 781b ldrb r3, [r3, #0] f490: 2b2e cmp r3, #46 ; 0x2e f492: d14c bne.n f52e <_vsnprintf.constprop.0+0x15a> format++; f494: 9b0a ldr r3, [sp, #40] ; 0x28 f496: 1c58 adds r0, r3, #1 if(_is_digit(*format)) { f498: 785b ldrb r3, [r3, #1] f49a: f1a3 0230 sub.w r2, r3, #48 ; 0x30 f49e: 2a09 cmp r2, #9 flags |= FLAGS_PRECISION; f4a0: f445 6580 orr.w r5, r5, #1024 ; 0x400 if(_is_digit(*format)) { f4a4: d83a bhi.n f51c <_vsnprintf.constprop.0+0x148> unsigned int i = 0U; f4a6: 2600 movs r6, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); f4a8: f04f 0e0a mov.w lr, #10 f4ac: e013 b.n f4d6 <_vsnprintf.constprop.0+0x102> else if(*format == '*') { f4ae: 2b2a cmp r3, #42 ; 0x2a f4b0: d10a bne.n f4c8 <_vsnprintf.constprop.0+0xf4> const int w = va_arg(va, int); f4b2: f857 8b04 ldr.w r8, [r7], #4 f4b6: 920a str r2, [sp, #40] ; 0x28 if(w < 0) { f4b8: f1b8 0f00 cmp.w r8, #0 flags |= FLAGS_LEFT; // reverse padding f4bc: bfbc itt lt f4be: f045 0502 orrlt.w r5, r5, #2 width = (unsigned int) - w; f4c2: f1c8 0800 rsblt r8, r8, #0 format++; f4c6: e7e1 b.n f48c <_vsnprintf.constprop.0+0xb8> width = 0U; f4c8: f04f 0800 mov.w r8, #0 f4cc: e7de b.n f48c <_vsnprintf.constprop.0+0xb8> i = i * 10U + (unsigned int)(*((*str)++) - '0'); f4ce: fb0e 3606 mla r6, lr, r6, r3 f4d2: 3e30 subs r6, #48 ; 0x30 f4d4: 4610 mov r0, r2 while(_is_digit(**str)) { f4d6: 4602 mov r2, r0 f4d8: f812 3b01 ldrb.w r3, [r2], #1 f4dc: f1a3 0c30 sub.w ip, r3, #48 ; 0x30 f4e0: f1bc 0f09 cmp.w ip, #9 f4e4: d9f3 bls.n f4ce <_vsnprintf.constprop.0+0xfa> switch(*format) { f4e6: 4602 mov r2, r0 f4e8: f812 3b01 ldrb.w r3, [r2], #1 f4ec: 2b6c cmp r3, #108 ; 0x6c f4ee: d028 beq.n f542 <_vsnprintf.constprop.0+0x16e> f4f0: d820 bhi.n f534 <_vsnprintf.constprop.0+0x160> f4f2: 2b68 cmp r3, #104 ; 0x68 f4f4: d02c beq.n f550 <_vsnprintf.constprop.0+0x17c> f4f6: 2b6a cmp r3, #106 ; 0x6a f4f8: d033 beq.n f562 <_vsnprintf.constprop.0+0x18e> f4fa: 4602 mov r2, r0 switch(*format) { f4fc: 4613 mov r3, r2 f4fe: f813 0b01 ldrb.w r0, [r3], #1 f502: 930a str r3, [sp, #40] ; 0x28 f504: 2878 cmp r0, #120 ; 0x78 f506: d887 bhi.n f418 <_vsnprintf.constprop.0+0x44> f508: 2861 cmp r0, #97 ; 0x61 f50a: d82d bhi.n f568 <_vsnprintf.constprop.0+0x194> f50c: 2825 cmp r0, #37 ; 0x25 f50e: d083 beq.n f418 <_vsnprintf.constprop.0+0x44> f510: 2858 cmp r0, #88 ; 0x58 f512: d181 bne.n f418 <_vsnprintf.constprop.0+0x44> flags |= FLAGS_UPPERCASE; f514: f045 0520 orr.w r5, r5, #32 base = 16U; f518: 2210 movs r2, #16 f51a: e06b b.n f5f4 <_vsnprintf.constprop.0+0x220> else if(*format == '*') { f51c: 2b2a cmp r3, #42 ; 0x2a f51e: d107 bne.n f530 <_vsnprintf.constprop.0+0x15c> precision = prec > 0 ? (unsigned int)prec : 0U; f520: f857 6b04 ldr.w r6, [r7], #4 format++; f524: 980a ldr r0, [sp, #40] ; 0x28 precision = prec > 0 ? (unsigned int)prec : 0U; f526: ea26 76e6 bic.w r6, r6, r6, asr #31 format++; f52a: 3002 adds r0, #2 f52c: e7db b.n f4e6 <_vsnprintf.constprop.0+0x112> f52e: 980a ldr r0, [sp, #40] ; 0x28 precision = 0U; f530: 2600 movs r6, #0 f532: e7d8 b.n f4e6 <_vsnprintf.constprop.0+0x112> switch(*format) { f534: 2b74 cmp r3, #116 ; 0x74 f536: d001 beq.n f53c <_vsnprintf.constprop.0+0x168> f538: 2b7a cmp r3, #122 ; 0x7a f53a: d1de bne.n f4fa <_vsnprintf.constprop.0+0x126> flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); f53c: f445 7580 orr.w r5, r5, #256 ; 0x100 break; f540: e7dc b.n f4fc <_vsnprintf.constprop.0+0x128> if(*format == 'l') { f542: 7843 ldrb r3, [r0, #1] f544: 2b6c cmp r3, #108 ; 0x6c f546: d1f9 bne.n f53c <_vsnprintf.constprop.0+0x168> flags |= FLAGS_LONG_LONG; f548: f445 7540 orr.w r5, r5, #768 ; 0x300 format++; f54c: 1c82 adds r2, r0, #2 f54e: e7d5 b.n f4fc <_vsnprintf.constprop.0+0x128> if(*format == 'h') { f550: 7843 ldrb r3, [r0, #1] f552: 2b68 cmp r3, #104 ; 0x68 f554: d002 beq.n f55c <_vsnprintf.constprop.0+0x188> flags |= FLAGS_SHORT; f556: f045 0580 orr.w r5, r5, #128 ; 0x80 f55a: e7cf b.n f4fc <_vsnprintf.constprop.0+0x128> flags |= FLAGS_CHAR; f55c: f045 05c0 orr.w r5, r5, #192 ; 0xc0 f560: e7f4 b.n f54c <_vsnprintf.constprop.0+0x178> flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); f562: f445 7500 orr.w r5, r5, #512 ; 0x200 break; f566: e7c9 b.n f4fc <_vsnprintf.constprop.0+0x128> switch(*format) { f568: f1a0 0362 sub.w r3, r0, #98 ; 0x62 f56c: 2b16 cmp r3, #22 f56e: f63f af53 bhi.w f418 <_vsnprintf.constprop.0+0x44> f572: a201 add r2, pc, #4 ; (adr r2, f578 <_vsnprintf.constprop.0+0x1a4>) f574: f852 f023 ldr.w pc, [r2, r3, lsl #2] f578: 0000f5d5 .word 0x0000f5d5 f57c: 0000f6f7 .word 0x0000f6f7 f580: 0000f5d5 .word 0x0000f5d5 f584: 0000f419 .word 0x0000f419 f588: 0000f419 .word 0x0000f419 f58c: 0000f419 .word 0x0000f419 f590: 0000f419 .word 0x0000f419 f594: 0000f5d5 .word 0x0000f5d5 f598: 0000f419 .word 0x0000f419 f59c: 0000f419 .word 0x0000f419 f5a0: 0000f419 .word 0x0000f419 f5a4: 0000f419 .word 0x0000f419 f5a8: 0000f419 .word 0x0000f419 f5ac: 0000f5d5 .word 0x0000f5d5 f5b0: 0000f82f .word 0x0000f82f f5b4: 0000f419 .word 0x0000f419 f5b8: 0000f419 .word 0x0000f419 f5bc: 0000f76d .word 0x0000f76d f5c0: 0000f419 .word 0x0000f419 f5c4: 0000f5d5 .word 0x0000f5d5 f5c8: 0000f419 .word 0x0000f419 f5cc: 0000f419 .word 0x0000f419 f5d0: 0000f5d5 .word 0x0000f5d5 if(*format == 'x' || *format == 'X') { f5d4: 2878 cmp r0, #120 ; 0x78 f5d6: d09f beq.n f518 <_vsnprintf.constprop.0+0x144> else if(*format == 'o') { f5d8: 286f cmp r0, #111 ; 0x6f f5da: f000 813e beq.w f85a <_vsnprintf.constprop.0+0x486> else if(*format == 'b') { f5de: 2862 cmp r0, #98 ; 0x62 f5e0: f000 813d beq.w f85e <_vsnprintf.constprop.0+0x48a> if((*format != 'i') && (*format != 'd')) { f5e4: 2869 cmp r0, #105 ; 0x69 flags &= ~FLAGS_HASH; // no hash for dec format f5e6: f025 0510 bic.w r5, r5, #16 base = 10U; f5ea: f04f 020a mov.w r2, #10 if((*format != 'i') && (*format != 'd')) { f5ee: d003 beq.n f5f8 <_vsnprintf.constprop.0+0x224> f5f0: 2864 cmp r0, #100 ; 0x64 f5f2: d001 beq.n f5f8 <_vsnprintf.constprop.0+0x224> flags &= ~(FLAGS_PLUS | FLAGS_SPACE); f5f4: f025 050c bic.w r5, r5, #12 if(flags & FLAGS_PRECISION) { f5f8: 056b lsls r3, r5, #21 flags &= ~FLAGS_ZEROPAD; f5fa: bf48 it mi f5fc: f025 0501 bicmi.w r5, r5, #1 if((*format == 'i') || (*format == 'd')) { f600: 2869 cmp r0, #105 ; 0x69 if(flags & FLAGS_LONG_LONG) { f602: f405 7300 and.w r3, r5, #512 ; 0x200 if((*format == 'i') || (*format == 'd')) { f606: d001 beq.n f60c <_vsnprintf.constprop.0+0x238> f608: 2864 cmp r0, #100 ; 0x64 f60a: d149 bne.n f6a0 <_vsnprintf.constprop.0+0x2cc> if(flags & FLAGS_LONG_LONG) { f60c: b1fb cbz r3, f64e <_vsnprintf.constprop.0+0x27a> const long long value = va_arg(va, long long); f60e: 3707 adds r7, #7 f610: f027 0707 bic.w r7, r7, #7 f614: 46bb mov fp, r7 f616: 6878 ldr r0, [r7, #4] f618: f85b 3b08 ldr.w r3, [fp], #8 idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base, f61c: 9204 str r2, [sp, #16] f61e: 2200 movs r2, #0 f620: 9205 str r2, [sp, #20] f622: 0fc2 lsrs r2, r0, #31 f624: 2800 cmp r0, #0 f626: e9cd 8507 strd r8, r5, [sp, #28] f62a: 9606 str r6, [sp, #24] f62c: 9202 str r2, [sp, #8] f62e: da02 bge.n f636 <_vsnprintf.constprop.0+0x262> f630: 425b negs r3, r3 f632: eb60 0040 sbc.w r0, r0, r0, lsl #1 f636: e9cd 3000 strd r3, r0, [sp] idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); f63a: 4622 mov r2, r4 f63c: 464b mov r3, r9 f63e: 4c16 ldr r4, [pc, #88] ; (f698 <_vsnprintf.constprop.0+0x2c4>) f640: 910b str r1, [sp, #44] ; 0x2c f642: 4650 mov r0, sl f644: 47a0 blx r4 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f646: 990b ldr r1, [sp, #44] ; 0x2c f648: 4604 mov r4, r0 break; f64a: 465f mov r7, fp f64c: e6cf b.n f3ee <_vsnprintf.constprop.0+0x1a> else if(flags & FLAGS_LONG) { f64e: 05eb lsls r3, r5, #23 idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); f650: f107 0b04 add.w fp, r7, #4 else if(flags & FLAGS_LONG) { f654: d512 bpl.n f67c <_vsnprintf.constprop.0+0x2a8> const long value = va_arg(va, long); f656: 683b ldr r3, [r7, #0] idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision, f658: e9cd 8504 strd r8, r5, [sp, #16] f65c: e9cd 2602 strd r2, r6, [sp, #8] f660: 2b00 cmp r3, #0 f662: ea4f 72d3 mov.w r2, r3, lsr #31 f666: 9201 str r2, [sp, #4] f668: bfb8 it lt f66a: 425b neglt r3, r3 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f66c: 9300 str r3, [sp, #0] f66e: 4622 mov r2, r4 f670: 464b mov r3, r9 f672: 4c0a ldr r4, [pc, #40] ; (f69c <_vsnprintf.constprop.0+0x2c8>) f674: 910b str r1, [sp, #44] ; 0x2c f676: 4650 mov r0, sl f678: 47a0 blx r4 f67a: e7e4 b.n f646 <_vsnprintf.constprop.0+0x272> const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, f67c: f015 0f40 tst.w r5, #64 ; 0x40 f680: 683b ldr r3, [r7, #0] f682: d001 beq.n f688 <_vsnprintf.constprop.0+0x2b4> f684: b2db uxtb r3, r3 f686: e7e7 b.n f658 <_vsnprintf.constprop.0+0x284> int) : va_arg(va, int); f688: 062f lsls r7, r5, #24 f68a: bf48 it mi f68c: b21b sxthmi r3, r3 f68e: e7e3 b.n f658 <_vsnprintf.constprop.0+0x284> f690: 0000f125 .word 0x0000f125 f694: 0000f11d .word 0x0000f11d f698: 0000f30d .word 0x0000f30d f69c: 0000f285 .word 0x0000f285 if(flags & FLAGS_LONG_LONG) { f6a0: b173 cbz r3, f6c0 <_vsnprintf.constprop.0+0x2ec> idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); f6a2: e9cd 8507 strd r8, r5, [sp, #28] f6a6: 2300 movs r3, #0 f6a8: 3707 adds r7, #7 f6aa: f027 0b07 bic.w fp, r7, #7 f6ae: 9606 str r6, [sp, #24] f6b0: 9204 str r2, [sp, #16] f6b2: 9305 str r3, [sp, #20] f6b4: 9302 str r3, [sp, #8] f6b6: e8fb 2302 ldrd r2, r3, [fp], #8 f6ba: e9cd 2300 strd r2, r3, [sp] f6be: e7bc b.n f63a <_vsnprintf.constprop.0+0x266> else if(flags & FLAGS_LONG) { f6c0: 05e8 lsls r0, r5, #23 idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); f6c2: f107 0b04 add.w fp, r7, #4 else if(flags & FLAGS_LONG) { f6c6: d506 bpl.n f6d6 <_vsnprintf.constprop.0+0x302> idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); f6c8: e9cd 8504 strd r8, r5, [sp, #16] f6cc: e9cd 2602 strd r2, r6, [sp, #8] f6d0: 9301 str r3, [sp, #4] f6d2: 683b ldr r3, [r7, #0] f6d4: e7ca b.n f66c <_vsnprintf.constprop.0+0x298> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); f6d6: f015 0f40 tst.w r5, #64 ; 0x40 f6da: 683b ldr r3, [r7, #0] f6dc: d007 beq.n f6ee <_vsnprintf.constprop.0+0x31a> f6de: b2db uxtb r3, r3 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f6e0: e9cd 2602 strd r2, r6, [sp, #8] f6e4: 2200 movs r2, #0 f6e6: e9cd 8504 strd r8, r5, [sp, #16] f6ea: 9201 str r2, [sp, #4] f6ec: e7be b.n f66c <_vsnprintf.constprop.0+0x298> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); f6ee: 0628 lsls r0, r5, #24 f6f0: bf48 it mi f6f2: b29b uxthmi r3, r3 f6f4: e7f4 b.n f6e0 <_vsnprintf.constprop.0+0x30c> if(!(flags & FLAGS_LEFT)) { f6f6: f015 0502 ands.w r5, r5, #2 f6fa: d023 beq.n f744 <_vsnprintf.constprop.0+0x370> unsigned int l = 1U; f6fc: 2601 movs r6, #1 out((char)va_arg(va, int), buffer, idx++, maxlen); f6fe: f857 0b04 ldr.w r0, [r7], #4 f702: 910b str r1, [sp, #44] ; 0x2c f704: 464b mov r3, r9 f706: 4622 mov r2, r4 f708: b2c0 uxtb r0, r0 f70a: 47d0 blx sl f70c: f104 0b01 add.w fp, r4, #1 if(flags & FLAGS_LEFT) { f710: 990b ldr r1, [sp, #44] ; 0x2c f712: b34d cbz r5, f768 <_vsnprintf.constprop.0+0x394> f714: 4634 mov r4, r6 out((char)va_arg(va, int), buffer, idx++, maxlen); f716: 465a mov r2, fp f718: e01e b.n f758 <_vsnprintf.constprop.0+0x384> out(' ', buffer, idx++, maxlen); f71a: 910b str r1, [sp, #44] ; 0x2c f71c: 464b mov r3, r9 f71e: 2020 movs r0, #32 f720: 47d0 blx sl f722: 990b ldr r1, [sp, #44] ; 0x2c f724: 19a2 adds r2, r4, r6 while(l++ < width) { f726: 3601 adds r6, #1 f728: 45b0 cmp r8, r6 f72a: d8f6 bhi.n f71a <_vsnprintf.constprop.0+0x346> f72c: f1b8 0f00 cmp.w r8, #0 f730: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff f734: bf08 it eq f736: 2300 moveq r3, #0 f738: f108 0601 add.w r6, r8, #1 f73c: 441c add r4, r3 f73e: bf08 it eq f740: 2602 moveq r6, #2 f742: e7dc b.n f6fe <_vsnprintf.constprop.0+0x32a> f744: 462e mov r6, r5 f746: e7ed b.n f724 <_vsnprintf.constprop.0+0x350> out(' ', buffer, idx++, maxlen); f748: 910b str r1, [sp, #44] ; 0x2c f74a: 464b mov r3, r9 f74c: 2020 movs r0, #32 f74e: 1c55 adds r5, r2, #1 f750: 47d0 blx sl f752: 990b ldr r1, [sp, #44] ; 0x2c f754: 3401 adds r4, #1 f756: 462a mov r2, r5 while(l++ < width) { f758: 45a0 cmp r8, r4 f75a: d8f5 bhi.n f748 <_vsnprintf.constprop.0+0x374> f75c: eba8 0306 sub.w r3, r8, r6 f760: 45b0 cmp r8, r6 f762: bf38 it cc f764: 2300 movcc r3, #0 f766: 449b add fp, r3 break; f768: 465c mov r4, fp f76a: e640 b.n f3ee <_vsnprintf.constprop.0+0x1a> const char * p = va_arg(va, char *); f76c: 463b mov r3, r7 unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); f76e: 2e00 cmp r6, #0 const char * p = va_arg(va, char *); f770: f853 bb04 ldr.w fp, [r3], #4 f774: 930b str r3, [sp, #44] ; 0x2c unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); f776: bf14 ite ne f778: 4633 movne r3, r6 f77a: f04f 33ff moveq.w r3, #4294967295 ; 0xffffffff f77e: 445b add r3, fp f780: 465f mov r7, fp for(s = str; *s && maxsize--; ++s); f782: 783a ldrb r2, [r7, #0] f784: b10a cbz r2, f78a <_vsnprintf.constprop.0+0x3b6> f786: 42bb cmp r3, r7 f788: d110 bne.n f7ac <_vsnprintf.constprop.0+0x3d8> if(flags & FLAGS_PRECISION) { f78a: f415 6380 ands.w r3, r5, #1024 ; 0x400 return (unsigned int)(s - str); f78e: eba7 070b sub.w r7, r7, fp if(flags & FLAGS_PRECISION) { f792: 930c str r3, [sp, #48] ; 0x30 f794: d002 beq.n f79c <_vsnprintf.constprop.0+0x3c8> l = (l < precision ? l : precision); f796: 42b7 cmp r7, r6 f798: bf28 it cs f79a: 4637 movcs r7, r6 if(!(flags & FLAGS_LEFT)) { f79c: f015 0302 ands.w r3, r5, #2 f7a0: 930d str r3, [sp, #52] ; 0x34 f7a2: d118 bne.n f7d6 <_vsnprintf.constprop.0+0x402> f7a4: 1b3b subs r3, r7, r4 f7a6: 4622 mov r2, r4 f7a8: 930e str r3, [sp, #56] ; 0x38 f7aa: e008 b.n f7be <_vsnprintf.constprop.0+0x3ea> for(s = str; *s && maxsize--; ++s); f7ac: 3701 adds r7, #1 f7ae: e7e8 b.n f782 <_vsnprintf.constprop.0+0x3ae> out(' ', buffer, idx++, maxlen); f7b0: 910f str r1, [sp, #60] ; 0x3c f7b2: 464b mov r3, r9 f7b4: 2020 movs r0, #32 f7b6: 1c55 adds r5, r2, #1 f7b8: 47d0 blx sl f7ba: 990f ldr r1, [sp, #60] ; 0x3c f7bc: 462a mov r2, r5 while(l++ < width) { f7be: 9b0e ldr r3, [sp, #56] ; 0x38 f7c0: 18d3 adds r3, r2, r3 f7c2: 4598 cmp r8, r3 f7c4: d8f4 bhi.n f7b0 <_vsnprintf.constprop.0+0x3dc> f7c6: eba8 0307 sub.w r3, r8, r7 f7ca: 45b8 cmp r8, r7 f7cc: bf38 it cc f7ce: 2300 movcc r3, #0 f7d0: 3701 adds r7, #1 f7d2: 441c add r4, r3 f7d4: 441f add r7, r3 f7d6: 465d mov r5, fp f7d8: eba4 0b0b sub.w fp, r4, fp f7dc: e005 b.n f7ea <_vsnprintf.constprop.0+0x416> f7de: 461e mov r6, r3 out(*(p++), buffer, idx++, maxlen); f7e0: 910e str r1, [sp, #56] ; 0x38 f7e2: 464b mov r3, r9 f7e4: 4622 mov r2, r4 f7e6: 47d0 blx sl f7e8: 990e ldr r1, [sp, #56] ; 0x38 f7ea: eb0b 0405 add.w r4, fp, r5 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { f7ee: f815 0b01 ldrb.w r0, [r5], #1 f7f2: b128 cbz r0, f800 <_vsnprintf.constprop.0+0x42c> f7f4: 9b0c ldr r3, [sp, #48] ; 0x30 f7f6: 2b00 cmp r3, #0 f7f8: d0f2 beq.n f7e0 <_vsnprintf.constprop.0+0x40c> f7fa: 1e73 subs r3, r6, #1 f7fc: 2e00 cmp r6, #0 f7fe: d1ee bne.n f7de <_vsnprintf.constprop.0+0x40a> if(flags & FLAGS_LEFT) { f800: 9b0d ldr r3, [sp, #52] ; 0x34 f802: b193 cbz r3, f82a <_vsnprintf.constprop.0+0x456> f804: 4622 mov r2, r4 f806: 1b3d subs r5, r7, r4 f808: e006 b.n f818 <_vsnprintf.constprop.0+0x444> out(' ', buffer, idx++, maxlen); f80a: 910c str r1, [sp, #48] ; 0x30 f80c: 464b mov r3, r9 f80e: 2020 movs r0, #32 f810: 1c56 adds r6, r2, #1 f812: 47d0 blx sl f814: 990c ldr r1, [sp, #48] ; 0x30 f816: 4632 mov r2, r6 while(l++ < width) { f818: 1953 adds r3, r2, r5 f81a: 4598 cmp r8, r3 f81c: d8f5 bhi.n f80a <_vsnprintf.constprop.0+0x436> f81e: eba8 0307 sub.w r3, r8, r7 f822: 45b8 cmp r8, r7 f824: bf38 it cc f826: 2300 movcc r3, #0 f828: 441c add r4, r3 const char * p = va_arg(va, char *); f82a: 9f0b ldr r7, [sp, #44] ; 0x2c break; f82c: e5df b.n f3ee <_vsnprintf.constprop.0+0x1a> idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, f82e: 2308 movs r3, #8 f830: e9cd 6303 strd r6, r3, [sp, #12] f834: 2210 movs r2, #16 f836: 2300 movs r3, #0 f838: e9cd 3201 strd r3, r2, [sp, #4] flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE; f83c: f045 0521 orr.w r5, r5, #33 ; 0x21 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, f840: 9505 str r5, [sp, #20] f842: f857 3b04 ldr.w r3, [r7], #4 f846: 9300 str r3, [sp, #0] f848: 4622 mov r2, r4 f84a: 464b mov r3, r9 f84c: 4c05 ldr r4, [pc, #20] ; (f864 <_vsnprintf.constprop.0+0x490>) f84e: 910b str r1, [sp, #44] ; 0x2c f850: 4650 mov r0, sl f852: 47a0 blx r4 f854: 4604 mov r4, r0 out(*format, buffer, idx++, maxlen); f856: 990b ldr r1, [sp, #44] ; 0x2c break; f858: e5c9 b.n f3ee <_vsnprintf.constprop.0+0x1a> base = 8U; f85a: 2208 movs r2, #8 f85c: e6ca b.n f5f4 <_vsnprintf.constprop.0+0x220> base = 2U; f85e: 2202 movs r2, #2 if((*format != 'i') && (*format != 'd')) { f860: e6c8 b.n f5f4 <_vsnprintf.constprop.0+0x220> f862: bf00 nop f864: 0000f285 .word 0x0000f285 0000f868 : va_end(va); return ret; } int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va) { f868: b410 push {r4} return _vsnprintf(_out_buffer, buffer, count, format, va); f86a: 4c02 ldr r4, [pc, #8] ; (f874 ) f86c: 46a4 mov ip, r4 } f86e: f85d 4b04 ldr.w r4, [sp], #4 return _vsnprintf(_out_buffer, buffer, count, format, va); f872: 4760 bx ip f874: 0000f3d5 .word 0x0000f3d5 0000f878 <_lv_task_core_init>: /** * Init the lv_task module */ void _lv_task_core_init(void) { f878: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t)); f87a: 4805 ldr r0, [pc, #20] ; (f890 <_lv_task_core_init+0x18>) f87c: 4b05 ldr r3, [pc, #20] ; (f894 <_lv_task_core_init+0x1c>) f87e: 2118 movs r1, #24 f880: 4798 blx r3 task_list_changed = false; f882: 4b05 ldr r3, [pc, #20] ; (f898 <_lv_task_core_init+0x20>) f884: 2200 movs r2, #0 f886: 701a strb r2, [r3, #0] * Enable or disable the whole lv_task handling * @param en: true: lv_task handling is running, false: lv_task handling is suspended */ void lv_task_enable(bool en) { lv_task_run = en; f888: 2201 movs r2, #1 f88a: 705a strb r2, [r3, #1] } f88c: bd08 pop {r3, pc} f88e: bf00 nop f890: 20008600 .word 0x20008600 f894: 0000e64d .word 0x0000e64d f898: 2000c7b4 .word 0x2000c7b4 0000f89c : { f89c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); f89e: 4b36 ldr r3, [pc, #216] ; (f978 ) f8a0: 4836 ldr r0, [pc, #216] ; (f97c ) f8a2: 4798 blx r3 if(NULL == tmp) { f8a4: 4605 mov r5, r0 f8a6: b1e0 cbz r0, f8e2 tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); f8a8: 4e34 ldr r6, [pc, #208] ; (f97c ) f8aa: 4c35 ldr r4, [pc, #212] ; (f980 ) if(tmp->prio <= DEF_PRIO) { f8ac: 7d2b ldrb r3, [r5, #20] f8ae: f003 0307 and.w r3, r3, #7 f8b2: 2b03 cmp r3, #3 new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); f8b4: 4629 mov r1, r5 if(tmp->prio <= DEF_PRIO) { f8b6: d82e bhi.n f916 new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); f8b8: 4b32 ldr r3, [pc, #200] ; (f984 ) f8ba: 4830 ldr r0, [pc, #192] ; (f97c ) f8bc: 4798 blx r3 LV_ASSERT_MEM(new_task); f8be: 4b32 ldr r3, [pc, #200] ; (f988 ) new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); f8c0: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); f8c2: 4798 blx r3 f8c4: 4605 mov r5, r0 f8c6: bb08 cbnz r0, f90c f8c8: 4b30 ldr r3, [pc, #192] ; (f98c ) f8ca: 4931 ldr r1, [pc, #196] ; (f990 ) f8cc: 9300 str r3, [sp, #0] f8ce: 22db movs r2, #219 ; 0xdb f8d0: 2003 movs r0, #3 f8d2: 4e30 ldr r6, [pc, #192] ; (f994 ) f8d4: 47b0 blx r6 f8d6: 4830 ldr r0, [pc, #192] ; (f998 ) f8d8: 4930 ldr r1, [pc, #192] ; (f99c ) f8da: 4622 mov r2, r4 f8dc: 462b mov r3, r5 f8de: 4788 blx r1 f8e0: e7fe b.n f8e0 new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); f8e2: 4b2f ldr r3, [pc, #188] ; (f9a0 ) f8e4: 4825 ldr r0, [pc, #148] ; (f97c ) f8e6: 4798 blx r3 LV_ASSERT_MEM(new_task); f8e8: 4b27 ldr r3, [pc, #156] ; (f988 ) new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); f8ea: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); f8ec: 4798 blx r3 f8ee: 4605 mov r5, r0 f8f0: b960 cbnz r0, f90c f8f2: 4b26 ldr r3, [pc, #152] ; (f98c ) f8f4: 4926 ldr r1, [pc, #152] ; (f990 ) f8f6: 9300 str r3, [sp, #0] f8f8: 22d3 movs r2, #211 ; 0xd3 f8fa: 2003 movs r0, #3 f8fc: 4e25 ldr r6, [pc, #148] ; (f994 ) f8fe: 47b0 blx r6 f900: 4825 ldr r0, [pc, #148] ; (f998 ) f902: 4926 ldr r1, [pc, #152] ; (f99c ) f904: 4622 mov r2, r4 f906: 462b mov r3, r5 f908: 4788 blx r1 f90a: e7fe b.n f90a if(new_task == NULL) return NULL; f90c: b9ec cbnz r4, f94a f90e: 2400 movs r4, #0 } f910: 4620 mov r0, r4 f912: b003 add sp, #12 f914: bdf0 pop {r4, r5, r6, r7, pc} tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); f916: 4630 mov r0, r6 f918: 47a0 blx r4 } while(tmp != NULL); f91a: 4605 mov r5, r0 f91c: 2800 cmp r0, #0 f91e: d1c5 bne.n f8ac new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); f920: 4b20 ldr r3, [pc, #128] ; (f9a4 ) f922: 4816 ldr r0, [pc, #88] ; (f97c ) f924: 4798 blx r3 LV_ASSERT_MEM(new_task); f926: 4b18 ldr r3, [pc, #96] ; (f988 ) new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); f928: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); f92a: 4798 blx r3 f92c: 2800 cmp r0, #0 f92e: d1ed bne.n f90c f930: 4b16 ldr r3, [pc, #88] ; (f98c ) f932: 4917 ldr r1, [pc, #92] ; (f990 ) f934: 9300 str r3, [sp, #0] f936: 22e5 movs r2, #229 ; 0xe5 f938: 2003 movs r0, #3 f93a: 4e16 ldr r6, [pc, #88] ; (f994 ) f93c: 47b0 blx r6 f93e: 4816 ldr r0, [pc, #88] ; (f998 ) f940: 4916 ldr r1, [pc, #88] ; (f99c ) f942: 4622 mov r2, r4 f944: 462b mov r3, r5 f946: 4788 blx r1 f948: e7fe b.n f948 new_task->period = DEF_PERIOD; f94a: f44f 73fa mov.w r3, #500 ; 0x1f4 f94e: 6023 str r3, [r4, #0] new_task->prio = DEF_PRIO; f950: 7d23 ldrb r3, [r4, #20] task_list_changed = true; f952: 4d15 ldr r5, [pc, #84] ; (f9a8 ) new_task->prio = DEF_PRIO; f954: 2203 movs r2, #3 f956: f362 0302 bfi r3, r2, #0, #3 new_task->task_cb = NULL; f95a: 2700 movs r7, #0 new_task->prio = DEF_PRIO; f95c: 7523 strb r3, [r4, #20] new_task->repeat_count = -1; f95e: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff task_list_changed = true; f962: 2601 movs r6, #1 new_task->repeat_count = -1; f964: 6123 str r3, [r4, #16] new_task->task_cb = NULL; f966: 60a7 str r7, [r4, #8] new_task->last_run = lv_tick_get(); f968: 4b10 ldr r3, [pc, #64] ; (f9ac ) task_list_changed = true; f96a: 702e strb r6, [r5, #0] new_task->last_run = lv_tick_get(); f96c: 4798 blx r3 new_task->user_data = NULL; f96e: 60e7 str r7, [r4, #12] new_task->last_run = lv_tick_get(); f970: 6060 str r0, [r4, #4] task_created = true; f972: 70ae strb r6, [r5, #2] return new_task; f974: e7cc b.n f910 f976: bf00 nop f978: 0000e6f1 .word 0x0000e6f1 f97c: 20008600 .word 0x20008600 f980: 0000e6fd .word 0x0000e6fd f984: 0000e73d .word 0x0000e73d f988: 00001795 .word 0x00001795 f98c: 00024206 .word 0x00024206 f990: 000241d6 .word 0x000241d6 f994: 0000e931 .word 0x0000e931 f998: 0001ee02 .word 0x0001ee02 f99c: 0000179d .word 0x0000179d f9a0: 0000e661 .word 0x0000e661 f9a4: 0000e6a9 .word 0x0000e6a9 f9a8: 2000c7b4 .word 0x2000c7b4 f9ac: 0000da8d .word 0x0000da8d 0000f9b0 : { f9b0: b570 push {r4, r5, r6, lr} _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); f9b2: 4601 mov r1, r0 { f9b4: 4604 mov r4, r0 _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); f9b6: 4b07 ldr r3, [pc, #28] ; (f9d4 ) f9b8: 4807 ldr r0, [pc, #28] ; (f9d8 ) task_list_changed = true; f9ba: 4d08 ldr r5, [pc, #32] ; (f9dc ) _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); f9bc: 4798 blx r3 task_list_changed = true; f9be: 2601 movs r6, #1 lv_mem_free(task); f9c0: 4b07 ldr r3, [pc, #28] ; (f9e0 ) task_list_changed = true; f9c2: 702e strb r6, [r5, #0] lv_mem_free(task); f9c4: 4620 mov r0, r4 f9c6: 4798 blx r3 if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ f9c8: 4b06 ldr r3, [pc, #24] ; (f9e4 ) f9ca: 681b ldr r3, [r3, #0] f9cc: 42a3 cmp r3, r4 f9ce: bf08 it eq f9d0: 70ee strbeq r6, [r5, #3] } f9d2: bd70 pop {r4, r5, r6, pc} f9d4: 0000e7b5 .word 0x0000e7b5 f9d8: 20008600 .word 0x20008600 f9dc: 2000c7b4 .word 0x2000c7b4 f9e0: 0000eb2d .word 0x0000eb2d f9e4: 20008670 .word 0x20008670 0000f9e8 : * Execute task if its the priority is appropriate * @param task pointer to lv_task * @return true: execute, false: not executed */ static bool lv_task_exec(lv_task_t * task) { f9e8: b538 push {r3, r4, r5, lr} * @return the time remaining, or 0 if it needs to be run again */ static uint32_t lv_task_time_remaining(lv_task_t * task) { /*Check if at least 'period' time elapsed*/ uint32_t elp = lv_tick_elaps(task->last_run); f9ea: 4b12 ldr r3, [pc, #72] ; (fa34 ) { f9ec: 4604 mov r4, r0 uint32_t elp = lv_tick_elaps(task->last_run); f9ee: 6840 ldr r0, [r0, #4] f9f0: 4798 blx r3 if(lv_task_time_remaining(task) == 0) { f9f2: 6823 ldr r3, [r4, #0] f9f4: 4298 cmp r0, r3 f9f6: d31b bcc.n fa30 task->last_run = lv_tick_get(); f9f8: 4b0f ldr r3, [pc, #60] ; (fa38 ) task_deleted = false; f9fa: 4d10 ldr r5, [pc, #64] ; (fa3c ) task->last_run = lv_tick_get(); f9fc: 4798 blx r3 task_deleted = false; f9fe: 2300 movs r3, #0 fa00: 70eb strb r3, [r5, #3] task_created = false; fa02: 70ab strb r3, [r5, #2] if(task->task_cb) task->task_cb(task); fa04: 68a3 ldr r3, [r4, #8] task->last_run = lv_tick_get(); fa06: 6060 str r0, [r4, #4] if(task->task_cb) task->task_cb(task); fa08: b943 cbnz r3, fa1c if(task->repeat_count > 0) { fa0a: 6923 ldr r3, [r4, #16] fa0c: 2b00 cmp r3, #0 fa0e: dc0c bgt.n fa2a if(task->repeat_count == 0) { fa10: 6923 ldr r3, [r4, #16] fa12: b943 cbnz r3, fa26 lv_task_del(task); fa14: 4b0a ldr r3, [pc, #40] ; (fa40 ) fa16: 4620 mov r0, r4 fa18: 4798 blx r3 fa1a: e004 b.n fa26 if(task->task_cb) task->task_cb(task); fa1c: 4620 mov r0, r4 fa1e: 4798 blx r3 if(task_deleted == false) { /*The task might be deleted by itself as well*/ fa20: 78eb ldrb r3, [r5, #3] fa22: 2b00 cmp r3, #0 fa24: d0f1 beq.n fa0a lv_task_del(task); fa26: 2001 movs r0, #1 } fa28: bd38 pop {r3, r4, r5, pc} task->repeat_count--; fa2a: 3b01 subs r3, #1 fa2c: 6123 str r3, [r4, #16] fa2e: e7ef b.n fa10 bool exec = false; fa30: 2000 movs r0, #0 fa32: e7f9 b.n fa28 fa34: 0000daa1 .word 0x0000daa1 fa38: 0000da8d .word 0x0000da8d fa3c: 2000c7b4 .word 0x2000c7b4 fa40: 0000f9b1 .word 0x0000f9b1 0000fa44 : { fa44: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} if(already_running) return 1; fa48: f8df b174 ldr.w fp, [pc, #372] ; fbc0 fa4c: f89b 4004 ldrb.w r4, [fp, #4] fa50: 2001 movs r0, #1 fa52: b934 cbnz r4, fa62 if(lv_task_run == false) { fa54: f89b 2001 ldrb.w r2, [fp, #1] already_running = true; fa58: f88b 0004 strb.w r0, [fp, #4] if(lv_task_run == false) { fa5c: b91a cbnz r2, fa66 already_running = false; /*Release mutex*/ fa5e: f88b 2004 strb.w r2, [fp, #4] } fa62: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} handler_start = lv_tick_get(); fa66: 4d50 ldr r5, [pc, #320] ; (fba8 ) LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa68: f8df 914c ldr.w r9, [pc, #332] ; fbb8 fa6c: f8df 814c ldr.w r8, [pc, #332] ; fbbc handler_start = lv_tick_get(); fa70: 47a8 blx r5 fa72: f8cb 0008 str.w r0, [fp, #8] task_deleted = false; fa76: 2200 movs r2, #0 LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa78: 4648 mov r0, r9 task_deleted = false; fa7a: f88b 2003 strb.w r2, [fp, #3] task_created = false; fa7e: f88b 2002 strb.w r2, [fp, #2] LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa82: 47c0 blx r8 fa84: f8df a13c ldr.w sl, [pc, #316] ; fbc4 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { fa88: 4f48 ldr r7, [pc, #288] ; (fbac ) LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa8a: f8ca 0000 str.w r0, [sl] while(LV_GC_ROOT(_lv_task_act)) { fa8e: f8da 1000 ldr.w r1, [sl] fa92: b1b9 cbz r1, fac4 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); fa94: 4b46 ldr r3, [pc, #280] ; (fbb0 ) fa96: 4648 mov r0, r9 fa98: 4798 blx r3 fa9a: 4606 mov r6, r0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) { fa9c: f8da 0000 ldr.w r0, [sl] faa0: 7d01 ldrb r1, [r0, #20] faa2: f011 0c07 ands.w ip, r1, #7 faa6: d00d beq.n fac4 if(LV_GC_ROOT(_lv_task_act) == task_interrupter) { faa8: 42a0 cmp r0, r4 faaa: d103 bne.n fab4 LV_GC_ROOT(_lv_task_act) = next; faac: f8ca 6000 str.w r6, [sl] task_interrupter = NULL; /*From this point only task after the interrupter comes, so fab0: 2400 movs r4, #0 continue; /*Load the next task*/ fab2: e7ec b.n fa8e if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) { fab4: f1bc 0f05 cmp.w ip, #5 fab8: d13a bne.n fb30 lv_task_exec(LV_GC_ROOT(_lv_task_act)); faba: 47b8 blx r7 if(task_created || task_deleted) { fabc: f89b 1002 ldrb.w r1, [fp, #2] fac0: 2900 cmp r1, #0 fac2: d065 beq.n fb90 busy_time += lv_tick_elaps(handler_start); fac4: 4c3b ldr r4, [pc, #236] ; (fbb4 ) fac6: f8db 0008 ldr.w r0, [fp, #8] faca: 47a0 blx r4 facc: f8db 200c ldr.w r2, [fp, #12] fad0: 4410 add r0, r2 fad2: f8cb 000c str.w r0, [fp, #12] uint32_t idle_period_time = lv_tick_elaps(idle_period_start); fad6: f8db 0014 ldr.w r0, [fp, #20] fada: 47a0 blx r4 if(idle_period_time >= IDLE_MEAS_PERIOD) { fadc: f5b0 7ffa cmp.w r0, #500 ; 0x1f4 fae0: d316 bcc.n fb10 idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/ fae2: f8db 200c ldr.w r2, [fp, #12] fae6: 2164 movs r1, #100 ; 0x64 fae8: 434a muls r2, r1 faea: f44f 71fa mov.w r1, #500 ; 0x1f4 faee: fbb2 f2f1 udiv r2, r2, r1 faf2: b2d2 uxtb r2, r2 idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/ faf4: 2a64 cmp r2, #100 ; 0x64 faf6: bf9a itte ls faf8: f1c2 0264 rsbls r2, r2, #100 ; 0x64 fafc: b2d2 uxtbls r2, r2 fafe: 2200 movhi r2, #0 fb00: f88b 2010 strb.w r2, [fp, #16] busy_time = 0; fb04: 2200 movs r2, #0 fb06: f8cb 200c str.w r2, [fp, #12] idle_period_start = lv_tick_get(); fb0a: 47a8 blx r5 fb0c: f8cb 0014 str.w r0, [fp, #20] time_till_next = LV_NO_TASK_READY; fb10: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fb14: 4828 ldr r0, [pc, #160] ; (fbb8 ) fb16: 4b29 ldr r3, [pc, #164] ; (fbbc ) time_till_next = LV_NO_TASK_READY; fb18: f8cb 2018 str.w r2, [fp, #24] next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fb1c: 4798 blx r3 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ fb1e: 4e26 ldr r6, [pc, #152] ; (fbb8 ) fb20: 4f23 ldr r7, [pc, #140] ; (fbb0 ) next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fb22: 4605 mov r5, r0 while(next) { fb24: b9f5 cbnz r5, fb64 return time_till_next; fb26: f8db 0018 ldr.w r0, [fp, #24] already_running = false; /*Release the mutex*/ fb2a: f88b 5004 strb.w r5, [fp, #4] return time_till_next; fb2e: e798 b.n fa62 else if(task_interrupter) { fb30: b13c cbz r4, fb42 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) { fb32: f894 c014 ldrb.w ip, [r4, #20] fb36: f001 0107 and.w r1, r1, #7 fb3a: f00c 0c07 and.w ip, ip, #7 fb3e: 4561 cmp r1, ip fb40: d9bc bls.n fabc if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { fb42: 47b8 blx r7 fb44: 2800 cmp r0, #0 fb46: d0b9 beq.n fabc if(!task_created && !task_deleted) { fb48: f89b 1002 ldrb.w r1, [fp, #2] fb4c: 2900 cmp r1, #0 fb4e: d1b9 bne.n fac4 fb50: f89b 1003 ldrb.w r1, [fp, #3] fb54: 2900 cmp r1, #0 fb56: d1b5 bne.n fac4 task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */ fb58: f8da 4000 ldr.w r4, [sl] } while(!end_flag); fb5c: e78b b.n fa76 LV_GC_ROOT(_lv_task_act) = next; /*Load the next task*/ fb5e: f8ca 6000 str.w r6, [sl] fb62: e794 b.n fa8e if(next->prio != LV_TASK_PRIO_OFF) { fb64: 7d2a ldrb r2, [r5, #20] fb66: 0753 lsls r3, r2, #29 fb68: d00d beq.n fb86 uint32_t elp = lv_tick_elaps(task->last_run); fb6a: 6868 ldr r0, [r5, #4] fb6c: 47a0 blx r4 if(elp >= task->period) fb6e: 682a ldr r2, [r5, #0] fb70: 4290 cmp r0, r2 return 0; return task->period - elp; fb72: bf38 it cc fb74: 1a10 subcc r0, r2, r0 if(delay < time_till_next) fb76: f8db 2018 ldr.w r2, [fp, #24] return 0; fb7a: bf28 it cs fb7c: 2000 movcs r0, #0 if(delay < time_till_next) fb7e: 4282 cmp r2, r0 time_till_next = delay; fb80: bf88 it hi fb82: f8cb 0018 strhi.w r0, [fp, #24] next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ fb86: 4629 mov r1, r5 fb88: 4630 mov r0, r6 fb8a: 47b8 blx r7 fb8c: 4605 mov r5, r0 fb8e: e7c9 b.n fb24 if(task_created || task_deleted) { fb90: f89b 1003 ldrb.w r1, [fp, #3] fb94: 2900 cmp r1, #0 fb96: d195 bne.n fac4 if(task_list_changed) { fb98: f89b 0000 ldrb.w r0, [fp] fb9c: 2800 cmp r0, #0 fb9e: d0de beq.n fb5e task_list_changed = false; fba0: f88b 1000 strb.w r1, [fp] task_interrupter = NULL; fba4: 460c mov r4, r1 fba6: e766 b.n fa76 fba8: 0000da8d .word 0x0000da8d fbac: 0000f9e9 .word 0x0000f9e9 fbb0: 0000e6fd .word 0x0000e6fd fbb4: 0000daa1 .word 0x0000daa1 fbb8: 20008600 .word 0x20008600 fbbc: 0000e6f1 .word 0x0000e6f1 fbc0: 2000c7b4 .word 0x2000c7b4 fbc4: 20008670 .word 0x20008670 0000fbc8 : { fbc8: b5f8 push {r3, r4, r5, r6, r7, lr} if(task->prio == prio) return; fbca: 7d03 ldrb r3, [r0, #20] fbcc: f003 0307 and.w r3, r3, #7 fbd0: 428b cmp r3, r1 { fbd2: 4604 mov r4, r0 fbd4: 460d mov r5, r1 if(task->prio == prio) return; fbd6: d018 beq.n fc0a _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { fbd8: 480f ldr r0, [pc, #60] ; (fc18 ) fbda: 4b10 ldr r3, [pc, #64] ; (fc1c ) fbdc: 4e0e ldr r6, [pc, #56] ; (fc18 ) fbde: 4f10 ldr r7, [pc, #64] ; (fc20 ) fbe0: 4798 blx r3 fbe2: 4602 mov r2, r0 fbe4: b132 cbz r2, fbf4 if(i->prio <= prio) { fbe6: 7d13 ldrb r3, [r2, #20] fbe8: f003 0307 and.w r3, r3, #7 fbec: 429d cmp r5, r3 fbee: db0d blt.n fc0c if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i); fbf0: 42a2 cmp r2, r4 fbf2: d003 beq.n fbfc _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL); fbf4: 4808 ldr r0, [pc, #32] ; (fc18 ) fbf6: 4b0b ldr r3, [pc, #44] ; (fc24 ) fbf8: 4621 mov r1, r4 fbfa: 4798 blx r3 task_list_changed = true; fbfc: 4b0a ldr r3, [pc, #40] ; (fc28 ) fbfe: 2201 movs r2, #1 fc00: 701a strb r2, [r3, #0] task->prio = prio; fc02: 7d23 ldrb r3, [r4, #20] fc04: f365 0302 bfi r3, r5, #0, #3 fc08: 7523 strb r3, [r4, #20] } fc0a: bdf8 pop {r3, r4, r5, r6, r7, pc} _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { fc0c: 4611 mov r1, r2 fc0e: 4630 mov r0, r6 fc10: 47b8 blx r7 fc12: 4602 mov r2, r0 fc14: e7e6 b.n fbe4 fc16: bf00 nop fc18: 20008600 .word 0x20008600 fc1c: 0000e6f1 .word 0x0000e6f1 fc20: 0000e6fd .word 0x0000e6fd fc24: 0000e8a5 .word 0x0000e8a5 fc28: 2000c7b4 .word 0x2000c7b4 0000fc2c : { fc2c: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} fc30: 461e mov r6, r3 lv_task_t * new_task = lv_task_create_basic(); fc32: 4b12 ldr r3, [pc, #72] ; (fc7c ) { fc34: 9203 str r2, [sp, #12] fc36: 460f mov r7, r1 fc38: 4680 mov r8, r0 lv_task_t * new_task = lv_task_create_basic(); fc3a: 4798 blx r3 LV_ASSERT_MEM(new_task); fc3c: 4b10 ldr r3, [pc, #64] ; (fc80 ) lv_task_t * new_task = lv_task_create_basic(); fc3e: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); fc40: 4798 blx r3 fc42: 9903 ldr r1, [sp, #12] fc44: 4605 mov r5, r0 fc46: b968 cbnz r0, fc64 fc48: 4b0e ldr r3, [pc, #56] ; (fc84 ) fc4a: 490f ldr r1, [pc, #60] ; (fc88 ) fc4c: 9300 str r3, [sp, #0] fc4e: f44f 7283 mov.w r2, #262 ; 0x106 fc52: 2003 movs r0, #3 fc54: 4e0d ldr r6, [pc, #52] ; (fc8c ) fc56: 47b0 blx r6 fc58: 480d ldr r0, [pc, #52] ; (fc90 ) fc5a: 490e ldr r1, [pc, #56] ; (fc94 ) fc5c: 4622 mov r2, r4 fc5e: 462b mov r3, r5 fc60: 4788 blx r1 fc62: e7fe b.n fc62 if(new_task == NULL) return NULL; fc64: b134 cbz r4, fc74 lv_task_set_prio(new_task, prio); fc66: 4b0c ldr r3, [pc, #48] ; (fc98 ) task->task_cb = task_cb; fc68: f8c4 8008 str.w r8, [r4, #8] task->period = period; fc6c: 6027 str r7, [r4, #0] lv_task_set_prio(new_task, prio); fc6e: 4620 mov r0, r4 fc70: 4798 blx r3 new_task->user_data = user_data; fc72: 60e6 str r6, [r4, #12] } fc74: 4620 mov r0, r4 fc76: b004 add sp, #16 fc78: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} fc7c: 0000f89d .word 0x0000f89d fc80: 00001795 .word 0x00001795 fc84: 0002421b .word 0x0002421b fc88: 000241d6 .word 0x000241d6 fc8c: 0000e931 .word 0x0000e931 fc90: 0001ee02 .word 0x0001ee02 fc94: 0000179d .word 0x0000179d fc98: 0000fbc9 .word 0x0000fbc9 0000fc9c : { fc9c: b510 push {r4, lr} fc9e: 4604 mov r4, r0 task->last_run = lv_tick_get() - task->period - 1; fca0: 4b03 ldr r3, [pc, #12] ; (fcb0 ) fca2: 4798 blx r3 fca4: 6823 ldr r3, [r4, #0] fca6: 43db mvns r3, r3 fca8: 4403 add r3, r0 fcaa: 6063 str r3, [r4, #4] } fcac: bd10 pop {r4, pc} fcae: bf00 nop fcb0: 0000da8d .word 0x0000da8d 0000fcb4 : * @param str pointer to a character in a string * @return length of the UTF-8 character (1,2,3 or 4). O on invalid code */ static uint8_t lv_txt_utf8_size(const char * str) { if((str[0] & 0x80) == 0) fcb4: f990 2000 ldrsb.w r2, [r0] fcb8: 7803 ldrb r3, [r0, #0] fcba: 2a00 cmp r2, #0 fcbc: da0e bge.n fcdc return 1; else if((str[0] & 0xE0) == 0xC0) fcbe: f003 02e0 and.w r2, r3, #224 ; 0xe0 fcc2: 2ac0 cmp r2, #192 ; 0xc0 fcc4: d00c beq.n fce0 return 2; else if((str[0] & 0xF0) == 0xE0) fcc6: f003 02f0 and.w r2, r3, #240 ; 0xf0 fcca: 2ae0 cmp r2, #224 ; 0xe0 fccc: d00a beq.n fce4 return 3; else if((str[0] & 0xF8) == 0xF0) fcce: f003 03f8 and.w r3, r3, #248 ; 0xf8 return 4; fcd2: 2bf0 cmp r3, #240 ; 0xf0 fcd4: bf14 ite ne fcd6: 2000 movne r0, #0 fcd8: 2004 moveq r0, #4 fcda: 4770 bx lr return 1; fcdc: 2001 movs r0, #1 fcde: 4770 bx lr return 2; fce0: 2002 movs r0, #2 fce2: 4770 bx lr return 3; fce4: 2003 movs r0, #3 return 0; /*If the char was invalid tell it's 1 byte long*/ } fce6: 4770 bx lr 0000fce8 : * After call it will point to the next UTF-8 char in 'txt'. * NULL to use txt[0] as index * @return the decoded Unicode character or 0 on invalid UTF-8 code */ static uint32_t lv_txt_utf8_next(const char * txt, uint32_t * i) { fce8: b573 push {r0, r1, r4, r5, r6, lr} * */ uint32_t result = 0; /*Dummy 'i' pointer is required*/ uint32_t i_tmp = 0; fcea: 2300 movs r3, #0 fcec: 9301 str r3, [sp, #4] if(i == NULL) i = &i_tmp; fcee: b901 cbnz r1, fcf2 fcf0: a901 add r1, sp, #4 /*Normal ASCII*/ if((txt[*i] & 0x80) == 0) { fcf2: 680a ldr r2, [r1, #0] fcf4: 5685 ldrsb r5, [r0, r2] fcf6: 5c83 ldrb r3, [r0, r2] fcf8: 2d00 cmp r5, #0 result = txt[*i]; (*i)++; fcfa: f102 0401 add.w r4, r2, #1 if((txt[*i] & 0x80) == 0) { fcfe: db03 blt.n fd08 result = txt[*i]; fd00: 4618 mov r0, r3 (*i)++; fd02: 600c str r4, [r1, #0] else { (*i)++; /*Not UTF-8 char. Go the next.*/ } } return result; } fd04: b002 add sp, #8 fd06: bd70 pop {r4, r5, r6, pc} if((txt[*i] & 0xE0) == 0xC0) { fd08: f003 05e0 and.w r5, r3, #224 ; 0xe0 fd0c: 2dc0 cmp r5, #192 ; 0xc0 fd0e: d110 bne.n fd32 (*i)++; fd10: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd12: 5d00 ldrb r0, [r0, r4] fd14: f000 04c0 and.w r4, r0, #192 ; 0xc0 fd18: 2c80 cmp r4, #128 ; 0x80 fd1a: d001 beq.n fd20 uint32_t result = 0; fd1c: 2000 movs r0, #0 fd1e: e7f1 b.n fd04 result = (uint32_t)(txt[*i] & 0x1F) << 6; fd20: 019b lsls r3, r3, #6 fd22: f403 63f8 and.w r3, r3, #1984 ; 0x7c0 result += (txt[*i] & 0x3F); fd26: f000 003f and.w r0, r0, #63 ; 0x3f fd2a: 4418 add r0, r3 (*i)++; fd2c: 3202 adds r2, #2 (*i)++; fd2e: 600a str r2, [r1, #0] fd30: e7e8 b.n fd04 else if((txt[*i] & 0xF0) == 0xE0) { fd32: f003 05f0 and.w r5, r3, #240 ; 0xf0 fd36: 2de0 cmp r5, #224 ; 0xe0 fd38: d117 bne.n fd6a (*i)++; fd3a: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd3c: 5d04 ldrb r4, [r0, r4] fd3e: f004 05c0 and.w r5, r4, #192 ; 0xc0 fd42: 2d80 cmp r5, #128 ; 0x80 fd44: d1ea bne.n fd1c (*i)++; fd46: 1c95 adds r5, r2, #2 fd48: 600d str r5, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd4a: 5d45 ldrb r5, [r0, r5] fd4c: f005 00c0 and.w r0, r5, #192 ; 0xc0 fd50: 2880 cmp r0, #128 ; 0x80 fd52: d1e3 bne.n fd1c result = (uint32_t)(txt[*i] & 0x0F) << 12; fd54: 0318 lsls r0, r3, #12 fd56: b280 uxth r0, r0 result += (txt[*i] & 0x3F); fd58: f005 053f and.w r5, r5, #63 ; 0x3f result += (uint32_t)(txt[*i] & 0x3F) << 6; fd5c: 01a3 lsls r3, r4, #6 fd5e: 4428 add r0, r5 fd60: f403 637c and.w r3, r3, #4032 ; 0xfc0 result += (txt[*i] & 0x3F); fd64: 4418 add r0, r3 (*i)++; fd66: 3203 adds r2, #3 fd68: e7e1 b.n fd2e else if((txt[*i] & 0xF8) == 0xF0) { fd6a: f003 05f8 and.w r5, r3, #248 ; 0xf8 fd6e: 2df0 cmp r5, #240 ; 0xf0 (*i)++; fd70: 600c str r4, [r1, #0] else if((txt[*i] & 0xF8) == 0xF0) { fd72: d1d3 bne.n fd1c if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd74: 5d04 ldrb r4, [r0, r4] fd76: f004 05c0 and.w r5, r4, #192 ; 0xc0 fd7a: 2d80 cmp r5, #128 ; 0x80 fd7c: d1ce bne.n fd1c (*i)++; fd7e: 1c95 adds r5, r2, #2 fd80: 600d str r5, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd82: 5d45 ldrb r5, [r0, r5] fd84: f005 06c0 and.w r6, r5, #192 ; 0xc0 fd88: 2e80 cmp r6, #128 ; 0x80 fd8a: d1c7 bne.n fd1c (*i)++; fd8c: 1cd6 adds r6, r2, #3 fd8e: 600e str r6, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd90: 5d86 ldrb r6, [r0, r6] fd92: f006 00c0 and.w r0, r6, #192 ; 0xc0 fd96: 2880 cmp r0, #128 ; 0x80 fd98: d1c0 bne.n fd1c result = (uint32_t)(txt[*i] & 0x07) << 18; fd9a: 049b lsls r3, r3, #18 result += (uint32_t)(txt[*i] & 0x3F) << 12; fd9c: 0320 lsls r0, r4, #12 fd9e: f400 307c and.w r0, r0, #258048 ; 0x3f000 result = (uint32_t)(txt[*i] & 0x07) << 18; fda2: f403 13e0 and.w r3, r3, #1835008 ; 0x1c0000 result += (uint32_t)(txt[*i] & 0x3F) << 12; fda6: 4303 orrs r3, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; fda8: 01a8 lsls r0, r5, #6 fdaa: f400 607c and.w r0, r0, #4032 ; 0xfc0 result += txt[*i] & 0x3F; fdae: f006 063f and.w r6, r6, #63 ; 0x3f fdb2: 4430 add r0, r6 fdb4: 4418 add r0, r3 (*i)++; fdb6: 3204 adds r2, #4 fdb8: e7b9 b.n fd2e ... 0000fdbc : { uint8_t c_size; uint8_t cnt = 0; /*Try to find a !0 long UTF-8 char by stepping one character back*/ (*i)--; fdbc: 680b ldr r3, [r1, #0] { fdbe: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} (*i)--; fdc0: 3b01 subs r3, #1 do { if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ c_size = _lv_txt_encoded_size(&txt[*i]); fdc2: 4f0d ldr r7, [pc, #52] ; (fdf8 ) (*i)--; fdc4: 600b str r3, [r1, #0] { fdc6: 4606 mov r6, r0 fdc8: 460c mov r4, r1 (*i)--; fdca: 2504 movs r5, #4 c_size = _lv_txt_encoded_size(&txt[*i]); fdcc: 6820 ldr r0, [r4, #0] fdce: 683b ldr r3, [r7, #0] fdd0: 4430 add r0, r6 fdd2: 4798 blx r3 if(c_size == 0) { fdd4: 6823 ldr r3, [r4, #0] fdd6: b948 cbnz r0, fdec if(*i != 0) fdd8: b12b cbz r3, fde6 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ fdda: 3d01 subs r5, #1 (*i)--; fddc: 3b01 subs r3, #1 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ fdde: f015 05ff ands.w r5, r5, #255 ; 0xff (*i)--; fde2: 6023 str r3, [r4, #0] if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ fde4: d1f2 bne.n fdcc fde6: 2000 movs r0, #0 uint32_t i_tmp = *i; uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/ return letter; } fde8: b003 add sp, #12 fdea: bdf0 pop {r4, r5, r6, r7, pc} uint32_t i_tmp = *i; fdec: 9301 str r3, [sp, #4] uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/ fdee: a901 add r1, sp, #4 fdf0: 687b ldr r3, [r7, #4] fdf2: 4630 mov r0, r6 fdf4: 4798 blx r3 return letter; fdf6: e7f7 b.n fde8 fdf8: 20000054 .word 0x20000054 0000fdfc : * @param txt a '\0' terminated UTF-8 string * @param utf8_id character index * @return byte index of the 'utf8_id'th letter */ static uint32_t lv_txt_utf8_get_byte_id(const char * txt, uint32_t utf8_id) { fdfc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} uint32_t i; uint32_t byte_cnt = 0; fe00: 2400 movs r4, #0 for(i = 0; i < utf8_id; i++) { uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); fe02: f8df 8028 ldr.w r8, [pc, #40] ; fe2c { fe06: 4607 mov r7, r0 fe08: 460d mov r5, r1 for(i = 0; i < utf8_id; i++) { fe0a: 4626 mov r6, r4 fe0c: 42ae cmp r6, r5 fe0e: d102 bne.n fe16 byte_cnt += c_size > 0 ? c_size : 1; } return byte_cnt; } fe10: 4620 mov r0, r4 fe12: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); fe16: 1938 adds r0, r7, r4 fe18: f8d8 3000 ldr.w r3, [r8] fe1c: 4798 blx r3 byte_cnt += c_size > 0 ? c_size : 1; fe1e: 2801 cmp r0, #1 fe20: bf38 it cc fe22: 2001 movcc r0, #1 fe24: fa54 f480 uxtab r4, r4, r0 for(i = 0; i < utf8_id; i++) { fe28: 3601 adds r6, #1 fe2a: e7ef b.n fe0c fe2c: 20000054 .word 0x20000054 0000fe30 : * @param txt a '\0' terminated UTF-8 string * @param byte_id byte index * @return character index of the letter at 'byte_id'th position */ static uint32_t lv_txt_utf8_get_char_id(const char * txt, uint32_t byte_id) { fe30: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} uint32_t i = 0; fe32: 2400 movs r4, #0 uint32_t char_cnt = 0; while(i < byte_id) { _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ fe34: 4f07 ldr r7, [pc, #28] ; (fe54 ) uint32_t i = 0; fe36: 9401 str r4, [sp, #4] { fe38: 4606 mov r6, r0 fe3a: 460d mov r5, r1 while(i < byte_id) { fe3c: 9b01 ldr r3, [sp, #4] fe3e: 42ab cmp r3, r5 fe40: d302 bcc.n fe48 char_cnt++; } return char_cnt; } fe42: 4620 mov r0, r4 fe44: b003 add sp, #12 fe46: bdf0 pop {r4, r5, r6, r7, pc} _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ fe48: 687b ldr r3, [r7, #4] fe4a: a901 add r1, sp, #4 fe4c: 4630 mov r0, r6 fe4e: 4798 blx r3 char_cnt++; fe50: 3401 adds r4, #1 fe52: e7f3 b.n fe3c fe54: 20000054 .word 0x20000054 0000fe58 : * E.g.: "ÁBC" is 3 characters (but 4 bytes) * @param txt a '\0' terminated char string * @return number of characters */ static uint32_t lv_txt_utf8_get_length(const char * txt) { fe58: b573 push {r0, r1, r4, r5, r6, lr} uint32_t len = 0; uint32_t i = 0; fe5a: 2400 movs r4, #0 while(txt[i] != '\0') { _lv_txt_encoded_next(txt, &i); fe5c: 4e07 ldr r6, [pc, #28] ; (fe7c ) uint32_t i = 0; fe5e: 9401 str r4, [sp, #4] { fe60: 4605 mov r5, r0 while(txt[i] != '\0') { fe62: 9b01 ldr r3, [sp, #4] fe64: 5ceb ldrb r3, [r5, r3] fe66: b913 cbnz r3, fe6e len++; } return len; } fe68: 4620 mov r0, r4 fe6a: b002 add sp, #8 fe6c: bd70 pop {r4, r5, r6, pc} _lv_txt_encoded_next(txt, &i); fe6e: 6873 ldr r3, [r6, #4] fe70: a901 add r1, sp, #4 fe72: 4628 mov r0, r5 fe74: 4798 blx r3 len++; fe76: 3401 adds r4, #1 fe78: e7f3 b.n fe62 fe7a: bf00 nop fe7c: 20000054 .word 0x20000054 0000fe80 : if(letter_uni < 128) return letter_uni; fe80: 287f cmp r0, #127 ; 0x7f { fe82: b082 sub sp, #8 if(letter_uni < 128) return letter_uni; fe84: d913 bls.n feae if(letter_uni < 0x0800) { fe86: f5b0 6f00 cmp.w r0, #2048 ; 0x800 fe8a: d212 bcs.n feb2 bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0; fe8c: 0983 lsrs r3, r0, #6 fe8e: f063 033f orn r3, r3, #63 ; 0x3f bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; fe92: f000 003f and.w r0, r0, #63 ; 0x3f bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0; fe96: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; fe9a: f060 007f orn r0, r0, #127 ; 0x7f bytes[2] = 0; fe9e: 2300 movs r3, #0 bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; fea0: f88d 0005 strb.w r0, [sp, #5] bytes[2] = 0; fea4: f88d 3006 strb.w r3, [sp, #6] bytes[3] = 0; fea8: f88d 3007 strb.w r3, [sp, #7] return *res_p; feac: 9801 ldr r0, [sp, #4] } feae: b002 add sp, #8 feb0: 4770 bx lr else if(letter_uni < 0x010000) { feb2: f5b0 3f80 cmp.w r0, #65536 ; 0x10000 feb6: d212 bcs.n fede bytes[0] = ((letter_uni >> 12) & 0x0F) | 0xE0; feb8: 0b03 lsrs r3, r0, #12 feba: f063 031f orn r3, r3, #31 febe: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; fec2: f3c0 1385 ubfx r3, r0, #6, #6 bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; fec6: f000 003f and.w r0, r0, #63 ; 0x3f bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; feca: f063 037f orn r3, r3, #127 ; 0x7f bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; fece: f060 007f orn r0, r0, #127 ; 0x7f bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; fed2: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; fed6: f88d 0006 strb.w r0, [sp, #6] bytes[3] = 0; feda: 2300 movs r3, #0 fedc: e7e4 b.n fea8 else if(letter_uni < 0x110000) { fede: f5b0 1f88 cmp.w r0, #1114112 ; 0x110000 fee2: d2e3 bcs.n feac bytes[0] = ((letter_uni >> 18) & 0x07) | 0xF0; fee4: 0c83 lsrs r3, r0, #18 fee6: f063 030f orn r3, r3, #15 feea: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 12) & 0x3F) | 0x80; feee: f3c0 3305 ubfx r3, r0, #12, #6 fef2: f063 037f orn r3, r3, #127 ; 0x7f fef6: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; fefa: f3c0 1385 ubfx r3, r0, #6, #6 bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; fefe: f000 003f and.w r0, r0, #63 ; 0x3f bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; ff02: f063 037f orn r3, r3, #127 ; 0x7f bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; ff06: f060 007f orn r0, r0, #127 ; 0x7f bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; ff0a: f88d 3006 strb.w r3, [sp, #6] bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; ff0e: f88d 0007 strb.w r0, [sp, #7] ff12: e7cb b.n feac 0000ff14 : if((c & 0x80) != 0) { ff14: 0603 lsls r3, r0, #24 ff16: d512 bpl.n ff3e swapped = (c8[0] << 24) + (c8[1] << 16) + (c8[2] << 8) + (c8[3]); ff18: f3c0 2207 ubfx r2, r0, #8, #8 ff1c: 0603 lsls r3, r0, #24 ff1e: eb03 4302 add.w r3, r3, r2, lsl #16 ff22: f3c0 4207 ubfx r2, r0, #16, #8 ff26: eb03 2302 add.w r3, r3, r2, lsl #8 ff2a: eb03 6010 add.w r0, r3, r0, lsr #24 ff2e: 2304 movs r3, #4 if((swapped & 0xFF) == 0) ff30: b2c2 uxtb r2, r0 ff32: b902 cbnz r2, ff36 swapped = (swapped >> 8); /*Ignore leading zeros (they were in the end originally)*/ ff34: 0a00 lsrs r0, r0, #8 for(i = 0; i < 4; i++) { ff36: 3b01 subs r3, #1 ff38: f013 03ff ands.w r3, r3, #255 ; 0xff ff3c: d1f8 bne.n ff30 } ff3e: 4770 bx lr 0000ff40 <_lv_txt_is_cmd>: if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { ff40: 2923 cmp r1, #35 ; 0x23 { ff42: 4602 mov r2, r0 if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { ff44: d117 bne.n ff76 <_lv_txt_is_cmd+0x36> if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/ ff46: 7803 ldrb r3, [r0, #0] ff48: b91b cbnz r3, ff52 <_lv_txt_is_cmd+0x12> *state = LV_TXT_CMD_STATE_PAR; ff4a: 2301 movs r3, #1 ff4c: 7003 strb r3, [r0, #0] ret = true; ff4e: 2001 movs r0, #1 ff50: e004 b.n ff5c <_lv_txt_is_cmd+0x1c> else if(*state == LV_TXT_CMD_STATE_PAR) { ff52: 2b01 cmp r3, #1 ff54: f04f 0000 mov.w r0, #0 ff58: d109 bne.n ff6e <_lv_txt_is_cmd+0x2e> *state = LV_TXT_CMD_STATE_WAIT; ff5a: 7010 strb r0, [r2, #0] if(*state == LV_TXT_CMD_STATE_PAR) { ff5c: 7813 ldrb r3, [r2, #0] ff5e: 2b01 cmp r3, #1 ff60: d104 bne.n ff6c <_lv_txt_is_cmd+0x2c> if(c == ' ') { ff62: 2920 cmp r1, #32 *state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/ ff64: bf04 itt eq ff66: 2102 moveq r1, #2 ff68: 7011 strbeq r1, [r2, #0] ret = true; ff6a: 4618 mov r0, r3 } ff6c: 4770 bx lr else if(*state == LV_TXT_CMD_STATE_IN) { ff6e: 2b02 cmp r3, #2 ff70: d1f4 bne.n ff5c <_lv_txt_is_cmd+0x1c> *state = LV_TXT_CMD_STATE_WAIT; ff72: 7010 strb r0, [r2, #0] ff74: e7eb b.n ff4e <_lv_txt_is_cmd+0xe> bool ret = false; ff76: 2000 movs r0, #0 ff78: e7f0 b.n ff5c <_lv_txt_is_cmd+0x1c> ... 0000ff7c <_lv_txt_get_width>: { ff7c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ff80: 4688 mov r8, r1 ff82: b085 sub sp, #20 ff84: 4617 mov r7, r2 ff86: 461e mov r6, r3 if(txt == NULL) return 0; ff88: 4605 mov r5, r0 ff8a: 2400 movs r4, #0 ff8c: 2800 cmp r0, #0 ff8e: d03e beq.n 1000e if(font == NULL) return 0; ff90: 2a00 cmp r2, #0 ff92: d03e beq.n 10012 uint32_t i = 0; ff94: 9403 str r4, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; ff96: f88d 400b strb.w r4, [sp, #11] if(length != 0) { ff9a: 2900 cmp r1, #0 ff9c: d035 beq.n 1000a if((flag & LV_TXT_FLAG_RECOLOR) != 0) { ff9e: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 uint32_t letter = _lv_txt_encoded_next(txt, &i); ffa2: f8df a07c ldr.w sl, [pc, #124] ; 10020 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { ffa6: f009 0901 and.w r9, r9, #1 uint32_t letter = _lv_txt_encoded_next(txt, &i); ffaa: f8da 3004 ldr.w r3, [sl, #4] ffae: a903 add r1, sp, #12 ffb0: 4628 mov r0, r5 ffb2: 4798 blx r3 ffb4: 4683 mov fp, r0 uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL); ffb6: 9803 ldr r0, [sp, #12] ffb8: f8da 2004 ldr.w r2, [sl, #4] ffbc: 2100 movs r1, #0 ffbe: 4428 add r0, r5 ffc0: 4790 blx r2 ffc2: 4602 mov r2, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { ffc4: f1b9 0f00 cmp.w r9, #0 ffc8: d111 bne.n ffee <_lv_txt_get_width+0x72> lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); ffca: 4b13 ldr r3, [pc, #76] ; (10018 ) ffcc: 4659 mov r1, fp ffce: 4638 mov r0, r7 ffd0: 4798 blx r3 if(char_width > 0) { ffd2: b203 sxth r3, r0 ffd4: 2b00 cmp r3, #0 ffd6: dc14 bgt.n 10002 while(i < length) { ffd8: 9b03 ldr r3, [sp, #12] ffda: 4598 cmp r8, r3 ffdc: d8e5 bhi.n ffaa <_lv_txt_get_width+0x2e> if(width > 0) { ffde: 2c00 cmp r4, #0 ffe0: dd01 ble.n ffe6 <_lv_txt_get_width+0x6a> width -= letter_space; /*Trim the last letter space. Important if the text is center ffe2: 1ba4 subs r4, r4, r6 ffe4: b224 sxth r4, r4 } ffe6: 4620 mov r0, r4 ffe8: b005 add sp, #20 ffea: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} ffee: 9001 str r0, [sp, #4] if(_lv_txt_is_cmd(&cmd_state, letter) != false) { fff0: 4b0a ldr r3, [pc, #40] ; (1001c ) fff2: 4659 mov r1, fp fff4: f10d 000b add.w r0, sp, #11 fff8: 4798 blx r3 fffa: 9a01 ldr r2, [sp, #4] fffc: 2800 cmp r0, #0 fffe: d0e4 beq.n ffca <_lv_txt_get_width+0x4e> 10000: e7ea b.n ffd8 <_lv_txt_get_width+0x5c> width += letter_space; 10002: 4434 add r4, r6 10004: 4420 add r0, r4 10006: b204 sxth r4, r0 10008: e7e6 b.n ffd8 <_lv_txt_get_width+0x5c> lv_coord_t width = 0; 1000a: 460c mov r4, r1 1000c: e7eb b.n ffe6 <_lv_txt_get_width+0x6a> if(txt == NULL) return 0; 1000e: 4604 mov r4, r0 10010: e7e9 b.n ffe6 <_lv_txt_get_width+0x6a> 10012: 4614 mov r4, r2 10014: e7e7 b.n ffe6 <_lv_txt_get_width+0x6a> 10016: bf00 nop 10018: 0000d1b9 .word 0x0000d1b9 1001c: 0000ff41 .word 0x0000ff41 10020: 20000054 .word 0x20000054 00010024 <_lv_txt_get_next_line>: { 10024: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 10028: b08f sub sp, #60 ; 0x3c 1002a: 4699 mov r9, r3 1002c: f89d 3060 ldrb.w r3, [sp, #96] ; 0x60 10030: 9102 str r1, [sp, #8] 10032: 9204 str r2, [sp, #16] 10034: 9303 str r3, [sp, #12] if(txt == NULL) return 0; 10036: 4607 mov r7, r0 10038: b198 cbz r0, 10062 <_lv_txt_get_next_line+0x3e> if(font == NULL) return 0; 1003a: 2900 cmp r1, #0 1003c: f000 80d2 beq.w 101e4 <_lv_txt_get_next_line+0x1c0> if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) { 10040: 9b03 ldr r3, [sp, #12] 10042: f013 0312 ands.w r3, r3, #18 10046: d00f beq.n 10068 <_lv_txt_get_next_line+0x44> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 10048: 2000 movs r0, #0 1004a: e000 b.n 1004e <_lv_txt_get_next_line+0x2a> 1004c: 3001 adds r0, #1 1004e: 5c3b ldrb r3, [r7, r0] 10050: 2b0a cmp r3, #10 10052: f000 80c9 beq.w 101e8 <_lv_txt_get_next_line+0x1c4> 10056: 2b0d cmp r3, #13 10058: f000 80c6 beq.w 101e8 <_lv_txt_get_next_line+0x1c4> 1005c: 2b00 cmp r3, #0 1005e: d1f5 bne.n 1004c <_lv_txt_get_next_line+0x28> return i; 10060: b280 uxth r0, r0 } 10062: b00f add sp, #60 ; 0x3c 10064: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 10068: 9a03 ldr r2, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 1006a: f88d 302b strb.w r3, [sp, #43] ; 0x2b if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 1006e: f012 0202 ands.w r2, r2, #2 10072: 9205 str r2, [sp, #20] 10074: f647 4218 movw r2, #31768 ; 0x7c18 10078: bf18 it ne 1007a: 4691 movne r9, r2 uint32_t i = 0; /* Iterating index into txt */ 1007c: 930b str r3, [sp, #44] ; 0x2c while(txt[i] != '\0' && max_width > 0) { 1007e: 9b0b ldr r3, [sp, #44] ; 0x2c 10080: 9300 str r3, [sp, #0] 10082: eb07 0b03 add.w fp, r7, r3 10086: 5cfb ldrb r3, [r7, r3] 10088: 2b00 cmp r3, #0 1008a: f000 808e beq.w 101aa <_lv_txt_get_next_line+0x186> 1008e: f1b9 0f00 cmp.w r9, #0 10092: f340 808a ble.w 101aa <_lv_txt_get_next_line+0x186> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 10096: 9a05 ldr r2, [sp, #20] 10098: f647 4318 movw r3, #31768 ; 0x7c18 1009c: 2a00 cmp r2, #0 1009e: bf08 it eq 100a0: 464b moveq r3, r9 100a2: 9307 str r3, [sp, #28] letter = _lv_txt_encoded_next(txt, &i_next); 100a4: 4b51 ldr r3, [pc, #324] ; (101ec <_lv_txt_get_next_line+0x1c8>) uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 100a6: 2500 movs r5, #0 letter = _lv_txt_encoded_next(txt, &i_next); 100a8: 685a ldr r2, [r3, #4] uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 100aa: e9cd 550c strd r5, r5, [sp, #48] ; 0x30 letter = _lv_txt_encoded_next(txt, &i_next); 100ae: a90c add r1, sp, #48 ; 0x30 100b0: 4658 mov r0, fp 100b2: 4790 blx r2 i_next_next = i_next; 100b4: 9b0c ldr r3, [sp, #48] ; 0x30 100b6: 930d str r3, [sp, #52] ; 0x34 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 100b8: 9b03 ldr r3, [sp, #12] uint32_t word_len = 0; /* Number of characters in the transversed word */ 100ba: 9501 str r5, [sp, #4] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 100bc: f003 0301 and.w r3, r3, #1 letter = _lv_txt_encoded_next(txt, &i_next); 100c0: 4680 mov r8, r0 uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */ 100c2: f04f 3aff mov.w sl, #4294967295 ; 0xffffffff lv_coord_t cur_w = 0; /* Pixel Width of transversed string */ 100c6: 462e mov r6, r5 uint32_t letter_next = 0; /* Letter at i_next */ 100c8: 462a mov r2, r5 uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 100ca: 462c mov r4, r5 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 100cc: 9308 str r3, [sp, #32] while(txt[i] != '\0') { 100ce: f81b 3004 ldrb.w r3, [fp, r4] 100d2: b943 cbnz r3, 100e6 <_lv_txt_get_next_line+0xc2> if(break_index == NO_BREAK_FOUND) { 100d4: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 100d8: d052 beq.n 10180 <_lv_txt_get_next_line+0x15c> if(force) return break_index; 100da: 9b00 ldr r3, [sp, #0] 100dc: 2b00 cmp r3, #0 100de: d16e bne.n 101be <_lv_txt_get_next_line+0x19a> 100e0: fa1f f48a uxth.w r4, sl 100e4: e055 b.n 10192 <_lv_txt_get_next_line+0x16e> letter_next = _lv_txt_encoded_next(txt, &i_next_next); 100e6: 4b41 ldr r3, [pc, #260] ; (101ec <_lv_txt_get_next_line+0x1c8>) 100e8: a90d add r1, sp, #52 ; 0x34 100ea: 685b ldr r3, [r3, #4] 100ec: 4658 mov r0, fp 100ee: 4798 blx r3 word_len++; 100f0: 9b01 ldr r3, [sp, #4] 100f2: 3301 adds r3, #1 100f4: 9306 str r3, [sp, #24] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 100f6: 9b08 ldr r3, [sp, #32] letter_next = _lv_txt_encoded_next(txt, &i_next_next); 100f8: 4602 mov r2, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 100fa: b173 cbz r3, 1011a <_lv_txt_get_next_line+0xf6> 100fc: 9009 str r0, [sp, #36] ; 0x24 if(_lv_txt_is_cmd(cmd_state, letter) != false) { 100fe: 4b3c ldr r3, [pc, #240] ; (101f0 <_lv_txt_get_next_line+0x1cc>) 10100: 4641 mov r1, r8 10102: f10d 002b add.w r0, sp, #43 ; 0x2b 10106: 4798 blx r3 10108: 9a09 ldr r2, [sp, #36] ; 0x24 1010a: b130 cbz r0, 1011a <_lv_txt_get_next_line+0xf6> i_next = i_next_next; 1010c: e9dd 430c ldrd r4, r3, [sp, #48] ; 0x30 10110: 930c str r3, [sp, #48] ; 0x30 letter = letter_next; 10112: 9b06 ldr r3, [sp, #24] 10114: 9301 str r3, [sp, #4] letter_next = _lv_txt_encoded_next(txt, &i_next_next); 10116: 4690 mov r8, r2 10118: e7d9 b.n 100ce <_lv_txt_get_next_line+0xaa> letter_w = lv_font_get_glyph_width(font, letter, letter_next); 1011a: 4b36 ldr r3, [pc, #216] ; (101f4 <_lv_txt_get_next_line+0x1d0>) 1011c: 9802 ldr r0, [sp, #8] 1011e: 9209 str r2, [sp, #36] ; 0x24 10120: 4641 mov r1, r8 10122: 4798 blx r3 cur_w += letter_w; 10124: 4406 add r6, r0 if(letter_w > 0) { 10126: b200 sxth r0, r0 10128: 2800 cmp r0, #0 cur_w += letter_space; 1012a: bfc8 it gt 1012c: 9b04 ldrgt r3, [sp, #16] if(letter_w > 0) { 1012e: 9a09 ldr r2, [sp, #36] ; 0x24 cur_w += letter_w; 10130: b2b6 uxth r6, r6 cur_w += letter_space; 10132: bfc4 itt gt 10134: 18f6 addgt r6, r6, r3 10136: b2b6 uxthgt r6, r6 if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 10138: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 1013c: b236 sxth r6, r6 1013e: d105 bne.n 1014c <_lv_txt_get_next_line+0x128> 10140: 9b04 ldr r3, [sp, #16] 10142: 9907 ldr r1, [sp, #28] 10144: 1af3 subs r3, r6, r3 10146: 428b cmp r3, r1 10148: bfc8 it gt 1014a: 46a2 movgt sl, r4 if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 1014c: f1b8 0f0a cmp.w r8, #10 10150: d010 beq.n 10174 <_lv_txt_get_next_line+0x150> 10152: f1b8 0f0d cmp.w r8, #13 10156: d00d beq.n 10174 <_lv_txt_get_next_line+0x150> { uint8_t i; bool ret = false; /*Compare the letter to TXT_BREAK_CHARS*/ for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 10158: 4827 ldr r0, [pc, #156] ; (101f8 <_lv_txt_get_next_line+0x1d4>) 1015a: 2300 movs r3, #0 1015c: b2d9 uxtb r1, r3 1015e: 5c41 ldrb r1, [r0, r1] 10160: b921 cbnz r1, 1016c <_lv_txt_get_next_line+0x148> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 10162: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 10166: bf08 it eq 10168: 4635 moveq r5, r6 1016a: e7cf b.n 1010c <_lv_txt_get_next_line+0xe8> if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) { 1016c: 4588 cmp r8, r1 1016e: f103 0301 add.w r3, r3, #1 10172: d1f3 bne.n 1015c <_lv_txt_get_next_line+0x138> if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w; 10174: 2c00 cmp r4, #0 10176: d1ad bne.n 100d4 <_lv_txt_get_next_line+0xb0> 10178: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 1017c: d1ad bne.n 100da <_lv_txt_get_next_line+0xb6> 1017e: 4635 mov r5, r6 if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next; 10180: 9b01 ldr r3, [sp, #4] 10182: b123 cbz r3, 1018e <_lv_txt_get_next_line+0x16a> 10184: f1b8 0f0d cmp.w r8, #13 10188: d102 bne.n 10190 <_lv_txt_get_next_line+0x16c> 1018a: 2a0a cmp r2, #10 1018c: d100 bne.n 10190 <_lv_txt_get_next_line+0x16c> 1018e: 9c0c ldr r4, [sp, #48] ; 0x30 return i; 10190: b2a4 uxth r4, r4 max_width -= word_w; 10192: eba9 0905 sub.w r9, r9, r5 if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 10196: 9b0b ldr r3, [sp, #44] ; 0x2c max_width -= word_w; 10198: fa0f f989 sxth.w r9, r9 if(advance == 0) { 1019c: b994 cbnz r4, 101c4 <_lv_txt_get_next_line+0x1a0> if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 1019e: b95b cbnz r3, 101b8 <_lv_txt_get_next_line+0x194> 101a0: 4b12 ldr r3, [pc, #72] ; (101ec <_lv_txt_get_next_line+0x1c8>) 101a2: a90b add r1, sp, #44 ; 0x2c 101a4: 685b ldr r3, [r3, #4] 101a6: 4638 mov r0, r7 101a8: 4798 blx r3 if(i == 0) { 101aa: 9b0b ldr r3, [sp, #44] ; 0x2c 101ac: b923 cbnz r3, 101b8 <_lv_txt_get_next_line+0x194> _lv_txt_encoded_next(txt, &i); 101ae: 4b0f ldr r3, [pc, #60] ; (101ec <_lv_txt_get_next_line+0x1c8>) 101b0: a90b add r1, sp, #44 ; 0x2c 101b2: 685b ldr r3, [r3, #4] 101b4: 4638 mov r0, r7 101b6: 4798 blx r3 return i; 101b8: f8bd 002c ldrh.w r0, [sp, #44] ; 0x2c 101bc: e751 b.n 10062 <_lv_txt_get_next_line+0x3e> if(word_w_ptr != NULL) *word_w_ptr = 0; /* Return no word */ 101be: 2500 movs r5, #0 return 0; 101c0: 462c mov r4, r5 101c2: e7e6 b.n 10192 <_lv_txt_get_next_line+0x16e> i += advance; 101c4: 441c add r4, r3 if(txt[0] == '\n' || txt[0] == '\r') break; 101c6: 783b ldrb r3, [r7, #0] i += advance; 101c8: 940b str r4, [sp, #44] ; 0x2c if(txt[0] == '\n' || txt[0] == '\r') break; 101ca: 2b0a cmp r3, #10 101cc: d0ed beq.n 101aa <_lv_txt_get_next_line+0x186> 101ce: 2b0d cmp r3, #13 101d0: d0eb beq.n 101aa <_lv_txt_get_next_line+0x186> if(txt[i] == '\n' || txt[i] == '\r') { 101d2: 5d3b ldrb r3, [r7, r4] 101d4: 2b0a cmp r3, #10 101d6: d002 beq.n 101de <_lv_txt_get_next_line+0x1ba> 101d8: 2b0d cmp r3, #13 101da: f47f af50 bne.w 1007e <_lv_txt_get_next_line+0x5a> i++; /* Include the following newline in the current line */ 101de: 3401 adds r4, #1 101e0: 940b str r4, [sp, #44] ; 0x2c break; 101e2: e7e2 b.n 101aa <_lv_txt_get_next_line+0x186> if(txt == NULL) return 0; 101e4: 9802 ldr r0, [sp, #8] 101e6: e73c b.n 10062 <_lv_txt_get_next_line+0x3e> if(txt[i] != '\0') i++; /*To go beyond `\n`*/ 101e8: 3001 adds r0, #1 101ea: e739 b.n 10060 <_lv_txt_get_next_line+0x3c> 101ec: 20000054 .word 0x20000054 101f0: 0000ff41 .word 0x0000ff41 101f4: 0000d1b9 .word 0x0000d1b9 101f8: 0002422a .word 0x0002422a 000101fc <_lv_txt_get_size>: { 101fc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 10200: b089 sub sp, #36 ; 0x24 size_res->x = 0; 10202: 2500 movs r5, #0 { 10204: 4698 mov r8, r3 10206: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 1020a: f9bd b048 ldrsh.w fp, [sp, #72] ; 0x48 1020e: f9bd a04c ldrsh.w sl, [sp, #76] ; 0x4c 10212: 9304 str r3, [sp, #16] 10214: 4604 mov r4, r0 10216: 4616 mov r6, r2 size_res->x = 0; 10218: 8005 strh r5, [r0, #0] size_res->y = 0; 1021a: 8045 strh r5, [r0, #2] if(text == NULL) return; 1021c: 9103 str r1, [sp, #12] 1021e: b329 cbz r1, 1026c <_lv_txt_get_size+0x70> if(font == NULL) return; 10220: b322 cbz r2, 1026c <_lv_txt_get_size+0x70> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 10222: 9b04 ldr r3, [sp, #16] 10224: f013 0f02 tst.w r3, #2 10228: f647 4318 movw r3, #31768 ; 0x7c18 1022c: bf18 it ne 1022e: 469a movne sl, r3 * @param font_p pointer to a font * @return the height of a font */ static inline lv_coord_t lv_font_get_line_height(const lv_font_t * font_p) { return font_p->line_height; 10230: f9b2 3008 ldrsh.w r3, [r2, #8] 10234: 9306 str r3, [sp, #24] uint16_t letter_height = lv_font_get_line_height(font); 10236: 8913 ldrh r3, [r2, #8] 10238: 9305 str r3, [sp, #20] if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 1023a: 445b add r3, fp 1023c: 9307 str r3, [sp, #28] while(text[line_start] != '\0') { 1023e: 9b03 ldr r3, [sp, #12] 10240: eb03 0905 add.w r9, r3, r5 10244: 5d5b ldrb r3, [r3, r5] 10246: b9a3 cbnz r3, 10272 <_lv_txt_get_size+0x76> if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { 10248: b155 cbz r5, 10260 <_lv_txt_get_size+0x64> 1024a: f819 3c01 ldrb.w r3, [r9, #-1] 1024e: 2b0a cmp r3, #10 10250: d001 beq.n 10256 <_lv_txt_get_size+0x5a> 10252: 2b0d cmp r3, #13 10254: d104 bne.n 10260 <_lv_txt_get_size+0x64> size_res->y += letter_height + line_space; 10256: 9b05 ldr r3, [sp, #20] 10258: 8862 ldrh r2, [r4, #2] 1025a: 445b add r3, fp 1025c: 4413 add r3, r2 1025e: 8063 strh r3, [r4, #2] if(size_res->y == 0) 10260: f9b4 3002 ldrsh.w r3, [r4, #2] 10264: 2b00 cmp r3, #0 10266: d131 bne.n 102cc <_lv_txt_get_size+0xd0> size_res->y = letter_height; 10268: 9b06 ldr r3, [sp, #24] size_res->y -= line_space; 1026a: 8063 strh r3, [r4, #2] } 1026c: b009 add sp, #36 ; 0x24 1026e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 10272: 9b04 ldr r3, [sp, #16] 10274: 9300 str r3, [sp, #0] 10276: 4642 mov r2, r8 10278: 4653 mov r3, sl 1027a: 4631 mov r1, r6 1027c: 4f15 ldr r7, [pc, #84] ; (102d4 <_lv_txt_get_size+0xd8>) 1027e: 4648 mov r0, r9 10280: 47b8 blx r7 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 10282: f9b4 3002 ldrsh.w r3, [r4, #2] 10286: 9a07 ldr r2, [sp, #28] 10288: 4413 add r3, r2 1028a: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 1028e: 4601 mov r1, r0 10290: 4405 add r5, r0 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 10292: d30b bcc.n 102ac <_lv_txt_get_size+0xb0> LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height"); 10294: 4b10 ldr r3, [pc, #64] ; (102d8 <_lv_txt_get_size+0xdc>) 10296: 4c11 ldr r4, [pc, #68] ; (102dc <_lv_txt_get_size+0xe0>) 10298: 9312 str r3, [sp, #72] ; 0x48 1029a: 4911 ldr r1, [pc, #68] ; (102e0 <_lv_txt_get_size+0xe4>) 1029c: 4b11 ldr r3, [pc, #68] ; (102e4 <_lv_txt_get_size+0xe8>) 1029e: 2271 movs r2, #113 ; 0x71 102a0: 2002 movs r0, #2 102a2: 46a4 mov ip, r4 } 102a4: b009 add sp, #36 ; 0x24 102a6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height"); 102aa: 4760 bx ip size_res->y += line_space; 102ac: 8063 strh r3, [r4, #2] lv_coord_t act_line_length = _lv_txt_get_width(&text[line_start], new_line_start - line_start, font, letter_space, 102ae: 9b04 ldr r3, [sp, #16] 102b0: 9300 str r3, [sp, #0] 102b2: 4648 mov r0, r9 102b4: 4643 mov r3, r8 102b6: f8df 9030 ldr.w r9, [pc, #48] ; 102e8 <_lv_txt_get_size+0xec> 102ba: 4632 mov r2, r6 102bc: 47c8 blx r9 size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 102be: f9b4 3000 ldrsh.w r3, [r4] 102c2: 4298 cmp r0, r3 102c4: bfb8 it lt 102c6: 4618 movlt r0, r3 102c8: 8020 strh r0, [r4, #0] line_start = new_line_start; 102ca: e7b8 b.n 1023e <_lv_txt_get_size+0x42> size_res->y -= line_space; 102cc: eba3 030b sub.w r3, r3, fp 102d0: e7cb b.n 1026a <_lv_txt_get_size+0x6e> 102d2: bf00 nop 102d4: 00010025 .word 0x00010025 102d8: 00024261 .word 0x00024261 102dc: 0000e931 .word 0x0000e931 102e0: 00024232 .word 0x00024232 102e4: 000242a1 .word 0x000242a1 102e8: 0000ff7d .word 0x0000ff7d 000102ec <_lv_utils_bsearch>: * * @return a pointer to a matching item, or NULL if none exists. */ void * _lv_utils_bsearch(const void * key, const void * base, uint32_t n, uint32_t size, int32_t (*cmp)(const void * pRef, const void * pElement)) { 102ec: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 102f0: 9d08 ldr r5, [sp, #32] 102f2: 4680 mov r8, r0 102f4: 460f mov r7, r1 102f6: 4614 mov r4, r2 102f8: 4699 mov r9, r3 const char * middle; int32_t c; for(middle = base; n != 0;) { 102fa: b90c cbnz r4, 10300 <_lv_utils_bsearch+0x14> } else { return (char *)middle; } } return NULL; 102fc: 4626 mov r6, r4 102fe: e012 b.n 10326 <_lv_utils_bsearch+0x3a> middle += (n / 2) * size; 10300: ea4f 0a54 mov.w sl, r4, lsr #1 10304: fb09 760a mla r6, r9, sl, r7 if((c = (*cmp)(key, middle)) > 0) { 10308: 4631 mov r1, r6 1030a: 4640 mov r0, r8 1030c: 47a8 blx r5 1030e: 2800 cmp r0, #0 10310: dd08 ble.n 10324 <_lv_utils_bsearch+0x38> n = (n / 2) - ((n & 1) == 0); 10312: 43e4 mvns r4, r4 10314: f004 0401 and.w r4, r4, #1 10318: ebaa 0a04 sub.w sl, sl, r4 base = (middle += size); 1031c: eb06 0709 add.w r7, r6, r9 { 10320: 4654 mov r4, sl 10322: e7ea b.n 102fa <_lv_utils_bsearch+0xe> else if(c < 0) { 10324: d1fc bne.n 10320 <_lv_utils_bsearch+0x34> } 10326: 4630 mov r0, r6 10328: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 0001032c : * From now, all the created objects will use styles from this theme by default * @param th pointer to theme (return value of: 'lv_theme_init_xxx()') */ void lv_theme_set_act(lv_theme_t * th) { act_theme = th; 1032c: 4b01 ldr r3, [pc, #4] ; (10334 ) 1032e: 6018 str r0, [r3, #0] } 10330: 4770 bx lr 10332: bf00 nop 10334: 2000c7d0 .word 0x2000c7d0 00010338 : * Get the normal font of the theme * @return pointer to the font */ const lv_font_t * lv_theme_get_font_normal(void) { return act_theme->font_normal; 10338: 4b01 ldr r3, [pc, #4] ; (10340 ) 1033a: 681b ldr r3, [r3, #0] } 1033c: 68d8 ldr r0, [r3, #12] 1033e: 4770 bx lr 10340: 2000c7d0 .word 0x2000c7d0 00010344 : return act_theme->flags; } void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name) { act_theme->apply_xcb(obj, name); 10344: 4b01 ldr r3, [pc, #4] ; (1034c ) 10346: 681b ldr r3, [r3, #0] 10348: 681b ldr r3, [r3, #0] 1034a: 4718 bx r3 1034c: 2000c7d0 .word 0x2000c7d0 00010350 : return lv_color_make((uint8_t)((c >> 16) & 0xFF), (uint8_t)((c >> 8) & 0xFF), (uint8_t)(c & 0xFF)); } static inline lv_color_t lv_color_hex3(uint32_t c) { return lv_color_make((uint8_t)(((c >> 4) & 0xF0) | ((c >> 8) & 0xF)), (uint8_t)((c & 0xF0) | ((c & 0xF0) >> 4)), 10350: f3c0 1303 ubfx r3, r0, #4, #4 { 10354: b510 push {r4, lr} return lv_color_make((uint8_t)(((c >> 4) & 0xF0) | ((c >> 8) & 0xF)), (uint8_t)((c & 0xF0) | ((c & 0xF0) >> 4)), 10356: f000 01f0 and.w r1, r0, #240 ; 0xf0 1035a: b2c4 uxtb r4, r0 1035c: f3c0 1207 ubfx r2, r0, #4, #8 return LV_COLOR_MAKE(r, g, b); 10360: 4319 orrs r1, r3 (uint8_t)((c & 0xF) | ((c & 0xF) << 4))); 10362: f000 030f and.w r3, r0, #15 return lv_color_make((uint8_t)(((c >> 4) & 0xF0) | ((c >> 8) & 0xF)), (uint8_t)((c & 0xF0) | ((c & 0xF0) >> 4)), 10366: ea43 1304 orr.w r3, r3, r4, lsl #4 1036a: f022 020f bic.w r2, r2, #15 1036e: 0889 lsrs r1, r1, #2 10370: ea42 2010 orr.w r0, r2, r0, lsr #8 10374: f3c3 03c4 ubfx r3, r3, #3, #5 10378: ea43 1341 orr.w r3, r3, r1, lsl #5 1037c: f3c0 00c4 ubfx r0, r0, #3, #5 } 10380: ea43 20c0 orr.w r0, r3, r0, lsl #11 10384: bd10 pop {r4, pc} ... 00010388 : static void theme_apply(lv_obj_t * obj, lv_theme_style_t name) { lv_style_list_t * list; switch(name) { 10388: 3901 subs r1, #1 { 1038a: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1038e: 4604 mov r4, r0 switch(name) { 10390: 2927 cmp r1, #39 ; 0x27 10392: d834 bhi.n 103fe 10394: e8df f011 tbh [pc, r1, lsl #1] 10398: 00390028 .word 0x00390028 1039c: 008200bb .word 0x008200bb 103a0: 004f0044 .word 0x004f0044 103a4: 00b70347 .word 0x00b70347 103a8: 0256010f .word 0x0256010f 103ac: 036f0039 .word 0x036f0039 103b0: 03950220 .word 0x03950220 103b4: 00b700b7 .word 0x00b700b7 103b8: 00b70071 .word 0x00b70071 103bc: 00b70151 .word 0x00b70151 103c0: 021501f7 .word 0x021501f7 103c4: 012a0385 .word 0x012a0385 103c8: 01ef013b .word 0x01ef013b 103cc: 01d30166 .word 0x01d30166 103d0: 031b00eb .word 0x031b00eb 103d4: 00d70337 .word 0x00d70337 103d8: 02840098 .word 0x02840098 103dc: 01b9018e .word 0x01b9018e 103e0: 01c702f0 .word 0x01c702f0 103e4: 02e502be .word 0x02e502be case LV_THEME_NONE: break; case LV_THEME_SCR: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 103e8: 4b99 ldr r3, [pc, #612] ; (10650 ) 103ea: 2100 movs r1, #0 103ec: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 103ee: 4b99 ldr r3, [pc, #612] ; (10654 ) 103f0: 2100 movs r1, #0 103f2: 4620 mov r0, r4 103f4: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 103f6: 4b98 ldr r3, [pc, #608] ; (10658 ) 103f8: 6819 ldr r1, [r3, #0] break; case LV_THEME_OBJ: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); _lv_style_list_add_style(list, &styles->bg); 103fa: 4b98 ldr r3, [pc, #608] ; (1065c ) 103fc: 4798 blx r3 #endif default: break; } lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 103fe: 4620 mov r0, r4 10400: 4b97 ldr r3, [pc, #604] ; (10660 ) } 10402: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 10406: 21ff movs r1, #255 ; 0xff 10408: 4718 bx r3 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 1040a: 4b91 ldr r3, [pc, #580] ; (10650 ) 1040c: 2100 movs r1, #0 1040e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 10410: 4b90 ldr r3, [pc, #576] ; (10654 ) 10412: 2100 movs r1, #0 10414: 4620 mov r0, r4 10416: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 10418: 4b8f ldr r3, [pc, #572] ; (10658 ) 1041a: 6819 ldr r1, [r3, #0] 1041c: 3104 adds r1, #4 1041e: e7ec b.n 103fa lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 10420: 4b8b ldr r3, [pc, #556] ; (10650 ) 10422: 2100 movs r1, #0 10424: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 10426: 4b8b ldr r3, [pc, #556] ; (10654 ) 10428: 2100 movs r1, #0 1042a: 4620 mov r0, r4 1042c: 4798 blx r3 _lv_style_list_add_style(list, &styles->btn); 1042e: 4b8a ldr r3, [pc, #552] ; (10658 ) 10430: 6819 ldr r1, [r3, #0] 10432: 3110 adds r1, #16 10434: e7e1 b.n 103fa _lv_style_list_add_style(list, &styles->bg); 10436: 4e88 ldr r6, [pc, #544] ; (10658 ) lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 10438: f8df 9214 ldr.w r9, [pc, #532] ; 10650 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 1043c: f8df 8214 ldr.w r8, [pc, #532] ; 10654 _lv_style_list_add_style(list, &styles->bg); 10440: 4d86 ldr r5, [pc, #536] ; (1065c ) lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 10442: 2100 movs r1, #0 10444: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 10446: 2100 movs r1, #0 10448: 4620 mov r0, r4 1044a: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 1044c: 6831 ldr r1, [r6, #0] 1044e: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 10450: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 10452: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 10454: 6831 ldr r1, [r6, #0] 10456: 3118 adds r1, #24 _lv_style_list_add_style(list, &styles->kb_bg); 10458: 4638 mov r0, r7 1045a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN); 1045c: 2101 movs r1, #1 1045e: 4620 mov r0, r4 10460: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 10462: 2101 movs r1, #1 10464: 4620 mov r0, r4 10466: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 10468: 6831 ldr r1, [r6, #0] 1046a: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 1046c: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1046e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 10470: 6831 ldr r1, [r6, #0] 10472: 4638 mov r0, r7 10474: 3108 adds r1, #8 _lv_style_list_add_style(list, &styles->gauge_needle); 10476: 47a8 blx r5 break; 10478: e7c1 b.n 103fe lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 1047a: 2100 movs r1, #0 1047c: f8df 91d0 ldr.w r9, [pc, #464] ; 10650 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 10480: f8df 81d0 ldr.w r8, [pc, #464] ; 10654 _lv_style_list_add_style(list, &styles->scr); 10484: 4e74 ldr r6, [pc, #464] ; (10658 ) 10486: 4d75 ldr r5, [pc, #468] ; (1065c ) lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 10488: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 1048a: 2100 movs r1, #0 1048c: 4620 mov r0, r4 1048e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->scr); 10490: 6831 ldr r1, [r6, #0] list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 10492: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->scr); 10494: 47a8 blx r5 _lv_style_list_add_style(list, &styles->kb_bg); 10496: 6831 ldr r1, [r6, #0] 10498: 3168 adds r1, #104 ; 0x68 1049a: e7dd b.n 10458 lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 1049c: f8df 81b0 ldr.w r8, [pc, #432] ; 10650 _lv_style_list_add_style(list, &styles->bar_bg); 104a0: 4e6d ldr r6, [pc, #436] ; (10658 ) list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 104a2: 4f6c ldr r7, [pc, #432] ; (10654 ) _lv_style_list_add_style(list, &styles->bar_bg); 104a4: 4d6d ldr r5, [pc, #436] ; (1065c ) lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 104a6: 2100 movs r1, #0 104a8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 104aa: 2100 movs r1, #0 104ac: 4620 mov r0, r4 104ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 104b0: 6831 ldr r1, [r6, #0] 104b2: 3124 adds r1, #36 ; 0x24 104b4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC); 104b6: 2101 movs r1, #1 104b8: 4620 mov r0, r4 104ba: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); 104bc: 2101 movs r1, #1 104be: 4620 mov r0, r4 104c0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 104c2: 6831 ldr r1, [r6, #0] 104c4: 3128 adds r1, #40 ; 0x28 104c6: e7d6 b.n 10476 lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 104c8: f8df 8184 ldr.w r8, [pc, #388] ; 10650 _lv_style_list_add_style(list, &styles->bar_bg); 104cc: 4e62 ldr r6, [pc, #392] ; (10658 ) list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 104ce: 4f61 ldr r7, [pc, #388] ; (10654 ) _lv_style_list_add_style(list, &styles->bar_bg); 104d0: 4d62 ldr r5, [pc, #392] ; (1065c ) lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 104d2: 2100 movs r1, #0 104d4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 104d6: 2100 movs r1, #0 104d8: 4620 mov r0, r4 104da: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 104dc: 6831 ldr r1, [r6, #0] 104de: 3124 adds r1, #36 ; 0x24 104e0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC); 104e2: 2101 movs r1, #1 104e4: 4620 mov r0, r4 104e6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); 104e8: 2101 movs r1, #1 104ea: 4620 mov r0, r4 104ec: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 104ee: 6831 ldr r1, [r6, #0] 104f0: 3128 adds r1, #40 ; 0x28 104f2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB); 104f4: 2102 movs r1, #2 104f6: 4620 mov r0, r4 104f8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); 104fa: 2102 movs r1, #2 104fc: 4620 mov r0, r4 104fe: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sw_knob); 10500: 6831 ldr r1, [r6, #0] 10502: 319c adds r1, #156 ; 0x9c 10504: e7b7 b.n 10476 lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN); 10506: 4b52 ldr r3, [pc, #328] ; (10650 ) 10508: 2100 movs r1, #0 1050a: 4798 blx r3 break; 1050c: e777 b.n 103fe lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 1050e: f8df 9140 ldr.w r9, [pc, #320] ; 10650 _lv_style_list_add_style(list, &styles->bg); 10512: 4e51 ldr r6, [pc, #324] ; (10658 ) list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 10514: f8df 813c ldr.w r8, [pc, #316] ; 10654 _lv_style_list_add_style(list, &styles->bg); 10518: 4d50 ldr r5, [pc, #320] ; (1065c ) lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 1051a: 2100 movs r1, #0 1051c: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 1051e: 2100 movs r1, #0 10520: 4620 mov r0, r4 10522: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 10524: 6831 ldr r1, [r6, #0] 10526: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 10528: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1052a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->arc_bg); 1052c: 6831 ldr r1, [r6, #0] 1052e: 4638 mov r0, r7 10530: 3120 adds r1, #32 10532: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC); 10534: 2101 movs r1, #1 10536: 4620 mov r0, r4 10538: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); 1053a: 2101 movs r1, #1 1053c: 4620 mov r0, r4 1053e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->arc_indic); 10540: 6831 ldr r1, [r6, #0] 10542: 311c adds r1, #28 10544: e797 b.n 10476 lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 10546: f8df 8108 ldr.w r8, [pc, #264] ; 10650 _lv_style_list_add_style(list, &styles->arc_bg); 1054a: 4e43 ldr r6, [pc, #268] ; (10658 ) list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 1054c: 4f41 ldr r7, [pc, #260] ; (10654 ) _lv_style_list_add_style(list, &styles->arc_bg); 1054e: 4d43 ldr r5, [pc, #268] ; (1065c ) lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 10550: 2100 movs r1, #0 10552: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 10554: 2100 movs r1, #0 10556: 4620 mov r0, r4 10558: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_bg); 1055a: 6831 ldr r1, [r6, #0] 1055c: 3120 adds r1, #32 1055e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC); 10560: 4620 mov r0, r4 10562: 2101 movs r1, #1 10564: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); 10566: 2101 movs r1, #1 10568: 4620 mov r0, r4 1056a: 47b8 blx r7 1056c: e7e8 b.n 10540 _lv_style_list_add_style(list, &styles->bar_bg); 1056e: 4e3a ldr r6, [pc, #232] ; (10658 ) lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 10570: f8df 80dc ldr.w r8, [pc, #220] ; 10650 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 10574: 4f37 ldr r7, [pc, #220] ; (10654 ) _lv_style_list_add_style(list, &styles->bar_bg); 10576: 4d39 ldr r5, [pc, #228] ; (1065c ) lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 10578: 2100 movs r1, #0 1057a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 1057c: 2100 movs r1, #0 1057e: 4620 mov r0, r4 10580: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 10582: 6831 ldr r1, [r6, #0] 10584: 3124 adds r1, #36 ; 0x24 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 10586: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bar_bg); 10588: 47a8 blx r5 _lv_style_list_add_style(list, &styles->slider_bg); 1058a: 6831 ldr r1, [r6, #0] 1058c: 4648 mov r0, r9 1058e: 3194 adds r1, #148 ; 0x94 10590: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC); 10592: 2101 movs r1, #1 10594: 4620 mov r0, r4 10596: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); 10598: 2101 movs r1, #1 1059a: 4620 mov r0, r4 1059c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 1059e: 6831 ldr r1, [r6, #0] 105a0: 3128 adds r1, #40 ; 0x28 105a2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB); 105a4: 2102 movs r1, #2 105a6: 4620 mov r0, r4 105a8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); 105aa: 2102 movs r1, #2 105ac: 4620 mov r0, r4 105ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->slider_knob); 105b0: 6831 ldr r1, [r6, #0] 105b2: 3190 adds r1, #144 ; 0x90 105b4: e75f b.n 10476 _lv_style_list_add_style(list, &styles->cb_bg); 105b6: 4f28 ldr r7, [pc, #160] ; (10658 ) lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 105b8: f8df 8094 ldr.w r8, [pc, #148] ; 10650 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 105bc: 4e25 ldr r6, [pc, #148] ; (10654 ) _lv_style_list_add_style(list, &styles->cb_bg); 105be: 4d27 ldr r5, [pc, #156] ; (1065c ) lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 105c0: 2100 movs r1, #0 105c2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 105c4: 2100 movs r1, #0 105c6: 4620 mov r0, r4 105c8: 47b0 blx r6 _lv_style_list_add_style(list, &styles->cb_bg); 105ca: 6839 ldr r1, [r7, #0] 105cc: 314c adds r1, #76 ; 0x4c 105ce: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET); 105d0: 2140 movs r1, #64 ; 0x40 105d2: 4620 mov r0, r4 105d4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 105d6: 2140 movs r1, #64 ; 0x40 105d8: 4620 mov r0, r4 105da: 47b0 blx r6 _lv_style_list_add_style(list, &styles->btn); 105dc: 6839 ldr r1, [r7, #0] 105de: 3110 adds r1, #16 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 105e0: 4606 mov r6, r0 _lv_style_list_add_style(list, &styles->btn); 105e2: 47a8 blx r5 _lv_style_list_add_style(list, &styles->cb_bullet); 105e4: 6839 ldr r1, [r7, #0] 105e6: 4630 mov r0, r6 105e8: 3150 adds r1, #80 ; 0x50 105ea: e744 b.n 10476 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 105ec: 4b18 ldr r3, [pc, #96] ; (10650 ) _lv_style_list_add_style(list, &styles->bg); 105ee: 4f1a ldr r7, [pc, #104] ; (10658 ) 105f0: 4e1a ldr r6, [pc, #104] ; (1065c ) lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 105f2: 2100 movs r1, #0 105f4: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 105f6: 4b17 ldr r3, [pc, #92] ; (10654 ) 105f8: 2100 movs r1, #0 105fa: 4620 mov r0, r4 105fc: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 105fe: 6839 ldr r1, [r7, #0] 10600: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 10602: 4605 mov r5, r0 _lv_style_list_add_style(list, &styles->bg); 10604: 47b0 blx r6 _lv_style_list_add_style(list, &styles->mbox_bg); 10606: 6839 ldr r1, [r7, #0] 10608: 317c adds r1, #124 ; 0x7c _lv_style_list_add_style(list, &styles->lmeter); 1060a: 4628 mov r0, r5 1060c: e07b b.n 10706 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 1060e: f8df 8040 ldr.w r8, [pc, #64] ; 10650 _lv_style_list_add_style(list, &styles->pad_small); 10612: 4e11 ldr r6, [pc, #68] ; (10658 ) list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 10614: 4f0f ldr r7, [pc, #60] ; (10654 ) _lv_style_list_add_style(list, &styles->pad_small); 10616: 4d11 ldr r5, [pc, #68] ; (1065c ) lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 10618: 2140 movs r1, #64 ; 0x40 1061a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 1061c: 2140 movs r1, #64 ; 0x40 1061e: 4620 mov r0, r4 10620: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 10622: 6831 ldr r1, [r6, #0] 10624: 3118 adds r1, #24 10626: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN); 10628: 2141 movs r1, #65 ; 0x41 1062a: 4620 mov r0, r4 1062c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); 1062e: 2141 movs r1, #65 ; 0x41 10630: 4620 mov r0, r4 10632: 47b8 blx r7 _lv_style_list_add_style(list, &styles->btn); 10634: 6831 ldr r1, [r6, #0] 10636: 3110 adds r1, #16 10638: e71d b.n 10476 lv_obj_clean_style_list(obj, LV_LED_PART_MAIN); 1063a: 4b05 ldr r3, [pc, #20] ; (10650 ) 1063c: 2100 movs r1, #0 1063e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); 10640: 4b04 ldr r3, [pc, #16] ; (10654 ) 10642: 2100 movs r1, #0 10644: 4620 mov r0, r4 10646: 4798 blx r3 _lv_style_list_add_style(list, &styles->led); 10648: 4b03 ldr r3, [pc, #12] ; (10658 ) 1064a: 6819 ldr r1, [r3, #0] 1064c: 316c adds r1, #108 ; 0x6c 1064e: e6d4 b.n 103fa 10650: 000024f9 .word 0x000024f9 10654: 0000243d .word 0x0000243d 10658: 2000c7d4 .word 0x2000c7d4 1065c: 00005615 .word 0x00005615 10660: 00002d39 .word 0x00002d39 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 10664: f8df 82a8 ldr.w r8, [pc, #680] ; 10910 _lv_style_list_add_style(list, &styles->bg); 10668: 4ea6 ldr r6, [pc, #664] ; (10904 ) list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 1066a: 4fa7 ldr r7, [pc, #668] ; (10908 ) _lv_style_list_add_style(list, &styles->bg); 1066c: 4da7 ldr r5, [pc, #668] ; (1090c ) lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 1066e: 2100 movs r1, #0 10670: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 10672: 2100 movs r1, #0 10674: 4620 mov r0, r4 10676: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10678: 6831 ldr r1, [r6, #0] 1067a: 3104 adds r1, #4 1067c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 1067e: 2140 movs r1, #64 ; 0x40 10680: 4620 mov r0, r4 10682: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 10684: 2140 movs r1, #64 ; 0x40 10686: 4620 mov r0, r4 10688: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_inner); 1068a: 6831 ldr r1, [r6, #0] 1068c: 3114 adds r1, #20 _lv_style_list_add_style(list, &styles->scr); 1068e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 10690: 2101 movs r1, #1 10692: 4620 mov r0, r4 10694: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 10696: 2101 movs r1, #1 10698: 4620 mov r0, r4 1069a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1069c: 6831 ldr r1, [r6, #0] 1069e: 3180 adds r1, #128 ; 0x80 106a0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 106a2: 2102 movs r1, #2 106a4: 4620 mov r0, r4 106a6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 106a8: 2102 movs r1, #2 106aa: 4620 mov r0, r4 106ac: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 106ae: 6831 ldr r1, [r6, #0] 106b0: 3184 adds r1, #132 ; 0x84 106b2: e6e0 b.n 10476 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 106b4: 4d96 ldr r5, [pc, #600] ; (10910 ) _lv_style_list_add_style(list, &styles->scr); 106b6: 4f93 ldr r7, [pc, #588] ; (10904 ) list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 106b8: f8df 824c ldr.w r8, [pc, #588] ; 10908 _lv_style_list_add_style(list, &styles->scr); 106bc: 4e93 ldr r6, [pc, #588] ; (1090c ) lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 106be: 2100 movs r1, #0 106c0: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 106c2: 2100 movs r1, #0 106c4: 4620 mov r0, r4 106c6: 47c0 blx r8 _lv_style_list_add_style(list, &styles->scr); 106c8: 6839 ldr r1, [r7, #0] 106ca: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); 106cc: 2140 movs r1, #64 ; 0x40 106ce: 4620 mov r0, r4 106d0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG); 106d2: 2141 movs r1, #65 ; 0x41 106d4: 4620 mov r0, r4 106d6: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); 106d8: 2141 movs r1, #65 ; 0x41 106da: 4620 mov r0, r4 106dc: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 106de: 6839 ldr r1, [r7, #0] 106e0: 31a8 adds r1, #168 ; 0xa8 106e2: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC); 106e4: 2143 movs r1, #67 ; 0x43 106e6: 4620 mov r0, r4 106e8: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); 106ea: 2143 movs r1, #67 ; 0x43 106ec: 4620 mov r0, r4 106ee: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_indic); 106f0: 6839 ldr r1, [r7, #0] 106f2: 31ac adds r1, #172 ; 0xac 106f4: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 106f6: 2142 movs r1, #66 ; 0x42 106f8: 4620 mov r0, r4 106fa: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 106fc: 2142 movs r1, #66 ; 0x42 106fe: 4620 mov r0, r4 10700: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns); 10702: 6839 ldr r1, [r7, #0] 10704: 31a4 adds r1, #164 ; 0xa4 _lv_style_list_add_style(list, &styles->lmeter); 10706: 47b0 blx r6 break; 10708: e679 b.n 103fe lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 1070a: 4d81 ldr r5, [pc, #516] ; (10910 ) 1070c: 2100 movs r1, #0 1070e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 10710: 2140 movs r1, #64 ; 0x40 10712: 4620 mov r0, r4 10714: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 10716: 4b7c ldr r3, [pc, #496] ; (10908 ) 10718: 2140 movs r1, #64 ; 0x40 1071a: 4620 mov r0, r4 1071c: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 1071e: 4b79 ldr r3, [pc, #484] ; (10904 ) 10720: 6819 ldr r1, [r3, #0] 10722: 31b0 adds r1, #176 ; 0xb0 10724: e669 b.n 103fa lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 10726: 2100 movs r1, #0 10728: f8df 81e4 ldr.w r8, [pc, #484] ; 10910 _lv_style_list_add_style(list, &styles->scr); 1072c: 4e75 ldr r6, [pc, #468] ; (10904 ) list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 1072e: 4f76 ldr r7, [pc, #472] ; (10908 ) _lv_style_list_add_style(list, &styles->scr); 10730: 4d76 ldr r5, [pc, #472] ; (1090c ) lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 10732: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 10734: 2100 movs r1, #0 10736: 4620 mov r0, r4 10738: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 1073a: 6831 ldr r1, [r6, #0] 1073c: e7a7 b.n 1068e _lv_style_list_add_style(list, &styles->bg); 1073e: 4e71 ldr r6, [pc, #452] ; (10904 ) lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 10740: f8df 91cc ldr.w r9, [pc, #460] ; 10910 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 10744: f8df 81c0 ldr.w r8, [pc, #448] ; 10908 _lv_style_list_add_style(list, &styles->bg); 10748: 4d70 ldr r5, [pc, #448] ; (1090c ) lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 1074a: 2100 movs r1, #0 1074c: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 1074e: 2100 movs r1, #0 10750: 4620 mov r0, r4 10752: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 10754: 6831 ldr r1, [r6, #0] 10756: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 10758: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1075a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->roller_bg); 1075c: 6831 ldr r1, [r6, #0] 1075e: 4638 mov r0, r7 10760: 3188 adds r1, #136 ; 0x88 10762: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED); 10764: 2103 movs r1, #3 10766: 4620 mov r0, r4 10768: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); 1076a: 2103 movs r1, #3 1076c: 4620 mov r0, r4 1076e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->roller_sel); 10770: 6831 ldr r1, [r6, #0] 10772: 318c adds r1, #140 ; 0x8c 10774: e67f b.n 10476 lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN); 10776: 4b66 ldr r3, [pc, #408] ; (10910 ) 10778: 2100 movs r1, #0 1077a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN); 1077c: 4b62 ldr r3, [pc, #392] ; (10908 ) 1077e: 2100 movs r1, #0 10780: 4620 mov r0, r4 10782: 4798 blx r3 break; 10784: e63b b.n 103fe lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 10786: 4f62 ldr r7, [pc, #392] ; (10910 ) _lv_style_list_add_style(list, &styles->bg); 10788: 4e5e ldr r6, [pc, #376] ; (10904 ) list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 1078a: f8df 917c ldr.w r9, [pc, #380] ; 10908 _lv_style_list_add_style(list, &styles->bg); 1078e: 4d5f ldr r5, [pc, #380] ; (1090c ) lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 10790: 2100 movs r1, #0 10792: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 10794: 2100 movs r1, #0 10796: 4620 mov r0, r4 10798: 47c8 blx r9 _lv_style_list_add_style(list, &styles->bg); 1079a: 6831 ldr r1, [r6, #0] 1079c: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 1079e: 4680 mov r8, r0 _lv_style_list_add_style(list, &styles->bg); 107a0: 47a8 blx r5 _lv_style_list_add_style(list, &styles->list_bg); 107a2: 6831 ldr r1, [r6, #0] 107a4: 4640 mov r0, r8 107a6: 3174 adds r1, #116 ; 0x74 107a8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE); 107aa: 2140 movs r1, #64 ; 0x40 107ac: 4620 mov r0, r4 107ae: 47b8 blx r7 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR); 107b0: 2101 movs r1, #1 107b2: 4620 mov r0, r4 107b4: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); 107b6: 2101 movs r1, #1 107b8: 4620 mov r0, r4 107ba: 47c8 blx r9 _lv_style_list_add_style(list, &styles->sb); 107bc: 6831 ldr r1, [r6, #0] 107be: 3180 adds r1, #128 ; 0x80 107c0: e659 b.n 10476 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 107c2: 4b53 ldr r3, [pc, #332] ; (10910 ) 107c4: 2100 movs r1, #0 107c6: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 107c8: 4b4f ldr r3, [pc, #316] ; (10908 ) 107ca: 2100 movs r1, #0 107cc: 4620 mov r0, r4 107ce: 4798 blx r3 _lv_style_list_add_style(list, &styles->list_btn); 107d0: 4b4c ldr r3, [pc, #304] ; (10904 ) 107d2: 6819 ldr r1, [r3, #0] 107d4: 3178 adds r1, #120 ; 0x78 107d6: e610 b.n 103fa _lv_style_list_add_style(list, &styles->bg); 107d8: 4e4a ldr r6, [pc, #296] ; (10904 ) lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 107da: f8df 8134 ldr.w r8, [pc, #308] ; 10910 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 107de: 4f4a ldr r7, [pc, #296] ; (10908 ) _lv_style_list_add_style(list, &styles->bg); 107e0: 4d4a ldr r5, [pc, #296] ; (1090c ) lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 107e2: 2100 movs r1, #0 107e4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 107e6: 2100 movs r1, #0 107e8: 4620 mov r0, r4 107ea: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 107ec: 6831 ldr r1, [r6, #0] 107ee: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 107f0: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 107f2: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 107f4: 6831 ldr r1, [r6, #0] 107f6: 4648 mov r0, r9 107f8: 3108 adds r1, #8 107fa: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 107fc: 6831 ldr r1, [r6, #0] 107fe: 4648 mov r0, r9 10800: 3118 adds r1, #24 10802: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); 10804: 2140 movs r1, #64 ; 0x40 10806: 4620 mov r0, r4 10808: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 1080a: 2140 movs r1, #64 ; 0x40 1080c: 4620 mov r0, r4 1080e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10810: 6831 ldr r1, [r6, #0] 10812: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 10814: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 10816: 47a8 blx r5 _lv_style_list_add_style(list, &styles->ddlist_page); 10818: 6831 ldr r1, [r6, #0] 1081a: 4648 mov r0, r9 1081c: 3154 adds r1, #84 ; 0x54 1081e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 10820: 2141 movs r1, #65 ; 0x41 10822: 4620 mov r0, r4 10824: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 10826: 2141 movs r1, #65 ; 0x41 10828: 4620 mov r0, r4 1082a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1082c: 6831 ldr r1, [r6, #0] 1082e: 3180 adds r1, #128 ; 0x80 10830: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); 10832: 2142 movs r1, #66 ; 0x42 10834: 4620 mov r0, r4 10836: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); 10838: 2142 movs r1, #66 ; 0x42 1083a: 4620 mov r0, r4 1083c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ddlist_sel); 1083e: 6831 ldr r1, [r6, #0] 10840: 3158 adds r1, #88 ; 0x58 10842: e618 b.n 10476 _lv_style_list_add_style(list, &styles->bg); 10844: 4e2f ldr r6, [pc, #188] ; (10904 ) lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 10846: f8df 90c8 ldr.w r9, [pc, #200] ; 10910 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 1084a: f8df 80bc ldr.w r8, [pc, #188] ; 10908 _lv_style_list_add_style(list, &styles->bg); 1084e: 4d2f ldr r5, [pc, #188] ; (1090c ) lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 10850: 2100 movs r1, #0 10852: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 10854: 2100 movs r1, #0 10856: 4620 mov r0, r4 10858: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 1085a: 6831 ldr r1, [r6, #0] 1085c: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 1085e: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 10860: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_bg); 10862: 6831 ldr r1, [r6, #0] 10864: 4638 mov r0, r7 10866: 3140 adds r1, #64 ; 0x40 10868: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1086a: 6831 ldr r1, [r6, #0] 1086c: 4638 mov r0, r7 1086e: 3118 adds r1, #24 10870: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG); 10872: 2101 movs r1, #1 10874: 4620 mov r0, r4 10876: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 10878: 2101 movs r1, #1 1087a: 4620 mov r0, r4 1087c: 47c0 blx r8 _lv_style_list_add_style(list, &styles->pad_small); 1087e: 6831 ldr r1, [r6, #0] 10880: 3118 adds r1, #24 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 10882: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->pad_small); 10884: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_series_bg); 10886: 6831 ldr r1, [r6, #0] 10888: 4638 mov r0, r7 1088a: 3144 adds r1, #68 ; 0x44 1088c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES); 1088e: 2102 movs r1, #2 10890: 4620 mov r0, r4 10892: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); 10894: 2102 movs r1, #2 10896: 4620 mov r0, r4 10898: 47c0 blx r8 _lv_style_list_add_style(list, &styles->chart_series); 1089a: 6831 ldr r1, [r6, #0] 1089c: 3148 adds r1, #72 ; 0x48 1089e: e5ea b.n 10476 lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 108a0: f8df 806c ldr.w r8, [pc, #108] ; 10910 _lv_style_list_add_style(list, &styles->bg); 108a4: 4e17 ldr r6, [pc, #92] ; (10904 ) list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 108a6: 4f18 ldr r7, [pc, #96] ; (10908 ) _lv_style_list_add_style(list, &styles->bg); 108a8: 4d18 ldr r5, [pc, #96] ; (1090c ) lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 108aa: 2100 movs r1, #0 108ac: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 108ae: 2100 movs r1, #0 108b0: 4620 mov r0, r4 108b2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 108b4: 6831 ldr r1, [r6, #0] 108b6: 3104 adds r1, #4 108b8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1); 108ba: 2101 movs r1, #1 108bc: 4620 mov r0, r4 108be: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1); 108c0: 2101 movs r1, #1 108c2: 4620 mov r0, r4 108c4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 108c6: 6831 ldr r1, [r6, #0] 108c8: 31a0 adds r1, #160 ; 0xa0 108ca: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2); 108cc: 2102 movs r1, #2 108ce: 4620 mov r0, r4 108d0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2); 108d2: 2102 movs r1, #2 108d4: 4620 mov r0, r4 108d6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 108d8: 6831 ldr r1, [r6, #0] 108da: 31a0 adds r1, #160 ; 0xa0 108dc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3); 108de: 2103 movs r1, #3 108e0: 4620 mov r0, r4 108e2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3); 108e4: 2103 movs r1, #3 108e6: 4620 mov r0, r4 108e8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 108ea: 6831 ldr r1, [r6, #0] 108ec: 31a0 adds r1, #160 ; 0xa0 108ee: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4); 108f0: 2104 movs r1, #4 108f2: 4620 mov r0, r4 108f4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4); 108f6: 2104 movs r1, #4 108f8: 4620 mov r0, r4 108fa: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 108fc: 6831 ldr r1, [r6, #0] 108fe: 31a0 adds r1, #160 ; 0xa0 10900: e5b9 b.n 10476 10902: bf00 nop 10904: 2000c7d4 .word 0x2000c7d4 10908: 0000243d .word 0x0000243d 1090c: 00005615 .word 0x00005615 10910: 000024f9 .word 0x000024f9 lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 10914: f8df 8200 ldr.w r8, [pc, #512] ; 10b18 _lv_style_list_add_style(list, &styles->scr); 10918: 4e7c ldr r6, [pc, #496] ; (10b0c ) list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 1091a: 4f7d ldr r7, [pc, #500] ; (10b10 ) _lv_style_list_add_style(list, &styles->scr); 1091c: 4d7d ldr r5, [pc, #500] ; (10b14 ) lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 1091e: 2100 movs r1, #0 10920: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 10922: 2100 movs r1, #0 10924: 4620 mov r0, r4 10926: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 10928: 6831 ldr r1, [r6, #0] 1092a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR); 1092c: 2142 movs r1, #66 ; 0x42 1092e: 4620 mov r0, r4 10930: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); 10932: 2142 movs r1, #66 ; 0x42 10934: 4620 mov r0, r4 10936: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 10938: 6831 ldr r1, [r6, #0] 1093a: 3180 adds r1, #128 ; 0x80 1093c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 1093e: 2141 movs r1, #65 ; 0x41 10940: 4620 mov r0, r4 10942: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 10944: 2141 movs r1, #65 ; 0x41 10946: 4620 mov r0, r4 10948: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 1094a: 6831 ldr r1, [r6, #0] 1094c: 31b0 adds r1, #176 ; 0xb0 1094e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER); 10950: 2140 movs r1, #64 ; 0x40 10952: 4620 mov r0, r4 10954: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); 10956: 2140 movs r1, #64 ; 0x40 10958: 4620 mov r0, r4 1095a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 1095c: 6831 ldr r1, [r6, #0] 1095e: 31a8 adds r1, #168 ; 0xa8 10960: e589 b.n 10476 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 10962: 4b6d ldr r3, [pc, #436] ; (10b18 ) 10964: 2100 movs r1, #0 10966: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 10968: 4b69 ldr r3, [pc, #420] ; (10b10 ) 1096a: 2100 movs r1, #0 1096c: 4620 mov r0, r4 1096e: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_btns); 10970: 4b66 ldr r3, [pc, #408] ; (10b0c ) 10972: 6819 ldr r1, [r3, #0] 10974: 31a4 adds r1, #164 ; 0xa4 10976: e540 b.n 103fa lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 10978: f8df 819c ldr.w r8, [pc, #412] ; 10b18 _lv_style_list_add_style(list, &styles->bg); 1097c: 4e63 ldr r6, [pc, #396] ; (10b0c ) list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 1097e: 4f64 ldr r7, [pc, #400] ; (10b10 ) _lv_style_list_add_style(list, &styles->bg); 10980: 4d64 ldr r5, [pc, #400] ; (10b14 ) lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 10982: 2100 movs r1, #0 10984: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 10986: 2100 movs r1, #0 10988: 4620 mov r0, r4 1098a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1098c: 6831 ldr r1, [r6, #0] 1098e: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 10990: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 10992: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 10994: 6831 ldr r1, [r6, #0] 10996: 4648 mov r0, r9 10998: 3118 adds r1, #24 1099a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 1099c: 4620 mov r0, r4 1099e: 2104 movs r1, #4 109a0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 109a2: 2104 movs r1, #4 109a4: 4620 mov r0, r4 109a6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_placeholder); 109a8: 6831 ldr r1, [r6, #0] 109aa: 31b8 adds r1, #184 ; 0xb8 109ac: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR); 109ae: 4620 mov r0, r4 109b0: 2103 movs r1, #3 109b2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); 109b4: 2103 movs r1, #3 109b6: 4620 mov r0, r4 109b8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_cursor); 109ba: 6831 ldr r1, [r6, #0] 109bc: 31b4 adds r1, #180 ; 0xb4 109be: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 109c0: 4620 mov r0, r4 109c2: 2101 movs r1, #1 109c4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 109c6: 2101 movs r1, #1 109c8: 4620 mov r0, r4 109ca: 47b8 blx r7 109cc: e6f6 b.n 107bc _lv_style_list_add_style(list, &styles->bg); 109ce: 4e4f ldr r6, [pc, #316] ; (10b0c ) lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 109d0: f8df 9144 ldr.w r9, [pc, #324] ; 10b18 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 109d4: f8df 8138 ldr.w r8, [pc, #312] ; 10b10 _lv_style_list_add_style(list, &styles->bg); 109d8: 4d4e ldr r5, [pc, #312] ; (10b14 ) lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 109da: 2100 movs r1, #0 109dc: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 109de: 2100 movs r1, #0 109e0: 4620 mov r0, r4 109e2: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 109e4: 6831 ldr r1, [r6, #0] 109e6: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 109e8: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 109ea: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 109ec: 6831 ldr r1, [r6, #0] 109ee: 4638 mov r0, r7 109f0: 3118 adds r1, #24 109f2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR); 109f4: 2103 movs r1, #3 109f6: 4620 mov r0, r4 109f8: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); 109fa: 2103 movs r1, #3 109fc: 4620 mov r0, r4 109fe: 47c0 blx r8 _lv_style_list_add_style(list, &styles->spinbox_cursor); 10a00: 6831 ldr r1, [r6, #0] 10a02: 3198 adds r1, #152 ; 0x98 10a04: e537 b.n 10476 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 10a06: 4b44 ldr r3, [pc, #272] ; (10b18 ) _lv_style_list_add_style(list, &styles->bg); 10a08: 4f40 ldr r7, [pc, #256] ; (10b0c ) 10a0a: 4e42 ldr r6, [pc, #264] ; (10b14 ) lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 10a0c: 2100 movs r1, #0 10a0e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 10a10: 4b3f ldr r3, [pc, #252] ; (10b10 ) 10a12: 2100 movs r1, #0 10a14: 4620 mov r0, r4 10a16: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 10a18: 6839 ldr r1, [r7, #0] 10a1a: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 10a1c: 4605 mov r5, r0 _lv_style_list_add_style(list, &styles->bg); 10a1e: 47b0 blx r6 _lv_style_list_add_style(list, &styles->bg_click); 10a20: 6839 ldr r1, [r7, #0] 10a22: 3108 adds r1, #8 10a24: e5f1 b.n 1060a lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 10a26: f8df 80f0 ldr.w r8, [pc, #240] ; 10b18 _lv_style_list_add_style(list, &styles->bg); 10a2a: 4e38 ldr r6, [pc, #224] ; (10b0c ) list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 10a2c: 4f38 ldr r7, [pc, #224] ; (10b10 ) _lv_style_list_add_style(list, &styles->bg); 10a2e: 4d39 ldr r5, [pc, #228] ; (10b14 ) lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 10a30: 2100 movs r1, #0 10a32: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 10a34: 2100 movs r1, #0 10a36: 4620 mov r0, r4 10a38: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10a3a: 6831 ldr r1, [r6, #0] 10a3c: 3104 adds r1, #4 10a3e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE); 10a40: 2103 movs r1, #3 10a42: 4620 mov r0, r4 10a44: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); 10a46: 2103 movs r1, #3 10a48: 4620 mov r0, r4 10a4a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_date_nums); 10a4c: 6831 ldr r1, [r6, #0] 10a4e: 312c adds r1, #44 ; 0x2c 10a50: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER); 10a52: 2101 movs r1, #1 10a54: 4620 mov r0, r4 10a56: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); 10a58: 2101 movs r1, #1 10a5a: 4620 mov r0, r4 10a5c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_header); 10a5e: 6831 ldr r1, [r6, #0] 10a60: 3130 adds r1, #48 ; 0x30 10a62: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 10a64: 2102 movs r1, #2 10a66: 4620 mov r0, r4 10a68: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 10a6a: 2102 movs r1, #2 10a6c: 4620 mov r0, r4 10a6e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_daynames); 10a70: 6831 ldr r1, [r6, #0] 10a72: 3134 adds r1, #52 ; 0x34 10a74: e4ff b.n 10476 lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 10a76: f8df 80a0 ldr.w r8, [pc, #160] ; 10b18 _lv_style_list_add_style(list, &styles->cpicker_bg); 10a7a: 4e24 ldr r6, [pc, #144] ; (10b0c ) list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 10a7c: 4f24 ldr r7, [pc, #144] ; (10b10 ) _lv_style_list_add_style(list, &styles->cpicker_bg); 10a7e: 4d25 ldr r5, [pc, #148] ; (10b14 ) lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 10a80: 2100 movs r1, #0 10a82: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 10a84: 2100 movs r1, #0 10a86: 4620 mov r0, r4 10a88: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_bg); 10a8a: 6831 ldr r1, [r6, #0] 10a8c: 3138 adds r1, #56 ; 0x38 10a8e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB); 10a90: 2101 movs r1, #1 10a92: 4620 mov r0, r4 10a94: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); 10a96: 2101 movs r1, #1 10a98: 4620 mov r0, r4 10a9a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_indic); 10a9c: 6831 ldr r1, [r6, #0] 10a9e: 313c adds r1, #60 ; 0x3c 10aa0: e4e9 b.n 10476 lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 10aa2: 4b1d ldr r3, [pc, #116] ; (10b18 ) _lv_style_list_add_style(list, &styles->bg); 10aa4: 4f19 ldr r7, [pc, #100] ; (10b0c ) 10aa6: 4e1b ldr r6, [pc, #108] ; (10b14 ) lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 10aa8: 2100 movs r1, #0 10aaa: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 10aac: 4b18 ldr r3, [pc, #96] ; (10b10 ) 10aae: 2100 movs r1, #0 10ab0: 4620 mov r0, r4 10ab2: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 10ab4: 6839 ldr r1, [r7, #0] 10ab6: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 10ab8: 4605 mov r5, r0 _lv_style_list_add_style(list, &styles->bg); 10aba: 47b0 blx r6 _lv_style_list_add_style(list, &styles->lmeter); 10abc: 6839 ldr r1, [r7, #0] 10abe: 3170 adds r1, #112 ; 0x70 10ac0: e5a3 b.n 1060a _lv_style_list_add_style(list, &styles->bg); 10ac2: 4e12 ldr r6, [pc, #72] ; (10b0c ) lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 10ac4: f8df 8050 ldr.w r8, [pc, #80] ; 10b18 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 10ac8: 4f11 ldr r7, [pc, #68] ; (10b10 ) _lv_style_list_add_style(list, &styles->bg); 10aca: 4d12 ldr r5, [pc, #72] ; (10b14 ) lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 10acc: 2100 movs r1, #0 10ace: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 10ad0: 2100 movs r1, #0 10ad2: 4620 mov r0, r4 10ad4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10ad6: 6831 ldr r1, [r6, #0] 10ad8: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 10ada: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 10adc: 47a8 blx r5 _lv_style_list_add_style(list, &styles->gauge_main); 10ade: 6831 ldr r1, [r6, #0] 10ae0: 4648 mov r0, r9 10ae2: 315c adds r1, #92 ; 0x5c 10ae4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR); 10ae6: 2101 movs r1, #1 10ae8: 4620 mov r0, r4 10aea: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); 10aec: 2101 movs r1, #1 10aee: 4620 mov r0, r4 10af0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_strong); 10af2: 6831 ldr r1, [r6, #0] 10af4: 3160 adds r1, #96 ; 0x60 10af6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE); 10af8: 2102 movs r1, #2 10afa: 4620 mov r0, r4 10afc: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); 10afe: 2102 movs r1, #2 10b00: 4620 mov r0, r4 10b02: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_needle); 10b04: 6831 ldr r1, [r6, #0] 10b06: 3164 adds r1, #100 ; 0x64 10b08: e4b5 b.n 10476 10b0a: bf00 nop 10b0c: 2000c7d4 .word 0x2000c7d4 10b10: 0000243d .word 0x0000243d 10b14: 00005615 .word 0x00005615 10b18: 000024f9 .word 0x000024f9 00010b1c : * STATIC FUNCTIONS **********************/ static void style_init_reset(lv_style_t * style) { if(inited) lv_style_reset(style); 10b1c: 4b03 ldr r3, [pc, #12] ; (10b2c ) 10b1e: 791b ldrb r3, [r3, #4] 10b20: b10b cbz r3, 10b26 10b22: 4b03 ldr r3, [pc, #12] ; (10b30 ) else lv_style_init(style); 10b24: 4718 bx r3 10b26: 4b03 ldr r3, [pc, #12] ; (10b34 ) 10b28: e7fc b.n 10b24 10b2a: bf00 nop 10b2c: 2000c7d4 .word 0x2000c7d4 10b30: 00005791 .word 0x00005791 10b34: 0000552d .word 0x0000552d 00010b38 : { 10b38: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->sw_knob); 10b3c: 4d3a ldr r5, [pc, #232] ; (10c28 ) 10b3e: 4b3b ldr r3, [pc, #236] ; (10c2c ) 10b40: 6828 ldr r0, [r5, #0] #define _LV_OBJ_STYLE_SET_GET_DECLARE(prop_name, func_name, value_type, style_type, scalar) \ _OBJ_GET_STYLE_##scalar(prop_name, func_name, value_type, style_type) \ _OBJ_SET_STYLE_LOCAL_##scalar(prop_name, func_name, value_type, style_type) \ _OBJ_SET_STYLE_##scalar(prop_name, func_name, value_type, style_type) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10b42: 4e3b ldr r6, [pc, #236] ; (10c30 ) lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b44: 4c3b ldr r4, [pc, #236] ; (10c34 ) style_init_reset(&styles->sw_knob); 10b46: 309c adds r0, #156 ; 0x9c 10b48: 4798 blx r3 lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 10b4a: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10b4c: 4b3a ldr r3, [pc, #232] ; (10c38 ) 10b4e: 22ff movs r2, #255 ; 0xff 10b50: 212c movs r1, #44 ; 0x2c 10b52: 309c adds r0, #156 ; 0x9c 10b54: 4798 blx r3 lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); 10b56: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10b58: 4b38 ldr r3, [pc, #224] ; (10c3c ) 10b5a: 2129 movs r1, #41 ; 0x29 10b5c: 881a ldrh r2, [r3, #0] 10b5e: 4b38 ldr r3, [pc, #224] ; (10c40 ) 10b60: 309c adds r0, #156 ; 0x9c 10b62: 4798 blx r3 lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10b64: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10b66: f647 72ff movw r2, #32767 ; 0x7fff 10b6a: 2101 movs r1, #1 10b6c: 309c adds r0, #156 ; 0x9c 10b6e: 47b0 blx r6 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b70: 2000 movs r0, #0 10b72: 682f ldr r7, [r5, #0] 10b74: 47a0 blx r4 10b76: 283b cmp r0, #59 ; 0x3b 10b78: f107 079c add.w r7, r7, #156 ; 0x9c 10b7c: dd47 ble.n 10c0e 10b7e: 2000 movs r0, #0 10b80: 47a0 blx r4 10b82: f100 0214 add.w r2, r0, #20 10b86: f06f 0027 mvn.w r0, #39 ; 0x27 10b8a: fb92 f2f0 sdiv r2, r2, r0 10b8e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 10b90: 4638 mov r0, r7 10b92: 2110 movs r1, #16 10b94: 47b0 blx r6 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b96: 2000 movs r0, #0 10b98: 682f ldr r7, [r5, #0] 10b9a: 47a0 blx r4 10b9c: 283b cmp r0, #59 ; 0x3b 10b9e: f107 079c add.w r7, r7, #156 ; 0x9c 10ba2: dd37 ble.n 10c14 10ba4: 2000 movs r0, #0 10ba6: 47a0 blx r4 10ba8: f100 0214 add.w r2, r0, #20 10bac: f06f 0027 mvn.w r0, #39 ; 0x27 10bb0: fb92 f2f0 sdiv r2, r2, r0 10bb4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 10bb6: 4638 mov r0, r7 10bb8: 2111 movs r1, #17 10bba: 47b0 blx r6 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10bbc: 2000 movs r0, #0 10bbe: 682f ldr r7, [r5, #0] 10bc0: 47a0 blx r4 10bc2: 283b cmp r0, #59 ; 0x3b 10bc4: f107 079c add.w r7, r7, #156 ; 0x9c 10bc8: dd27 ble.n 10c1a 10bca: 2000 movs r0, #0 10bcc: 47a0 blx r4 10bce: f100 0214 add.w r2, r0, #20 10bd2: f06f 0027 mvn.w r0, #39 ; 0x27 10bd6: fb92 f2f0 sdiv r2, r2, r0 10bda: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 10bdc: 2112 movs r1, #18 10bde: 4638 mov r0, r7 10be0: 47b0 blx r6 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10be2: 2000 movs r0, #0 10be4: 682d ldr r5, [r5, #0] 10be6: 47a0 blx r4 10be8: 283b cmp r0, #59 ; 0x3b 10bea: f105 059c add.w r5, r5, #156 ; 0x9c 10bee: dd17 ble.n 10c20 10bf0: 2000 movs r0, #0 10bf2: 47a0 blx r4 10bf4: f100 0214 add.w r2, r0, #20 10bf8: f06f 0027 mvn.w r0, #39 ; 0x27 10bfc: fb92 f2f0 sdiv r2, r2, r0 10c00: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 10c02: 4628 mov r0, r5 10c04: 4633 mov r3, r6 10c06: 2113 movs r1, #19 } 10c08: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 10c0c: 4718 bx r3 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10c0e: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10c12: e7bd b.n 10b90 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10c14: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10c18: e7cd b.n 10bb6 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10c1a: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10c1e: e7dd b.n 10bdc lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10c20: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10c24: e7ed b.n 10c02 10c26: bf00 nop 10c28: 2000c7d4 .word 0x2000c7d4 10c2c: 00010b1d .word 0x00010b1d 10c30: 00005875 .word 0x00005875 10c34: 0000d995 .word 0x0000d995 10c38: 00005a15 .word 0x00005a15 10c3c: 000242b6 .word 0x000242b6 10c40: 00005945 .word 0x00005945 00010c44 : { 10c44: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->lmeter); 10c48: 4d6b ldr r5, [pc, #428] ; (10df8 ) 10c4a: 4b6c ldr r3, [pc, #432] ; (10dfc ) 10c4c: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10c4e: 4e6c ldr r6, [pc, #432] ; (10e00 ) lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10c50: 4c6c ldr r4, [pc, #432] ; (10e04 ) style_init_reset(&styles->lmeter); 10c52: 3070 adds r0, #112 ; 0x70 10c54: 4798 blx r3 lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10c56: 6828 ldr r0, [r5, #0] 10c58: f647 72ff movw r2, #32767 ; 0x7fff 10c5c: 2101 movs r1, #1 10c5e: 3070 adds r0, #112 ; 0x70 10c60: 47b0 blx r6 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10c62: 2000 movs r0, #0 10c64: 682f ldr r7, [r5, #0] 10c66: 47a0 blx r4 10c68: eb00 0080 add.w r0, r0, r0, lsl #2 10c6c: 0080 lsls r0, r0, #2 10c6e: 28ef cmp r0, #239 ; 0xef 10c70: f107 0770 add.w r7, r7, #112 ; 0x70 10c74: f340 80b2 ble.w 10ddc 10c78: 2000 movs r0, #0 10c7a: 47a0 blx r4 10c7c: 2350 movs r3, #80 ; 0x50 10c7e: 2114 movs r1, #20 10c80: fb00 3201 mla r2, r0, r1, r3 10c84: 23a0 movs r3, #160 ; 0xa0 10c86: fb92 f2f3 sdiv r2, r2, r3 10c8a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 10c8c: 4638 mov r0, r7 10c8e: 2112 movs r1, #18 10c90: 47b0 blx r6 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10c92: 2000 movs r0, #0 10c94: 682f ldr r7, [r5, #0] 10c96: 47a0 blx r4 10c98: eb00 0080 add.w r0, r0, r0, lsl #2 10c9c: 0080 lsls r0, r0, #2 10c9e: 28ef cmp r0, #239 ; 0xef 10ca0: f107 0770 add.w r7, r7, #112 ; 0x70 10ca4: f340 809c ble.w 10de0 10ca8: 2000 movs r0, #0 10caa: 47a0 blx r4 10cac: 2350 movs r3, #80 ; 0x50 10cae: 2114 movs r1, #20 10cb0: fb00 3201 mla r2, r0, r1, r3 10cb4: 23a0 movs r3, #160 ; 0xa0 10cb6: fb92 f2f3 sdiv r2, r2, r3 10cba: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 10cbc: 4638 mov r0, r7 10cbe: 2113 movs r1, #19 10cc0: 47b0 blx r6 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10cc2: 2000 movs r0, #0 10cc4: 682f ldr r7, [r5, #0] 10cc6: 47a0 blx r4 10cc8: eb00 0080 add.w r0, r0, r0, lsl #2 10ccc: 0080 lsls r0, r0, #2 10cce: 28ef cmp r0, #239 ; 0xef 10cd0: f107 0770 add.w r7, r7, #112 ; 0x70 10cd4: f340 8086 ble.w 10de4 10cd8: 2000 movs r0, #0 10cda: 47a0 blx r4 10cdc: 2350 movs r3, #80 ; 0x50 10cde: 2114 movs r1, #20 10ce0: fb00 3201 mla r2, r0, r1, r3 10ce4: 23a0 movs r3, #160 ; 0xa0 10ce6: fb92 f2f3 sdiv r2, r2, r3 10cea: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 10cec: 4638 mov r0, r7 10cee: 2110 movs r1, #16 10cf0: 47b0 blx r6 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 10cf2: 2000 movs r0, #0 10cf4: 682f ldr r7, [r5, #0] 10cf6: 47a0 blx r4 10cf8: ebc0 1000 rsb r0, r0, r0, lsl #4 10cfc: 0040 lsls r0, r0, #1 10cfe: 28ef cmp r0, #239 ; 0xef 10d00: f107 0770 add.w r7, r7, #112 ; 0x70 10d04: dd70 ble.n 10de8 10d06: 2000 movs r0, #0 10d08: 47a0 blx r4 10d0a: 2350 movs r3, #80 ; 0x50 10d0c: 211e movs r1, #30 10d0e: fb00 3201 mla r2, r0, r1, r3 10d12: 23a0 movs r3, #160 ; 0xa0 10d14: fb92 f2f3 sdiv r2, r2, r3 10d18: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 10d1a: 4638 mov r0, r7 10d1c: 2114 movs r1, #20 10d1e: 47b0 blx r6 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 10d20: 2000 movs r0, #0 10d22: 682f ldr r7, [r5, #0] 10d24: 47a0 blx r4 10d26: eb00 0080 add.w r0, r0, r0, lsl #2 10d2a: eb00 0080 add.w r0, r0, r0, lsl #2 10d2e: 28ef cmp r0, #239 ; 0xef 10d30: f107 0770 add.w r7, r7, #112 ; 0x70 10d34: dd5a ble.n 10dec 10d36: 2000 movs r0, #0 10d38: 47a0 blx r4 10d3a: 2350 movs r3, #80 ; 0x50 10d3c: 2119 movs r1, #25 10d3e: fb00 3201 mla r2, r0, r1, r3 10d42: 23a0 movs r3, #160 ; 0xa0 10d44: fb92 f2f3 sdiv r2, r2, r3 10d48: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) #else /*For compatibility*/ _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, const void *, _ptr, scalar) #endif _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 10d4a: 4638 mov r0, r7 10d4c: 21c0 movs r1, #192 ; 0xc0 10d4e: 47b0 blx r6 lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 10d50: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 10d52: 4f2d ldr r7, [pc, #180] ; (10e08 ) 10d54: 89aa ldrh r2, [r5, #12] 10d56: 2199 movs r1, #153 ; 0x99 10d58: 3070 adds r0, #112 ; 0x70 10d5a: 47b8 blx r7 lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 10d5c: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_BORDER_WIDTH, scale_border_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 10d5e: 89aa ldrh r2, [r5, #12] 10d60: 21c9 movs r1, #201 ; 0xc9 10d62: 3070 adds r0, #112 ; 0x70 10d64: 47b8 blx r7 lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 10d66: 6828 ldr r0, [r5, #0] 10d68: 4b28 ldr r3, [pc, #160] ; (10e0c ) 10d6a: f100 0870 add.w r8, r0, #112 ; 0x70 10d6e: f640 0088 movw r0, #2184 ; 0x888 10d72: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 10d74: 21ca movs r1, #202 ; 0xca 10d76: 4602 mov r2, r0 10d78: 4640 mov r0, r8 10d7a: 47b8 blx r7 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 10d7c: 2000 movs r0, #0 10d7e: 682f ldr r7, [r5, #0] 10d80: 47a0 blx r4 10d82: eb00 0080 add.w r0, r0, r0, lsl #2 10d86: 0040 lsls r0, r0, #1 10d88: 28ef cmp r0, #239 ; 0xef 10d8a: f107 0770 add.w r7, r7, #112 ; 0x70 10d8e: dd2f ble.n 10df0 10d90: 2000 movs r0, #0 10d92: 47a0 blx r4 10d94: 2350 movs r3, #80 ; 0x50 10d96: 210a movs r1, #10 10d98: fb00 3201 mla r2, r0, r1, r3 10d9c: 23a0 movs r3, #160 ; 0xa0 10d9e: fb92 f2f3 sdiv r2, r2, r3 10da2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 10da4: 2190 movs r1, #144 ; 0x90 10da6: 4638 mov r0, r7 10da8: 47b0 blx r6 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 10daa: 2000 movs r0, #0 10dac: 682d ldr r5, [r5, #0] 10dae: 47a0 blx r4 10db0: ebc0 00c0 rsb r0, r0, r0, lsl #3 10db4: 28ef cmp r0, #239 ; 0xef 10db6: f105 0570 add.w r5, r5, #112 ; 0x70 10dba: dd1b ble.n 10df4 10dbc: 2000 movs r0, #0 10dbe: 47a0 blx r4 10dc0: 2350 movs r3, #80 ; 0x50 10dc2: 2107 movs r1, #7 10dc4: fb00 3201 mla r2, r0, r1, r3 10dc8: 23a0 movs r3, #160 ; 0xa0 10dca: fb92 f2f3 sdiv r2, r2, r3 10dce: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 10dd0: 4628 mov r0, r5 10dd2: 4633 mov r3, r6 10dd4: 21c3 movs r1, #195 ; 0xc3 } 10dd6: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 10dda: 4718 bx r3 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10ddc: 2201 movs r2, #1 10dde: e755 b.n 10c8c lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10de0: 2201 movs r2, #1 10de2: e76b b.n 10cbc lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10de4: 2201 movs r2, #1 10de6: e781 b.n 10cec lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 10de8: 2201 movs r2, #1 10dea: e796 b.n 10d1a lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 10dec: 2201 movs r2, #1 10dee: e7ac b.n 10d4a lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 10df0: 2201 movs r2, #1 10df2: e7d7 b.n 10da4 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 10df4: 2201 movs r2, #1 10df6: e7eb b.n 10dd0 10df8: 2000c7d4 .word 0x2000c7d4 10dfc: 00010b1d .word 0x00010b1d 10e00: 00005875 .word 0x00005875 10e04: 0000d995 .word 0x0000d995 10e08: 00005945 .word 0x00005945 10e0c: 00010351 .word 0x00010351 00010e10 : { 10e10: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->led); 10e14: 4c32 ldr r4, [pc, #200] ; (10ee0 ) 10e16: 4b33 ldr r3, [pc, #204] ; (10ee4 ) 10e18: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10e1a: 4e33 ldr r6, [pc, #204] ; (10ee8 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10e1c: 4f33 ldr r7, [pc, #204] ; (10eec ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 10e1e: 4d34 ldr r5, [pc, #208] ; (10ef0 ) 10e20: 306c adds r0, #108 ; 0x6c 10e22: 4798 blx r3 lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); 10e24: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10e26: 22ff movs r2, #255 ; 0xff 10e28: 212c movs r1, #44 ; 0x2c 10e2a: 306c adds r0, #108 ; 0x6c 10e2c: 47b0 blx r6 lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 10e2e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10e30: 89a2 ldrh r2, [r4, #12] 10e32: 2129 movs r1, #41 ; 0x29 10e34: 306c adds r0, #108 ; 0x6c 10e36: 47b8 blx r7 lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); 10e38: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 10e3a: 2202 movs r2, #2 10e3c: 2130 movs r1, #48 ; 0x30 10e3e: 306c adds r0, #108 ; 0x6c 10e40: 47a8 blx r5 lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); 10e42: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 10e44: 227f movs r2, #127 ; 0x7f 10e46: 213c movs r1, #60 ; 0x3c 10e48: 306c adds r0, #108 ; 0x6c 10e4a: 47b0 blx r6 lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); 10e4c: 6820 ldr r0, [r4, #0] 10e4e: 4b29 ldr r3, [pc, #164] ; (10ef4 ) 10e50: f100 066c add.w r6, r0, #108 ; 0x6c 10e54: 214c movs r1, #76 ; 0x4c 10e56: 89a0 ldrh r0, [r4, #12] 10e58: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 10e5a: 2139 movs r1, #57 ; 0x39 10e5c: 4602 mov r2, r0 10e5e: 4630 mov r0, r6 10e60: 47b8 blx r7 lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10e62: 6820 ldr r0, [r4, #0] lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 10e64: 4e24 ldr r6, [pc, #144] ; (10ef8 ) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10e66: f647 72ff movw r2, #32767 ; 0x7fff 10e6a: 2101 movs r1, #1 10e6c: 306c adds r0, #108 ; 0x6c 10e6e: 47a8 blx r5 10e70: 6823 ldr r3, [r4, #0] 10e72: 2000 movs r0, #0 10e74: f103 086c add.w r8, r3, #108 ; 0x6c 10e78: 47b0 blx r6 10e7a: ebc0 1000 rsb r0, r0, r0, lsl #4 10e7e: 28ef cmp r0, #239 ; 0xef 10e80: dd2a ble.n 10ed8 10e82: 2000 movs r0, #0 10e84: 47b0 blx r6 10e86: 210f movs r1, #15 10e88: 2350 movs r3, #80 ; 0x50 10e8a: fb00 3001 mla r0, r0, r1, r3 10e8e: 22a0 movs r2, #160 ; 0xa0 10e90: fb90 f2f2 sdiv r2, r0, r2 10e94: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 10e96: 2150 movs r1, #80 ; 0x50 10e98: 4640 mov r0, r8 10e9a: 47a8 blx r5 lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 10e9c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 10e9e: 89a2 ldrh r2, [r4, #12] 10ea0: 2159 movs r1, #89 ; 0x59 10ea2: 306c adds r0, #108 ; 0x6c 10ea4: 47b8 blx r7 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 10ea6: 2000 movs r0, #0 10ea8: 6824 ldr r4, [r4, #0] 10eaa: 47b0 blx r6 10eac: eb00 0080 add.w r0, r0, r0, lsl #2 10eb0: 28ef cmp r0, #239 ; 0xef 10eb2: f104 046c add.w r4, r4, #108 ; 0x6c 10eb6: dd11 ble.n 10edc 10eb8: 2000 movs r0, #0 10eba: 47b0 blx r6 10ebc: 2350 movs r3, #80 ; 0x50 10ebe: 2105 movs r1, #5 10ec0: fb00 3201 mla r2, r0, r1, r3 10ec4: 23a0 movs r3, #160 ; 0xa0 10ec6: fb92 f2f3 sdiv r2, r2, r3 10eca: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 10ecc: 4620 mov r0, r4 10ece: 462b mov r3, r5 10ed0: 2153 movs r1, #83 ; 0x53 } 10ed2: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 10ed6: 4718 bx r3 lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 10ed8: 2201 movs r2, #1 10eda: e7dc b.n 10e96 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 10edc: 2201 movs r2, #1 10ede: e7f5 b.n 10ecc 10ee0: 2000c7d4 .word 0x2000c7d4 10ee4: 00010b1d .word 0x00010b1d 10ee8: 00005a15 .word 0x00005a15 10eec: 00005945 .word 0x00005945 10ef0: 00005875 .word 0x00005875 10ef4: 0000e393 .word 0x0000e393 10ef8: 0000d995 .word 0x0000d995 00010efc : return LV_COLOR_MAKE(r, g, b); 10efc: f3c0 2285 ubfx r2, r0, #10, #6 10f00: f3c0 03c4 ubfx r3, r0, #3, #5 10f04: ea43 1342 orr.w r3, r3, r2, lsl #5 10f08: f3c0 40c4 ubfx r0, r0, #19, #5 } 10f0c: ea43 20c0 orr.w r0, r3, r0, lsl #11 10f10: 4770 bx lr ... 00010f14 : { 10f14: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} style_init_reset(&styles->bar_bg); 10f18: 4c43 ldr r4, [pc, #268] ; (11028 ) 10f1a: f8df 9134 ldr.w r9, [pc, #308] ; 11050 10f1e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10f20: 4e42 ldr r6, [pc, #264] ; (1102c ) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10f22: 4f43 ldr r7, [pc, #268] ; (11030 ) 10f24: f8df 812c ldr.w r8, [pc, #300] ; 11054 10f28: 3024 adds r0, #36 ; 0x24 10f2a: 47c8 blx r9 lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10f2c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10f2e: f647 72ff movw r2, #32767 ; 0x7fff 10f32: 2101 movs r1, #1 10f34: 3024 adds r0, #36 ; 0x24 10f36: 47b0 blx r6 lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 10f38: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10f3a: 22ff movs r2, #255 ; 0xff 10f3c: 3024 adds r0, #36 ; 0x24 10f3e: 212c movs r1, #44 ; 0x2c 10f40: 47b8 blx r7 lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 10f42: 6a23 ldr r3, [r4, #32] 10f44: 6825 ldr r5, [r4, #0] 10f46: f013 0f02 tst.w r3, #2 10f4a: bf14 ite ne 10f4c: 4839 ldrne r0, [pc, #228] ; (11034 ) 10f4e: 483a ldreq r0, [pc, #232] ; (11038 ) 10f50: 47c0 blx r8 10f52: 3524 adds r5, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10f54: 4602 mov r2, r0 10f56: 2129 movs r1, #41 ; 0x29 10f58: 4628 mov r0, r5 10f5a: 4d38 ldr r5, [pc, #224] ; (1103c ) 10f5c: 47a8 blx r5 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 10f5e: 6823 ldr r3, [r4, #0] 10f60: f103 0a24 add.w sl, r3, #36 ; 0x24 10f64: 6a23 ldr r3, [r4, #32] 10f66: 079a lsls r2, r3, #30 10f68: d558 bpl.n 1101c 10f6a: 4835 ldr r0, [pc, #212] ; (11040 ) 10f6c: 47c0 blx r8 10f6e: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 10f70: 2179 movs r1, #121 ; 0x79 10f72: 4650 mov r0, sl 10f74: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); 10f76: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 10f78: 89a2 ldrh r2, [r4, #12] 10f7a: 2149 movs r1, #73 ; 0x49 10f7c: 3024 adds r0, #36 ; 0x24 10f7e: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); 10f80: 6820 ldr r0, [r4, #0] 10f82: 89e2 ldrh r2, [r4, #14] 10f84: f240 4149 movw r1, #1097 ; 0x449 10f88: 3024 adds r0, #36 ; 0x24 10f8a: 47a8 blx r5 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 10f8c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 10f8e: 2200 movs r2, #0 10f90: 214c movs r1, #76 ; 0x4c 10f92: 3024 adds r0, #36 ; 0x24 10f94: 47b8 blx r7 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); 10f96: 6820 ldr r0, [r4, #0] 10f98: 227f movs r2, #127 ; 0x7f 10f9a: f44f 7113 mov.w r1, #588 ; 0x24c 10f9e: 3024 adds r0, #36 ; 0x24 10fa0: 47b8 blx r7 lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3); 10fa2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 10fa4: 2203 movs r2, #3 10fa6: 2140 movs r1, #64 ; 0x40 10fa8: 3024 adds r0, #36 ; 0x24 10faa: 47b0 blx r6 lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 10fac: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 10fae: 2296 movs r2, #150 ; 0x96 10fb0: 21b0 movs r1, #176 ; 0xb0 10fb2: 3024 adds r0, #36 ; 0x24 10fb4: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 10fb6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 10fb8: 224c movs r2, #76 ; 0x4c 10fba: 21b7 movs r1, #183 ; 0xb7 10fbc: 3024 adds r0, #36 ; 0x24 10fbe: 47b0 blx r6 style_init_reset(&styles->bar_indic); 10fc0: 6820 ldr r0, [r4, #0] 10fc2: 3028 adds r0, #40 ; 0x28 10fc4: 47c8 blx r9 lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 10fc6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10fc8: 22ff movs r2, #255 ; 0xff 10fca: 212c movs r1, #44 ; 0x2c 10fcc: 3028 adds r0, #40 ; 0x28 10fce: 47b8 blx r7 lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10fd0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10fd2: f647 72ff movw r2, #32767 ; 0x7fff 10fd6: 2101 movs r1, #1 10fd8: 3028 adds r0, #40 ; 0x28 10fda: 47b0 blx r6 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); 10fdc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10fde: 89a2 ldrh r2, [r4, #12] 10fe0: 2129 movs r1, #41 ; 0x29 10fe2: 3028 adds r0, #40 ; 0x28 10fe4: 47a8 blx r5 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); 10fe6: 6820 ldr r0, [r4, #0] 10fe8: 4b16 ldr r3, [pc, #88] ; (11044 ) 10fea: f100 0628 add.w r6, r0, #40 ; 0x28 10fee: f640 0088 movw r0, #2184 ; 0x888 10ff2: 4798 blx r3 10ff4: f242 0129 movw r1, #8233 ; 0x2029 10ff8: 4602 mov r2, r0 10ffa: 4630 mov r0, r6 10ffc: 47a8 blx r5 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 10ffe: 6a23 ldr r3, [r4, #32] 11000: 6820 ldr r0, [r4, #0] 11002: 079b lsls r3, r3, #30 11004: f100 0628 add.w r6, r0, #40 ; 0x28 11008: d50b bpl.n 11022 1100a: 480f ldr r0, [pc, #60] ; (11048 ) 1100c: 47c0 blx r8 1100e: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 11010: 4630 mov r0, r6 11012: 462b mov r3, r5 11014: 2179 movs r1, #121 ; 0x79 } 11016: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1101a: 4718 bx r3 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 1101c: 4b0b ldr r3, [pc, #44] ; (1104c ) 1101e: 881a ldrh r2, [r3, #0] 11020: e7a6 b.n 10f70 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 11022: 4b0a ldr r3, [pc, #40] ; (1104c ) 11024: 881a ldrh r2, [r3, #0] 11026: e7f3 b.n 11010 11028: 2000c7d4 .word 0x2000c7d4 1102c: 00005875 .word 0x00005875 11030: 00005a15 .word 0x00005a15 11034: 00d4d7d9 .word 0x00d4d7d9 11038: 0045494d .word 0x0045494d 1103c: 00005945 .word 0x00005945 11040: 0031404f .word 0x0031404f 11044: 00010351 .word 0x00010351 11048: 0041404f .word 0x0041404f 1104c: 000242b6 .word 0x000242b6 11050: 00010b1d .word 0x00010b1d 11054: 00010efd .word 0x00010efd 00011058 : { 11058: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->slider_knob); 1105c: 4d7d ldr r5, [pc, #500] ; (11254 ) 1105e: 4f7e ldr r7, [pc, #504] ; (11258 ) 11060: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11062: 4c7e ldr r4, [pc, #504] ; (1125c ) 11064: 3090 adds r0, #144 ; 0x90 11066: 47b8 blx r7 lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 11068: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1106a: 4b7d ldr r3, [pc, #500] ; (11260 ) 1106c: 22ff movs r2, #255 ; 0xff 1106e: 212c movs r1, #44 ; 0x2c 11070: 3090 adds r0, #144 ; 0x90 11072: 4798 blx r3 lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 11074: 6a2b ldr r3, [r5, #32] 11076: 6828 ldr r0, [r5, #0] 11078: 079a lsls r2, r3, #30 1107a: bf56 itet pl 1107c: 4b79 ldrpl r3, [pc, #484] ; (11264 ) 1107e: 89aa ldrhmi r2, [r5, #12] 11080: 881a ldrhpl r2, [r3, #0] 11082: 3090 adds r0, #144 ; 0x90 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11084: 2129 movs r1, #41 ; 0x29 11086: 47a0 blx r4 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 11088: 6a2b ldr r3, [r5, #32] 1108a: 682e ldr r6, [r5, #0] 1108c: 079b lsls r3, r3, #30 1108e: f106 0690 add.w r6, r6, #144 ; 0x90 11092: f140 80cc bpl.w 1122e 11096: 4874 ldr r0, [pc, #464] ; (11268 ) 11098: 4b74 ldr r3, [pc, #464] ; (1126c ) 1109a: 4798 blx r3 1109c: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1109e: 4630 mov r0, r6 110a0: 2179 movs r1, #121 ; 0x79 110a2: 47a0 blx r4 lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 110a4: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 110a6: 4e72 ldr r6, [pc, #456] ; (11270 ) lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 110a8: 4c72 ldr r4, [pc, #456] ; (11274 ) 110aa: f647 72ff movw r2, #32767 ; 0x7fff 110ae: 2101 movs r1, #1 110b0: 3090 adds r0, #144 ; 0x90 110b2: 47b0 blx r6 110b4: 682b ldr r3, [r5, #0] 110b6: 2000 movs r0, #0 110b8: f103 0890 add.w r8, r3, #144 ; 0x90 110bc: 47a0 blx r4 110be: ebc0 00c0 rsb r0, r0, r0, lsl #3 110c2: 28ef cmp r0, #239 ; 0xef 110c4: f340 80b6 ble.w 11234 110c8: 2000 movs r0, #0 110ca: 47a0 blx r4 110cc: 2107 movs r1, #7 110ce: 2350 movs r3, #80 ; 0x50 110d0: fb00 3001 mla r0, r0, r1, r3 110d4: 22a0 movs r2, #160 ; 0xa0 110d6: fb90 f2f2 sdiv r2, r0, r2 110da: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 110dc: 4640 mov r0, r8 110de: 2112 movs r1, #18 110e0: 47b0 blx r6 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 110e2: 682b ldr r3, [r5, #0] 110e4: 2000 movs r0, #0 110e6: f103 0890 add.w r8, r3, #144 ; 0x90 110ea: 47a0 blx r4 110ec: ebc0 00c0 rsb r0, r0, r0, lsl #3 110f0: 28ef cmp r0, #239 ; 0xef 110f2: f340 80a1 ble.w 11238 110f6: 2000 movs r0, #0 110f8: 47a0 blx r4 110fa: 2107 movs r1, #7 110fc: 2350 movs r3, #80 ; 0x50 110fe: fb00 3001 mla r0, r0, r1, r3 11102: 22a0 movs r2, #160 ; 0xa0 11104: fb90 f2f2 sdiv r2, r0, r2 11108: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1110a: 4640 mov r0, r8 1110c: 2113 movs r1, #19 1110e: 47b0 blx r6 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 11110: 682b ldr r3, [r5, #0] 11112: 2000 movs r0, #0 11114: f103 0890 add.w r8, r3, #144 ; 0x90 11118: 47a0 blx r4 1111a: ebc0 00c0 rsb r0, r0, r0, lsl #3 1111e: 28ef cmp r0, #239 ; 0xef 11120: f340 808c ble.w 1123c 11124: 2000 movs r0, #0 11126: 47a0 blx r4 11128: 2107 movs r1, #7 1112a: 2350 movs r3, #80 ; 0x50 1112c: fb00 3001 mla r0, r0, r1, r3 11130: 22a0 movs r2, #160 ; 0xa0 11132: fb90 f2f2 sdiv r2, r0, r2 11136: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 11138: 4640 mov r0, r8 1113a: 2110 movs r1, #16 1113c: 47b0 blx r6 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 1113e: 682b ldr r3, [r5, #0] 11140: 2000 movs r0, #0 11142: f103 0890 add.w r8, r3, #144 ; 0x90 11146: 47a0 blx r4 11148: ebc0 00c0 rsb r0, r0, r0, lsl #3 1114c: 28ef cmp r0, #239 ; 0xef 1114e: dd77 ble.n 11240 11150: 2000 movs r0, #0 11152: 47a0 blx r4 11154: 2107 movs r1, #7 11156: 2350 movs r3, #80 ; 0x50 11158: fb00 3001 mla r0, r0, r1, r3 1115c: 22a0 movs r2, #160 ; 0xa0 1115e: fb90 f2f2 sdiv r2, r0, r2 11162: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 11164: 2111 movs r1, #17 11166: 4640 mov r0, r8 11168: 47b0 blx r6 style_init_reset(&styles->slider_bg); 1116a: 6828 ldr r0, [r5, #0] 1116c: 3094 adds r0, #148 ; 0x94 1116e: 47b8 blx r7 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11170: 2000 movs r0, #0 11172: 682f ldr r7, [r5, #0] 11174: 47a0 blx r4 11176: eb00 0080 add.w r0, r0, r0, lsl #2 1117a: 0040 lsls r0, r0, #1 1117c: 28ef cmp r0, #239 ; 0xef 1117e: f107 0794 add.w r7, r7, #148 ; 0x94 11182: dd5f ble.n 11244 11184: 2000 movs r0, #0 11186: 47a0 blx r4 11188: 2350 movs r3, #80 ; 0x50 1118a: 210a movs r1, #10 1118c: fb00 3201 mla r2, r0, r1, r3 11190: 23a0 movs r3, #160 ; 0xa0 11192: fb92 f2f3 sdiv r2, r2, r3 11196: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar) 11198: 4638 mov r0, r7 1119a: 2117 movs r1, #23 1119c: 47b0 blx r6 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1119e: 2000 movs r0, #0 111a0: 682f ldr r7, [r5, #0] 111a2: 47a0 blx r4 111a4: eb00 0080 add.w r0, r0, r0, lsl #2 111a8: 0040 lsls r0, r0, #1 111aa: 28ef cmp r0, #239 ; 0xef 111ac: f107 0794 add.w r7, r7, #148 ; 0x94 111b0: dd4a ble.n 11248 111b2: 2000 movs r0, #0 111b4: 47a0 blx r4 111b6: 2350 movs r3, #80 ; 0x50 111b8: 210a movs r1, #10 111ba: fb00 3201 mla r2, r0, r1, r3 111be: 23a0 movs r3, #160 ; 0xa0 111c0: fb92 f2f3 sdiv r2, r2, r3 111c4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar) 111c6: 4638 mov r0, r7 111c8: 2118 movs r1, #24 111ca: 47b0 blx r6 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 111cc: 2000 movs r0, #0 111ce: 682f ldr r7, [r5, #0] 111d0: 47a0 blx r4 111d2: eb00 0080 add.w r0, r0, r0, lsl #2 111d6: 0040 lsls r0, r0, #1 111d8: 28ef cmp r0, #239 ; 0xef 111da: f107 0794 add.w r7, r7, #148 ; 0x94 111de: dd35 ble.n 1124c 111e0: 2000 movs r0, #0 111e2: 47a0 blx r4 111e4: 2350 movs r3, #80 ; 0x50 111e6: 210a movs r1, #10 111e8: fb00 3201 mla r2, r0, r1, r3 111ec: 23a0 movs r3, #160 ; 0xa0 111ee: fb92 f2f3 sdiv r2, r2, r3 111f2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar) 111f4: 2115 movs r1, #21 111f6: 4638 mov r0, r7 111f8: 47b0 blx r6 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 111fa: 2000 movs r0, #0 111fc: 682d ldr r5, [r5, #0] 111fe: 47a0 blx r4 11200: eb00 0080 add.w r0, r0, r0, lsl #2 11204: 0040 lsls r0, r0, #1 11206: 28ef cmp r0, #239 ; 0xef 11208: f105 0594 add.w r5, r5, #148 ; 0x94 1120c: dd20 ble.n 11250 1120e: 2000 movs r0, #0 11210: 47a0 blx r4 11212: 2350 movs r3, #80 ; 0x50 11214: 210a movs r1, #10 11216: fb00 3201 mla r2, r0, r1, r3 1121a: 23a0 movs r3, #160 ; 0xa0 1121c: fb92 f2f3 sdiv r2, r2, r3 11220: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar) 11222: 4628 mov r0, r5 11224: 4633 mov r3, r6 11226: 2116 movs r1, #22 } 11228: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 1122c: 4718 bx r3 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 1122e: 4b0d ldr r3, [pc, #52] ; (11264 ) 11230: 881a ldrh r2, [r3, #0] 11232: e734 b.n 1109e lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 11234: 2201 movs r2, #1 11236: e751 b.n 110dc lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 11238: 2201 movs r2, #1 1123a: e766 b.n 1110a lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 1123c: 2201 movs r2, #1 1123e: e77b b.n 11138 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 11240: 2201 movs r2, #1 11242: e78f b.n 11164 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11244: 2201 movs r2, #1 11246: e7a7 b.n 11198 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11248: 2201 movs r2, #1 1124a: e7bc b.n 111c6 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1124c: 2201 movs r2, #1 1124e: e7d1 b.n 111f4 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11250: 2201 movs r2, #1 11252: e7e6 b.n 11222 11254: 2000c7d4 .word 0x2000c7d4 11258: 00010b1d .word 0x00010b1d 1125c: 00005945 .word 0x00005945 11260: 00005a15 .word 0x00005a15 11264: 000242b6 .word 0x000242b6 11268: 0031404f .word 0x0031404f 1126c: 00010efd .word 0x00010efd 11270: 00005875 .word 0x00005875 11274: 0000d995 .word 0x0000d995 00011278 : { 11278: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} style_init_reset(&styles->gauge_main); 1127c: 4cb5 ldr r4, [pc, #724] ; (11554 ) 1127e: f8df 82f0 ldr.w r8, [pc, #752] ; 11570 11282: 6820 ldr r0, [r4, #0] lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 11284: 4db4 ldr r5, [pc, #720] ; (11558 ) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 11286: 4fb5 ldr r7, [pc, #724] ; (1155c ) lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 11288: f8df a2e8 ldr.w sl, [pc, #744] ; 11574 style_init_reset(&styles->gauge_main); 1128c: 305c adds r0, #92 ; 0x5c 1128e: 47c0 blx r8 lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 11290: 6820 ldr r0, [r4, #0] 11292: f100 065c add.w r6, r0, #92 ; 0x5c 11296: f640 0088 movw r0, #2184 ; 0x888 1129a: 47a8 blx r5 1129c: 2199 movs r1, #153 ; 0x99 1129e: 4602 mov r2, r0 112a0: 4630 mov r0, r6 112a2: 47b8 blx r7 lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 112a4: 6820 ldr r0, [r4, #0] 112a6: f100 065c add.w r6, r0, #92 ; 0x5c 112aa: f640 0088 movw r0, #2184 ; 0x888 112ae: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 112b0: 21c9 movs r1, #201 ; 0xc9 112b2: 4602 mov r2, r0 112b4: 4630 mov r0, r6 112b6: 47b8 blx r7 lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); 112b8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 112ba: 89a2 ldrh r2, [r4, #12] 112bc: 21ca movs r1, #202 ; 0xca 112be: 305c adds r0, #92 ; 0x5c 112c0: 47b8 blx r7 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 112c2: 2000 movs r0, #0 112c4: 6826 ldr r6, [r4, #0] 112c6: 47d0 blx sl 112c8: eb00 0080 add.w r0, r0, r0, lsl #2 112cc: 28ef cmp r0, #239 ; 0xef 112ce: 46a9 mov r9, r5 112d0: f106 065c add.w r6, r6, #92 ; 0x5c 112d4: 4655 mov r5, sl 112d6: f340 8189 ble.w 115ec 112da: 2000 movs r0, #0 112dc: 47d0 blx sl 112de: 2105 movs r1, #5 112e0: 2350 movs r3, #80 ; 0x50 112e2: fb00 3001 mla r0, r0, r1, r3 112e6: 22a0 movs r2, #160 ; 0xa0 112e8: fb90 f2f2 sdiv r2, r0, r2 112ec: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 112ee: 4630 mov r0, r6 112f0: 2190 movs r1, #144 ; 0x90 112f2: 4e9b ldr r6, [pc, #620] ; (11560 ) 112f4: 47b0 blx r6 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 112f6: 6823 ldr r3, [r4, #0] 112f8: 2000 movs r0, #0 112fa: f103 0a5c add.w sl, r3, #92 ; 0x5c 112fe: 47a8 blx r5 11300: 283b cmp r0, #59 ; 0x3b 11302: f340 8175 ble.w 115f0 11306: 2000 movs r0, #0 11308: 47a8 blx r5 1130a: 2228 movs r2, #40 ; 0x28 1130c: 3014 adds r0, #20 1130e: fb90 f2f2 sdiv r2, r0, r2 11312: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 11314: 4650 mov r0, sl 11316: 21c3 movs r1, #195 ; 0xc3 11318: 47b0 blx r6 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 1131a: 6823 ldr r3, [r4, #0] 1131c: 2000 movs r0, #0 1131e: f103 0a5c add.w sl, r3, #92 ; 0x5c 11322: 47a8 blx r5 11324: 281d cmp r0, #29 11326: f340 8165 ble.w 115f4 1132a: 2000 movs r0, #0 1132c: 47a8 blx r5 1132e: 2214 movs r2, #20 11330: 300a adds r0, #10 11332: fb90 f2f2 sdiv r2, r0, r2 11336: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) 11338: 4650 mov r0, sl 1133a: 21c2 movs r1, #194 ; 0xc2 1133c: 47b0 blx r6 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1133e: 6823 ldr r3, [r4, #0] 11340: 2000 movs r0, #0 11342: f103 0a5c add.w sl, r3, #92 ; 0x5c 11346: 47a8 blx r5 11348: eb00 0080 add.w r0, r0, r0, lsl #2 1134c: 0080 lsls r0, r0, #2 1134e: 28ef cmp r0, #239 ; 0xef 11350: f340 8152 ble.w 115f8 11354: 2000 movs r0, #0 11356: 47a8 blx r5 11358: 2114 movs r1, #20 1135a: 2350 movs r3, #80 ; 0x50 1135c: fb00 3001 mla r0, r0, r1, r3 11360: 22a0 movs r2, #160 ; 0xa0 11362: fb90 f2f2 sdiv r2, r0, r2 11366: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 11368: 4650 mov r0, sl 1136a: 2112 movs r1, #18 1136c: 47b0 blx r6 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1136e: 6823 ldr r3, [r4, #0] 11370: 2000 movs r0, #0 11372: f103 0a5c add.w sl, r3, #92 ; 0x5c 11376: 47a8 blx r5 11378: eb00 0080 add.w r0, r0, r0, lsl #2 1137c: 0080 lsls r0, r0, #2 1137e: 28ef cmp r0, #239 ; 0xef 11380: f340 813c ble.w 115fc 11384: 2000 movs r0, #0 11386: 47a8 blx r5 11388: 2114 movs r1, #20 1138a: 2350 movs r3, #80 ; 0x50 1138c: fb00 3001 mla r0, r0, r1, r3 11390: 22a0 movs r2, #160 ; 0xa0 11392: fb90 f2f2 sdiv r2, r0, r2 11396: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 11398: 4650 mov r0, sl 1139a: 2113 movs r1, #19 1139c: 47b0 blx r6 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1139e: 6823 ldr r3, [r4, #0] 113a0: 2000 movs r0, #0 113a2: f103 0a5c add.w sl, r3, #92 ; 0x5c 113a6: 47a8 blx r5 113a8: eb00 0080 add.w r0, r0, r0, lsl #2 113ac: 0080 lsls r0, r0, #2 113ae: 28ef cmp r0, #239 ; 0xef 113b0: f340 8126 ble.w 11600 113b4: 2000 movs r0, #0 113b6: 47a8 blx r5 113b8: 2114 movs r1, #20 113ba: 2350 movs r3, #80 ; 0x50 113bc: fb00 3001 mla r0, r0, r1, r3 113c0: 22a0 movs r2, #160 ; 0xa0 113c2: fb90 f2f2 sdiv r2, r0, r2 113c6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 113c8: 4650 mov r0, sl 113ca: 2110 movs r1, #16 113cc: 47b0 blx r6 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 113ce: 6823 ldr r3, [r4, #0] 113d0: 2000 movs r0, #0 113d2: f103 0a5c add.w sl, r3, #92 ; 0x5c 113d6: 47a8 blx r5 113d8: eb00 0080 add.w r0, r0, r0, lsl #2 113dc: 0080 lsls r0, r0, #2 113de: 28ef cmp r0, #239 ; 0xef 113e0: f340 8110 ble.w 11604 113e4: 2000 movs r0, #0 113e6: 47a8 blx r5 113e8: 2114 movs r1, #20 113ea: 2350 movs r3, #80 ; 0x50 113ec: fb00 3001 mla r0, r0, r1, r3 113f0: 22a0 movs r2, #160 ; 0xa0 113f2: fb90 f2f2 sdiv r2, r0, r2 113f6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 113f8: 4650 mov r0, sl 113fa: 2114 movs r1, #20 113fc: 47b0 blx r6 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 113fe: 6823 ldr r3, [r4, #0] 11400: 2000 movs r0, #0 11402: f103 0a5c add.w sl, r3, #92 ; 0x5c 11406: 47a8 blx r5 11408: ebc0 1000 rsb r0, r0, r0, lsl #4 1140c: 28ef cmp r0, #239 ; 0xef 1140e: f340 80fb ble.w 11608 11412: 2000 movs r0, #0 11414: 47a8 blx r5 11416: 210f movs r1, #15 11418: 2350 movs r3, #80 ; 0x50 1141a: fb00 3001 mla r0, r0, r1, r3 1141e: 22a0 movs r2, #160 ; 0xa0 11420: fb90 f2f2 sdiv r2, r0, r2 11424: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 11426: 4650 mov r0, sl 11428: 21c0 movs r1, #192 ; 0xc0 1142a: 47b0 blx r6 lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1142c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1142e: f647 72ff movw r2, #32767 ; 0x7fff 11432: 2101 movs r1, #1 11434: 305c adds r0, #92 ; 0x5c 11436: 47b0 blx r6 style_init_reset(&styles->gauge_strong); 11438: 6820 ldr r0, [r4, #0] 1143a: 3060 adds r0, #96 ; 0x60 1143c: 47c0 blx r8 lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1143e: 6820 ldr r0, [r4, #0] 11440: f100 0a60 add.w sl, r0, #96 ; 0x60 11444: f640 0088 movw r0, #2184 ; 0x888 11448: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 1144a: 2199 movs r1, #153 ; 0x99 1144c: 4602 mov r2, r0 1144e: 4650 mov r0, sl 11450: 47b8 blx r7 lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 11452: 6820 ldr r0, [r4, #0] 11454: f100 0a60 add.w sl, r0, #96 ; 0x60 11458: f640 0088 movw r0, #2184 ; 0x888 1145c: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 1145e: 21c9 movs r1, #201 ; 0xc9 11460: 4602 mov r2, r0 11462: 4650 mov r0, sl 11464: 47b8 blx r7 lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); 11466: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 11468: 89a2 ldrh r2, [r4, #12] 1146a: 21ca movs r1, #202 ; 0xca 1146c: 3060 adds r0, #96 ; 0x60 1146e: 47b8 blx r7 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 11470: 6823 ldr r3, [r4, #0] 11472: 2000 movs r0, #0 11474: f103 0960 add.w r9, r3, #96 ; 0x60 11478: 47a8 blx r5 1147a: 281d cmp r0, #29 1147c: f340 80c6 ble.w 1160c 11480: 2000 movs r0, #0 11482: 47a8 blx r5 11484: 2214 movs r2, #20 11486: 300a adds r0, #10 11488: fb90 f2f2 sdiv r2, r0, r2 1148c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1148e: 4648 mov r0, r9 11490: 2190 movs r1, #144 ; 0x90 11492: 47b0 blx r6 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 11494: 6823 ldr r3, [r4, #0] 11496: 2000 movs r0, #0 11498: f103 0960 add.w r9, r3, #96 ; 0x60 1149c: 47a8 blx r5 1149e: 281d cmp r0, #29 114a0: f340 80b6 ble.w 11610 114a4: 2000 movs r0, #0 114a6: 47a8 blx r5 114a8: 2214 movs r2, #20 114aa: 300a adds r0, #10 114ac: fb90 f2f2 sdiv r2, r0, r2 114b0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 114b2: 4648 mov r0, r9 114b4: 21c3 movs r1, #195 ; 0xc3 114b6: 47b0 blx r6 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 114b8: 6823 ldr r3, [r4, #0] 114ba: 2000 movs r0, #0 114bc: f103 0960 add.w r9, r3, #96 ; 0x60 114c0: 47a8 blx r5 114c2: eb00 0080 add.w r0, r0, r0, lsl #2 114c6: eb00 0080 add.w r0, r0, r0, lsl #2 114ca: 28ef cmp r0, #239 ; 0xef 114cc: f340 80a2 ble.w 11614 114d0: 2000 movs r0, #0 114d2: 47a8 blx r5 114d4: 2119 movs r1, #25 114d6: 2350 movs r3, #80 ; 0x50 114d8: fb00 3001 mla r0, r0, r1, r3 114dc: 22a0 movs r2, #160 ; 0xa0 114de: fb90 f2f2 sdiv r2, r0, r2 114e2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 114e4: 21c0 movs r1, #192 ; 0xc0 114e6: 4648 mov r0, r9 114e8: 47b0 blx r6 style_init_reset(&styles->gauge_needle); 114ea: 6820 ldr r0, [r4, #0] 114ec: 3064 adds r0, #100 ; 0x64 114ee: 47c0 blx r8 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 114f0: 6823 ldr r3, [r4, #0] 114f2: f103 0864 add.w r8, r3, #100 ; 0x64 114f6: 6a23 ldr r3, [r4, #32] 114f8: 079a lsls r2, r3, #30 114fa: f140 808d bpl.w 11618 114fe: 4819 ldr r0, [pc, #100] ; (11564 ) 11500: 4b19 ldr r3, [pc, #100] ; (11568 ) 11502: 4798 blx r3 11504: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 11506: 4640 mov r0, r8 11508: 2199 movs r1, #153 ; 0x99 1150a: 47b8 blx r7 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 1150c: 6823 ldr r3, [r4, #0] 1150e: 2000 movs r0, #0 11510: f103 0864 add.w r8, r3, #100 ; 0x64 11514: 47a8 blx r5 11516: 281d cmp r0, #29 11518: f340 8081 ble.w 1161e 1151c: 2000 movs r0, #0 1151e: 47a8 blx r5 11520: f100 020a add.w r2, r0, #10 11524: 2014 movs r0, #20 11526: fb92 f2f0 sdiv r2, r2, r0 1152a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1152c: 4640 mov r0, r8 1152e: 2190 movs r1, #144 ; 0x90 11530: 47b0 blx r6 lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); 11532: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 11534: 4b0d ldr r3, [pc, #52] ; (1156c ) 11536: 22ff movs r2, #255 ; 0xff 11538: 212c movs r1, #44 ; 0x2c 1153a: 3064 adds r0, #100 ; 0x64 1153c: 4798 blx r3 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 1153e: 6823 ldr r3, [r4, #0] 11540: f103 0864 add.w r8, r3, #100 ; 0x64 11544: 6a23 ldr r3, [r4, #32] 11546: 079b lsls r3, r3, #30 11548: d56b bpl.n 11622 1154a: 4806 ldr r0, [pc, #24] ; (11564 ) 1154c: 4b06 ldr r3, [pc, #24] ; (11568 ) 1154e: 4798 blx r3 11550: 4602 mov r2, r0 11552: e011 b.n 11578 11554: 2000c7d4 .word 0x2000c7d4 11558: 00010351 .word 0x00010351 1155c: 00005945 .word 0x00005945 11560: 00005875 .word 0x00005875 11564: 00464b5b .word 0x00464b5b 11568: 00010efd .word 0x00010efd 1156c: 00005a15 .word 0x00005a15 11570: 00010b1d .word 0x00010b1d 11574: 0000d995 .word 0x0000d995 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11578: 2129 movs r1, #41 ; 0x29 1157a: 4640 mov r0, r8 1157c: 47b8 blx r7 lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1157e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11580: f647 72ff movw r2, #32767 ; 0x7fff 11584: 2101 movs r1, #1 11586: 3064 adds r0, #100 ; 0x64 11588: 47b0 blx r6 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 1158a: 2000 movs r0, #0 1158c: 6827 ldr r7, [r4, #0] 1158e: 47a8 blx r5 11590: ebc0 1000 rsb r0, r0, r0, lsl #4 11594: 0040 lsls r0, r0, #1 11596: 28ef cmp r0, #239 ; 0xef 11598: f107 0764 add.w r7, r7, #100 ; 0x64 1159c: dd44 ble.n 11628 1159e: 2000 movs r0, #0 115a0: 47a8 blx r5 115a2: 2350 movs r3, #80 ; 0x50 115a4: 211e movs r1, #30 115a6: fb00 3201 mla r2, r0, r1, r3 115aa: 23a0 movs r3, #160 ; 0xa0 115ac: fb92 f2f3 sdiv r2, r2, r3 115b0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 115b2: 2103 movs r1, #3 115b4: 4638 mov r0, r7 115b6: 47b0 blx r6 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 115b8: 2000 movs r0, #0 115ba: 6824 ldr r4, [r4, #0] 115bc: 47a8 blx r5 115be: eb00 0080 add.w r0, r0, r0, lsl #2 115c2: 0040 lsls r0, r0, #1 115c4: 28ef cmp r0, #239 ; 0xef 115c6: f104 0464 add.w r4, r4, #100 ; 0x64 115ca: dd2f ble.n 1162c 115cc: 2000 movs r0, #0 115ce: 47a8 blx r5 115d0: 2350 movs r3, #80 ; 0x50 115d2: 210a movs r1, #10 115d4: fb00 3201 mla r2, r0, r1, r3 115d8: 23a0 movs r3, #160 ; 0xa0 115da: fb92 f2f3 sdiv r2, r2, r3 115de: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 115e0: 4620 mov r0, r4 115e2: 4633 mov r3, r6 115e4: 2114 movs r1, #20 } 115e6: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 115ea: 4718 bx r3 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 115ec: 2201 movs r2, #1 115ee: e67e b.n 112ee lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 115f0: 2201 movs r2, #1 115f2: e68f b.n 11314 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 115f4: 2201 movs r2, #1 115f6: e69f b.n 11338 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 115f8: 2201 movs r2, #1 115fa: e6b5 b.n 11368 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 115fc: 2201 movs r2, #1 115fe: e6cb b.n 11398 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 11600: 2201 movs r2, #1 11602: e6e1 b.n 113c8 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 11604: 2201 movs r2, #1 11606: e6f7 b.n 113f8 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 11608: 2201 movs r2, #1 1160a: e70c b.n 11426 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 1160c: 2201 movs r2, #1 1160e: e73e b.n 1148e lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 11610: 2201 movs r2, #1 11612: e74e b.n 114b2 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 11614: 2201 movs r2, #1 11616: e765 b.n 114e4 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 11618: 4b05 ldr r3, [pc, #20] ; (11630 ) 1161a: 881a ldrh r2, [r3, #0] 1161c: e773 b.n 11506 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 1161e: 2201 movs r2, #1 11620: e784 b.n 1152c lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 11622: 4b03 ldr r3, [pc, #12] ; (11630 ) 11624: 881a ldrh r2, [r3, #0] 11626: e7a7 b.n 11578 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 11628: 2201 movs r2, #1 1162a: e7c2 b.n 115b2 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 1162c: 2201 movs r2, #1 1162e: e7d7 b.n 115e0 11630: 000242b6 .word 0x000242b6 00011634 : { 11634: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} style_init_reset(&styles->chart_bg); 11638: 4d67 ldr r5, [pc, #412] ; (117d8 ) 1163a: 4f68 ldr r7, [pc, #416] ; (117dc ) 1163c: 6828 ldr r0, [r5, #0] 1163e: f8df 91b8 ldr.w r9, [pc, #440] ; 117f8 11642: 3040 adds r0, #64 ; 0x40 11644: 47b8 blx r7 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 11646: 6a2b ldr r3, [r5, #32] 11648: 682c ldr r4, [r5, #0] 1164a: f013 0f02 tst.w r3, #2 1164e: f104 0440 add.w r4, r4, #64 ; 0x40 11652: f000 80b0 beq.w 117b6 11656: 4b62 ldr r3, [pc, #392] ; (117e0 ) 11658: f640 20aa movw r0, #2730 ; 0xaaa 1165c: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1165e: 4602 mov r2, r0 11660: f248 0189 movw r1, #32905 ; 0x8089 11664: 4620 mov r0, r4 11666: f8df 8194 ldr.w r8, [pc, #404] ; 117fc lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 1166a: 4c5e ldr r4, [pc, #376] ; (117e4 ) 1166c: 47c0 blx r8 style_init_reset(&styles->chart_series_bg); 1166e: 6828 ldr r0, [r5, #0] 11670: 3044 adds r0, #68 ; 0x44 11672: 47b8 blx r7 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 11674: 2000 movs r0, #0 11676: 682e ldr r6, [r5, #0] 11678: 47a0 blx r4 1167a: 28ef cmp r0, #239 ; 0xef 1167c: f106 0644 add.w r6, r6, #68 ; 0x44 11680: f340 809c ble.w 117bc 11684: 2000 movs r0, #0 11686: 47a0 blx r4 11688: 22a0 movs r2, #160 ; 0xa0 1168a: 3050 adds r0, #80 ; 0x50 1168c: fb90 f2f2 sdiv r2, r0, r2 11690: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 11692: 4630 mov r0, r6 11694: 2190 movs r1, #144 ; 0x90 11696: 4e54 ldr r6, [pc, #336] ; (117e8 ) 11698: 47b0 blx r6 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1169a: 682b ldr r3, [r5, #0] 1169c: 2000 movs r0, #0 1169e: f103 0a44 add.w sl, r3, #68 ; 0x44 116a2: 47a0 blx r4 116a4: eb00 0080 add.w r0, r0, r0, lsl #2 116a8: 0040 lsls r0, r0, #1 116aa: 28ef cmp r0, #239 ; 0xef 116ac: f340 8088 ble.w 117c0 116b0: 2000 movs r0, #0 116b2: 47a0 blx r4 116b4: 210a movs r1, #10 116b6: 2350 movs r3, #80 ; 0x50 116b8: fb00 3001 mla r0, r0, r1, r3 116bc: 22a0 movs r2, #160 ; 0xa0 116be: fb90 f2f2 sdiv r2, r0, r2 116c2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar) 116c4: 4650 mov r0, sl 116c6: 2192 movs r1, #146 ; 0x92 116c8: 47b0 blx r6 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 116ca: 682b ldr r3, [r5, #0] 116cc: 2000 movs r0, #0 116ce: f103 0a44 add.w sl, r3, #68 ; 0x44 116d2: 47a0 blx r4 116d4: eb00 0080 add.w r0, r0, r0, lsl #2 116d8: 0040 lsls r0, r0, #1 116da: 28ef cmp r0, #239 ; 0xef 116dc: dd72 ble.n 117c4 116de: 2000 movs r0, #0 116e0: 47a0 blx r4 116e2: 210a movs r1, #10 116e4: 2350 movs r3, #80 ; 0x50 116e6: fb00 3001 mla r0, r0, r1, r3 116ea: 22a0 movs r2, #160 ; 0xa0 116ec: fb90 f2f2 sdiv r2, r0, r2 116f0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) 116f2: 4650 mov r0, sl 116f4: 2193 movs r1, #147 ; 0x93 116f6: 47b0 blx r6 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 116f8: 682b ldr r3, [r5, #0] 116fa: f103 0a44 add.w sl, r3, #68 ; 0x44 116fe: 6a2b ldr r3, [r5, #32] 11700: 079b lsls r3, r3, #30 11702: bf4c ite mi 11704: 4839 ldrmi r0, [pc, #228] ; (117ec ) 11706: 483a ldrpl r0, [pc, #232] ; (117f0 ) 11708: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 1170a: 2199 movs r1, #153 ; 0x99 1170c: 4602 mov r2, r0 1170e: 4650 mov r0, sl 11710: 47c0 blx r8 style_init_reset(&styles->chart_series); 11712: 6828 ldr r0, [r5, #0] 11714: 3048 adds r0, #72 ; 0x48 11716: 47b8 blx r7 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 11718: 2000 movs r0, #0 1171a: 682f ldr r7, [r5, #0] 1171c: 47a0 blx r4 1171e: eb00 0040 add.w r0, r0, r0, lsl #1 11722: 28ef cmp r0, #239 ; 0xef 11724: f107 0748 add.w r7, r7, #72 ; 0x48 11728: dd4e ble.n 117c8 1172a: 2000 movs r0, #0 1172c: 47a0 blx r4 1172e: 2350 movs r3, #80 ; 0x50 11730: 2103 movs r1, #3 11732: fb00 3201 mla r2, r0, r1, r3 11736: 23a0 movs r3, #160 ; 0xa0 11738: fb92 f2f3 sdiv r2, r2, r3 1173c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1173e: 4638 mov r0, r7 11740: 2190 movs r1, #144 ; 0x90 11742: 47b0 blx r6 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 11744: 2000 movs r0, #0 11746: 682f ldr r7, [r5, #0] 11748: 47a0 blx r4 1174a: 283b cmp r0, #59 ; 0x3b 1174c: f107 0748 add.w r7, r7, #72 ; 0x48 11750: dd3c ble.n 117cc 11752: 2000 movs r0, #0 11754: 47a0 blx r4 11756: f100 0214 add.w r2, r0, #20 1175a: 2028 movs r0, #40 ; 0x28 1175c: fb92 f2f0 sdiv r2, r2, r0 11760: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 11762: 4638 mov r0, r7 11764: 2103 movs r1, #3 11766: 47b0 blx r6 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 11768: 2000 movs r0, #0 1176a: 682f ldr r7, [r5, #0] 1176c: 47a0 blx r4 1176e: 2877 cmp r0, #119 ; 0x77 11770: f107 0748 add.w r7, r7, #72 ; 0x48 11774: dd2c ble.n 117d0 11776: 2000 movs r0, #0 11778: 47a0 blx r4 1177a: f100 0228 add.w r2, r0, #40 ; 0x28 1177e: 2050 movs r0, #80 ; 0x50 11780: fb92 f2f0 sdiv r2, r2, r0 11784: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 11786: 2114 movs r1, #20 11788: 4638 mov r0, r7 1178a: 47b0 blx r6 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 1178c: 2000 movs r0, #0 1178e: 682d ldr r5, [r5, #0] 11790: 47a0 blx r4 11792: 28ef cmp r0, #239 ; 0xef 11794: f105 0548 add.w r5, r5, #72 ; 0x48 11798: dd1c ble.n 117d4 1179a: 2000 movs r0, #0 1179c: 47a0 blx r4 1179e: f100 0250 add.w r2, r0, #80 ; 0x50 117a2: 20a0 movs r0, #160 ; 0xa0 117a4: fb92 f2f0 sdiv r2, r2, r0 117a8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 117aa: 4628 mov r0, r5 117ac: 4633 mov r3, r6 117ae: 2101 movs r1, #1 } 117b0: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 117b4: 4718 bx r3 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 117b6: 480f ldr r0, [pc, #60] ; (117f4 ) 117b8: 47c8 blx r9 117ba: e750 b.n 1165e lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 117bc: 2201 movs r2, #1 117be: e768 b.n 11692 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 117c0: 2201 movs r2, #1 117c2: e77f b.n 116c4 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 117c4: 2201 movs r2, #1 117c6: e794 b.n 116f2 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 117c8: 2201 movs r2, #1 117ca: e7b8 b.n 1173e lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 117cc: 2201 movs r2, #1 117ce: e7c8 b.n 11762 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 117d0: 2201 movs r2, #1 117d2: e7d8 b.n 11786 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 117d4: 2201 movs r2, #1 117d6: e7e8 b.n 117aa 117d8: 2000c7d4 .word 0x2000c7d4 117dc: 00010b1d .word 0x00010b1d 117e0: 00010351 .word 0x00010351 117e4: 0000d995 .word 0x0000d995 117e8: 00005875 .word 0x00005875 117ec: 00d6dde3 .word 0x00d6dde3 117f0: 00808a97 .word 0x00808a97 117f4: 00a1adbd .word 0x00a1adbd 117f8: 00010efd .word 0x00010efd 117fc: 00005945 .word 0x00005945 00011800 : { 11800: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 11804: ed2d 8b02 vpush {d8} style_init_reset(&styles->scr); 11808: 4ca0 ldr r4, [pc, #640] ; (11a8c ) 1180a: 4fa1 ldr r7, [pc, #644] ; (11a90 ) 1180c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1180e: 4da1 ldr r5, [pc, #644] ; (11a94 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 11810: f8df 92ac ldr.w r9, [pc, #684] ; 11ac0 { 11814: b083 sub sp, #12 style_init_reset(&styles->scr); 11816: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 11818: 6820 ldr r0, [r4, #0] 1181a: 22ff movs r2, #255 ; 0xff 1181c: 212c movs r1, #44 ; 0x2c 1181e: 47a8 blx r5 lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR); 11820: 6a23 ldr r3, [r4, #32] 11822: 6826 ldr r6, [r4, #0] 11824: f013 0f02 tst.w r3, #2 11828: bf14 ite ne 1182a: 489b ldrne r0, [pc, #620] ; (11a98 ) 1182c: 489b ldreq r0, [pc, #620] ; (11a9c ) 1182e: 46ab mov fp, r5 11830: 4d9b ldr r5, [pc, #620] ; (11aa0 ) 11832: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11834: 46ba mov sl, r7 11836: 4602 mov r2, r0 11838: 4f9a ldr r7, [pc, #616] ; (11aa4 ) 1183a: 4630 mov r0, r6 1183c: 2129 movs r1, #41 ; 0x29 1183e: 47b8 blx r7 lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 11840: 6a23 ldr r3, [r4, #32] 11842: 6826 ldr r6, [r4, #0] 11844: 0798 lsls r0, r3, #30 11846: bf4c ite mi 11848: 4897 ldrmi r0, [pc, #604] ; (11aa8 ) 1184a: 4898 ldrpl r0, [pc, #608] ; (11aac ) 1184c: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1184e: f248 0189 movw r1, #32905 ; 0x8089 11852: 4602 mov r2, r0 11854: 4630 mov r0, r6 11856: 47b8 blx r7 lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 11858: 6a23 ldr r3, [r4, #32] 1185a: 6826 ldr r6, [r4, #0] 1185c: 0799 lsls r1, r3, #30 1185e: bf4c ite mi 11860: 4891 ldrmi r0, [pc, #580] ; (11aa8 ) 11862: 4892 ldrpl r0, [pc, #584] ; (11aac ) 11864: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 11866: 2179 movs r1, #121 ; 0x79 11868: 4602 mov r2, r0 1186a: 4630 mov r0, r6 1186c: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1186e: 6962 ldr r2, [r4, #20] 11870: 6820 ldr r0, [r4, #0] lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 11872: 4e8f ldr r6, [pc, #572] ; (11ab0 ) 11874: f248 018e movw r1, #32910 ; 0x808e 11878: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 1187a: 6962 ldr r2, [r4, #20] 1187c: 6820 ldr r0, [r4, #0] 1187e: 217e movs r1, #126 ; 0x7e 11880: 47c8 blx r9 style_init_reset(&styles->bg); 11882: 6820 ldr r0, [r4, #0] 11884: 3004 adds r0, #4 11886: 47d0 blx sl lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 11888: 6823 ldr r3, [r4, #0] 1188a: 2000 movs r0, #0 1188c: f103 0804 add.w r8, r3, #4 11890: 47b0 blx r6 11892: 281d cmp r0, #29 11894: f340 8566 ble.w 12364 11898: 2000 movs r0, #0 1189a: 47b0 blx r6 1189c: 2214 movs r2, #20 1189e: 300a adds r0, #10 118a0: fb90 f2f2 sdiv r2, r0, r2 118a4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 118a6: 4640 mov r0, r8 118a8: 2101 movs r1, #1 118aa: f8df 8218 ldr.w r8, [pc, #536] ; 11ac4 118ae: 47c0 blx r8 lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); 118b0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 118b2: 22ff movs r2, #255 ; 0xff 118b4: 3004 adds r0, #4 118b6: 212c movs r1, #44 ; 0x2c 118b8: 47d8 blx fp lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG); 118ba: 6823 ldr r3, [r4, #0] 118bc: f103 0b04 add.w fp, r3, #4 118c0: 6a23 ldr r3, [r4, #32] 118c2: 079a lsls r2, r3, #30 118c4: bf54 ite pl 118c6: 487b ldrpl r0, [pc, #492] ; (11ab4 ) 118c8: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 118cc: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 118ce: 2129 movs r1, #41 ; 0x29 118d0: 4602 mov r2, r0 118d2: 4658 mov r0, fp 118d4: 47b8 blx r7 lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 118d6: 6823 ldr r3, [r4, #0] 118d8: f103 0b04 add.w fp, r3, #4 118dc: 6a23 ldr r3, [r4, #32] 118de: 079b lsls r3, r3, #30 118e0: bf4c ite mi 118e2: 4875 ldrmi r0, [pc, #468] ; (11ab8 ) 118e4: 4875 ldrpl r0, [pc, #468] ; (11abc ) 118e6: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 118e8: 2139 movs r1, #57 ; 0x39 118ea: 4602 mov r2, r0 118ec: 4658 mov r0, fp 118ee: 47b8 blx r7 lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary); 118f0: 6820 ldr r0, [r4, #0] 118f2: 89a2 ldrh r2, [r4, #12] 118f4: f240 2139 movw r1, #569 ; 0x239 118f8: 3004 adds r0, #4 118fa: 47b8 blx r7 lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary); 118fc: 6820 ldr r0, [r4, #0] 118fe: 89e2 ldrh r2, [r4, #14] 11900: f240 4139 movw r1, #1081 ; 0x439 11904: 3004 adds r0, #4 11906: 47b8 blx r7 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 11908: 6823 ldr r3, [r4, #0] 1190a: 2000 movs r0, #0 1190c: f103 0b04 add.w fp, r3, #4 11910: 47b0 blx r6 11912: 2877 cmp r0, #119 ; 0x77 11914: f340 8529 ble.w 1236a 11918: 2000 movs r0, #0 1191a: 47b0 blx r6 1191c: 2250 movs r2, #80 ; 0x50 1191e: 3028 adds r0, #40 ; 0x28 11920: fb90 f2f2 sdiv r2, r0, r2 11924: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 11926: 4658 mov r0, fp 11928: 2130 movs r1, #48 ; 0x30 1192a: 47c0 blx r8 lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true); 1192c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 1192e: 2201 movs r2, #1 11930: 2133 movs r1, #51 ; 0x33 11932: 3004 adds r0, #4 11934: 47c0 blx r8 lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 11936: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 11938: 6962 ldr r2, [r4, #20] 1193a: 3004 adds r0, #4 1193c: f248 018e movw r1, #32910 ; 0x808e 11940: 47c8 blx r9 lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 11942: 6823 ldr r3, [r4, #0] 11944: f103 0b04 add.w fp, r3, #4 11948: 6a23 ldr r3, [r4, #32] 1194a: 0798 lsls r0, r3, #30 1194c: bf4c ite mi 1194e: 4856 ldrmi r0, [pc, #344] ; (11aa8 ) 11950: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11954: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11956: f248 0189 movw r1, #32905 ; 0x8089 1195a: 4602 mov r2, r0 1195c: 4658 mov r0, fp 1195e: 47b8 blx r7 lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 11960: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 11962: 6962 ldr r2, [r4, #20] 11964: 3004 adds r0, #4 11966: 217e movs r1, #126 ; 0x7e 11968: 47c8 blx r9 lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1196a: 6823 ldr r3, [r4, #0] 1196c: f103 0904 add.w r9, r3, #4 11970: 6a23 ldr r3, [r4, #32] 11972: 0799 lsls r1, r3, #30 11974: bf4c ite mi 11976: 484c ldrmi r0, [pc, #304] ; (11aa8 ) 11978: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 1197c: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1197e: 2179 movs r1, #121 ; 0x79 11980: 4602 mov r2, r0 11982: 4648 mov r0, r9 11984: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 11986: 6823 ldr r3, [r4, #0] 11988: f103 0904 add.w r9, r3, #4 1198c: 6a23 ldr r3, [r4, #32] 1198e: 079a lsls r2, r3, #30 11990: bf4c ite mi 11992: 4845 ldrmi r0, [pc, #276] ; (11aa8 ) 11994: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11998: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 1199a: f248 01a9 movw r1, #32937 ; 0x80a9 1199e: 4602 mov r2, r0 119a0: 4648 mov r0, r9 119a2: 47b8 blx r7 lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 119a4: 6823 ldr r3, [r4, #0] 119a6: f103 0904 add.w r9, r3, #4 119aa: 6a23 ldr r3, [r4, #32] 119ac: 079b lsls r3, r3, #30 119ae: bf4c ite mi 119b0: 483d ldrmi r0, [pc, #244] ; (11aa8 ) 119b2: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 119b6: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 119b8: 2199 movs r1, #153 ; 0x99 119ba: 4602 mov r2, r0 119bc: 4648 mov r0, r9 119be: 47b8 blx r7 lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); 119c0: 6820 ldr r0, [r4, #0] lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 119c2: f8df 9104 ldr.w r9, [pc, #260] ; 11ac8 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 119c6: 2201 movs r2, #1 119c8: 2190 movs r1, #144 ; 0x90 119ca: 3004 adds r0, #4 119cc: 47c0 blx r8 119ce: 6823 ldr r3, [r4, #0] 119d0: 2000 movs r0, #0 119d2: 3304 adds r3, #4 119d4: ee08 3a10 vmov s16, r3 119d8: 47c8 blx r9 119da: 2801 cmp r0, #1 119dc: f04f 0000 mov.w r0, #0 119e0: f200 84d3 bhi.w 1238a 119e4: 47b0 blx r6 119e6: ebc0 1000 rsb r0, r0, r0, lsl #4 119ea: 28ef cmp r0, #239 ; 0xef 119ec: f300 84c0 bgt.w 12370 119f0: f04f 0b01 mov.w fp, #1 119f4: 2000 movs r0, #0 119f6: 47b0 blx r6 119f8: 2877 cmp r0, #119 ; 0x77 119fa: f340 84d1 ble.w 123a0 119fe: 2000 movs r0, #0 11a00: 47b0 blx r6 11a02: 2350 movs r3, #80 ; 0x50 11a04: 3028 adds r0, #40 ; 0x28 11a06: fb90 f0f3 sdiv r0, r0, r3 11a0a: b280 uxth r0, r0 11a0c: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 11a10: b212 sxth r2, r2 11a12: ee18 0a10 vmov r0, s16 11a16: 2112 movs r1, #18 11a18: 47c0 blx r8 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 11a1a: 6823 ldr r3, [r4, #0] 11a1c: 2000 movs r0, #0 11a1e: 3304 adds r3, #4 11a20: ee08 3a10 vmov s16, r3 11a24: 47c8 blx r9 11a26: 2801 cmp r0, #1 11a28: f04f 0000 mov.w r0, #0 11a2c: f200 84c8 bhi.w 123c0 11a30: 47b0 blx r6 11a32: ebc0 1000 rsb r0, r0, r0, lsl #4 11a36: 28ef cmp r0, #239 ; 0xef 11a38: f300 84b5 bgt.w 123a6 11a3c: f04f 0b01 mov.w fp, #1 11a40: 2000 movs r0, #0 11a42: 47b0 blx r6 11a44: 2877 cmp r0, #119 ; 0x77 11a46: f340 84c6 ble.w 123d6 11a4a: 2000 movs r0, #0 11a4c: 47b0 blx r6 11a4e: 2350 movs r3, #80 ; 0x50 11a50: 3028 adds r0, #40 ; 0x28 11a52: fb90 f0f3 sdiv r0, r0, r3 11a56: b280 uxth r0, r0 11a58: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 11a5c: b212 sxth r2, r2 11a5e: ee18 0a10 vmov r0, s16 11a62: 2113 movs r1, #19 11a64: 47c0 blx r8 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 11a66: 6823 ldr r3, [r4, #0] 11a68: 2000 movs r0, #0 11a6a: 3304 adds r3, #4 11a6c: ee08 3a10 vmov s16, r3 11a70: 47c8 blx r9 11a72: 2801 cmp r0, #1 11a74: f04f 0000 mov.w r0, #0 11a78: f200 84bd bhi.w 123f6 11a7c: 47b0 blx r6 11a7e: ebc0 1000 rsb r0, r0, r0, lsl #4 11a82: 28ef cmp r0, #239 ; 0xef 11a84: f300 84aa bgt.w 123dc 11a88: e020 b.n 11acc 11a8a: bf00 nop 11a8c: 2000c7d4 .word 0x2000c7d4 11a90: 00010b1d .word 0x00010b1d 11a94: 00005a15 .word 0x00005a15 11a98: 00eaeff3 .word 0x00eaeff3 11a9c: 00444b5a .word 0x00444b5a 11aa0: 00010efd .word 0x00010efd 11aa4: 00005945 .word 0x00005945 11aa8: 003b3e42 .word 0x003b3e42 11aac: 00e7e9ec .word 0x00e7e9ec 11ab0: 0000d995 .word 0x0000d995 11ab4: 00586273 .word 0x00586273 11ab8: 00d6dde3 .word 0x00d6dde3 11abc: 00808a97 .word 0x00808a97 11ac0: 00005ae9 .word 0x00005ae9 11ac4: 00005875 .word 0x00005875 11ac8: 0000d9ad .word 0x0000d9ad 11acc: f04f 0b01 mov.w fp, #1 11ad0: 2000 movs r0, #0 11ad2: 47b0 blx r6 11ad4: 2877 cmp r0, #119 ; 0x77 11ad6: f340 8499 ble.w 1240c 11ada: 2000 movs r0, #0 11adc: 47b0 blx r6 11ade: 2350 movs r3, #80 ; 0x50 11ae0: 3028 adds r0, #40 ; 0x28 11ae2: fb90 f0f3 sdiv r0, r0, r3 11ae6: b280 uxth r0, r0 11ae8: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 11aec: b212 sxth r2, r2 11aee: ee18 0a10 vmov r0, s16 11af2: 2110 movs r1, #16 11af4: 47c0 blx r8 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 11af6: 6823 ldr r3, [r4, #0] 11af8: 2000 movs r0, #0 11afa: 3304 adds r3, #4 11afc: ee08 3a10 vmov s16, r3 11b00: 47c8 blx r9 11b02: 2801 cmp r0, #1 11b04: f04f 0000 mov.w r0, #0 11b08: f200 8490 bhi.w 1242c 11b0c: 47b0 blx r6 11b0e: ebc0 1000 rsb r0, r0, r0, lsl #4 11b12: 28ef cmp r0, #239 ; 0xef 11b14: f300 847d bgt.w 12412 11b18: f04f 0b01 mov.w fp, #1 11b1c: 2000 movs r0, #0 11b1e: 47b0 blx r6 11b20: 2877 cmp r0, #119 ; 0x77 11b22: f340 848e ble.w 12442 11b26: 2000 movs r0, #0 11b28: 47b0 blx r6 11b2a: 2350 movs r3, #80 ; 0x50 11b2c: 3028 adds r0, #40 ; 0x28 11b2e: fb90 f0f3 sdiv r0, r0, r3 11b32: b280 uxth r0, r0 11b34: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 11b38: b212 sxth r2, r2 11b3a: ee18 0a10 vmov r0, s16 11b3e: 2111 movs r1, #17 11b40: 47c0 blx r8 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 11b42: 6823 ldr r3, [r4, #0] 11b44: 2000 movs r0, #0 11b46: f103 0b04 add.w fp, r3, #4 11b4a: 47c8 blx r9 11b4c: 2801 cmp r0, #1 11b4e: f04f 0000 mov.w r0, #0 11b52: f200 8485 bhi.w 12460 11b56: 47b0 blx r6 11b58: ebc0 1000 rsb r0, r0, r0, lsl #4 11b5c: 28ef cmp r0, #239 ; 0xef 11b5e: f300 8473 bgt.w 12448 11b62: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 11b64: 2114 movs r1, #20 11b66: 4658 mov r0, fp 11b68: 47c0 blx r8 lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME); 11b6a: 6820 ldr r0, [r4, #0] lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 11b6c: f8df 9314 ldr.w r9, [pc, #788] ; 11e84 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 11b70: 2296 movs r2, #150 ; 0x96 11b72: 21b0 movs r1, #176 ; 0xb0 11b74: 3004 adds r0, #4 11b76: 47c0 blx r8 lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR); 11b78: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 11b7a: 2239 movs r2, #57 ; 0x39 11b7c: 21b7 movs r1, #183 ; 0xb7 11b7e: 3004 adds r0, #4 11b80: 47c0 blx r8 style_init_reset(&styles->bg_sec); 11b82: 6820 ldr r0, [r4, #0] 11b84: 300c adds r0, #12 11b86: 47d0 blx sl lv_style_copy(&styles->bg_sec, &styles->bg); 11b88: 6820 ldr r0, [r4, #0] 11b8a: 4bac ldr r3, [pc, #688] ; (11e3c ) 11b8c: 1d01 adds r1, r0, #4 11b8e: 300c adds r0, #12 11b90: 4798 blx r3 lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); 11b92: 6a23 ldr r3, [r4, #32] 11b94: 6826 ldr r6, [r4, #0] 11b96: 0798 lsls r0, r3, #30 11b98: bf4c ite mi 11b9a: 48a9 ldrmi r0, [pc, #676] ; (11e40 ) 11b9c: 48a9 ldrpl r0, [pc, #676] ; (11e44 ) 11b9e: 47a8 blx r5 11ba0: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11ba2: 4602 mov r2, r0 11ba4: 2129 movs r1, #41 ; 0x29 11ba6: 4630 mov r0, r6 11ba8: 47b8 blx r7 lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); 11baa: 6a23 ldr r3, [r4, #32] 11bac: 6826 ldr r6, [r4, #0] 11bae: 0799 lsls r1, r3, #30 11bb0: bf4c ite mi 11bb2: 48a5 ldrmi r0, [pc, #660] ; (11e48 ) 11bb4: 48a5 ldrpl r0, [pc, #660] ; (11e4c ) 11bb6: 47a8 blx r5 11bb8: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11bba: 4602 mov r2, r0 11bbc: 2139 movs r1, #57 ; 0x39 11bbe: 4630 mov r0, r6 11bc0: 47b8 blx r7 lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11bc2: 6a23 ldr r3, [r4, #32] 11bc4: 6826 ldr r6, [r4, #0] 11bc6: 079a lsls r2, r3, #30 11bc8: bf4c ite mi 11bca: 48a1 ldrmi r0, [pc, #644] ; (11e50 ) 11bcc: 48a1 ldrpl r0, [pc, #644] ; (11e54 ) 11bce: 47a8 blx r5 11bd0: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11bd2: 4602 mov r2, r0 11bd4: f248 0189 movw r1, #32905 ; 0x8089 11bd8: 4630 mov r0, r6 11bda: 47b8 blx r7 lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11bdc: 6a23 ldr r3, [r4, #32] 11bde: 6826 ldr r6, [r4, #0] 11be0: 079b lsls r3, r3, #30 11be2: bf4c ite mi 11be4: 489a ldrmi r0, [pc, #616] ; (11e50 ) 11be6: 489b ldrpl r0, [pc, #620] ; (11e54 ) 11be8: 47a8 blx r5 11bea: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 11bec: 4602 mov r2, r0 11bee: 2179 movs r1, #121 ; 0x79 11bf0: 4630 mov r0, r6 11bf2: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11bf4: 6a23 ldr r3, [r4, #32] 11bf6: 6826 ldr r6, [r4, #0] 11bf8: 0798 lsls r0, r3, #30 11bfa: bf4c ite mi 11bfc: 4894 ldrmi r0, [pc, #592] ; (11e50 ) 11bfe: 4895 ldrpl r0, [pc, #596] ; (11e54 ) 11c00: 47a8 blx r5 11c02: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 11c04: 4602 mov r2, r0 11c06: f248 01a9 movw r1, #32937 ; 0x80a9 11c0a: 4630 mov r0, r6 11c0c: 47b8 blx r7 lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11c0e: 6a23 ldr r3, [r4, #32] 11c10: 6826 ldr r6, [r4, #0] 11c12: 0799 lsls r1, r3, #30 11c14: bf4c ite mi 11c16: 488e ldrmi r0, [pc, #568] ; (11e50 ) 11c18: 488e ldrpl r0, [pc, #568] ; (11e54 ) 11c1a: 47a8 blx r5 11c1c: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 11c1e: 4602 mov r2, r0 11c20: 2199 movs r1, #153 ; 0x99 11c22: 4630 mov r0, r6 11c24: 47b8 blx r7 style_init_reset(&styles->bg_click); 11c26: 6820 ldr r0, [r4, #0] 11c28: 3008 adds r0, #8 11c2a: 47d0 blx sl lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 11c2c: 6a23 ldr r3, [r4, #32] 11c2e: 6826 ldr r6, [r4, #0] 11c30: 079a lsls r2, r3, #30 11c32: bf4c ite mi 11c34: 4888 ldrmi r0, [pc, #544] ; (11e58 ) 11c36: 4889 ldrpl r0, [pc, #548] ; (11e5c ) 11c38: 47a8 blx r5 11c3a: 3608 adds r6, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11c3c: 4602 mov r2, r0 11c3e: f241 0129 movw r1, #4137 ; 0x1029 11c42: 4630 mov r0, r6 11c44: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); 11c46: 6820 ldr r0, [r4, #0] 11c48: 89a2 ldrh r2, [r4, #12] 11c4a: f240 1129 movw r1, #297 ; 0x129 11c4e: 3008 adds r0, #8 11c50: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 11c52: 6820 ldr r0, [r4, #0] 11c54: 2133 movs r1, #51 ; 0x33 11c56: f100 0608 add.w r6, r0, #8 11c5a: 89a0 ldrh r0, [r4, #12] 11c5c: 47c8 blx r9 11c5e: f241 1129 movw r1, #4393 ; 0x1129 11c62: 4602 mov r2, r0 11c64: 4630 mov r0, r6 11c66: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); 11c68: 6a23 ldr r3, [r4, #32] 11c6a: 6826 ldr r6, [r4, #0] 11c6c: 079b lsls r3, r3, #30 11c6e: bf54 ite pl 11c70: 487b ldrpl r0, [pc, #492] ; (11e60 ) 11c72: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 11c76: 47a8 blx r5 11c78: 3608 adds r6, #8 11c7a: 4602 mov r2, r0 11c7c: f242 0129 movw r1, #8233 ; 0x2029 11c80: 4630 mov r0, r6 11c82: 47b8 blx r7 lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); 11c84: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 11c86: 2200 movs r2, #0 11c88: f44f 7198 mov.w r1, #304 ; 0x130 11c8c: 3008 adds r0, #8 11c8e: 47c0 blx r8 lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary, 11c90: 6820 ldr r0, [r4, #0] 11c92: f8df 81f4 ldr.w r8, [pc, #500] ; 11e88 11c96: f100 0608 add.w r6, r0, #8 11c9a: 2133 movs r1, #51 ; 0x33 11c9c: 89a0 ldrh r0, [r4, #12] 11c9e: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11ca0: f241 2139 movw r1, #4665 ; 0x1239 11ca4: 4602 mov r2, r0 11ca6: 4630 mov r0, r6 11ca8: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 11caa: 6a23 ldr r3, [r4, #32] 11cac: 6826 ldr r6, [r4, #0] 11cae: f013 0f02 tst.w r3, #2 11cb2: f106 0608 add.w r6, r6, #8 11cb6: f000 83de beq.w 12476 11cba: f640 40cc movw r0, #3276 ; 0xccc 11cbe: 47c0 blx r8 11cc0: 4602 mov r2, r0 11cc2: f241 0139 movw r1, #4153 ; 0x1039 11cc6: 4630 mov r0, r6 11cc8: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); 11cca: 6a23 ldr r3, [r4, #32] 11ccc: 6826 ldr r6, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 11cce: f8df b1bc ldr.w fp, [pc, #444] ; 11e8c 11cd2: 0798 lsls r0, r3, #30 11cd4: bf4c ite mi 11cd6: 4863 ldrmi r0, [pc, #396] ; (11e64 ) 11cd8: 4863 ldrpl r0, [pc, #396] ; (11e68 ) 11cda: 47a8 blx r5 11cdc: 3608 adds r6, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11cde: 4602 mov r2, r0 11ce0: f240 1139 movw r1, #313 ; 0x139 11ce4: 4630 mov r0, r6 11ce6: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 11ce8: 6a23 ldr r3, [r4, #32] 11cea: 4d60 ldr r5, [pc, #384] ; (11e6c ) 11cec: 6826 ldr r6, [r4, #0] lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 11cee: 4c60 ldr r4, [pc, #384] ; (11e70 ) lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 11cf0: f013 0f02 tst.w r3, #2 11cf4: bf14 ite ne 11cf6: 485b ldrne r0, [pc, #364] ; (11e64 ) 11cf8: 485b ldreq r0, [pc, #364] ; (11e68 ) 11cfa: 47a8 blx r5 11cfc: 3608 adds r6, #8 11cfe: 4602 mov r2, r0 11d00: f241 1139 movw r1, #4409 ; 0x1139 11d04: 4630 mov r0, r6 11d06: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 11d08: 6a23 ldr r3, [r4, #32] 11d0a: 6826 ldr r6, [r4, #0] 11d0c: 0799 lsls r1, r3, #30 11d0e: bf4c ite mi 11d10: 4858 ldrmi r0, [pc, #352] ; (11e74 ) 11d12: 4855 ldrpl r0, [pc, #340] ; (11e68 ) 11d14: 47a8 blx r5 11d16: 3608 adds r6, #8 11d18: 4602 mov r2, r0 11d1a: f242 0139 movw r1, #8249 ; 0x2039 11d1e: 4630 mov r0, r6 11d20: 4e55 ldr r6, [pc, #340] ; (11e78 ) 11d22: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 11d24: 6a23 ldr r3, [r4, #32] 11d26: 6827 ldr r7, [r4, #0] 11d28: 079a lsls r2, r3, #30 11d2a: bf4c ite mi 11d2c: 484d ldrmi r0, [pc, #308] ; (11e64 ) 11d2e: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11d32: 47a8 blx r5 11d34: 3708 adds r7, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11d36: 4602 mov r2, r0 11d38: f249 0189 movw r1, #37001 ; 0x9089 11d3c: 4638 mov r0, r7 11d3e: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 11d40: 6820 ldr r0, [r4, #0] 11d42: f100 0708 add.w r7, r0, #8 11d46: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11d4a: 47a8 blx r5 11d4c: f248 1189 movw r1, #33161 ; 0x8189 11d50: 4602 mov r2, r0 11d52: 4638 mov r0, r7 11d54: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 11d56: 6820 ldr r0, [r4, #0] 11d58: f100 0708 add.w r7, r0, #8 11d5c: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11d60: 47a8 blx r5 11d62: f249 1189 movw r1, #37257 ; 0x9189 11d66: 4602 mov r2, r0 11d68: 4638 mov r0, r7 11d6a: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 11d6c: 6a23 ldr r3, [r4, #32] 11d6e: 6827 ldr r7, [r4, #0] 11d70: 079b lsls r3, r3, #30 11d72: bf4c ite mi 11d74: f640 20aa movwmi r0, #2730 ; 0xaaa 11d78: f640 1099 movwpl r0, #2457 ; 0x999 11d7c: 47c0 blx r8 11d7e: 3708 adds r7, #8 11d80: 4602 mov r2, r0 11d82: f24a 0189 movw r1, #41097 ; 0xa089 11d86: 4638 mov r0, r7 11d88: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 11d8a: 6a23 ldr r3, [r4, #32] 11d8c: 6827 ldr r7, [r4, #0] 11d8e: 0798 lsls r0, r3, #30 11d90: bf4c ite mi 11d92: 4834 ldrmi r0, [pc, #208] ; (11e64 ) 11d94: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11d98: 47a8 blx r5 11d9a: 3708 adds r7, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 11d9c: 4602 mov r2, r0 11d9e: f249 01a9 movw r1, #37033 ; 0x90a9 11da2: 4638 mov r0, r7 11da4: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 11da6: 6820 ldr r0, [r4, #0] 11da8: f100 0708 add.w r7, r0, #8 11dac: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11db0: 47a8 blx r5 11db2: f248 11a9 movw r1, #33193 ; 0x81a9 11db6: 4602 mov r2, r0 11db8: 4638 mov r0, r7 11dba: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 11dbc: 6820 ldr r0, [r4, #0] 11dbe: f100 0708 add.w r7, r0, #8 11dc2: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11dc6: 47a8 blx r5 11dc8: f249 11a9 movw r1, #37289 ; 0x91a9 11dcc: 4602 mov r2, r0 11dce: 4638 mov r0, r7 11dd0: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 11dd2: 6a23 ldr r3, [r4, #32] 11dd4: 6827 ldr r7, [r4, #0] 11dd6: 0799 lsls r1, r3, #30 11dd8: bf4c ite mi 11dda: f640 20aa movwmi r0, #2730 ; 0xaaa 11dde: f640 1099 movwpl r0, #2457 ; 0x999 11de2: 47c0 blx r8 11de4: 3708 adds r7, #8 11de6: 4602 mov r2, r0 11de8: f24a 01a9 movw r1, #41129 ; 0xa0a9 11dec: 4638 mov r0, r7 11dee: 47b0 blx r6 lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 11df0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 11df2: 4f22 ldr r7, [pc, #136] ; (11e7c ) 11df4: 2229 movs r2, #41 ; 0x29 11df6: 21b6 movs r1, #182 ; 0xb6 11df8: 3008 adds r0, #8 11dfa: 47b8 blx r7 style_init_reset(&styles->btn); 11dfc: 6820 ldr r0, [r4, #0] 11dfe: 4b20 ldr r3, [pc, #128] ; (11e80 ) 11e00: 3010 adds r0, #16 11e02: 4798 blx r3 lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 11e04: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11e06: f647 72ff movw r2, #32767 ; 0x7fff 11e0a: 2101 movs r1, #1 11e0c: 3010 adds r0, #16 11e0e: 47b8 blx r7 lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); 11e10: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 11e12: 22ff movs r2, #255 ; 0xff 11e14: 3010 adds r0, #16 11e16: 212c movs r1, #44 ; 0x2c 11e18: 47d8 blx fp lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); 11e1a: 6823 ldr r3, [r4, #0] 11e1c: f8cd b004 str.w fp, [sp, #4] 11e20: f103 0a10 add.w sl, r3, #16 11e24: 6a23 ldr r3, [r4, #32] 11e26: f013 0f02 tst.w r3, #2 11e2a: bf0c ite eq 11e2c: 480c ldreq r0, [pc, #48] ; (11e60 ) 11e2e: f06f 407f mvnne.w r0, #4278190080 ; 0xff000000 11e32: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11e34: 2129 movs r1, #41 ; 0x29 11e36: 4602 mov r2, r0 11e38: 4650 mov r0, sl 11e3a: e029 b.n 11e90 11e3c: 000057d5 .word 0x000057d5 11e40: 00d4d7d9 .word 0x00d4d7d9 11e44: 0045494d .word 0x0045494d 11e48: 00dfe7ed .word 0x00dfe7ed 11e4c: 00404040 .word 0x00404040 11e50: 0031404f .word 0x0031404f 11e54: 00a5a8ad .word 0x00a5a8ad 11e58: 00eeeeee .word 0x00eeeeee 11e5c: 00494f57 .word 0x00494f57 11e60: 00586273 .word 0x00586273 11e64: 003b3e42 .word 0x003b3e42 11e68: 005f656e .word 0x005f656e 11e6c: 00010efd .word 0x00010efd 11e70: 2000c7d4 .word 0x2000c7d4 11e74: 00d6dde3 .word 0x00d6dde3 11e78: 00005945 .word 0x00005945 11e7c: 00005875 .word 0x00005875 11e80: 00010b1d .word 0x00010b1d 11e84: 0000e3d7 .word 0x0000e3d7 11e88: 00010351 .word 0x00010351 11e8c: 00005a15 .word 0x00005a15 11e90: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 11e92: 6823 ldr r3, [r4, #0] 11e94: f103 0a10 add.w sl, r3, #16 11e98: 6a23 ldr r3, [r4, #32] 11e9a: 079a lsls r2, r3, #30 11e9c: f140 82ee bpl.w 1247c 11ea0: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11ea4: 47a8 blx r5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11ea6: 7b61 ldrb r1, [r4, #13] 11ea8: f04f 0be6 mov.w fp, #230 ; 0xe6 11eac: f3c0 22c4 ubfx r2, r0, #11, #5 11eb0: 2319 movs r3, #25 11eb2: fb0b f202 mul.w r2, fp, r2 11eb6: 08c9 lsrs r1, r1, #3 11eb8: fb13 2101 smlabb r1, r3, r1, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 11ebc: 89a2 ldrh r2, [r4, #12] 11ebe: f3c0 1e45 ubfx lr, r0, #5, #6 11ec2: fb0b fe0e mul.w lr, fp, lr 11ec6: f3c2 1245 ubfx r2, r2, #5, #6 11eca: fb13 e202 smlabb r2, r3, r2, lr LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11ece: f894 e00c ldrb.w lr, [r4, #12] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11ed2: f248 0c81 movw ip, #32897 ; 0x8081 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11ed6: f000 001f and.w r0, r0, #31 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11eda: fb0c f101 mul.w r1, ip, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 11ede: fb0c f202 mul.w r2, ip, r2 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11ee2: f00e 0e1f and.w lr, lr, #31 11ee6: fb0b f000 mul.w r0, fp, r0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11eea: f3c1 51c4 ubfx r1, r1, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 11eee: f3c2 52c5 ubfx r2, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11ef2: fb13 030e smlabb r3, r3, lr, r0 11ef6: fb03 f30c mul.w r3, r3, ip 11efa: f3c3 53c4 ubfx r3, r3, #23, #5 11efe: ea43 1242 orr.w r2, r3, r2, lsl #5 11f02: ea42 22c1 orr.w r2, r2, r1, lsl #11 11f06: 4650 mov r0, sl 11f08: f241 0129 movw r1, #4137 ; 0x1029 11f0c: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); 11f0e: 6820 ldr r0, [r4, #0] 11f10: 89a2 ldrh r2, [r4, #12] 11f12: f240 1129 movw r1, #297 ; 0x129 11f16: 3010 adds r0, #16 11f18: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); 11f1a: 6820 ldr r0, [r4, #0] 11f1c: 214c movs r1, #76 ; 0x4c 11f1e: f100 0a10 add.w sl, r0, #16 11f22: 89a0 ldrh r0, [r4, #12] 11f24: 47c8 blx r9 11f26: f241 1129 movw r1, #4393 ; 0x1129 11f2a: 4602 mov r2, r0 11f2c: 4650 mov r0, sl 11f2e: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); 11f30: 6823 ldr r3, [r4, #0] 11f32: f103 0910 add.w r9, r3, #16 11f36: 6a23 ldr r3, [r4, #32] 11f38: 079b lsls r3, r3, #30 11f3a: bf54 ite pl 11f3c: 48b2 ldrpl r0, [pc, #712] ; (12208 ) 11f3e: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 11f42: 47a8 blx r5 11f44: f242 0129 movw r1, #8233 ; 0x2029 11f48: 4602 mov r2, r0 11f4a: 4648 mov r0, r9 11f4c: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); 11f4e: 6823 ldr r3, [r4, #0] 11f50: f103 0910 add.w r9, r3, #16 11f54: 6a23 ldr r3, [r4, #32] 11f56: 0798 lsls r0, r3, #30 11f58: bf4c ite mi 11f5a: f640 40cc movwmi r0, #3276 ; 0xccc 11f5e: f640 0088 movwpl r0, #2184 ; 0x888 11f62: 47c0 blx r8 11f64: f242 1129 movw r1, #8489 ; 0x2129 11f68: 4602 mov r2, r0 11f6a: 4648 mov r0, r9 11f6c: 47b0 blx r6 lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); 11f6e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11f70: 89a2 ldrh r2, [r4, #12] 11f72: 2139 movs r1, #57 ; 0x39 11f74: 3010 adds r0, #16 11f76: 47b0 blx r6 lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); 11f78: 6820 ldr r0, [r4, #0] 11f7a: 89a2 ldrh r2, [r4, #12] 11f7c: f241 0139 movw r1, #4153 ; 0x1039 11f80: 3010 adds r0, #16 11f82: 47b0 blx r6 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 11f84: 6823 ldr r3, [r4, #0] 11f86: f103 0910 add.w r9, r3, #16 11f8a: 6a23 ldr r3, [r4, #32] 11f8c: 0799 lsls r1, r3, #30 11f8e: f140 82a0 bpl.w 124d2 11f92: f640 0088 movw r0, #2184 ; 0x888 11f96: 47c0 blx r8 11f98: 4602 mov r2, r0 11f9a: f242 0139 movw r1, #8249 ; 0x2039 11f9e: 4648 mov r0, r9 11fa0: 47b0 blx r6 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 11fa2: 6823 ldr r3, [r4, #0] 11fa4: f8df 8270 ldr.w r8, [pc, #624] ; 12218 11fa8: 2000 movs r0, #0 11faa: f103 0910 add.w r9, r3, #16 11fae: 47c0 blx r8 11fb0: 2877 cmp r0, #119 ; 0x77 11fb2: f340 8291 ble.w 124d8 11fb6: 2000 movs r0, #0 11fb8: 47c0 blx r8 11fba: 2250 movs r2, #80 ; 0x50 11fbc: 3028 adds r0, #40 ; 0x28 11fbe: fb90 f2f2 sdiv r2, r0, r2 11fc2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 11fc4: 4648 mov r0, r9 11fc6: 2130 movs r1, #48 ; 0x30 11fc8: f8df 9250 ldr.w r9, [pc, #592] ; 1221c 11fcc: 47c8 blx r9 lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); 11fce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 11fd0: 4b8e ldr r3, [pc, #568] ; (1220c ) 11fd2: 2200 movs r2, #0 11fd4: 3010 adds r0, #16 11fd6: f44f 719e mov.w r1, #316 ; 0x13c 11fda: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 11fdc: 6823 ldr r3, [r4, #0] 11fde: f103 0a10 add.w sl, r3, #16 11fe2: 6a23 ldr r3, [r4, #32] 11fe4: 079a lsls r2, r3, #30 11fe6: bf4c ite mi 11fe8: 4889 ldrmi r0, [pc, #548] ; (12210 ) 11fea: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11fee: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11ff0: f248 0189 movw r1, #32905 ; 0x8089 11ff4: 4602 mov r2, r0 11ff6: 4650 mov r0, sl 11ff8: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 11ffa: 6823 ldr r3, [r4, #0] 11ffc: f103 0a10 add.w sl, r3, #16 12000: 6a23 ldr r3, [r4, #32] 12002: 079b lsls r3, r3, #30 12004: bf4c ite mi 12006: 4882 ldrmi r0, [pc, #520] ; (12210 ) 12008: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 1200c: 47a8 blx r5 1200e: f249 0189 movw r1, #37001 ; 0x9089 12012: 4602 mov r2, r0 12014: 4650 mov r0, sl 12016: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 12018: 6820 ldr r0, [r4, #0] 1201a: f100 0a10 add.w sl, r0, #16 1201e: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 12022: 47a8 blx r5 12024: f248 1189 movw r1, #33161 ; 0x8189 12028: 4602 mov r2, r0 1202a: 4650 mov r0, sl 1202c: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 1202e: 6820 ldr r0, [r4, #0] 12030: f100 0a10 add.w sl, r0, #16 12034: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 12038: 47a8 blx r5 1203a: f249 1189 movw r1, #37257 ; 0x9189 1203e: 4602 mov r2, r0 12040: 4650 mov r0, sl 12042: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 12044: 6820 ldr r0, [r4, #0] 12046: f100 0a10 add.w sl, r0, #16 1204a: 4872 ldr r0, [pc, #456] ; (12214 ) 1204c: 47a8 blx r5 1204e: f24a 0189 movw r1, #41097 ; 0xa089 12052: 4602 mov r2, r0 12054: 4650 mov r0, sl 12056: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12058: 6823 ldr r3, [r4, #0] 1205a: f103 0a10 add.w sl, r3, #16 1205e: 6a23 ldr r3, [r4, #32] 12060: 0798 lsls r0, r3, #30 12062: bf4c ite mi 12064: 486a ldrmi r0, [pc, #424] ; (12210 ) 12066: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 1206a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 1206c: f248 01a9 movw r1, #32937 ; 0x80a9 12070: 4602 mov r2, r0 12072: 4650 mov r0, sl 12074: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12076: 6823 ldr r3, [r4, #0] 12078: f103 0a10 add.w sl, r3, #16 1207c: 6a23 ldr r3, [r4, #32] 1207e: 0799 lsls r1, r3, #30 12080: bf4c ite mi 12082: 4863 ldrmi r0, [pc, #396] ; (12210 ) 12084: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 12088: 47a8 blx r5 1208a: f249 01a9 movw r1, #37033 ; 0x90a9 1208e: 4602 mov r2, r0 12090: 4650 mov r0, sl 12092: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12094: 6820 ldr r0, [r4, #0] 12096: f100 0a10 add.w sl, r0, #16 1209a: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 1209e: 47a8 blx r5 120a0: f249 01a9 movw r1, #37033 ; 0x90a9 120a4: 4602 mov r2, r0 120a6: 4650 mov r0, sl 120a8: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 120aa: 6820 ldr r0, [r4, #0] 120ac: f100 0a10 add.w sl, r0, #16 120b0: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 120b4: 47a8 blx r5 120b6: f249 11a9 movw r1, #37289 ; 0x91a9 120ba: 4602 mov r2, r0 120bc: 4650 mov r0, sl 120be: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 120c0: 6820 ldr r0, [r4, #0] 120c2: f100 0a10 add.w sl, r0, #16 120c6: 4853 ldr r0, [pc, #332] ; (12214 ) 120c8: 47a8 blx r5 120ca: f24a 01a9 movw r1, #41129 ; 0xa0a9 120ce: 4602 mov r2, r0 120d0: 4650 mov r0, sl 120d2: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 120d4: 6823 ldr r3, [r4, #0] 120d6: f103 0a10 add.w sl, r3, #16 120da: 6a23 ldr r3, [r4, #32] 120dc: 079a lsls r2, r3, #30 120de: bf4c ite mi 120e0: 484b ldrmi r0, [pc, #300] ; (12210 ) 120e2: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 120e6: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 120e8: 2179 movs r1, #121 ; 0x79 120ea: 4602 mov r2, r0 120ec: 4650 mov r0, sl 120ee: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 120f0: 6823 ldr r3, [r4, #0] 120f2: f103 0a10 add.w sl, r3, #16 120f6: 6a23 ldr r3, [r4, #32] 120f8: 079b lsls r3, r3, #30 120fa: bf4c ite mi 120fc: 4844 ldrmi r0, [pc, #272] ; (12210 ) 120fe: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 12102: 47a8 blx r5 12104: f241 0179 movw r1, #4217 ; 0x1079 12108: 4602 mov r2, r0 1210a: 4650 mov r0, sl 1210c: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 1210e: 6820 ldr r0, [r4, #0] 12110: f100 0a10 add.w sl, r0, #16 12114: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 12118: 47a8 blx r5 1211a: f240 1179 movw r1, #377 ; 0x179 1211e: 4602 mov r2, r0 12120: 4650 mov r0, sl 12122: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12124: 6820 ldr r0, [r4, #0] 12126: f100 0a10 add.w sl, r0, #16 1212a: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 1212e: 47a8 blx r5 12130: f241 1179 movw r1, #4473 ; 0x1179 12134: 4602 mov r2, r0 12136: 4650 mov r0, sl 12138: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 1213a: 6820 ldr r0, [r4, #0] 1213c: f100 0a10 add.w sl, r0, #16 12140: 4834 ldr r0, [pc, #208] ; (12214 ) 12142: 47a8 blx r5 12144: f242 0179 movw r1, #8313 ; 0x2079 12148: 4602 mov r2, r0 1214a: 4650 mov r0, sl 1214c: 47b0 blx r6 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 1214e: 2000 movs r0, #0 12150: 6825 ldr r5, [r4, #0] 12152: 47c0 blx r8 12154: eb00 0080 add.w r0, r0, r0, lsl #2 12158: 00c0 lsls r0, r0, #3 1215a: 28ef cmp r0, #239 ; 0xef 1215c: f105 0510 add.w r5, r5, #16 12160: f340 81bc ble.w 124dc 12164: 2000 movs r0, #0 12166: 47c0 blx r8 12168: 2128 movs r1, #40 ; 0x28 1216a: 2350 movs r3, #80 ; 0x50 1216c: fb00 3001 mla r0, r0, r1, r3 12170: 22a0 movs r2, #160 ; 0xa0 12172: fb90 f2f2 sdiv r2, r0, r2 12176: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12178: 4628 mov r0, r5 1217a: 2112 movs r1, #18 1217c: 47c8 blx r9 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 1217e: 2000 movs r0, #0 12180: 6825 ldr r5, [r4, #0] 12182: 47c0 blx r8 12184: eb00 0080 add.w r0, r0, r0, lsl #2 12188: 00c0 lsls r0, r0, #3 1218a: 28ef cmp r0, #239 ; 0xef 1218c: f105 0510 add.w r5, r5, #16 12190: f340 81a6 ble.w 124e0 12194: 2000 movs r0, #0 12196: 47c0 blx r8 12198: 2128 movs r1, #40 ; 0x28 1219a: 2350 movs r3, #80 ; 0x50 1219c: fb00 3001 mla r0, r0, r1, r3 121a0: 22a0 movs r2, #160 ; 0xa0 121a2: fb90 f2f2 sdiv r2, r0, r2 121a6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 121a8: 4628 mov r0, r5 121aa: 2113 movs r1, #19 121ac: 47c8 blx r9 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 121ae: 2000 movs r0, #0 121b0: 6825 ldr r5, [r4, #0] 121b2: 47c0 blx r8 121b4: ebc0 1000 rsb r0, r0, r0, lsl #4 121b8: 28ef cmp r0, #239 ; 0xef 121ba: f105 0510 add.w r5, r5, #16 121be: f340 8191 ble.w 124e4 121c2: 2000 movs r0, #0 121c4: 47c0 blx r8 121c6: 210f movs r1, #15 121c8: 2350 movs r3, #80 ; 0x50 121ca: fb00 3001 mla r0, r0, r1, r3 121ce: 22a0 movs r2, #160 ; 0xa0 121d0: fb90 f2f2 sdiv r2, r0, r2 121d4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 121d6: 4628 mov r0, r5 121d8: 2110 movs r1, #16 121da: 47c8 blx r9 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 121dc: 2000 movs r0, #0 121de: 6825 ldr r5, [r4, #0] 121e0: 47c0 blx r8 121e2: ebc0 1000 rsb r0, r0, r0, lsl #4 121e6: 28ef cmp r0, #239 ; 0xef 121e8: f105 0510 add.w r5, r5, #16 121ec: f340 817c ble.w 124e8 121f0: 2000 movs r0, #0 121f2: 47c0 blx r8 121f4: 210f movs r1, #15 121f6: 2350 movs r3, #80 ; 0x50 121f8: fb00 3001 mla r0, r0, r1, r3 121fc: 22a0 movs r2, #160 ; 0xa0 121fe: fb90 f2f2 sdiv r2, r0, r2 12202: b212 sxth r2, r2 12204: e00c b.n 12220 12206: bf00 nop 12208: 00586273 .word 0x00586273 1220c: 00005a15 .word 0x00005a15 12210: 0031404f .word 0x0031404f 12214: 00888888 .word 0x00888888 12218: 0000d995 .word 0x0000d995 1221c: 00005875 .word 0x00005875 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12220: 4628 mov r0, r5 12222: 2111 movs r1, #17 12224: 47c8 blx r9 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 12226: 2000 movs r0, #0 12228: 6825 ldr r5, [r4, #0] 1222a: 47c0 blx r8 1222c: eb00 0080 add.w r0, r0, r0, lsl #2 12230: 0080 lsls r0, r0, #2 12232: 28ef cmp r0, #239 ; 0xef 12234: f105 0510 add.w r5, r5, #16 12238: f340 8158 ble.w 124ec 1223c: 2000 movs r0, #0 1223e: 47c0 blx r8 12240: 2114 movs r1, #20 12242: 2350 movs r3, #80 ; 0x50 12244: fb00 3001 mla r0, r0, r1, r3 12248: 22a0 movs r2, #160 ; 0xa0 1224a: fb90 f2f2 sdiv r2, r0, r2 1224e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12250: 4628 mov r0, r5 12252: 2114 movs r1, #20 12254: 47b8 blx r7 lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3); 12256: 6820 ldr r0, [r4, #0] lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12258: 4dbb ldr r5, [pc, #748] ; (12548 ) _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 1225a: 2203 movs r2, #3 1225c: 2140 movs r1, #64 ; 0x40 1225e: 3010 adds r0, #16 12260: 47b8 blx r7 lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); 12262: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 12264: 9b01 ldr r3, [sp, #4] 12266: 2200 movs r2, #0 12268: 214c movs r1, #76 ; 0x4c 1226a: 3010 adds r0, #16 1226c: 4798 blx r3 lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); 1226e: 6820 ldr r0, [r4, #0] 12270: 9b01 ldr r3, [sp, #4] 12272: 227f movs r2, #127 ; 0x7f 12274: f44f 7113 mov.w r1, #588 ; 0x24c 12278: 3010 adds r0, #16 1227a: 4798 blx r3 lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); 1227c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 1227e: 89a2 ldrh r2, [r4, #12] 12280: 2149 movs r1, #73 ; 0x49 12282: 3010 adds r0, #16 12284: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); 12286: 6820 ldr r0, [r4, #0] 12288: 89e2 ldrh r2, [r4, #14] 1228a: f240 4149 movw r1, #1097 ; 0x449 1228e: 3010 adds r0, #16 12290: 47b0 blx r6 lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 12292: 6820 ldr r0, [r4, #0] style_init_reset(&styles->pad_inner); 12294: 4ead ldr r6, [pc, #692] ; (1254c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 12296: 2296 movs r2, #150 ; 0x96 12298: 21b0 movs r1, #176 ; 0xb0 1229a: 3010 adds r0, #16 1229c: 47b8 blx r7 lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); 1229e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 122a0: 223c movs r2, #60 ; 0x3c 122a2: 21b5 movs r1, #181 ; 0xb5 122a4: 3010 adds r0, #16 122a6: 47b8 blx r7 lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 122a8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 122aa: 2229 movs r2, #41 ; 0x29 122ac: 21b6 movs r1, #182 ; 0xb6 122ae: 3010 adds r0, #16 122b0: 47b8 blx r7 lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 122b2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 122b4: 224c movs r2, #76 ; 0x4c 122b6: 21b7 movs r1, #183 ; 0xb7 122b8: 3010 adds r0, #16 122ba: 47b8 blx r7 lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 122bc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 122be: 2296 movs r2, #150 ; 0x96 122c0: 21b1 movs r1, #177 ; 0xb1 122c2: 3010 adds r0, #16 122c4: 47b8 blx r7 lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); 122c6: 6820 ldr r0, [r4, #0] 122c8: 2200 movs r2, #0 122ca: f241 01b1 movw r1, #4273 ; 0x10b1 122ce: 3010 adds r0, #16 122d0: 47b8 blx r7 style_init_reset(&styles->pad_inner); 122d2: 6820 ldr r0, [r4, #0] 122d4: 3014 adds r0, #20 122d6: 47b0 blx r6 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 122d8: 2000 movs r0, #0 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 122da: 6827 ldr r7, [r4, #0] lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 122dc: 47a8 blx r5 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 122de: 2832 cmp r0, #50 ; 0x32 122e0: f107 0714 add.w r7, r7, #20 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 122e4: f04f 0000 mov.w r0, #0 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 122e8: f200 810d bhi.w 12506 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 122ec: 47c0 blx r8 122ee: eb00 0080 add.w r0, r0, r0, lsl #2 122f2: 0080 lsls r0, r0, #2 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 122f4: 28ef cmp r0, #239 ; 0xef 122f6: f300 80fb bgt.w 124f0 122fa: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 122fc: 2114 movs r1, #20 122fe: 4638 mov r0, r7 12300: 47c8 blx r9 style_init_reset(&styles->pad_small); 12302: 6820 ldr r0, [r4, #0] 12304: 3018 adds r0, #24 12306: 47b0 blx r6 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 12308: 2000 movs r0, #0 1230a: 47a8 blx r5 1230c: 2832 cmp r0, #50 ; 0x32 1230e: f04f 0000 mov.w r0, #0 12312: f200 810e bhi.w 12532 12316: 47c0 blx r8 12318: eb00 0080 add.w r0, r0, r0, lsl #2 1231c: 0040 lsls r0, r0, #1 1231e: 28ef cmp r0, #239 ; 0xef 12320: f300 80fc bgt.w 1251c 12324: 2201 movs r2, #1 lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 12326: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12328: 9201 str r2, [sp, #4] 1232a: 2112 movs r1, #18 1232c: 3018 adds r0, #24 1232e: 47c8 blx r9 lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 12330: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12332: 9a01 ldr r2, [sp, #4] 12334: 2113 movs r1, #19 12336: 3018 adds r0, #24 12338: 47c8 blx r9 lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 1233a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1233c: 9a01 ldr r2, [sp, #4] 1233e: 2110 movs r1, #16 12340: 3018 adds r0, #24 12342: 47c8 blx r9 lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 12344: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12346: 9a01 ldr r2, [sp, #4] 12348: 2111 movs r1, #17 1234a: 3018 adds r0, #24 1234c: 47c8 blx r9 lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 1234e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12350: 9a01 ldr r2, [sp, #4] 12352: 2114 movs r1, #20 12354: 3018 adds r0, #24 12356: 464b mov r3, r9 } 12358: b003 add sp, #12 1235a: ecbd 8b02 vpop {d8} 1235e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 12362: 4718 bx r3 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 12364: 2201 movs r2, #1 12366: f7ff ba9e b.w 118a6 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 1236a: 2201 movs r2, #1 1236c: f7ff badb b.w 11926 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 12370: 2000 movs r0, #0 12372: 47b0 blx r6 12374: 210f movs r1, #15 12376: 2350 movs r3, #80 ; 0x50 12378: fb00 3001 mla r0, r0, r1, r3 1237c: 22a0 movs r2, #160 ; 0xa0 1237e: fb90 f2f2 sdiv r2, r0, r2 12382: fa1f fb82 uxth.w fp, r2 12386: f7ff bb35 b.w 119f4 1238a: 47b0 blx r6 1238c: ebc0 1000 rsb r0, r0, r0, lsl #4 12390: 0040 lsls r0, r0, #1 12392: 28ef cmp r0, #239 ; 0xef 12394: f77f ab2c ble.w 119f0 12398: 2000 movs r0, #0 1239a: 47b0 blx r6 1239c: 211e movs r1, #30 1239e: e7ea b.n 12376 123a0: 2001 movs r0, #1 123a2: f7ff bb33 b.w 11a0c lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 123a6: 2000 movs r0, #0 123a8: 47b0 blx r6 123aa: 210f movs r1, #15 123ac: 2350 movs r3, #80 ; 0x50 123ae: fb00 3001 mla r0, r0, r1, r3 123b2: 22a0 movs r2, #160 ; 0xa0 123b4: fb90 f2f2 sdiv r2, r0, r2 123b8: fa1f fb82 uxth.w fp, r2 123bc: f7ff bb40 b.w 11a40 123c0: 47b0 blx r6 123c2: ebc0 1000 rsb r0, r0, r0, lsl #4 123c6: 0040 lsls r0, r0, #1 123c8: 28ef cmp r0, #239 ; 0xef 123ca: f77f ab37 ble.w 11a3c 123ce: 2000 movs r0, #0 123d0: 47b0 blx r6 123d2: 211e movs r1, #30 123d4: e7ea b.n 123ac 123d6: 2001 movs r0, #1 123d8: f7ff bb3e b.w 11a58 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 123dc: 2000 movs r0, #0 123de: 47b0 blx r6 123e0: 210f movs r1, #15 123e2: 2350 movs r3, #80 ; 0x50 123e4: fb00 3001 mla r0, r0, r1, r3 123e8: 22a0 movs r2, #160 ; 0xa0 123ea: fb90 f2f2 sdiv r2, r0, r2 123ee: fa1f fb82 uxth.w fp, r2 123f2: f7ff bb6d b.w 11ad0 123f6: 47b0 blx r6 123f8: ebc0 1000 rsb r0, r0, r0, lsl #4 123fc: 0040 lsls r0, r0, #1 123fe: 28ef cmp r0, #239 ; 0xef 12400: f77f ab64 ble.w 11acc 12404: 2000 movs r0, #0 12406: 47b0 blx r6 12408: 211e movs r1, #30 1240a: e7ea b.n 123e2 1240c: 2001 movs r0, #1 1240e: f7ff bb6b b.w 11ae8 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 12412: 2000 movs r0, #0 12414: 47b0 blx r6 12416: 210f movs r1, #15 12418: 2350 movs r3, #80 ; 0x50 1241a: fb00 3001 mla r0, r0, r1, r3 1241e: 22a0 movs r2, #160 ; 0xa0 12420: fb90 f2f2 sdiv r2, r0, r2 12424: fa1f fb82 uxth.w fp, r2 12428: f7ff bb78 b.w 11b1c 1242c: 47b0 blx r6 1242e: ebc0 1000 rsb r0, r0, r0, lsl #4 12432: 0040 lsls r0, r0, #1 12434: 28ef cmp r0, #239 ; 0xef 12436: f77f ab6f ble.w 11b18 1243a: 2000 movs r0, #0 1243c: 47b0 blx r6 1243e: 211e movs r1, #30 12440: e7ea b.n 12418 12442: 2001 movs r0, #1 12444: f7ff bb76 b.w 11b34 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 12448: 2000 movs r0, #0 1244a: 47b0 blx r6 1244c: 210f movs r1, #15 1244e: 2350 movs r3, #80 ; 0x50 12450: fb00 3001 mla r0, r0, r1, r3 12454: 22a0 movs r2, #160 ; 0xa0 12456: fb90 f2f2 sdiv r2, r0, r2 1245a: b212 sxth r2, r2 1245c: f7ff bb82 b.w 11b64 12460: 47b0 blx r6 12462: ebc0 1000 rsb r0, r0, r0, lsl #4 12466: 0040 lsls r0, r0, #1 12468: 28ef cmp r0, #239 ; 0xef 1246a: f77f ab7a ble.w 11b62 1246e: 2000 movs r0, #0 12470: 47b0 blx r6 12472: 211e movs r1, #30 12474: e7eb b.n 1244e lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 12476: 4836 ldr r0, [pc, #216] ; (12550 ) 12478: 47a8 blx r5 1247a: e421 b.n 11cc0 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 1247c: 4835 ldr r0, [pc, #212] ; (12554 ) 1247e: 47a8 blx r5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 12480: 7b61 ldrb r1, [r4, #13] LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 12482: f8b4 c00c ldrh.w ip, [r4, #12] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 12486: 08ca lsrs r2, r1, #3 12488: f04f 0bb3 mov.w fp, #179 ; 0xb3 1248c: f3c0 21c4 ubfx r1, r0, #11, #5 12490: f04f 0e4c mov.w lr, #76 ; 0x4c 12494: fb0b f101 mul.w r1, fp, r1 12498: fb0e 1102 mla r1, lr, r2, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 1249c: f3c0 1245 ubfx r2, r0, #5, #6 124a0: f3cc 1c45 ubfx ip, ip, #5, #6 124a4: fb0b f202 mul.w r2, fp, r2 124a8: fb0e 220c mla r2, lr, ip, r2 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 124ac: f894 c00c ldrb.w ip, [r4, #12] LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 124b0: f248 0381 movw r3, #32897 ; 0x8081 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 124b4: f000 001f and.w r0, r0, #31 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 124b8: 4359 muls r1, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 124ba: 435a muls r2, r3 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 124bc: f00c 0c1f and.w ip, ip, #31 124c0: fb0b f000 mul.w r0, fp, r0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 124c4: f3c1 51c4 ubfx r1, r1, #23, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 124c8: f3c2 52c5 ubfx r2, r2, #23, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 124cc: fb0e 0c0c mla ip, lr, ip, r0 124d0: e511 b.n 11ef6 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 124d2: 4821 ldr r0, [pc, #132] ; (12558 ) 124d4: 47a8 blx r5 124d6: e55f b.n 11f98 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 124d8: 2201 movs r2, #1 124da: e573 b.n 11fc4 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 124dc: 2201 movs r2, #1 124de: e64b b.n 12178 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 124e0: 2201 movs r2, #1 124e2: e661 b.n 121a8 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 124e4: 2201 movs r2, #1 124e6: e676 b.n 121d6 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 124e8: 2201 movs r2, #1 124ea: e699 b.n 12220 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 124ec: 2201 movs r2, #1 124ee: e6af b.n 12250 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 124f0: 2000 movs r0, #0 124f2: 47c0 blx r8 124f4: 2114 movs r1, #20 124f6: 2350 movs r3, #80 ; 0x50 124f8: fb00 3001 mla r0, r0, r1, r3 124fc: 22a0 movs r2, #160 ; 0xa0 124fe: fb90 f2f2 sdiv r2, r0, r2 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 12502: b212 sxth r2, r2 12504: e6fa b.n 122fc lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12506: 47c0 blx r8 12508: eb00 0080 add.w r0, r0, r0, lsl #2 1250c: 00c0 lsls r0, r0, #3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 1250e: 28ef cmp r0, #239 ; 0xef 12510: f77f aef3 ble.w 122fa lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12514: 2000 movs r0, #0 12516: 47c0 blx r8 12518: 2128 movs r1, #40 ; 0x28 1251a: e7ec b.n 124f6 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 1251c: 2000 movs r0, #0 1251e: 47c0 blx r8 12520: 210a movs r1, #10 12522: 2350 movs r3, #80 ; 0x50 12524: fb00 3001 mla r0, r0, r1, r3 12528: 22a0 movs r2, #160 ; 0xa0 1252a: fb90 f2f2 sdiv r2, r0, r2 1252e: b212 sxth r2, r2 12530: e6f9 b.n 12326 12532: 47c0 blx r8 12534: eb00 0080 add.w r0, r0, r0, lsl #2 12538: 0080 lsls r0, r0, #2 1253a: 28ef cmp r0, #239 ; 0xef 1253c: f77f aef2 ble.w 12324 12540: 2000 movs r0, #0 12542: 47c0 blx r8 12544: 2114 movs r1, #20 12546: e7ec b.n 12522 12548: 0000d9ad .word 0x0000d9ad 1254c: 00010b1d .word 0x00010b1d 12550: 005f656e .word 0x005f656e 12554: 00586273 .word 0x00586273 12558: 00404040 .word 0x00404040 0001255c : { 1255c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(!inited) { 12560: 4cb3 ldr r4, [pc, #716] ; (12830 ) { 12562: ed2d 8b02 vpush {d8} 12566: 461e mov r6, r3 if(!inited) { 12568: 7923 ldrb r3, [r4, #4] { 1256a: b083 sub sp, #12 1256c: 4680 mov r8, r0 1256e: 460f mov r7, r1 12570: 4615 mov r5, r2 if(!inited) { 12572: b92b cbnz r3, 12580 LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 12574: 4baf ldr r3, [pc, #700] ; (12834 ) 12576: 20bc movs r0, #188 ; 0xbc 12578: 4798 blx r3 1257a: 4baf ldr r3, [pc, #700] ; (12838 ) styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); 1257c: 6020 str r0, [r4, #0] LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 1257e: 6018 str r0, [r3, #0] theme.font_normal = font_normal; 12580: 9b0e ldr r3, [sp, #56] ; 0x38 12582: 6163 str r3, [r4, #20] theme.font_subtitle = font_subtitle; 12584: 9b0f ldr r3, [sp, #60] ; 0x3c 12586: 61a3 str r3, [r4, #24] theme.font_title = font_title; 12588: 9b10 ldr r3, [sp, #64] ; 0x40 theme.color_secondary = color_secondary; 1258a: 81e7 strh r7, [r4, #14] theme.flags = flags; 1258c: e9c4 3507 strd r3, r5, [r4, #28] basic_init(); 12590: 4baa ldr r3, [pc, #680] ; (1283c ) theme.font_small = font_small; 12592: 6126 str r6, [r4, #16] theme.color_primary = color_primary; 12594: f8a4 800c strh.w r8, [r4, #12] basic_init(); 12598: 4798 blx r3 bar_init(); 1259a: 4ba9 ldr r3, [pc, #676] ; (12840 ) style_init_reset(&styles->arc_indic); 1259c: f8df 92d8 ldr.w r9, [pc, #728] ; 12878 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 125a0: 4fa8 ldr r7, [pc, #672] ; (12844 ) lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 125a2: 4da9 ldr r5, [pc, #676] ; (12848 ) bar_init(); 125a4: 4798 blx r3 led_init(); 125a6: 4ba9 ldr r3, [pc, #676] ; (1284c ) 125a8: 4798 blx r3 slider_init(); 125aa: 4ba9 ldr r3, [pc, #676] ; (12850 ) 125ac: 4798 blx r3 switch_init(); 125ae: 4ba9 ldr r3, [pc, #676] ; (12854 ) 125b0: 4798 blx r3 linemeter_init(); 125b2: 4ba9 ldr r3, [pc, #676] ; (12858 ) 125b4: 4798 blx r3 gauge_init(); 125b6: 4ba9 ldr r3, [pc, #676] ; (1285c ) 125b8: 4798 blx r3 style_init_reset(&styles->arc_indic); 125ba: 6820 ldr r0, [r4, #0] 125bc: 301c adds r0, #28 125be: 47c8 blx r9 lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); 125c0: 6820 ldr r0, [r4, #0] 125c2: 89a2 ldrh r2, [r4, #12] 125c4: 2199 movs r1, #153 ; 0x99 125c6: 301c adds r0, #28 125c8: 47b8 blx r7 lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 125ca: 2000 movs r0, #0 125cc: 6826 ldr r6, [r4, #0] 125ce: 47a8 blx r5 125d0: eb00 0080 add.w r0, r0, r0, lsl #2 125d4: eb00 0080 add.w r0, r0, r0, lsl #2 125d8: 28ef cmp r0, #239 ; 0xef 125da: f106 061c add.w r6, r6, #28 125de: f341 8254 ble.w 13a8a 125e2: 2000 movs r0, #0 125e4: 47a8 blx r5 125e6: 2119 movs r1, #25 125e8: 2350 movs r3, #80 ; 0x50 125ea: fb00 3001 mla r0, r0, r1, r3 125ee: 22a0 movs r2, #160 ; 0xa0 125f0: fb90 f2f2 sdiv r2, r0, r2 125f4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 125f6: 4630 mov r0, r6 125f8: 2190 movs r1, #144 ; 0x90 125fa: 4e99 ldr r6, [pc, #612] ; (12860 ) 125fc: f8df a27c ldr.w sl, [pc, #636] ; 1287c 12600: 47b0 blx r6 lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); 12602: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 12604: 2201 movs r2, #1 12606: 2194 movs r1, #148 ; 0x94 12608: 301c adds r0, #28 1260a: 47b0 blx r6 style_init_reset(&styles->arc_bg); 1260c: 6820 ldr r0, [r4, #0] 1260e: 3020 adds r0, #32 12610: 47c8 blx r9 lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 12612: 6823 ldr r3, [r4, #0] 12614: f103 0820 add.w r8, r3, #32 12618: 6a23 ldr r3, [r4, #32] 1261a: f013 0f02 tst.w r3, #2 1261e: bf14 ite ne 12620: 4890 ldrne r0, [pc, #576] ; (12864 ) 12622: 4891 ldreq r0, [pc, #580] ; (12868 ) 12624: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 12626: 2199 movs r1, #153 ; 0x99 12628: 4602 mov r2, r0 1262a: 4640 mov r0, r8 1262c: 47b8 blx r7 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 1262e: 6823 ldr r3, [r4, #0] 12630: 2000 movs r0, #0 12632: f103 0820 add.w r8, r3, #32 12636: 47a8 blx r5 12638: eb00 0080 add.w r0, r0, r0, lsl #2 1263c: eb00 0080 add.w r0, r0, r0, lsl #2 12640: 28ef cmp r0, #239 ; 0xef 12642: f341 8225 ble.w 13a90 12646: 2000 movs r0, #0 12648: 47a8 blx r5 1264a: 2119 movs r1, #25 1264c: 2350 movs r3, #80 ; 0x50 1264e: fb00 3001 mla r0, r0, r1, r3 12652: 22a0 movs r2, #160 ; 0xa0 12654: fb90 f2f2 sdiv r2, r0, r2 12658: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1265a: 4640 mov r0, r8 1265c: 2190 movs r1, #144 ; 0x90 1265e: 47b0 blx r6 lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); 12660: 6820 ldr r0, [r4, #0] lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 12662: f8df 821c ldr.w r8, [pc, #540] ; 12880 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 12666: 2201 movs r2, #1 12668: 2194 movs r1, #148 ; 0x94 1266a: 3020 adds r0, #32 1266c: 47b0 blx r6 chart_init(); 1266e: 4b7f ldr r3, [pc, #508] ; (1286c ) 12670: 4798 blx r3 style_init_reset(&styles->calendar_header); 12672: 6820 ldr r0, [r4, #0] 12674: 3030 adds r0, #48 ; 0x30 12676: 47c8 blx r9 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 12678: 6823 ldr r3, [r4, #0] 1267a: 2000 movs r0, #0 1267c: f103 0b30 add.w fp, r3, #48 ; 0x30 12680: 47c0 blx r8 12682: 2801 cmp r0, #1 12684: f04f 0000 mov.w r0, #0 12688: f201 8211 bhi.w 13aae 1268c: 47a8 blx r5 1268e: ebc0 1000 rsb r0, r0, r0, lsl #4 12692: 28ef cmp r0, #239 ; 0xef 12694: f301 81ff bgt.w 13a96 12698: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1269a: 4658 mov r0, fp 1269c: 2110 movs r1, #16 1269e: 47b0 blx r6 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 126a0: 6823 ldr r3, [r4, #0] 126a2: 2000 movs r0, #0 126a4: f103 0b30 add.w fp, r3, #48 ; 0x30 126a8: 47c0 blx r8 126aa: 2801 cmp r0, #1 126ac: f04f 0000 mov.w r0, #0 126b0: f201 8214 bhi.w 13adc 126b4: 47a8 blx r5 126b6: ebc0 1000 rsb r0, r0, r0, lsl #4 126ba: 28ef cmp r0, #239 ; 0xef 126bc: f301 8202 bgt.w 13ac4 126c0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 126c2: 4658 mov r0, fp 126c4: 2112 movs r1, #18 126c6: 47b0 blx r6 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 126c8: 6823 ldr r3, [r4, #0] 126ca: 2000 movs r0, #0 126cc: f103 0b30 add.w fp, r3, #48 ; 0x30 126d0: 47c0 blx r8 126d2: 2801 cmp r0, #1 126d4: f04f 0000 mov.w r0, #0 126d8: f201 8217 bhi.w 13b0a 126dc: 47a8 blx r5 126de: ebc0 1000 rsb r0, r0, r0, lsl #4 126e2: 28ef cmp r0, #239 ; 0xef 126e4: f301 8205 bgt.w 13af2 126e8: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 126ea: 4658 mov r0, fp 126ec: 2113 movs r1, #19 126ee: 47b0 blx r6 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 126f0: 6823 ldr r3, [r4, #0] 126f2: 2000 movs r0, #0 126f4: f103 0b30 add.w fp, r3, #48 ; 0x30 126f8: 47c0 blx r8 126fa: 2801 cmp r0, #1 126fc: f04f 0000 mov.w r0, #0 12700: f201 821a bhi.w 13b38 12704: 47a8 blx r5 12706: ebc0 1000 rsb r0, r0, r0, lsl #4 1270a: 28ef cmp r0, #239 ; 0xef 1270c: f301 8208 bgt.w 13b20 12710: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12712: 4658 mov r0, fp 12714: 2111 movs r1, #17 12716: 47b0 blx r6 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 12718: 6a22 ldr r2, [r4, #32] 1271a: 6823 ldr r3, [r4, #0] 1271c: f8df b164 ldr.w fp, [pc, #356] ; 12884 12720: f012 0f02 tst.w r2, #2 12724: f103 0330 add.w r3, r3, #48 ; 0x30 12728: f001 8211 beq.w 13b4e 1272c: 4850 ldr r0, [pc, #320] ; (12870 ) 1272e: 9301 str r3, [sp, #4] 12730: 47d0 blx sl 12732: 9b01 ldr r3, [sp, #4] 12734: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12736: 4618 mov r0, r3 12738: f249 0189 movw r1, #37001 ; 0x9089 1273c: 47b8 blx r7 style_init_reset(&styles->calendar_daynames); 1273e: 6820 ldr r0, [r4, #0] 12740: 3034 adds r0, #52 ; 0x34 12742: 47c8 blx r9 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 12744: 6823 ldr r3, [r4, #0] 12746: 3334 adds r3, #52 ; 0x34 12748: ee07 3a90 vmov s15, r3 1274c: 6a23 ldr r3, [r4, #32] 1274e: 0798 lsls r0, r3, #30 12750: f141 8201 bpl.w 13b56 12754: 4847 ldr r0, [pc, #284] ; (12874 ) 12756: 47d0 blx sl 12758: 4602 mov r2, r0 1275a: f248 0189 movw r1, #32905 ; 0x8089 1275e: ee17 0a90 vmov r0, s15 12762: 47b8 blx r7 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 12764: 6823 ldr r3, [r4, #0] 12766: 2000 movs r0, #0 12768: 3334 adds r3, #52 ; 0x34 1276a: ee08 3a10 vmov s16, r3 1276e: 47c0 blx r8 12770: 2801 cmp r0, #1 12772: f04f 0000 mov.w r0, #0 12776: f201 8200 bhi.w 13b7a 1277a: 47a8 blx r5 1277c: ebc0 1000 rsb r0, r0, r0, lsl #4 12780: 28ef cmp r0, #239 ; 0xef 12782: f301 81ee bgt.w 13b62 12786: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12788: ee18 0a10 vmov r0, s16 1278c: 2112 movs r1, #18 1278e: 47b0 blx r6 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 12790: 6823 ldr r3, [r4, #0] 12792: 2000 movs r0, #0 12794: 3334 adds r3, #52 ; 0x34 12796: ee08 3a10 vmov s16, r3 1279a: 47c0 blx r8 1279c: 2801 cmp r0, #1 1279e: f04f 0000 mov.w r0, #0 127a2: f201 8201 bhi.w 13ba8 127a6: 47a8 blx r5 127a8: ebc0 1000 rsb r0, r0, r0, lsl #4 127ac: 28ef cmp r0, #239 ; 0xef 127ae: f301 81ef bgt.w 13b90 127b2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 127b4: ee18 0a10 vmov r0, s16 127b8: 2113 movs r1, #19 127ba: 47b0 blx r6 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 127bc: 6823 ldr r3, [r4, #0] 127be: 2000 movs r0, #0 127c0: 3334 adds r3, #52 ; 0x34 127c2: ee08 3a10 vmov s16, r3 127c6: 47c0 blx r8 127c8: 2801 cmp r0, #1 127ca: f04f 0000 mov.w r0, #0 127ce: f201 8202 bhi.w 13bd6 127d2: 47a8 blx r5 127d4: ebc0 1000 rsb r0, r0, r0, lsl #4 127d8: 28ef cmp r0, #239 ; 0xef 127da: f301 81f0 bgt.w 13bbe 127de: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 127e0: ee18 0a10 vmov r0, s16 127e4: 2111 movs r1, #17 127e6: 47b0 blx r6 style_init_reset(&styles->calendar_date_nums); 127e8: 6820 ldr r0, [r4, #0] 127ea: 302c adds r0, #44 ; 0x2c 127ec: 47c8 blx r9 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 127ee: 6823 ldr r3, [r4, #0] 127f0: 2000 movs r0, #0 127f2: 332c adds r3, #44 ; 0x2c 127f4: ee08 3a10 vmov s16, r3 127f8: 47a8 blx r5 127fa: 283b cmp r0, #59 ; 0x3b 127fc: f341 81f6 ble.w 13bec 12800: 2000 movs r0, #0 12802: 47a8 blx r5 12804: 2228 movs r2, #40 ; 0x28 12806: 3014 adds r0, #20 12808: fb90 f2f2 sdiv r2, r0, r2 1280c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1280e: 2101 movs r1, #1 12810: ee18 0a10 vmov r0, s16 12814: 47b0 blx r6 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 12816: 6a22 ldr r2, [r4, #32] 12818: 6823 ldr r3, [r4, #0] 1281a: 0791 lsls r1, r2, #30 1281c: f103 032c add.w r3, r3, #44 ; 0x2c 12820: f141 81e7 bpl.w 13bf2 12824: 4813 ldr r0, [pc, #76] ; (12874 ) 12826: 9301 str r3, [sp, #4] 12828: 47d0 blx sl 1282a: 9b01 ldr r3, [sp, #4] 1282c: 4602 mov r2, r0 1282e: e02b b.n 12888 12830: 2000c7d4 .word 0x2000c7d4 12834: 0000ea75 .word 0x0000ea75 12838: 20008774 .word 0x20008774 1283c: 00011801 .word 0x00011801 12840: 00010f15 .word 0x00010f15 12844: 00005945 .word 0x00005945 12848: 0000d995 .word 0x0000d995 1284c: 00010e11 .word 0x00010e11 12850: 00011059 .word 0x00011059 12854: 00010b39 .word 0x00010b39 12858: 00010c45 .word 0x00010c45 1285c: 00011279 .word 0x00011279 12860: 00005875 .word 0x00005875 12864: 00d4d7d9 .word 0x00d4d7d9 12868: 0045494d .word 0x0045494d 1286c: 00011635 .word 0x00011635 12870: 00888888 .word 0x00888888 12874: 0031404f .word 0x0031404f 12878: 00010b1d .word 0x00010b1d 1287c: 00010efd .word 0x00010efd 12880: 0000d9ad .word 0x0000d9ad 12884: 000242b6 .word 0x000242b6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12888: 4618 mov r0, r3 1288a: f248 1189 movw r1, #33161 ; 0x8189 1288e: 47b8 blx r7 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); 12890: 6a23 ldr r3, [r4, #32] 12892: 6820 ldr r0, [r4, #0] 12894: f013 0f02 tst.w r3, #2 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12898: bf14 ite ne 1289a: 2233 movne r2, #51 ; 0x33 1289c: 2266 moveq r2, #102 ; 0x66 1289e: 4bc0 ldr r3, [pc, #768] ; (12ba0 ) 128a0: f44f 7196 mov.w r1, #300 ; 0x12c 128a4: 302c adds r0, #44 ; 0x2c 128a6: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); 128a8: 6820 ldr r0, [r4, #0] 128aa: 4bbd ldr r3, [pc, #756] ; (12ba0 ) 128ac: 2233 movs r2, #51 ; 0x33 128ae: f241 012c movw r1, #4140 ; 0x102c 128b2: 302c adds r0, #44 ; 0x2c 128b4: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); 128b6: 6820 ldr r0, [r4, #0] 128b8: 4bb9 ldr r3, [pc, #740] ; (12ba0 ) 128ba: 22ff movs r2, #255 ; 0xff 128bc: f44f 710b mov.w r1, #556 ; 0x22c 128c0: 302c adds r0, #44 ; 0x2c 128c2: 4798 blx r3 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); 128c4: f8bb 3000 ldrh.w r3, [fp] 128c8: 6820 ldr r0, [r4, #0] 128ca: f8ad 3004 strh.w r3, [sp, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 128ce: b29a uxth r2, r3 128d0: f248 2189 movw r1, #33417 ; 0x8289 128d4: 302c adds r0, #44 ; 0x2c 128d6: 47b8 blx r7 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); 128d8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 128da: 89a2 ldrh r2, [r4, #12] 128dc: f240 2129 movw r1, #553 ; 0x229 128e0: 302c adds r0, #44 ; 0x2c 128e2: 47b8 blx r7 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 128e4: 6a22 ldr r2, [r4, #32] 128e6: 6823 ldr r3, [r4, #0] 128e8: 0792 lsls r2, r2, #30 128ea: f103 032c add.w r3, r3, #44 ; 0x2c 128ee: f141 8184 bpl.w 13bfa 128f2: 48ac ldr r0, [pc, #688] ; (12ba4 ) 128f4: 9301 str r3, [sp, #4] 128f6: 47d0 blx sl 128f8: 9b01 ldr r3, [sp, #4] 128fa: 4602 mov r2, r0 128fc: 4618 mov r0, r3 128fe: 2129 movs r1, #41 ; 0x29 12900: 47b8 blx r7 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 12902: 6820 ldr r0, [r4, #0] 12904: 89a2 ldrh r2, [r4, #12] 12906: f240 1129 movw r1, #297 ; 0x129 1290a: 302c adds r0, #44 ; 0x2c 1290c: 47b8 blx r7 lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); 1290e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12910: 2202 movs r2, #2 12912: f44f 7198 mov.w r1, #304 ; 0x130 12916: 302c adds r0, #44 ; 0x2c 12918: 47b0 blx r6 lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); 1291a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 1291c: 2204 movs r2, #4 1291e: f240 1131 movw r1, #305 ; 0x131 12922: 302c adds r0, #44 ; 0x2c 12924: 47b0 blx r6 lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 12926: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12928: 89a2 ldrh r2, [r4, #12] 1292a: f240 1139 movw r1, #313 ; 0x139 1292e: 302c adds r0, #44 ; 0x2c 12930: 47b8 blx r7 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 12932: 6823 ldr r3, [r4, #0] 12934: 2000 movs r0, #0 12936: 332c adds r3, #44 ; 0x2c 12938: ee08 3a10 vmov s16, r3 1293c: 47a8 blx r5 1293e: eb00 0040 add.w r0, r0, r0, lsl #1 12942: 28ef cmp r0, #239 ; 0xef 12944: f341 815d ble.w 13c02 12948: 2000 movs r0, #0 1294a: 47a8 blx r5 1294c: 2103 movs r1, #3 1294e: 2350 movs r3, #80 ; 0x50 12950: fb00 3001 mla r0, r0, r1, r3 12954: 22a0 movs r2, #160 ; 0xa0 12956: fb90 f2f2 sdiv r2, r0, r2 1295a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1295c: ee18 0a10 vmov r0, s16 12960: 2114 movs r1, #20 12962: 47b0 blx r6 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 12964: 6823 ldr r3, [r4, #0] 12966: 2000 movs r0, #0 12968: 332c adds r3, #44 ; 0x2c 1296a: ee08 3a10 vmov s16, r3 1296e: 47c0 blx r8 12970: 2801 cmp r0, #1 12972: f04f 0000 mov.w r0, #0 12976: f201 8153 bhi.w 13c20 1297a: 47a8 blx r5 1297c: ebc0 1000 rsb r0, r0, r0, lsl #4 12980: 28ef cmp r0, #239 ; 0xef 12982: f301 8141 bgt.w 13c08 12986: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12988: ee18 0a10 vmov r0, s16 1298c: 2112 movs r1, #18 1298e: 47b0 blx r6 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 12990: 6823 ldr r3, [r4, #0] 12992: 2000 movs r0, #0 12994: 332c adds r3, #44 ; 0x2c 12996: ee08 3a10 vmov s16, r3 1299a: 47c0 blx r8 1299c: 2801 cmp r0, #1 1299e: f04f 0000 mov.w r0, #0 129a2: f201 8154 bhi.w 13c4e 129a6: 47a8 blx r5 129a8: ebc0 1000 rsb r0, r0, r0, lsl #4 129ac: 28ef cmp r0, #239 ; 0xef 129ae: f301 8142 bgt.w 13c36 129b2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 129b4: ee18 0a10 vmov r0, s16 129b8: 2113 movs r1, #19 129ba: 47b0 blx r6 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 129bc: 6823 ldr r3, [r4, #0] 129be: 2000 movs r0, #0 129c0: 332c adds r3, #44 ; 0x2c 129c2: ee08 3a10 vmov s16, r3 129c6: 47c0 blx r8 129c8: 2801 cmp r0, #1 129ca: f04f 0000 mov.w r0, #0 129ce: f201 8155 bhi.w 13c7c 129d2: 47a8 blx r5 129d4: ebc0 1000 rsb r0, r0, r0, lsl #4 129d8: 28ef cmp r0, #239 ; 0xef 129da: f301 8143 bgt.w 13c64 129de: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 129e0: 2111 movs r1, #17 129e2: ee18 0a10 vmov r0, s16 129e6: 47b0 blx r6 style_init_reset(&styles->cpicker_bg); 129e8: 6820 ldr r0, [r4, #0] 129ea: 3038 adds r0, #56 ; 0x38 129ec: 47c8 blx r9 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 129ee: 6823 ldr r3, [r4, #0] 129f0: 2000 movs r0, #0 129f2: f103 0838 add.w r8, r3, #56 ; 0x38 129f6: 47a8 blx r5 129f8: ebc0 1000 rsb r0, r0, r0, lsl #4 129fc: 0040 lsls r0, r0, #1 129fe: 28ef cmp r0, #239 ; 0xef 12a00: f341 8147 ble.w 13c92 12a04: 2000 movs r0, #0 12a06: 47a8 blx r5 12a08: 211e movs r1, #30 12a0a: 2350 movs r3, #80 ; 0x50 12a0c: fb00 3001 mla r0, r0, r1, r3 12a10: 22a0 movs r2, #160 ; 0xa0 12a12: fb90 f2f2 sdiv r2, r0, r2 12a16: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 12a18: 4640 mov r0, r8 12a1a: 21c0 movs r1, #192 ; 0xc0 12a1c: 47b0 blx r6 lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 12a1e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12a20: 4b5f ldr r3, [pc, #380] ; (12ba0 ) 12a22: 3038 adds r0, #56 ; 0x38 12a24: 22ff movs r2, #255 ; 0xff 12a26: 212c movs r1, #44 ; 0x2c 12a28: 4798 blx r3 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 12a2a: 6823 ldr r3, [r4, #0] 12a2c: f103 0838 add.w r8, r3, #56 ; 0x38 12a30: 6a23 ldr r3, [r4, #32] 12a32: 0798 lsls r0, r3, #30 12a34: bf4c ite mi 12a36: 485c ldrmi r0, [pc, #368] ; (12ba8 ) 12a38: 485c ldrpl r0, [pc, #368] ; (12bac ) 12a3a: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 12a3c: 2129 movs r1, #41 ; 0x29 12a3e: 4602 mov r2, r0 12a40: 4640 mov r0, r8 12a42: 47b8 blx r7 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 12a44: 6823 ldr r3, [r4, #0] 12a46: 2000 movs r0, #0 12a48: f103 0838 add.w r8, r3, #56 ; 0x38 12a4c: 47a8 blx r5 12a4e: eb00 0080 add.w r0, r0, r0, lsl #2 12a52: 0080 lsls r0, r0, #2 12a54: 28ef cmp r0, #239 ; 0xef 12a56: f341 811f ble.w 13c98 12a5a: 2000 movs r0, #0 12a5c: 47a8 blx r5 12a5e: 2114 movs r1, #20 12a60: 2350 movs r3, #80 ; 0x50 12a62: fb00 3001 mla r0, r0, r1, r3 12a66: 22a0 movs r2, #160 ; 0xa0 12a68: fb90 f2f2 sdiv r2, r0, r2 12a6c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12a6e: 4640 mov r0, r8 12a70: 2114 movs r1, #20 12a72: 47b0 blx r6 lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12a74: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12a76: f8df 8128 ldr.w r8, [pc, #296] ; 12ba0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12a7a: f647 72ff movw r2, #32767 ; 0x7fff 12a7e: 2101 movs r1, #1 12a80: 3038 adds r0, #56 ; 0x38 12a82: 47b0 blx r6 style_init_reset(&styles->cpicker_indic); 12a84: 6820 ldr r0, [r4, #0] 12a86: 303c adds r0, #60 ; 0x3c 12a88: 47c8 blx r9 lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12a8a: 6820 ldr r0, [r4, #0] 12a8c: f647 72ff movw r2, #32767 ; 0x7fff 12a90: 2101 movs r1, #1 12a92: 303c adds r0, #60 ; 0x3c 12a94: 47b0 blx r6 lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); 12a96: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 12a98: f8bb 2000 ldrh.w r2, [fp] 12a9c: 2129 movs r1, #41 ; 0x29 12a9e: 303c adds r0, #60 ; 0x3c 12aa0: 47b8 blx r7 lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 12aa2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12aa4: 22ff movs r2, #255 ; 0xff 12aa6: 212c movs r1, #44 ; 0x2c 12aa8: 303c adds r0, #60 ; 0x3c 12aaa: 47c0 blx r8 lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); 12aac: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12aae: 2202 movs r2, #2 12ab0: 2130 movs r1, #48 ; 0x30 12ab2: 303c adds r0, #60 ; 0x3c 12ab4: 47b0 blx r6 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); 12ab6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12ab8: f8bb 2002 ldrh.w r2, [fp, #2] 12abc: 2139 movs r1, #57 ; 0x39 12abe: 303c adds r0, #60 ; 0x3c 12ac0: 47b8 blx r7 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); 12ac2: 6820 ldr r0, [r4, #0] 12ac4: 89a2 ldrh r2, [r4, #12] 12ac6: f240 2139 movw r1, #569 ; 0x239 12aca: 303c adds r0, #60 ; 0x3c 12acc: 47b8 blx r7 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); 12ace: 6820 ldr r0, [r4, #0] 12ad0: 89e2 ldrh r2, [r4, #14] 12ad2: f240 4139 movw r1, #1081 ; 0x439 12ad6: 303c adds r0, #60 ; 0x3c 12ad8: 47b8 blx r7 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12ada: 6823 ldr r3, [r4, #0] 12adc: 2000 movs r0, #0 12ade: f103 0a3c add.w sl, r3, #60 ; 0x3c 12ae2: 47a8 blx r5 12ae4: eb00 0340 add.w r3, r0, r0, lsl #1 12ae8: eb00 0083 add.w r0, r0, r3, lsl #2 12aec: 28ef cmp r0, #239 ; 0xef 12aee: f341 80d6 ble.w 13c9e 12af2: 2000 movs r0, #0 12af4: 47a8 blx r5 12af6: 210d movs r1, #13 12af8: 2350 movs r3, #80 ; 0x50 12afa: fb00 3001 mla r0, r0, r1, r3 12afe: 22a0 movs r2, #160 ; 0xa0 12b00: fb90 f2f2 sdiv r2, r0, r2 12b04: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12b06: 4650 mov r0, sl 12b08: 2112 movs r1, #18 12b0a: 47b0 blx r6 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12b0c: 6823 ldr r3, [r4, #0] 12b0e: 2000 movs r0, #0 12b10: f103 0a3c add.w sl, r3, #60 ; 0x3c 12b14: 47a8 blx r5 12b16: eb00 0340 add.w r3, r0, r0, lsl #1 12b1a: eb00 0083 add.w r0, r0, r3, lsl #2 12b1e: 28ef cmp r0, #239 ; 0xef 12b20: f341 80c0 ble.w 13ca4 12b24: 2000 movs r0, #0 12b26: 47a8 blx r5 12b28: 210d movs r1, #13 12b2a: 2350 movs r3, #80 ; 0x50 12b2c: fb00 3001 mla r0, r0, r1, r3 12b30: 22a0 movs r2, #160 ; 0xa0 12b32: fb90 f2f2 sdiv r2, r0, r2 12b36: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12b38: 4650 mov r0, sl 12b3a: 2113 movs r1, #19 12b3c: 47b0 blx r6 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12b3e: 6823 ldr r3, [r4, #0] 12b40: 2000 movs r0, #0 12b42: f103 0a3c add.w sl, r3, #60 ; 0x3c 12b46: 47a8 blx r5 12b48: eb00 0340 add.w r3, r0, r0, lsl #1 12b4c: eb00 0083 add.w r0, r0, r3, lsl #2 12b50: 28ef cmp r0, #239 ; 0xef 12b52: f341 80aa ble.w 13caa 12b56: 2000 movs r0, #0 12b58: 47a8 blx r5 12b5a: 210d movs r1, #13 12b5c: 2350 movs r3, #80 ; 0x50 12b5e: fb00 3001 mla r0, r0, r1, r3 12b62: 22a0 movs r2, #160 ; 0xa0 12b64: fb90 f2f2 sdiv r2, r0, r2 12b68: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12b6a: 4650 mov r0, sl 12b6c: 2110 movs r1, #16 12b6e: 47b0 blx r6 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12b70: 6823 ldr r3, [r4, #0] 12b72: 2000 movs r0, #0 12b74: f103 0a3c add.w sl, r3, #60 ; 0x3c 12b78: 47a8 blx r5 12b7a: eb00 0340 add.w r3, r0, r0, lsl #1 12b7e: eb00 0083 add.w r0, r0, r3, lsl #2 12b82: 28ef cmp r0, #239 ; 0xef 12b84: f341 8094 ble.w 13cb0 12b88: 2000 movs r0, #0 12b8a: 47a8 blx r5 12b8c: 210d movs r1, #13 12b8e: 2350 movs r3, #80 ; 0x50 12b90: fb00 3001 mla r0, r0, r1, r3 12b94: 22a0 movs r2, #160 ; 0xa0 12b96: fb90 f2f2 sdiv r2, r0, r2 12b9a: b212 sxth r2, r2 12b9c: e008 b.n 12bb0 12b9e: bf00 nop 12ba0: 00005a15 .word 0x00005a15 12ba4: 00666666 .word 0x00666666 12ba8: 00eaeff3 .word 0x00eaeff3 12bac: 00444b5a .word 0x00444b5a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12bb0: 2111 movs r1, #17 12bb2: 4650 mov r0, sl 12bb4: 47b0 blx r6 style_init_reset(&styles->cb_bg); 12bb6: 6820 ldr r0, [r4, #0] 12bb8: 304c adds r0, #76 ; 0x4c 12bba: 47c8 blx r9 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 12bbc: 6823 ldr r3, [r4, #0] 12bbe: 2000 movs r0, #0 12bc0: f103 094c add.w r9, r3, #76 ; 0x4c 12bc4: 47a8 blx r5 12bc6: 283b cmp r0, #59 ; 0x3b 12bc8: f341 8075 ble.w 13cb6 12bcc: 2000 movs r0, #0 12bce: 47a8 blx r5 12bd0: 2228 movs r2, #40 ; 0x28 12bd2: 3014 adds r0, #20 12bd4: fb90 f2f2 sdiv r2, r0, r2 12bd8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12bda: 4648 mov r0, r9 12bdc: 2101 movs r1, #1 12bde: 47b0 blx r6 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 12be0: 6823 ldr r3, [r4, #0] 12be2: 2000 movs r0, #0 12be4: f103 094c add.w r9, r3, #76 ; 0x4c 12be8: 47a8 blx r5 12bea: eb00 0080 add.w r0, r0, r0, lsl #2 12bee: 0040 lsls r0, r0, #1 12bf0: 28ef cmp r0, #239 ; 0xef 12bf2: f341 8063 ble.w 13cbc 12bf6: 2000 movs r0, #0 12bf8: 47a8 blx r5 12bfa: 210a movs r1, #10 12bfc: 2350 movs r3, #80 ; 0x50 12bfe: fb00 3001 mla r0, r0, r1, r3 12c02: 22a0 movs r2, #160 ; 0xa0 12c04: fb90 f2f2 sdiv r2, r0, r2 12c08: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12c0a: 2114 movs r1, #20 12c0c: 4648 mov r0, r9 12c0e: 47b0 blx r6 lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); 12c10: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 12c12: 89a2 ldrh r2, [r4, #12] 12c14: 2149 movs r1, #73 ; 0x49 12c16: 304c adds r0, #76 ; 0x4c 12c18: 47b8 blx r7 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 12c1a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 12c1c: 214c movs r1, #76 ; 0x4c 12c1e: 4408 add r0, r1 12c20: 2200 movs r2, #0 12c22: 47c0 blx r8 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); 12c24: 6820 ldr r0, [r4, #0] 12c26: 227f movs r2, #127 ; 0x7f 12c28: f44f 7113 mov.w r1, #588 ; 0x24c 12c2c: 304c adds r0, #76 ; 0x4c 12c2e: 47c0 blx r8 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 12c30: 2000 movs r0, #0 12c32: 6824 ldr r4, [r4, #0] 12c34: 47a8 blx r5 12c36: eb00 0040 add.w r0, r0, r0, lsl #1 12c3a: 28ef cmp r0, #239 ; 0xef 12c3c: f104 044c add.w r4, r4, #76 ; 0x4c 12c40: f341 803f ble.w 13cc2 12c44: 2000 movs r0, #0 12c46: 47a8 blx r5 12c48: 2103 movs r1, #3 12c4a: 2350 movs r3, #80 ; 0x50 12c4c: fb00 3001 mla r0, r0, r1, r3 12c50: 22a0 movs r2, #160 ; 0xa0 12c52: fb90 f2f2 sdiv r2, r0, r2 12c56: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 12c58: 4620 mov r0, r4 12c5a: 2140 movs r1, #64 ; 0x40 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 12c5c: 4cbe ldr r4, [pc, #760] ; (12f58 ) 12c5e: 47b0 blx r6 12c60: 2000 movs r0, #0 12c62: 6827 ldr r7, [r4, #0] 12c64: 47a8 blx r5 12c66: eb00 0080 add.w r0, r0, r0, lsl #2 12c6a: 0040 lsls r0, r0, #1 12c6c: 28ef cmp r0, #239 ; 0xef 12c6e: f107 074c add.w r7, r7, #76 ; 0x4c 12c72: f341 8029 ble.w 13cc8 12c76: 2000 movs r0, #0 12c78: 47a8 blx r5 12c7a: 210a movs r1, #10 12c7c: 2350 movs r3, #80 ; 0x50 12c7e: fb00 3001 mla r0, r0, r1, r3 12c82: 22a0 movs r2, #160 ; 0xa0 12c84: fb90 f2f2 sdiv r2, r0, r2 12c88: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 12c8a: 4638 mov r0, r7 12c8c: 2141 movs r1, #65 ; 0x41 12c8e: 47b0 blx r6 lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 12c90: 6820 ldr r0, [r4, #0] style_init_reset(&styles->cb_bullet); 12c92: 4fb2 ldr r7, [pc, #712] ; (12f5c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 12c94: 2296 movs r2, #150 ; 0x96 12c96: 21b0 movs r1, #176 ; 0xb0 12c98: 304c adds r0, #76 ; 0x4c 12c9a: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 12c9c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 12c9e: 224c movs r2, #76 ; 0x4c 12ca0: 4410 add r0, r2 12ca2: 21b7 movs r1, #183 ; 0xb7 12ca4: 47b0 blx r6 style_init_reset(&styles->cb_bullet); 12ca6: 6820 ldr r0, [r4, #0] lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 12ca8: 4ead ldr r6, [pc, #692] ; (12f60 ) style_init_reset(&styles->cb_bullet); 12caa: 3050 adds r0, #80 ; 0x50 12cac: 47b8 blx r7 lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); 12cae: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 12cb0: 2200 movs r2, #0 12cb2: f44f 7113 mov.w r1, #588 ; 0x24c 12cb6: 3050 adds r0, #80 ; 0x50 12cb8: 47c0 blx r8 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 12cba: 2000 movs r0, #0 12cbc: 6825 ldr r5, [r4, #0] 12cbe: 47b0 blx r6 12cc0: 283b cmp r0, #59 ; 0x3b 12cc2: f105 0550 add.w r5, r5, #80 ; 0x50 12cc6: 46ba mov sl, r7 12cc8: 46b1 mov r9, r6 12cca: f341 8013 ble.w 13cf4 12cce: 2000 movs r0, #0 12cd0: 47b0 blx r6 12cd2: 2228 movs r2, #40 ; 0x28 12cd4: 3014 adds r0, #20 12cd6: fb90 f2f2 sdiv r2, r0, r2 12cda: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12cdc: 4628 mov r0, r5 12cde: 2101 movs r1, #1 12ce0: 4da0 ldr r5, [pc, #640] ; (12f64 ) _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 12ce2: 4fa1 ldr r7, [pc, #644] ; (12f68 ) _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 12ce4: 4ea1 ldr r6, [pc, #644] ; (12f6c ) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12ce6: 47a8 blx r5 lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); 12ce8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 12cea: 4aa1 ldr r2, [pc, #644] ; (12f70 ) 12cec: f44f 71b7 mov.w r1, #366 ; 0x16e 12cf0: 3050 adds r0, #80 ; 0x50 12cf2: 47b8 blx r7 lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); 12cf4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 12cf6: f8bb 2000 ldrh.w r2, [fp] 12cfa: f240 1169 movw r1, #361 ; 0x169 12cfe: 3050 adds r0, #80 ; 0x50 12d00: 47b0 blx r6 lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); 12d02: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 12d04: 6922 ldr r2, [r4, #16] 12d06: f248 118e movw r1, #33166 ; 0x818e 12d0a: 3050 adds r0, #80 ; 0x50 12d0c: 47b8 blx r7 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12d0e: 2000 movs r0, #0 12d10: 6827 ldr r7, [r4, #0] 12d12: 47c8 blx r9 12d14: eb00 0040 add.w r0, r0, r0, lsl #1 12d18: 28ef cmp r0, #239 ; 0xef 12d1a: f107 0750 add.w r7, r7, #80 ; 0x50 12d1e: f340 87ec ble.w 13cfa 12d22: 2000 movs r0, #0 12d24: 47c8 blx r9 12d26: 2103 movs r1, #3 12d28: 2350 movs r3, #80 ; 0x50 12d2a: fb00 3001 mla r0, r0, r1, r3 12d2e: 22a0 movs r2, #160 ; 0xa0 12d30: fb90 f2f2 sdiv r2, r0, r2 12d34: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12d36: 4638 mov r0, r7 12d38: 2112 movs r1, #18 12d3a: 47a8 blx r5 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12d3c: 2000 movs r0, #0 12d3e: 6827 ldr r7, [r4, #0] 12d40: 47c8 blx r9 12d42: eb00 0040 add.w r0, r0, r0, lsl #1 12d46: 28ef cmp r0, #239 ; 0xef 12d48: f107 0750 add.w r7, r7, #80 ; 0x50 12d4c: f340 87d8 ble.w 13d00 12d50: 2000 movs r0, #0 12d52: 47c8 blx r9 12d54: 2103 movs r1, #3 12d56: 2350 movs r3, #80 ; 0x50 12d58: fb00 3001 mla r0, r0, r1, r3 12d5c: 22a0 movs r2, #160 ; 0xa0 12d5e: fb90 f2f2 sdiv r2, r0, r2 12d62: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12d64: 4638 mov r0, r7 12d66: 2113 movs r1, #19 12d68: 47a8 blx r5 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12d6a: 2000 movs r0, #0 12d6c: 6827 ldr r7, [r4, #0] 12d6e: 47c8 blx r9 12d70: eb00 0040 add.w r0, r0, r0, lsl #1 12d74: 28ef cmp r0, #239 ; 0xef 12d76: f107 0750 add.w r7, r7, #80 ; 0x50 12d7a: f340 87c4 ble.w 13d06 12d7e: 2000 movs r0, #0 12d80: 47c8 blx r9 12d82: 2103 movs r1, #3 12d84: 2350 movs r3, #80 ; 0x50 12d86: fb00 3001 mla r0, r0, r1, r3 12d8a: 22a0 movs r2, #160 ; 0xa0 12d8c: fb90 f2f2 sdiv r2, r0, r2 12d90: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12d92: 4638 mov r0, r7 12d94: 2110 movs r1, #16 12d96: 47a8 blx r5 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12d98: 2000 movs r0, #0 12d9a: 6827 ldr r7, [r4, #0] 12d9c: 47c8 blx r9 12d9e: eb00 0040 add.w r0, r0, r0, lsl #1 12da2: 28ef cmp r0, #239 ; 0xef 12da4: f107 0750 add.w r7, r7, #80 ; 0x50 12da8: f340 87b0 ble.w 13d0c 12dac: 2000 movs r0, #0 12dae: 47c8 blx r9 12db0: 2103 movs r1, #3 12db2: 2350 movs r3, #80 ; 0x50 12db4: fb00 3001 mla r0, r0, r1, r3 12db8: 22a0 movs r2, #160 ; 0xa0 12dba: fb90 f2f2 sdiv r2, r0, r2 12dbe: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12dc0: 2111 movs r1, #17 12dc2: 4638 mov r0, r7 12dc4: 47a8 blx r5 style_init_reset(&styles->kb_bg); 12dc6: 6820 ldr r0, [r4, #0] 12dc8: 3068 adds r0, #104 ; 0x68 12dca: 47d0 blx sl lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); 12dcc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12dce: 2200 movs r2, #0 12dd0: 2101 movs r1, #1 12dd2: 3068 adds r0, #104 ; 0x68 12dd4: 47a8 blx r5 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 12dd6: 2000 movs r0, #0 12dd8: 6827 ldr r7, [r4, #0] 12dda: 47c8 blx r9 12ddc: 283b cmp r0, #59 ; 0x3b 12dde: f107 0768 add.w r7, r7, #104 ; 0x68 12de2: f340 8796 ble.w 13d12 12de6: 2000 movs r0, #0 12de8: 47c8 blx r9 12dea: 2228 movs r2, #40 ; 0x28 12dec: 3014 adds r0, #20 12dee: fb90 f2f2 sdiv r2, r0, r2 12df2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12df4: 4638 mov r0, r7 12df6: 2130 movs r1, #48 ; 0x30 12df8: 47a8 blx r5 lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); 12dfa: 6820 ldr r0, [r4, #0] 12dfc: 4f5d ldr r7, [pc, #372] ; (12f74 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 12dfe: 2202 movs r2, #2 12e00: 2131 movs r1, #49 ; 0x31 12e02: 3068 adds r0, #104 ; 0x68 12e04: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 12e06: 6823 ldr r3, [r4, #0] 12e08: f103 0b68 add.w fp, r3, #104 ; 0x68 12e0c: 6a23 ldr r3, [r4, #32] 12e0e: f013 0302 ands.w r3, r3, #2 12e12: f000 8781 beq.w 13d18 12e16: 4858 ldr r0, [pc, #352] ; (12f78 ) 12e18: 47b8 blx r7 12e1a: f000 021f and.w r2, r0, #31 12e1e: f3c0 1145 ubfx r1, r0, #5, #6 12e22: f3c0 23c4 ubfx r3, r0, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12e26: ea42 1241 orr.w r2, r2, r1, lsl #5 12e2a: ea42 22c3 orr.w r2, r2, r3, lsl #11 12e2e: 4658 mov r0, fp 12e30: 2139 movs r1, #57 ; 0x39 12e32: 47b0 blx r6 lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); 12e34: 6820 ldr r0, [r4, #0] 12e36: 89e2 ldrh r2, [r4, #14] 12e38: f240 4139 movw r1, #1081 ; 0x439 12e3c: 3068 adds r0, #104 ; 0x68 12e3e: 47b0 blx r6 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12e40: 6823 ldr r3, [r4, #0] 12e42: 2000 movs r0, #0 12e44: f103 0b68 add.w fp, r3, #104 ; 0x68 12e48: 47c8 blx r9 12e4a: eb00 0080 add.w r0, r0, r0, lsl #2 12e4e: 28ef cmp r0, #239 ; 0xef 12e50: f340 8766 ble.w 13d20 12e54: 2000 movs r0, #0 12e56: 47c8 blx r9 12e58: 2105 movs r1, #5 12e5a: 2350 movs r3, #80 ; 0x50 12e5c: fb00 3001 mla r0, r0, r1, r3 12e60: 22a0 movs r2, #160 ; 0xa0 12e62: fb90 f2f2 sdiv r2, r0, r2 12e66: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12e68: 4658 mov r0, fp 12e6a: 2112 movs r1, #18 12e6c: 47a8 blx r5 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12e6e: 6823 ldr r3, [r4, #0] 12e70: 2000 movs r0, #0 12e72: f103 0b68 add.w fp, r3, #104 ; 0x68 12e76: 47c8 blx r9 12e78: eb00 0080 add.w r0, r0, r0, lsl #2 12e7c: 28ef cmp r0, #239 ; 0xef 12e7e: f340 8752 ble.w 13d26 12e82: 2000 movs r0, #0 12e84: 47c8 blx r9 12e86: 2105 movs r1, #5 12e88: 2350 movs r3, #80 ; 0x50 12e8a: fb00 3001 mla r0, r0, r1, r3 12e8e: 22a0 movs r2, #160 ; 0xa0 12e90: fb90 f2f2 sdiv r2, r0, r2 12e94: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12e96: 4658 mov r0, fp 12e98: 2113 movs r1, #19 12e9a: 47a8 blx r5 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12e9c: 6823 ldr r3, [r4, #0] 12e9e: 2000 movs r0, #0 12ea0: f103 0b68 add.w fp, r3, #104 ; 0x68 12ea4: 47c8 blx r9 12ea6: eb00 0080 add.w r0, r0, r0, lsl #2 12eaa: 28ef cmp r0, #239 ; 0xef 12eac: f340 873e ble.w 13d2c 12eb0: 2000 movs r0, #0 12eb2: 47c8 blx r9 12eb4: 2105 movs r1, #5 12eb6: 2350 movs r3, #80 ; 0x50 12eb8: fb00 3001 mla r0, r0, r1, r3 12ebc: 22a0 movs r2, #160 ; 0xa0 12ebe: fb90 f2f2 sdiv r2, r0, r2 12ec2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12ec4: 4658 mov r0, fp 12ec6: 2110 movs r1, #16 12ec8: 47a8 blx r5 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12eca: 6823 ldr r3, [r4, #0] 12ecc: 2000 movs r0, #0 12ece: f103 0b68 add.w fp, r3, #104 ; 0x68 12ed2: 47c8 blx r9 12ed4: eb00 0080 add.w r0, r0, r0, lsl #2 12ed8: 28ef cmp r0, #239 ; 0xef 12eda: f340 872a ble.w 13d32 12ede: 2000 movs r0, #0 12ee0: 47c8 blx r9 12ee2: 2105 movs r1, #5 12ee4: 2350 movs r3, #80 ; 0x50 12ee6: fb00 3001 mla r0, r0, r1, r3 12eea: 22a0 movs r2, #160 ; 0xa0 12eec: fb90 f2f2 sdiv r2, r0, r2 12ef0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12ef2: 4658 mov r0, fp 12ef4: 2111 movs r1, #17 12ef6: 47a8 blx r5 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 12ef8: 6823 ldr r3, [r4, #0] 12efa: 2000 movs r0, #0 12efc: f103 0b68 add.w fp, r3, #104 ; 0x68 12f00: 47c8 blx r9 12f02: eb00 0040 add.w r0, r0, r0, lsl #1 12f06: 28ef cmp r0, #239 ; 0xef 12f08: f340 8716 ble.w 13d38 12f0c: 2000 movs r0, #0 12f0e: 47c8 blx r9 12f10: 2103 movs r1, #3 12f12: 2350 movs r3, #80 ; 0x50 12f14: fb00 3001 mla r0, r0, r1, r3 12f18: 22a0 movs r2, #160 ; 0xa0 12f1a: fb90 f2f2 sdiv r2, r0, r2 12f1e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12f20: 2114 movs r1, #20 12f22: 4658 mov r0, fp 12f24: 47a8 blx r5 style_init_reset(&styles->mbox_bg); 12f26: 6820 ldr r0, [r4, #0] 12f28: 307c adds r0, #124 ; 0x7c 12f2a: 47d0 blx sl lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 12f2c: 6823 ldr r3, [r4, #0] 12f2e: 2000 movs r0, #0 12f30: f103 0b7c add.w fp, r3, #124 ; 0x7c 12f34: 47c8 blx r9 12f36: 2132 movs r1, #50 ; 0x32 12f38: 4348 muls r0, r1 12f3a: 28ef cmp r0, #239 ; 0xef 12f3c: f340 86ff ble.w 13d3e 12f40: 2000 movs r0, #0 12f42: 47c8 blx r9 12f44: 2350 movs r3, #80 ; 0x50 12f46: 2132 movs r1, #50 ; 0x32 12f48: fb00 3001 mla r0, r0, r1, r3 12f4c: 22a0 movs r2, #160 ; 0xa0 12f4e: fb90 f2f2 sdiv r2, r0, r2 12f52: b212 sxth r2, r2 12f54: e012 b.n 12f7c 12f56: bf00 nop 12f58: 2000c7d4 .word 0x2000c7d4 12f5c: 00010b1d .word 0x00010b1d 12f60: 0000d995 .word 0x0000d995 12f64: 00005875 .word 0x00005875 12f68: 00005ae9 .word 0x00005ae9 12f6c: 00005945 .word 0x00005945 12f70: 000242b2 .word 0x000242b2 12f74: 00010efd .word 0x00010efd 12f78: 003b3e42 .word 0x003b3e42 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 12f7c: 2150 movs r1, #80 ; 0x50 12f7e: 4658 mov r0, fp 12f80: 47a8 blx r5 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 12f82: 6823 ldr r3, [r4, #0] 12f84: f103 0b7c add.w fp, r3, #124 ; 0x7c 12f88: 6a23 ldr r3, [r4, #32] 12f8a: 0799 lsls r1, r3, #30 12f8c: f140 86da bpl.w 13d44 12f90: 4bb5 ldr r3, [pc, #724] ; (13268 ) 12f92: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 12f94: 2159 movs r1, #89 ; 0x59 12f96: 4658 mov r0, fp 12f98: 47b0 blx r6 style_init_reset(&styles->sb); 12f9a: 6820 ldr r0, [r4, #0] 12f9c: 3080 adds r0, #128 ; 0x80 12f9e: 47d0 blx sl lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); 12fa0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12fa2: 22ff movs r2, #255 ; 0xff 12fa4: 3080 adds r0, #128 ; 0x80 12fa6: 212c movs r1, #44 ; 0x2c 12fa8: 47c0 blx r8 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 12faa: 6823 ldr r3, [r4, #0] 12fac: f103 0b80 add.w fp, r3, #128 ; 0x80 12fb0: 6a23 ldr r3, [r4, #32] 12fb2: 079a lsls r2, r3, #30 12fb4: bf4c ite mi 12fb6: 48ad ldrmi r0, [pc, #692] ; (1326c ) 12fb8: 48ad ldrpl r0, [pc, #692] ; (13270 ) 12fba: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 12fbc: 2129 movs r1, #41 ; 0x29 12fbe: 4602 mov r2, r0 12fc0: 4658 mov r0, fp 12fc2: 47b0 blx r6 lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12fc4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12fc6: f647 72ff movw r2, #32767 ; 0x7fff 12fca: 2101 movs r1, #1 12fcc: 3080 adds r0, #128 ; 0x80 12fce: 47a8 blx r5 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 12fd0: 6823 ldr r3, [r4, #0] 12fd2: 2000 movs r0, #0 12fd4: f103 0b80 add.w fp, r3, #128 ; 0x80 12fd8: 47c8 blx r9 12fda: ebc0 00c0 rsb r0, r0, r0, lsl #3 12fde: 28ef cmp r0, #239 ; 0xef 12fe0: f340 86b7 ble.w 13d52 12fe4: 2000 movs r0, #0 12fe6: 47c8 blx r9 12fe8: 2107 movs r1, #7 12fea: 2350 movs r3, #80 ; 0x50 12fec: fb00 3001 mla r0, r0, r1, r3 12ff0: 22a0 movs r2, #160 ; 0xa0 12ff2: fb90 f2f2 sdiv r2, r0, r2 12ff6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 12ff8: 4658 mov r0, fp 12ffa: 2103 movs r1, #3 12ffc: 47a8 blx r5 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 12ffe: 6823 ldr r3, [r4, #0] 13000: 2000 movs r0, #0 13002: f103 0b80 add.w fp, r3, #128 ; 0x80 13006: 47c8 blx r9 13008: ebc0 00c0 rsb r0, r0, r0, lsl #3 1300c: 28ef cmp r0, #239 ; 0xef 1300e: f340 86a3 ble.w 13d58 13012: 2000 movs r0, #0 13014: 47c8 blx r9 13016: 2107 movs r1, #7 13018: 2350 movs r3, #80 ; 0x50 1301a: fb00 3001 mla r0, r0, r1, r3 1301e: 22a0 movs r2, #160 ; 0xa0 13020: fb90 f2f2 sdiv r2, r0, r2 13024: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13026: 4658 mov r0, fp 13028: 2113 movs r1, #19 1302a: 47a8 blx r5 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 1302c: 6823 ldr r3, [r4, #0] 1302e: 2000 movs r0, #0 13030: f103 0b80 add.w fp, r3, #128 ; 0x80 13034: 47c8 blx r9 13036: ebc0 00c0 rsb r0, r0, r0, lsl #3 1303a: 28ef cmp r0, #239 ; 0xef 1303c: f340 868f ble.w 13d5e 13040: 2000 movs r0, #0 13042: 47c8 blx r9 13044: 2107 movs r1, #7 13046: 2350 movs r3, #80 ; 0x50 13048: fb00 3001 mla r0, r0, r1, r3 1304c: 22a0 movs r2, #160 ; 0xa0 1304e: fb90 f2f2 sdiv r2, r0, r2 13052: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13054: 2111 movs r1, #17 13056: 4658 mov r0, fp 13058: 47a8 blx r5 style_init_reset(&styles->edge_flash); 1305a: 6820 ldr r0, [r4, #0] 1305c: 3084 adds r0, #132 ; 0x84 1305e: 47d0 blx sl lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); 13060: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 13062: 22ff movs r2, #255 ; 0xff 13064: 212c movs r1, #44 ; 0x2c 13066: 3084 adds r0, #132 ; 0x84 13068: 47c0 blx r8 lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1306a: 6823 ldr r3, [r4, #0] 1306c: f640 0088 movw r0, #2184 ; 0x888 13070: f103 0b84 add.w fp, r3, #132 ; 0x84 13074: 4b7f ldr r3, [pc, #508] ; (13274 ) 13076: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13078: 2129 movs r1, #41 ; 0x29 1307a: 4602 mov r2, r0 1307c: 4658 mov r0, fp 1307e: 47b0 blx r6 style_init_reset(&styles->ta_cursor); 13080: 6820 ldr r0, [r4, #0] 13082: 30b4 adds r0, #180 ; 0xb4 13084: 47d0 blx sl lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 13086: 6822 ldr r2, [r4, #0] 13088: 4b7a ldr r3, [pc, #488] ; (13274 ) 1308a: 9301 str r3, [sp, #4] 1308c: f102 0bb4 add.w fp, r2, #180 ; 0xb4 13090: 6a22 ldr r2, [r4, #32] 13092: f012 0f02 tst.w r2, #2 13096: bf14 ite ne 13098: 4877 ldrne r0, [pc, #476] ; (13278 ) 1309a: 4878 ldreq r0, [pc, #480] ; (1327c ) 1309c: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1309e: 2139 movs r1, #57 ; 0x39 130a0: 4602 mov r2, r0 130a2: 4658 mov r0, fp 130a4: 47b0 blx r6 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 130a6: 6823 ldr r3, [r4, #0] 130a8: 2000 movs r0, #0 130aa: f103 0bb4 add.w fp, r3, #180 ; 0xb4 130ae: 47c8 blx r9 130b0: 2877 cmp r0, #119 ; 0x77 130b2: f340 8657 ble.w 13d64 130b6: 2000 movs r0, #0 130b8: 47c8 blx r9 130ba: 2250 movs r2, #80 ; 0x50 130bc: 3028 adds r0, #40 ; 0x28 130be: fb90 f2f2 sdiv r2, r0, r2 130c2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 130c4: 4658 mov r0, fp 130c6: 2130 movs r1, #48 ; 0x30 130c8: 47a8 blx r5 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 130ca: 6823 ldr r3, [r4, #0] 130cc: 2000 movs r0, #0 130ce: f103 0bb4 add.w fp, r3, #180 ; 0xb4 130d2: 47c8 blx r9 130d4: 28ef cmp r0, #239 ; 0xef 130d6: f340 8648 ble.w 13d6a 130da: 2000 movs r0, #0 130dc: 47c8 blx r9 130de: 22a0 movs r2, #160 ; 0xa0 130e0: 3050 adds r0, #80 ; 0x50 130e2: fb90 f2f2 sdiv r2, r0, r2 130e6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 130e8: 4658 mov r0, fp 130ea: 2112 movs r1, #18 130ec: 47a8 blx r5 lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); 130ee: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 130f0: 2204 movs r2, #4 130f2: 2131 movs r1, #49 ; 0x31 130f4: 30b4 adds r0, #180 ; 0xb4 130f6: 47a8 blx r5 style_init_reset(&styles->ta_placeholder); 130f8: 6820 ldr r0, [r4, #0] 130fa: 30b8 adds r0, #184 ; 0xb8 130fc: 47d0 blx sl lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 130fe: 6823 ldr r3, [r4, #0] 13100: f103 0bb8 add.w fp, r3, #184 ; 0xb8 13104: 6a23 ldr r3, [r4, #32] 13106: 079b lsls r3, r3, #30 13108: f140 8632 bpl.w 13d70 1310c: 9b01 ldr r3, [sp, #4] 1310e: f640 20aa movw r0, #2730 ; 0xaaa 13112: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13114: 4602 mov r2, r0 13116: f248 0189 movw r1, #32905 ; 0x8089 1311a: 4658 mov r0, fp 1311c: 47b0 blx r6 style_init_reset(&styles->spinbox_cursor); 1311e: 6820 ldr r0, [r4, #0] 13120: 3098 adds r0, #152 ; 0x98 13122: 47d0 blx sl lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); 13124: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 13126: 22ff movs r2, #255 ; 0xff 13128: 212c movs r1, #44 ; 0x2c 1312a: 3098 adds r0, #152 ; 0x98 1312c: 47c0 blx r8 lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); 1312e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13130: 89a2 ldrh r2, [r4, #12] 13132: 2129 movs r1, #41 ; 0x29 13134: 3098 adds r0, #152 ; 0x98 13136: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13138: 4b4b ldr r3, [pc, #300] ; (13268 ) lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); 1313a: 6820 ldr r0, [r4, #0] 1313c: 881a ldrh r2, [r3, #0] 1313e: f248 0189 movw r1, #32905 ; 0x8089 13142: 3098 adds r0, #152 ; 0x98 13144: 47b0 blx r6 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13146: 6823 ldr r3, [r4, #0] 13148: 2000 movs r0, #0 1314a: f103 0898 add.w r8, r3, #152 ; 0x98 1314e: 47c8 blx r9 13150: f04f 0b64 mov.w fp, #100 ; 0x64 13154: fb00 f00b mul.w r0, r0, fp 13158: 28ef cmp r0, #239 ; 0xef 1315a: f340 860d ble.w 13d78 1315e: 2000 movs r0, #0 13160: 47c8 blx r9 13162: 2350 movs r3, #80 ; 0x50 13164: fb00 300b mla r0, r0, fp, r3 13168: 22a0 movs r2, #160 ; 0xa0 1316a: fb90 f2f2 sdiv r2, r0, r2 1316e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13170: 4640 mov r0, r8 13172: 2110 movs r1, #16 13174: 47a8 blx r5 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13176: 6823 ldr r3, [r4, #0] 13178: 2000 movs r0, #0 1317a: f103 0898 add.w r8, r3, #152 ; 0x98 1317e: 47c8 blx r9 13180: f04f 0b64 mov.w fp, #100 ; 0x64 13184: fb00 f00b mul.w r0, r0, fp 13188: 28ef cmp r0, #239 ; 0xef 1318a: f340 85f8 ble.w 13d7e 1318e: 2000 movs r0, #0 13190: 47c8 blx r9 13192: 2350 movs r3, #80 ; 0x50 13194: fb00 300b mla r0, r0, fp, r3 13198: 22a0 movs r2, #160 ; 0xa0 1319a: fb90 f2f2 sdiv r2, r0, r2 1319e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 131a0: 2111 movs r1, #17 131a2: 4640 mov r0, r8 131a4: 47a8 blx r5 style_init_reset(&styles->list_bg); 131a6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 131a8: f8df 90e0 ldr.w r9, [pc, #224] ; 1328c 131ac: 3074 adds r0, #116 ; 0x74 131ae: 47d0 blx sl lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); 131b0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 131b2: 2201 movs r2, #1 131b4: 2102 movs r1, #2 131b6: 3074 adds r0, #116 ; 0x74 131b8: 47a8 blx r5 lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); 131ba: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 131bc: 2200 movs r2, #0 131be: 2112 movs r1, #18 131c0: 3074 adds r0, #116 ; 0x74 131c2: 47a8 blx r5 lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); 131c4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 131c6: 2200 movs r2, #0 131c8: 2113 movs r1, #19 131ca: 3074 adds r0, #116 ; 0x74 131cc: 47a8 blx r5 lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); 131ce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 131d0: 2200 movs r2, #0 131d2: 2110 movs r1, #16 131d4: 3074 adds r0, #116 ; 0x74 131d6: 47a8 blx r5 lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); 131d8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 131da: 2200 movs r2, #0 131dc: 2111 movs r1, #17 131de: 3074 adds r0, #116 ; 0x74 131e0: 47a8 blx r5 lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); 131e2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 131e4: 2200 movs r2, #0 131e6: 2114 movs r1, #20 131e8: 3074 adds r0, #116 ; 0x74 131ea: 47a8 blx r5 style_init_reset(&styles->list_btn); 131ec: 6820 ldr r0, [r4, #0] 131ee: 3078 adds r0, #120 ; 0x78 131f0: 47d0 blx sl lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); 131f2: 6820 ldr r0, [r4, #0] 131f4: f8df a07c ldr.w sl, [pc, #124] ; 13274 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 131f8: 3078 adds r0, #120 ; 0x78 131fa: 22ff movs r2, #255 ; 0xff 131fc: 212c movs r1, #44 ; 0x2c 131fe: 47c8 blx r9 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 13200: 6823 ldr r3, [r4, #0] 13202: f103 0878 add.w r8, r3, #120 ; 0x78 13206: 6a23 ldr r3, [r4, #32] 13208: 0798 lsls r0, r3, #30 1320a: bf54 ite pl 1320c: 481c ldrpl r0, [pc, #112] ; (13280 ) 1320e: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 13212: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13214: 2129 movs r1, #41 ; 0x29 13216: 4602 mov r2, r0 13218: 4640 mov r0, r8 1321a: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 1321c: 6823 ldr r3, [r4, #0] 1321e: f103 0878 add.w r8, r3, #120 ; 0x78 13222: 6a23 ldr r3, [r4, #32] 13224: 0799 lsls r1, r3, #30 13226: bf4c ite mi 13228: 4816 ldrmi r0, [pc, #88] ; (13284 ) 1322a: 4817 ldrpl r0, [pc, #92] ; (13288 ) 1322c: 47b8 blx r7 1322e: f241 0129 movw r1, #4137 ; 0x1029 13232: 4602 mov r2, r0 13234: 4640 mov r0, r8 13236: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 13238: 6823 ldr r3, [r4, #0] 1323a: f103 0878 add.w r8, r3, #120 ; 0x78 1323e: 6a23 ldr r3, [r4, #32] 13240: 079a lsls r2, r3, #30 13242: bf54 ite pl 13244: 480e ldrpl r0, [pc, #56] ; (13280 ) 13246: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 1324a: 47b8 blx r7 1324c: f242 0129 movw r1, #8233 ; 0x2029 13250: 4602 mov r2, r0 13252: 4640 mov r0, r8 13254: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); 13256: 6820 ldr r0, [r4, #0] 13258: 89a2 ldrh r2, [r4, #12] 1325a: f240 1129 movw r1, #297 ; 0x129 1325e: 3078 adds r0, #120 ; 0x78 13260: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); 13262: 6820 ldr r0, [r4, #0] 13264: e014 b.n 13290 13266: bf00 nop 13268: 000242b6 .word 0x000242b6 1326c: 00cccfd1 .word 0x00cccfd1 13270: 00777f85 .word 0x00777f85 13274: 00010351 .word 0x00010351 13278: 0031404f .word 0x0031404f 1327c: 00a5a8ad .word 0x00a5a8ad 13280: 00586273 .word 0x00586273 13284: 00eeeeee .word 0x00eeeeee 13288: 00494f57 .word 0x00494f57 1328c: 00005a15 .word 0x00005a15 13290: 4bba ldr r3, [pc, #744] ; (1357c ) 13292: f100 0878 add.w r8, r0, #120 ; 0x78 13296: 2133 movs r1, #51 ; 0x33 13298: 89a0 ldrh r0, [r4, #12] 1329a: 4798 blx r3 1329c: f241 1129 movw r1, #4393 ; 0x1129 132a0: 4602 mov r2, r0 132a2: 4640 mov r0, r8 132a4: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 132a6: 6823 ldr r3, [r4, #0] 132a8: f103 0878 add.w r8, r3, #120 ; 0x78 132ac: 6a23 ldr r3, [r4, #32] 132ae: 079b lsls r3, r3, #30 132b0: bf4c ite mi 132b2: 48b3 ldrmi r0, [pc, #716] ; (13580 ) 132b4: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 132b8: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 132ba: f248 0189 movw r1, #32905 ; 0x8089 132be: 4602 mov r2, r0 132c0: 4640 mov r0, r8 132c2: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 132c4: 6820 ldr r0, [r4, #0] 132c6: f100 0878 add.w r8, r0, #120 ; 0x78 132ca: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 132ce: 47b8 blx r7 132d0: f248 1189 movw r1, #33161 ; 0x8189 132d4: 4602 mov r2, r0 132d6: 4640 mov r0, r8 132d8: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 132da: 6823 ldr r3, [r4, #0] 132dc: f103 0878 add.w r8, r3, #120 ; 0x78 132e0: 6a23 ldr r3, [r4, #32] 132e2: f013 0f02 tst.w r3, #2 132e6: bf14 ite ne 132e8: f640 20aa movwne r0, #2730 ; 0xaaa 132ec: f640 1099 movweq r0, #2457 ; 0x999 132f0: 47d0 blx sl 132f2: f24a 0189 movw r1, #41097 ; 0xa089 132f6: 4602 mov r2, r0 132f8: 4640 mov r0, r8 132fa: 47b0 blx r6 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 132fc: 6823 ldr r3, [r4, #0] 132fe: f103 0878 add.w r8, r3, #120 ; 0x78 13302: 6a23 ldr r3, [r4, #32] lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 13304: 4c9f ldr r4, [pc, #636] ; (13584 ) lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 13306: 0798 lsls r0, r3, #30 13308: bf4c ite mi 1330a: 489d ldrmi r0, [pc, #628] ; (13580 ) 1330c: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 13310: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 13312: f248 01a9 movw r1, #32937 ; 0x80a9 13316: 4602 mov r2, r0 13318: 4640 mov r0, r8 1331a: 47b0 blx r6 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 1331c: 6820 ldr r0, [r4, #0] 1331e: f100 0878 add.w r8, r0, #120 ; 0x78 13322: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 13326: 47b8 blx r7 13328: f248 11a9 movw r1, #33193 ; 0x81a9 1332c: 4602 mov r2, r0 1332e: 4640 mov r0, r8 13330: 47b0 blx r6 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 13332: 6823 ldr r3, [r4, #0] 13334: f103 0878 add.w r8, r3, #120 ; 0x78 13338: 6a23 ldr r3, [r4, #32] 1333a: 0799 lsls r1, r3, #30 1333c: bf4c ite mi 1333e: f640 20aa movwmi r0, #2730 ; 0xaaa 13342: f640 1099 movwpl r0, #2457 ; 0x999 13346: 47d0 blx sl 13348: f24a 01a9 movw r1, #41129 ; 0xa0a9 1334c: 4602 mov r2, r0 1334e: 4640 mov r0, r8 13350: 47b0 blx r6 lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 13352: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 13354: 4e8c ldr r6, [pc, #560] ; (13588 ) lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13356: f8df 824c ldr.w r8, [pc, #588] ; 135a4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 1335a: 2201 movs r2, #1 1335c: 3078 adds r0, #120 ; 0x78 1335e: 2131 movs r1, #49 ; 0x31 13360: 47a8 blx r5 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 13362: 6a23 ldr r3, [r4, #32] 13364: 6825 ldr r5, [r4, #0] 13366: 079a lsls r2, r3, #30 13368: bf4c ite mi 1336a: 4888 ldrmi r0, [pc, #544] ; (1358c ) 1336c: 4888 ldrpl r0, [pc, #544] ; (13590 ) 1336e: 47b8 blx r7 13370: 3578 adds r5, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 13372: 4602 mov r2, r0 13374: 4f87 ldr r7, [pc, #540] ; (13594 ) 13376: 4628 mov r0, r5 13378: 2139 movs r1, #57 ; 0x39 1337a: 47b8 blx r7 lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); 1337c: 6820 ldr r0, [r4, #0] 1337e: 89a2 ldrh r2, [r4, #12] 13380: 4d85 ldr r5, [pc, #532] ; (13598 ) 13382: f240 2139 movw r1, #569 ; 0x239 13386: 3078 adds r0, #120 ; 0x78 13388: 47b8 blx r7 lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1); 1338a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1338c: 2201 movs r2, #1 1338e: 2130 movs r1, #48 ; 0x30 13390: 3078 adds r0, #120 ; 0x78 13392: 47b0 blx r6 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13394: 6823 ldr r3, [r4, #0] 13396: 2000 movs r0, #0 13398: f103 0b78 add.w fp, r3, #120 ; 0x78 1339c: 47c0 blx r8 1339e: 2801 cmp r0, #1 133a0: f04f 0000 mov.w r0, #0 133a4: f200 84fa bhi.w 13d9c 133a8: 47a8 blx r5 133aa: ebc0 1000 rsb r0, r0, r0, lsl #4 133ae: 28ef cmp r0, #239 ; 0xef 133b0: f300 84e8 bgt.w 13d84 133b4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 133b6: 4658 mov r0, fp 133b8: 2112 movs r1, #18 133ba: 47b0 blx r6 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 133bc: 6823 ldr r3, [r4, #0] 133be: 2000 movs r0, #0 133c0: f103 0b78 add.w fp, r3, #120 ; 0x78 133c4: 47c0 blx r8 133c6: 2801 cmp r0, #1 133c8: f04f 0000 mov.w r0, #0 133cc: f200 84fd bhi.w 13dca 133d0: 47a8 blx r5 133d2: ebc0 1000 rsb r0, r0, r0, lsl #4 133d6: 28ef cmp r0, #239 ; 0xef 133d8: f300 84eb bgt.w 13db2 133dc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 133de: 4658 mov r0, fp 133e0: 2113 movs r1, #19 133e2: 47b0 blx r6 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 133e4: 6823 ldr r3, [r4, #0] 133e6: 2000 movs r0, #0 133e8: f103 0b78 add.w fp, r3, #120 ; 0x78 133ec: 47c0 blx r8 133ee: 2801 cmp r0, #1 133f0: f04f 0000 mov.w r0, #0 133f4: f200 8500 bhi.w 13df8 133f8: 47a8 blx r5 133fa: ebc0 1000 rsb r0, r0, r0, lsl #4 133fe: 28ef cmp r0, #239 ; 0xef 13400: f300 84ee bgt.w 13de0 13404: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13406: 4658 mov r0, fp 13408: 2110 movs r1, #16 1340a: 47b0 blx r6 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1340c: 6823 ldr r3, [r4, #0] 1340e: 2000 movs r0, #0 13410: f103 0b78 add.w fp, r3, #120 ; 0x78 13414: 47c0 blx r8 13416: 2801 cmp r0, #1 13418: f04f 0000 mov.w r0, #0 1341c: f200 8503 bhi.w 13e26 13420: 47a8 blx r5 13422: ebc0 1000 rsb r0, r0, r0, lsl #4 13426: 28ef cmp r0, #239 ; 0xef 13428: f300 84f1 bgt.w 13e0e 1342c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1342e: 4658 mov r0, fp 13430: 2111 movs r1, #17 13432: 47b0 blx r6 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13434: 6823 ldr r3, [r4, #0] 13436: 2000 movs r0, #0 13438: f103 0b78 add.w fp, r3, #120 ; 0x78 1343c: 47c0 blx r8 1343e: 2801 cmp r0, #1 13440: f04f 0000 mov.w r0, #0 13444: f200 8506 bhi.w 13e54 13448: 47a8 blx r5 1344a: ebc0 1000 rsb r0, r0, r0, lsl #4 1344e: 28ef cmp r0, #239 ; 0xef 13450: f300 84f4 bgt.w 13e3c 13454: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 13456: 4658 mov r0, fp 13458: 2114 movs r1, #20 1345a: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 1345c: 6823 ldr r3, [r4, #0] 1345e: 2000 movs r0, #0 13460: f103 0b78 add.w fp, r3, #120 ; 0x78 13464: 47c0 blx r8 13466: 2801 cmp r0, #1 13468: f04f 0000 mov.w r0, #0 1346c: f200 850a bhi.w 13e84 13470: 47a8 blx r5 13472: ebc0 1000 rsb r0, r0, r0, lsl #4 13476: 28ef cmp r0, #239 ; 0xef 13478: f300 84f7 bgt.w 13e6a 1347c: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 13480: 4658 mov r0, fp 13482: 2104 movs r1, #4 13484: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0); 13486: 6820 ldr r0, [r4, #0] style_init_reset(&styles->ddlist_page); 13488: f8df b11c ldr.w fp, [pc, #284] ; 135a8 1348c: 2200 movs r2, #0 1348e: f241 0104 movw r1, #4100 ; 0x1004 13492: 3078 adds r0, #120 ; 0x78 13494: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0); 13496: 6820 ldr r0, [r4, #0] 13498: 2200 movs r2, #0 1349a: f44f 7182 mov.w r1, #260 ; 0x104 1349e: 3078 adds r0, #120 ; 0x78 134a0: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0); 134a2: 6820 ldr r0, [r4, #0] 134a4: 2200 movs r2, #0 134a6: f242 0104 movw r1, #8196 ; 0x2004 134aa: 3078 adds r0, #120 ; 0x78 134ac: 47b0 blx r6 lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); 134ae: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 134b0: 2296 movs r2, #150 ; 0x96 134b2: 21b0 movs r1, #176 ; 0xb0 134b4: 3078 adds r0, #120 ; 0x78 134b6: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 134b8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 134ba: 2229 movs r2, #41 ; 0x29 134bc: 21b7 movs r1, #183 ; 0xb7 134be: 3078 adds r0, #120 ; 0x78 134c0: 47b0 blx r6 lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); 134c2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 134c4: 2204 movs r2, #4 134c6: 21b6 movs r1, #182 ; 0xb6 134c8: 3078 adds r0, #120 ; 0x78 134ca: 47b0 blx r6 style_init_reset(&styles->ddlist_page); 134cc: 6820 ldr r0, [r4, #0] 134ce: 3054 adds r0, #84 ; 0x54 134d0: 47d8 blx fp lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 134d2: 6823 ldr r3, [r4, #0] 134d4: 2000 movs r0, #0 134d6: f103 0854 add.w r8, r3, #84 ; 0x54 134da: 47a8 blx r5 134dc: eb00 0080 add.w r0, r0, r0, lsl #2 134e0: 0080 lsls r0, r0, #2 134e2: 28ef cmp r0, #239 ; 0xef 134e4: f8cd b004 str.w fp, [sp, #4] 134e8: f340 84d7 ble.w 13e9a 134ec: 2000 movs r0, #0 134ee: 47a8 blx r5 134f0: 2114 movs r1, #20 134f2: 2350 movs r3, #80 ; 0x50 134f4: fb00 3001 mla r0, r0, r1, r3 134f8: 22a0 movs r2, #160 ; 0xa0 134fa: fb90 f2f2 sdiv r2, r0, r2 134fe: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 13500: 4640 mov r0, r8 13502: f248 0181 movw r1, #32897 ; 0x8081 13506: 47b0 blx r6 lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); 13508: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 1350a: 2201 movs r2, #1 1350c: 2102 movs r1, #2 1350e: 3054 adds r0, #84 ; 0x54 13510: 47b0 blx r6 style_init_reset(&styles->ddlist_sel); 13512: 6820 ldr r0, [r4, #0] 13514: 9b01 ldr r3, [sp, #4] 13516: 3058 adds r0, #88 ; 0x58 13518: 4798 blx r3 lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 1351a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1351c: 22ff movs r2, #255 ; 0xff 1351e: 212c movs r1, #44 ; 0x2c 13520: 3058 adds r0, #88 ; 0x58 13522: 47c8 blx r9 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); 13524: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13526: 89a2 ldrh r2, [r4, #12] 13528: 2129 movs r1, #41 ; 0x29 1352a: 3058 adds r0, #88 ; 0x58 1352c: 47b8 blx r7 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); 1352e: 6823 ldr r3, [r4, #0] 13530: f640 70ff movw r0, #4095 ; 0xfff 13534: f103 0858 add.w r8, r3, #88 ; 0x58 13538: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1353a: f248 0189 movw r1, #32905 ; 0x8089 1353e: 4602 mov r2, r0 13540: 4640 mov r0, r8 13542: 47b8 blx r7 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 13544: 6823 ldr r3, [r4, #0] 13546: f8df 8064 ldr.w r8, [pc, #100] ; 135ac 1354a: f103 0b58 add.w fp, r3, #88 ; 0x58 1354e: 6a23 ldr r3, [r4, #32] 13550: f013 0f02 tst.w r3, #2 13554: bf14 ite ne 13556: 4811 ldrne r0, [pc, #68] ; (1359c ) 13558: 4811 ldreq r0, [pc, #68] ; (135a0 ) 1355a: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1355c: f241 0129 movw r1, #4137 ; 0x1029 13560: 4602 mov r2, r0 13562: 4658 mov r0, fp 13564: 47b8 blx r7 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 13566: 6823 ldr r3, [r4, #0] 13568: f103 0b58 add.w fp, r3, #88 ; 0x58 1356c: 6a23 ldr r3, [r4, #32] 1356e: 079b lsls r3, r3, #30 13570: bf4c ite mi 13572: 4803 ldrmi r0, [pc, #12] ; (13580 ) 13574: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 13578: e01a b.n 135b0 1357a: bf00 nop 1357c: 0000e3d7 .word 0x0000e3d7 13580: 003b3e42 .word 0x003b3e42 13584: 2000c7d4 .word 0x2000c7d4 13588: 00005875 .word 0x00005875 1358c: 00d6dde3 .word 0x00d6dde3 13590: 00808a97 .word 0x00808a97 13594: 00005945 .word 0x00005945 13598: 0000d995 .word 0x0000d995 1359c: 00eeeeee .word 0x00eeeeee 135a0: 00494f57 .word 0x00494f57 135a4: 0000d9ad .word 0x0000d9ad 135a8: 00010b1d .word 0x00010b1d 135ac: 00010efd .word 0x00010efd 135b0: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 135b2: f249 0189 movw r1, #37001 ; 0x9089 135b6: 4602 mov r2, r0 135b8: 4658 mov r0, fp 135ba: 47b8 blx r7 style_init_reset(&styles->roller_bg); 135bc: 6820 ldr r0, [r4, #0] 135be: 9b01 ldr r3, [sp, #4] 135c0: 3088 adds r0, #136 ; 0x88 135c2: 4798 blx r3 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 135c4: 6823 ldr r3, [r4, #0] 135c6: 2000 movs r0, #0 135c8: f103 0888 add.w r8, r3, #136 ; 0x88 135cc: 47a8 blx r5 135ce: eb00 0080 add.w r0, r0, r0, lsl #2 135d2: eb00 0080 add.w r0, r0, r0, lsl #2 135d6: 28ef cmp r0, #239 ; 0xef 135d8: f340 8462 ble.w 13ea0 135dc: 2000 movs r0, #0 135de: 47a8 blx r5 135e0: 2119 movs r1, #25 135e2: 2350 movs r3, #80 ; 0x50 135e4: fb00 3001 mla r0, r0, r1, r3 135e8: 22a0 movs r2, #160 ; 0xa0 135ea: fb90 f2f2 sdiv r2, r0, r2 135ee: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 135f0: f248 0181 movw r1, #32897 ; 0x8081 135f4: 4640 mov r0, r8 135f6: 47b0 blx r6 style_init_reset(&styles->roller_sel); 135f8: 6820 ldr r0, [r4, #0] 135fa: f8df 830c ldr.w r8, [pc, #780] ; 13908 135fe: 308c adds r0, #140 ; 0x8c 13600: 47c0 blx r8 lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 13602: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 13604: 22ff movs r2, #255 ; 0xff 13606: 212c movs r1, #44 ; 0x2c 13608: 308c adds r0, #140 ; 0x8c 1360a: 47c8 blx r9 lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); 1360c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1360e: 89a2 ldrh r2, [r4, #12] 13610: 2129 movs r1, #41 ; 0x29 13612: 308c adds r0, #140 ; 0x8c 13614: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13616: 4bb5 ldr r3, [pc, #724] ; (138ec ) lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE); 13618: 6820 ldr r0, [r4, #0] 1361a: 881a ldrh r2, [r3, #0] 1361c: f248 0189 movw r1, #32905 ; 0x8089 13620: 308c adds r0, #140 ; 0x8c 13622: 47b8 blx r7 style_init_reset(&styles->tabview_btns_bg); 13624: 6820 ldr r0, [r4, #0] 13626: 30a8 adds r0, #168 ; 0xa8 13628: 47c0 blx r8 lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 1362a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1362c: 22ff movs r2, #255 ; 0xff 1362e: 30a8 adds r0, #168 ; 0xa8 13630: 212c movs r1, #44 ; 0x2c 13632: 47c8 blx r9 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 13634: 6823 ldr r3, [r4, #0] 13636: f8cd 8004 str.w r8, [sp, #4] 1363a: f103 0ba8 add.w fp, r3, #168 ; 0xa8 1363e: 6a23 ldr r3, [r4, #32] 13640: f8df 82c8 ldr.w r8, [pc, #712] ; 1390c 13644: f013 0f02 tst.w r3, #2 13648: bf0c ite eq 1364a: 48a9 ldreq r0, [pc, #676] ; (138f0 ) 1364c: f06f 407f mvnne.w r0, #4278190080 ; 0xff000000 13650: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13652: 2129 movs r1, #41 ; 0x29 13654: 4602 mov r2, r0 13656: 4658 mov r0, fp 13658: 47b8 blx r7 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 1365a: 6823 ldr r3, [r4, #0] 1365c: f103 0ba8 add.w fp, r3, #168 ; 0xa8 IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 13660: 6a23 ldr r3, [r4, #32] lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 13662: 0798 lsls r0, r3, #30 IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 13664: bf4c ite mi 13666: 48a3 ldrmi r0, [pc, #652] ; (138f4 ) 13668: 48a3 ldrpl r0, [pc, #652] ; (138f8 ) 1366a: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1366c: 2139 movs r1, #57 ; 0x39 1366e: 4602 mov r2, r0 13670: 4658 mov r0, fp 13672: 47b8 blx r7 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13674: 6823 ldr r3, [r4, #0] 13676: 2000 movs r0, #0 13678: f103 0ba8 add.w fp, r3, #168 ; 0xa8 1367c: 47a8 blx r5 1367e: eb00 0080 add.w r0, r0, r0, lsl #2 13682: 28ef cmp r0, #239 ; 0xef 13684: f340 840f ble.w 13ea6 13688: 2000 movs r0, #0 1368a: 47a8 blx r5 1368c: 2105 movs r1, #5 1368e: 2350 movs r3, #80 ; 0x50 13690: fb00 3001 mla r0, r0, r1, r3 13694: 22a0 movs r2, #160 ; 0xa0 13696: fb90 f2f2 sdiv r2, r0, r2 1369a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1369c: 4658 mov r0, fp 1369e: 2130 movs r1, #48 ; 0x30 136a0: 47b0 blx r6 lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 136a2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 136a4: 2201 movs r2, #1 136a6: 30a8 adds r0, #168 ; 0xa8 136a8: 2131 movs r1, #49 ; 0x31 136aa: 47b0 blx r6 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 136ac: 6823 ldr r3, [r4, #0] 136ae: f103 0ba8 add.w fp, r3, #168 ; 0xa8 136b2: 6a23 ldr r3, [r4, #32] 136b4: 0799 lsls r1, r3, #30 136b6: bf4c ite mi 136b8: 488f ldrmi r0, [pc, #572] ; (138f8 ) 136ba: 4890 ldrpl r0, [pc, #576] ; (138fc ) 136bc: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 136be: f248 0189 movw r1, #32905 ; 0x8089 136c2: 4602 mov r2, r0 136c4: 4658 mov r0, fp 136c6: 47b8 blx r7 lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal); 136c8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 136ca: 6962 ldr r2, [r4, #20] 136cc: 4b8c ldr r3, [pc, #560] ; (13900 ) 136ce: f248 018e movw r1, #32910 ; 0x808e 136d2: 30a8 adds r0, #168 ; 0xa8 136d4: 4798 blx r3 lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); 136d6: 6823 ldr r3, [r4, #0] 136d8: 488a ldr r0, [pc, #552] ; (13904 ) 136da: f103 0ba8 add.w fp, r3, #168 ; 0xa8 136de: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 136e0: f248 01a9 movw r1, #32937 ; 0x80a9 136e4: 4602 mov r2, r0 136e6: 4658 mov r0, fp 136e8: 47b8 blx r7 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 136ea: 6823 ldr r3, [r4, #0] 136ec: 2000 movs r0, #0 136ee: f103 0ba8 add.w fp, r3, #168 ; 0xa8 136f2: 47a8 blx r5 136f4: ebc0 00c0 rsb r0, r0, r0, lsl #3 136f8: 28ef cmp r0, #239 ; 0xef 136fa: f340 83d7 ble.w 13eac 136fe: 2000 movs r0, #0 13700: 47a8 blx r5 13702: 2107 movs r1, #7 13704: 2350 movs r3, #80 ; 0x50 13706: fb00 3001 mla r0, r0, r1, r3 1370a: 22a0 movs r2, #160 ; 0xa0 1370c: fb90 f2f2 sdiv r2, r0, r2 13710: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13712: 4658 mov r0, fp 13714: 2110 movs r1, #16 13716: 47b0 blx r6 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13718: 6823 ldr r3, [r4, #0] 1371a: 2000 movs r0, #0 1371c: f103 0ba8 add.w fp, r3, #168 ; 0xa8 13720: 47a8 blx r5 13722: ebc0 00c0 rsb r0, r0, r0, lsl #3 13726: 28ef cmp r0, #239 ; 0xef 13728: f340 83c2 ble.w 13eb0 1372c: 2000 movs r0, #0 1372e: 47a8 blx r5 13730: 2107 movs r1, #7 13732: 2350 movs r3, #80 ; 0x50 13734: fb00 3001 mla r0, r0, r1, r3 13738: 22a0 movs r2, #160 ; 0xa0 1373a: fb90 f2f2 sdiv r2, r0, r2 1373e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 13740: 4658 mov r0, fp 13742: 2112 movs r1, #18 13744: 47b0 blx r6 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13746: 6823 ldr r3, [r4, #0] 13748: 2000 movs r0, #0 1374a: f103 0ba8 add.w fp, r3, #168 ; 0xa8 1374e: 47a8 blx r5 13750: ebc0 00c0 rsb r0, r0, r0, lsl #3 13754: 28ef cmp r0, #239 ; 0xef 13756: f340 83ad ble.w 13eb4 1375a: 2000 movs r0, #0 1375c: 47a8 blx r5 1375e: 2107 movs r1, #7 13760: 2350 movs r3, #80 ; 0x50 13762: fb00 3001 mla r0, r0, r1, r3 13766: 22a0 movs r2, #160 ; 0xa0 13768: fb90 f2f2 sdiv r2, r0, r2 1376c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1376e: 2113 movs r1, #19 13770: 4658 mov r0, fp 13772: 47b0 blx r6 style_init_reset(&styles->tabview_btns); 13774: 6820 ldr r0, [r4, #0] 13776: 9b01 ldr r3, [sp, #4] 13778: 30a4 adds r0, #164 ; 0xa4 1377a: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); 1377c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1377e: 227f movs r2, #127 ; 0x7f 13780: f241 012c movw r1, #4140 ; 0x102c 13784: 30a4 adds r0, #164 ; 0xa4 13786: 47c8 blx r9 lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); 13788: 6823 ldr r3, [r4, #0] 1378a: f640 0088 movw r0, #2184 ; 0x888 1378e: f103 0ba4 add.w fp, r3, #164 ; 0xa4 13792: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13794: f241 0129 movw r1, #4137 ; 0x1029 13798: 4602 mov r2, r0 1379a: 4658 mov r0, fp 1379c: 47b8 blx r7 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 1379e: 6823 ldr r3, [r4, #0] 137a0: f103 0aa4 add.w sl, r3, #164 ; 0xa4 137a4: 6a23 ldr r3, [r4, #32] 137a6: 079a lsls r2, r3, #30 137a8: bf4c ite mi 137aa: 4853 ldrmi r0, [pc, #332] ; (138f8 ) 137ac: 4853 ldrpl r0, [pc, #332] ; (138fc ) 137ae: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 137b0: f248 1189 movw r1, #33161 ; 0x8189 137b4: 4602 mov r2, r0 137b6: 4650 mov r0, sl 137b8: 47b8 blx r7 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 137ba: 6823 ldr r3, [r4, #0] 137bc: 2000 movs r0, #0 137be: f103 0aa4 add.w sl, r3, #164 ; 0xa4 137c2: 47a8 blx r5 137c4: eb00 0080 add.w r0, r0, r0, lsl #2 137c8: 0080 lsls r0, r0, #2 137ca: 28ef cmp r0, #239 ; 0xef 137cc: f340 8374 ble.w 13eb8 137d0: 2000 movs r0, #0 137d2: 47a8 blx r5 137d4: 2114 movs r1, #20 137d6: 2350 movs r3, #80 ; 0x50 137d8: fb00 3001 mla r0, r0, r1, r3 137dc: 22a0 movs r2, #160 ; 0xa0 137de: fb90 f2f2 sdiv r2, r0, r2 137e2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 137e4: 4650 mov r0, sl 137e6: 2110 movs r1, #16 137e8: 47b0 blx r6 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 137ea: 6823 ldr r3, [r4, #0] 137ec: 2000 movs r0, #0 137ee: f103 0aa4 add.w sl, r3, #164 ; 0xa4 137f2: 47a8 blx r5 137f4: eb00 0080 add.w r0, r0, r0, lsl #2 137f8: 0080 lsls r0, r0, #2 137fa: 28ef cmp r0, #239 ; 0xef 137fc: f340 835e ble.w 13ebc 13800: 2000 movs r0, #0 13802: 47a8 blx r5 13804: 2114 movs r1, #20 13806: 2350 movs r3, #80 ; 0x50 13808: fb00 3001 mla r0, r0, r1, r3 1380c: 22a0 movs r2, #160 ; 0xa0 1380e: fb90 f2f2 sdiv r2, r0, r2 13812: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13814: 2111 movs r1, #17 13816: 4650 mov r0, sl 13818: 47b0 blx r6 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); 1381a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1381c: 89a2 ldrh r2, [r4, #12] 1381e: f248 2189 movw r1, #33417 ; 0x8289 13822: 30a4 adds r0, #164 ; 0xa4 13824: 47b8 blx r7 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); 13826: 6820 ldr r0, [r4, #0] 13828: 89e2 ldrh r2, [r4, #14] 1382a: f248 4189 movw r1, #33929 ; 0x8489 1382e: 30a4 adds r0, #164 ; 0xa4 13830: 47b8 blx r7 style_init_reset(&styles->tabview_indic); 13832: 6820 ldr r0, [r4, #0] 13834: 9b01 ldr r3, [sp, #4] 13836: 30ac adds r0, #172 ; 0xac 13838: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 1383a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1383c: 22ff movs r2, #255 ; 0xff 1383e: 212c movs r1, #44 ; 0x2c 13840: 30ac adds r0, #172 ; 0xac 13842: 47c8 blx r9 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); 13844: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13846: 89a2 ldrh r2, [r4, #12] 13848: 2129 movs r1, #41 ; 0x29 1384a: 30ac adds r0, #172 ; 0xac 1384c: 47b8 blx r7 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); 1384e: 6820 ldr r0, [r4, #0] 13850: 89e2 ldrh r2, [r4, #14] 13852: f240 4129 movw r1, #1065 ; 0x429 13856: 30ac adds r0, #172 ; 0xac 13858: 47b8 blx r7 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 1385a: 6823 ldr r3, [r4, #0] 1385c: 2000 movs r0, #0 1385e: f103 09ac add.w r9, r3, #172 ; 0xac 13862: 47a8 blx r5 13864: eb00 0080 add.w r0, r0, r0, lsl #2 13868: 28ef cmp r0, #239 ; 0xef 1386a: f340 8329 ble.w 13ec0 1386e: 2000 movs r0, #0 13870: 47a8 blx r5 13872: 2105 movs r1, #5 13874: 2350 movs r3, #80 ; 0x50 13876: fb00 3001 mla r0, r0, r1, r3 1387a: 22a0 movs r2, #160 ; 0xa0 1387c: fb90 f2f2 sdiv r2, r0, r2 13880: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 13882: 4648 mov r0, r9 13884: 2103 movs r1, #3 13886: 47b0 blx r6 lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 13888: 6820 ldr r0, [r4, #0] lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1388a: f8df 9084 ldr.w r9, [pc, #132] ; 13910 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 1388e: f647 72ff movw r2, #32767 ; 0x7fff 13892: 2101 movs r1, #1 13894: 30ac adds r0, #172 ; 0xac 13896: 47b0 blx r6 style_init_reset(&styles->tabview_page_scrl); 13898: 6820 ldr r0, [r4, #0] 1389a: 9b01 ldr r3, [sp, #4] 1389c: 30b0 adds r0, #176 ; 0xb0 1389e: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 138a0: 6823 ldr r3, [r4, #0] 138a2: 2000 movs r0, #0 138a4: f103 0ab0 add.w sl, r3, #176 ; 0xb0 138a8: 47c8 blx r9 138aa: 2801 cmp r0, #1 138ac: f04f 0000 mov.w r0, #0 138b0: f200 8313 bhi.w 13eda 138b4: 47a8 blx r5 138b6: ebc0 1000 rsb r0, r0, r0, lsl #4 138ba: 28ef cmp r0, #239 ; 0xef 138bc: f300 8302 bgt.w 13ec4 138c0: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 138c2: 4650 mov r0, sl 138c4: 2110 movs r1, #16 138c6: 47b0 blx r6 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 138c8: 6823 ldr r3, [r4, #0] 138ca: 2000 movs r0, #0 138cc: f103 0ab0 add.w sl, r3, #176 ; 0xb0 138d0: 47c8 blx r9 138d2: 2801 cmp r0, #1 138d4: f04f 0000 mov.w r0, #0 138d8: f200 8315 bhi.w 13f06 138dc: 47a8 blx r5 138de: ebc0 1000 rsb r0, r0, r0, lsl #4 138e2: 28ef cmp r0, #239 ; 0xef 138e4: f300 8304 bgt.w 13ef0 138e8: e014 b.n 13914 138ea: bf00 nop 138ec: 000242b6 .word 0x000242b6 138f0: 00586273 .word 0x00586273 138f4: 00e4eaf0 .word 0x00e4eaf0 138f8: 003b3e42 .word 0x003b3e42 138fc: 00e7e9ec .word 0x00e7e9ec 13900: 00005ae9 .word 0x00005ae9 13904: 00979a9f .word 0x00979a9f 13908: 00010b1d .word 0x00010b1d 1390c: 00010efd .word 0x00010efd 13910: 0000d9ad .word 0x0000d9ad 13914: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13916: 4650 mov r0, sl 13918: 2111 movs r1, #17 1391a: 47b0 blx r6 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1391c: 6823 ldr r3, [r4, #0] 1391e: 2000 movs r0, #0 13920: f103 0ab0 add.w sl, r3, #176 ; 0xb0 13924: 47c8 blx r9 13926: 2801 cmp r0, #1 13928: f04f 0000 mov.w r0, #0 1392c: f200 8301 bhi.w 13f32 13930: 47a8 blx r5 13932: ebc0 1000 rsb r0, r0, r0, lsl #4 13936: 28ef cmp r0, #239 ; 0xef 13938: f300 82f0 bgt.w 13f1c 1393c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1393e: 4650 mov r0, sl 13940: 2112 movs r1, #18 13942: 47b0 blx r6 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13944: 6823 ldr r3, [r4, #0] 13946: 2000 movs r0, #0 13948: f103 0ab0 add.w sl, r3, #176 ; 0xb0 1394c: 47c8 blx r9 1394e: 2801 cmp r0, #1 13950: f04f 0000 mov.w r0, #0 13954: f200 8303 bhi.w 13f5e 13958: 47a8 blx r5 1395a: ebc0 1000 rsb r0, r0, r0, lsl #4 1395e: 28ef cmp r0, #239 ; 0xef 13960: f300 82f2 bgt.w 13f48 13964: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13966: 4650 mov r0, sl 13968: 2113 movs r1, #19 1396a: 47b0 blx r6 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1396c: 6823 ldr r3, [r4, #0] 1396e: 2000 movs r0, #0 13970: f103 0ab0 add.w sl, r3, #176 ; 0xb0 13974: 47c8 blx r9 13976: 2801 cmp r0, #1 13978: f04f 0000 mov.w r0, #0 1397c: f200 8305 bhi.w 13f8a 13980: 47a8 blx r5 13982: ebc0 1000 rsb r0, r0, r0, lsl #4 13986: 28ef cmp r0, #239 ; 0xef 13988: f300 82f4 bgt.w 13f74 1398c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1398e: 2114 movs r1, #20 13990: 4650 mov r0, sl 13992: 47b0 blx r6 style_init_reset(&styles->table_cell); 13994: 6820 ldr r0, [r4, #0] 13996: 9b01 ldr r3, [sp, #4] 13998: 30a0 adds r0, #160 ; 0xa0 1399a: 4798 blx r3 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 1399c: 6823 ldr r3, [r4, #0] 1399e: f103 0aa0 add.w sl, r3, #160 ; 0xa0 139a2: 6a23 ldr r3, [r4, #32] 139a4: 079b lsls r3, r3, #30 139a6: bf4c ite mi 139a8: 48c9 ldrmi r0, [pc, #804] ; (13cd0 ) 139aa: 48ca ldrpl r0, [pc, #808] ; (13cd4 ) 139ac: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 139ae: 2139 movs r1, #57 ; 0x39 139b0: 4602 mov r2, r0 139b2: 4650 mov r0, sl 139b4: 47b8 blx r7 lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); 139b6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 139b8: 2201 movs r2, #1 139ba: 2130 movs r1, #48 ; 0x30 139bc: 30a0 adds r0, #160 ; 0xa0 139be: 47b0 blx r6 lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 139c0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 139c2: 2203 movs r2, #3 139c4: 2131 movs r1, #49 ; 0x31 139c6: 30a0 adds r0, #160 ; 0xa0 139c8: 47b0 blx r6 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 139ca: 2000 movs r0, #0 139cc: 6827 ldr r7, [r4, #0] 139ce: 47c8 blx r9 139d0: 2801 cmp r0, #1 139d2: f107 07a0 add.w r7, r7, #160 ; 0xa0 139d6: f04f 0000 mov.w r0, #0 139da: f200 82ec bhi.w 13fb6 139de: 47a8 blx r5 139e0: ebc0 1000 rsb r0, r0, r0, lsl #4 139e4: 28ef cmp r0, #239 ; 0xef 139e6: f300 82db bgt.w 13fa0 139ea: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 139ec: 2112 movs r1, #18 139ee: 4638 mov r0, r7 139f0: 47b0 blx r6 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 139f2: 2000 movs r0, #0 139f4: 6824 ldr r4, [r4, #0] 139f6: 47c8 blx r9 139f8: 2801 cmp r0, #1 139fa: f104 04a0 add.w r4, r4, #160 ; 0xa0 139fe: f04f 0000 mov.w r0, #0 13a02: f200 82ee bhi.w 13fe2 13a06: 47a8 blx r5 13a08: ebc0 1000 rsb r0, r0, r0, lsl #4 13a0c: 28ef cmp r0, #239 ; 0xef 13a0e: f300 82dd bgt.w 13fcc 13a12: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13a14: 4620 mov r0, r4 13a16: 2113 movs r1, #19 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13a18: 4caf ldr r4, [pc, #700] ; (13cd8 ) 13a1a: 47b0 blx r6 13a1c: 2000 movs r0, #0 13a1e: 6827 ldr r7, [r4, #0] 13a20: 47c8 blx r9 13a22: 2801 cmp r0, #1 13a24: f107 07a0 add.w r7, r7, #160 ; 0xa0 13a28: f04f 0000 mov.w r0, #0 13a2c: f200 82ef bhi.w 1400e 13a30: 47a8 blx r5 13a32: ebc0 1000 rsb r0, r0, r0, lsl #4 13a36: 28ef cmp r0, #239 ; 0xef 13a38: f300 82de bgt.w 13ff8 13a3c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13a3e: 2110 movs r1, #16 13a40: 4638 mov r0, r7 13a42: 47b0 blx r6 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13a44: 2000 movs r0, #0 13a46: 6825 ldr r5, [r4, #0] 13a48: 4ea4 ldr r6, [pc, #656] ; (13cdc ) 13a4a: 47c8 blx r9 13a4c: 2801 cmp r0, #1 13a4e: f105 05a0 add.w r5, r5, #160 ; 0xa0 13a52: f04f 0000 mov.w r0, #0 13a56: f200 82f0 bhi.w 1403a 13a5a: 47b0 blx r6 13a5c: ebc0 1000 rsb r0, r0, r0, lsl #4 13a60: 28ef cmp r0, #239 ; 0xef 13a62: f300 82df bgt.w 14024 13a66: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13a68: 2111 movs r1, #17 13a6a: 4628 mov r0, r5 13a6c: 4b9c ldr r3, [pc, #624] ; (13ce0 ) 13a6e: 4798 blx r3 theme.apply_xcb = theme_apply; 13a70: 4b9c ldr r3, [pc, #624] ; (13ce4 ) 13a72: 60a3 str r3, [r4, #8] inited = true; 13a74: 2301 movs r3, #1 13a76: 7123 strb r3, [r4, #4] lv_obj_report_style_mod(NULL); 13a78: 2000 movs r0, #0 13a7a: 4b9b ldr r3, [pc, #620] ; (13ce8 ) 13a7c: 4798 blx r3 } 13a7e: 489b ldr r0, [pc, #620] ; (13cec ) 13a80: b003 add sp, #12 13a82: ecbd 8b02 vpop {d8} 13a86: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 13a8a: 2201 movs r2, #1 13a8c: f7fe bdb3 b.w 125f6 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 13a90: 2201 movs r2, #1 13a92: f7fe bde2 b.w 1265a lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13a96: 2000 movs r0, #0 13a98: 47a8 blx r5 13a9a: 210f movs r1, #15 13a9c: 2350 movs r3, #80 ; 0x50 13a9e: fb00 3001 mla r0, r0, r1, r3 13aa2: 22a0 movs r2, #160 ; 0xa0 13aa4: fb90 f2f2 sdiv r2, r0, r2 13aa8: b212 sxth r2, r2 13aaa: f7fe bdf6 b.w 1269a 13aae: 47a8 blx r5 13ab0: ebc0 1000 rsb r0, r0, r0, lsl #4 13ab4: 0040 lsls r0, r0, #1 13ab6: 28ef cmp r0, #239 ; 0xef 13ab8: f77e adee ble.w 12698 13abc: 2000 movs r0, #0 13abe: 47a8 blx r5 13ac0: 211e movs r1, #30 13ac2: e7eb b.n 13a9c lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13ac4: 2000 movs r0, #0 13ac6: 47a8 blx r5 13ac8: 210f movs r1, #15 13aca: 2350 movs r3, #80 ; 0x50 13acc: fb00 3001 mla r0, r0, r1, r3 13ad0: 22a0 movs r2, #160 ; 0xa0 13ad2: fb90 f2f2 sdiv r2, r0, r2 13ad6: b212 sxth r2, r2 13ad8: f7fe bdf3 b.w 126c2 13adc: 47a8 blx r5 13ade: ebc0 1000 rsb r0, r0, r0, lsl #4 13ae2: 0040 lsls r0, r0, #1 13ae4: 28ef cmp r0, #239 ; 0xef 13ae6: f77e adeb ble.w 126c0 13aea: 2000 movs r0, #0 13aec: 47a8 blx r5 13aee: 211e movs r1, #30 13af0: e7eb b.n 13aca lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13af2: 2000 movs r0, #0 13af4: 47a8 blx r5 13af6: 210f movs r1, #15 13af8: 2350 movs r3, #80 ; 0x50 13afa: fb00 3001 mla r0, r0, r1, r3 13afe: 22a0 movs r2, #160 ; 0xa0 13b00: fb90 f2f2 sdiv r2, r0, r2 13b04: b212 sxth r2, r2 13b06: f7fe bdf0 b.w 126ea 13b0a: 47a8 blx r5 13b0c: ebc0 1000 rsb r0, r0, r0, lsl #4 13b10: 0040 lsls r0, r0, #1 13b12: 28ef cmp r0, #239 ; 0xef 13b14: f77e ade8 ble.w 126e8 13b18: 2000 movs r0, #0 13b1a: 47a8 blx r5 13b1c: 211e movs r1, #30 13b1e: e7eb b.n 13af8 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13b20: 2000 movs r0, #0 13b22: 47a8 blx r5 13b24: 210f movs r1, #15 13b26: 2350 movs r3, #80 ; 0x50 13b28: fb00 3001 mla r0, r0, r1, r3 13b2c: 22a0 movs r2, #160 ; 0xa0 13b2e: fb90 f2f2 sdiv r2, r0, r2 13b32: b212 sxth r2, r2 13b34: f7fe bded b.w 12712 13b38: 47a8 blx r5 13b3a: ebc0 1000 rsb r0, r0, r0, lsl #4 13b3e: 0040 lsls r0, r0, #1 13b40: 28ef cmp r0, #239 ; 0xef 13b42: f77e ade5 ble.w 12710 13b46: 2000 movs r0, #0 13b48: 47a8 blx r5 13b4a: 211e movs r1, #30 13b4c: e7eb b.n 13b26 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 13b4e: f8bb 2000 ldrh.w r2, [fp] 13b52: f7fe bdf0 b.w 12736 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 13b56: 4b66 ldr r3, [pc, #408] ; (13cf0 ) 13b58: f640 60ee movw r0, #3822 ; 0xeee 13b5c: 4798 blx r3 13b5e: f7fe bdfb b.w 12758 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 13b62: 2000 movs r0, #0 13b64: 47a8 blx r5 13b66: 210f movs r1, #15 13b68: 2350 movs r3, #80 ; 0x50 13b6a: fb00 3001 mla r0, r0, r1, r3 13b6e: 22a0 movs r2, #160 ; 0xa0 13b70: fb90 f2f2 sdiv r2, r0, r2 13b74: b212 sxth r2, r2 13b76: f7fe be07 b.w 12788 13b7a: 47a8 blx r5 13b7c: ebc0 1000 rsb r0, r0, r0, lsl #4 13b80: 0040 lsls r0, r0, #1 13b82: 28ef cmp r0, #239 ; 0xef 13b84: f77e adff ble.w 12786 13b88: 2000 movs r0, #0 13b8a: 47a8 blx r5 13b8c: 211e movs r1, #30 13b8e: e7eb b.n 13b68 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 13b90: 2000 movs r0, #0 13b92: 47a8 blx r5 13b94: 210f movs r1, #15 13b96: 2350 movs r3, #80 ; 0x50 13b98: fb00 3001 mla r0, r0, r1, r3 13b9c: 22a0 movs r2, #160 ; 0xa0 13b9e: fb90 f2f2 sdiv r2, r0, r2 13ba2: b212 sxth r2, r2 13ba4: f7fe be06 b.w 127b4 13ba8: 47a8 blx r5 13baa: ebc0 1000 rsb r0, r0, r0, lsl #4 13bae: 0040 lsls r0, r0, #1 13bb0: 28ef cmp r0, #239 ; 0xef 13bb2: f77e adfe ble.w 127b2 13bb6: 2000 movs r0, #0 13bb8: 47a8 blx r5 13bba: 211e movs r1, #30 13bbc: e7eb b.n 13b96 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 13bbe: 2000 movs r0, #0 13bc0: 47a8 blx r5 13bc2: 210f movs r1, #15 13bc4: 2350 movs r3, #80 ; 0x50 13bc6: fb00 3001 mla r0, r0, r1, r3 13bca: 22a0 movs r2, #160 ; 0xa0 13bcc: fb90 f2f2 sdiv r2, r0, r2 13bd0: b212 sxth r2, r2 13bd2: f7fe be05 b.w 127e0 13bd6: 47a8 blx r5 13bd8: ebc0 1000 rsb r0, r0, r0, lsl #4 13bdc: 0040 lsls r0, r0, #1 13bde: 28ef cmp r0, #239 ; 0xef 13be0: f77e adfd ble.w 127de 13be4: 2000 movs r0, #0 13be6: 47a8 blx r5 13be8: 211e movs r1, #30 13bea: e7eb b.n 13bc4 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 13bec: 2201 movs r2, #1 13bee: f7fe be0e b.w 1280e lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 13bf2: f8bb 2000 ldrh.w r2, [fp] 13bf6: f7fe be47 b.w 12888 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 13bfa: f8bd 2004 ldrh.w r2, [sp, #4] 13bfe: f7fe be7d b.w 128fc lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 13c02: 2201 movs r2, #1 13c04: f7fe beaa b.w 1295c lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 13c08: 2000 movs r0, #0 13c0a: 47a8 blx r5 13c0c: 210f movs r1, #15 13c0e: 2350 movs r3, #80 ; 0x50 13c10: fb00 3001 mla r0, r0, r1, r3 13c14: 22a0 movs r2, #160 ; 0xa0 13c16: fb90 f2f2 sdiv r2, r0, r2 13c1a: b212 sxth r2, r2 13c1c: f7fe beb4 b.w 12988 13c20: 47a8 blx r5 13c22: ebc0 1000 rsb r0, r0, r0, lsl #4 13c26: 0040 lsls r0, r0, #1 13c28: 28ef cmp r0, #239 ; 0xef 13c2a: f77e aeac ble.w 12986 13c2e: 2000 movs r0, #0 13c30: 47a8 blx r5 13c32: 211e movs r1, #30 13c34: e7eb b.n 13c0e lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 13c36: 2000 movs r0, #0 13c38: 47a8 blx r5 13c3a: 210f movs r1, #15 13c3c: 2350 movs r3, #80 ; 0x50 13c3e: fb00 3001 mla r0, r0, r1, r3 13c42: 22a0 movs r2, #160 ; 0xa0 13c44: fb90 f2f2 sdiv r2, r0, r2 13c48: b212 sxth r2, r2 13c4a: f7fe beb3 b.w 129b4 13c4e: 47a8 blx r5 13c50: ebc0 1000 rsb r0, r0, r0, lsl #4 13c54: 0040 lsls r0, r0, #1 13c56: 28ef cmp r0, #239 ; 0xef 13c58: f77e aeab ble.w 129b2 13c5c: 2000 movs r0, #0 13c5e: 47a8 blx r5 13c60: 211e movs r1, #30 13c62: e7eb b.n 13c3c lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 13c64: 2000 movs r0, #0 13c66: 47a8 blx r5 13c68: 210f movs r1, #15 13c6a: 2350 movs r3, #80 ; 0x50 13c6c: fb00 3001 mla r0, r0, r1, r3 13c70: 22a0 movs r2, #160 ; 0xa0 13c72: fb90 f2f2 sdiv r2, r0, r2 13c76: b212 sxth r2, r2 13c78: f7fe beb2 b.w 129e0 13c7c: 47a8 blx r5 13c7e: ebc0 1000 rsb r0, r0, r0, lsl #4 13c82: 0040 lsls r0, r0, #1 13c84: 28ef cmp r0, #239 ; 0xef 13c86: f77e aeaa ble.w 129de 13c8a: 2000 movs r0, #0 13c8c: 47a8 blx r5 13c8e: 211e movs r1, #30 13c90: e7eb b.n 13c6a lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 13c92: 2201 movs r2, #1 13c94: f7fe bec0 b.w 12a18 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 13c98: 2201 movs r2, #1 13c9a: f7fe bee8 b.w 12a6e lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13c9e: 2201 movs r2, #1 13ca0: f7fe bf31 b.w 12b06 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13ca4: 2201 movs r2, #1 13ca6: f7fe bf47 b.w 12b38 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13caa: 2201 movs r2, #1 13cac: f7fe bf5d b.w 12b6a lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13cb0: 2201 movs r2, #1 13cb2: f7fe bf7d b.w 12bb0 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 13cb6: 2201 movs r2, #1 13cb8: f7fe bf8f b.w 12bda lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13cbc: 2201 movs r2, #1 13cbe: f7fe bfa4 b.w 12c0a lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 13cc2: 2201 movs r2, #1 13cc4: f7fe bfc8 b.w 12c58 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13cc8: 2201 movs r2, #1 13cca: f7fe bfde b.w 12c8a 13cce: bf00 nop 13cd0: 00d6dde3 .word 0x00d6dde3 13cd4: 00808a97 .word 0x00808a97 13cd8: 2000c7d4 .word 0x2000c7d4 13cdc: 0000d995 .word 0x0000d995 13ce0: 00005875 .word 0x00005875 13ce4: 00010389 .word 0x00010389 13ce8: 00002f1d .word 0x00002f1d 13cec: 2000c7dc .word 0x2000c7dc 13cf0: 00010351 .word 0x00010351 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 13cf4: 2201 movs r2, #1 13cf6: f7fe bff1 b.w 12cdc lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13cfa: 2201 movs r2, #1 13cfc: f7ff b81b b.w 12d36 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13d00: 2201 movs r2, #1 13d02: f7ff b82f b.w 12d64 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13d06: 2201 movs r2, #1 13d08: f7ff b843 b.w 12d92 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13d0c: 2201 movs r2, #1 13d0e: f7ff b857 b.w 12dc0 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 13d12: 2201 movs r2, #1 13d14: f7ff b86e b.w 12df4 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 13d18: 4619 mov r1, r3 13d1a: 461a mov r2, r3 13d1c: f7ff b883 b.w 12e26 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13d20: 2201 movs r2, #1 13d22: f7ff b8a1 b.w 12e68 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13d26: 2201 movs r2, #1 13d28: f7ff b8b5 b.w 12e96 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13d2c: 2201 movs r2, #1 13d2e: f7ff b8c9 b.w 12ec4 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13d32: 2201 movs r2, #1 13d34: f7ff b8dd b.w 12ef2 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 13d38: 2201 movs r2, #1 13d3a: f7ff b8f1 b.w 12f20 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 13d3e: 2201 movs r2, #1 13d40: f7ff b91c b.w 12f7c lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 13d44: 4bc5 ldr r3, [pc, #788] ; (1405c ) 13d46: f640 1099 movw r0, #2457 ; 0x999 13d4a: 4798 blx r3 13d4c: 4602 mov r2, r0 13d4e: f7ff b921 b.w 12f94 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 13d52: 2201 movs r2, #1 13d54: f7ff b950 b.w 12ff8 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 13d58: 2201 movs r2, #1 13d5a: f7ff b964 b.w 13026 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 13d5e: 2201 movs r2, #1 13d60: f7ff b978 b.w 13054 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 13d64: 2201 movs r2, #1 13d66: f7ff b9ad b.w 130c4 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 13d6a: 2201 movs r2, #1 13d6c: f7ff b9bc b.w 130e8 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 13d70: 48bb ldr r0, [pc, #748] ; (14060 ) 13d72: 47b8 blx r7 13d74: f7ff b9ce b.w 13114 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13d78: 2201 movs r2, #1 13d7a: f7ff b9f9 b.w 13170 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13d7e: 2201 movs r2, #1 13d80: f7ff ba0e b.w 131a0 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13d84: 2000 movs r0, #0 13d86: 47a8 blx r5 13d88: 210f movs r1, #15 13d8a: 2350 movs r3, #80 ; 0x50 13d8c: fb00 3001 mla r0, r0, r1, r3 13d90: 22a0 movs r2, #160 ; 0xa0 13d92: fb90 f2f2 sdiv r2, r0, r2 13d96: b212 sxth r2, r2 13d98: f7ff bb0d b.w 133b6 13d9c: 47a8 blx r5 13d9e: ebc0 1000 rsb r0, r0, r0, lsl #4 13da2: 0040 lsls r0, r0, #1 13da4: 28ef cmp r0, #239 ; 0xef 13da6: f77f ab05 ble.w 133b4 13daa: 2000 movs r0, #0 13dac: 47a8 blx r5 13dae: 211e movs r1, #30 13db0: e7eb b.n 13d8a lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13db2: 2000 movs r0, #0 13db4: 47a8 blx r5 13db6: 210f movs r1, #15 13db8: 2350 movs r3, #80 ; 0x50 13dba: fb00 3001 mla r0, r0, r1, r3 13dbe: 22a0 movs r2, #160 ; 0xa0 13dc0: fb90 f2f2 sdiv r2, r0, r2 13dc4: b212 sxth r2, r2 13dc6: f7ff bb0a b.w 133de 13dca: 47a8 blx r5 13dcc: ebc0 1000 rsb r0, r0, r0, lsl #4 13dd0: 0040 lsls r0, r0, #1 13dd2: 28ef cmp r0, #239 ; 0xef 13dd4: f77f ab02 ble.w 133dc 13dd8: 2000 movs r0, #0 13dda: 47a8 blx r5 13ddc: 211e movs r1, #30 13dde: e7eb b.n 13db8 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13de0: 2000 movs r0, #0 13de2: 47a8 blx r5 13de4: 210f movs r1, #15 13de6: 2350 movs r3, #80 ; 0x50 13de8: fb00 3001 mla r0, r0, r1, r3 13dec: 22a0 movs r2, #160 ; 0xa0 13dee: fb90 f2f2 sdiv r2, r0, r2 13df2: b212 sxth r2, r2 13df4: f7ff bb07 b.w 13406 13df8: 47a8 blx r5 13dfa: ebc0 1000 rsb r0, r0, r0, lsl #4 13dfe: 0040 lsls r0, r0, #1 13e00: 28ef cmp r0, #239 ; 0xef 13e02: f77f aaff ble.w 13404 13e06: 2000 movs r0, #0 13e08: 47a8 blx r5 13e0a: 211e movs r1, #30 13e0c: e7eb b.n 13de6 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13e0e: 2000 movs r0, #0 13e10: 47a8 blx r5 13e12: 210f movs r1, #15 13e14: 2350 movs r3, #80 ; 0x50 13e16: fb00 3001 mla r0, r0, r1, r3 13e1a: 22a0 movs r2, #160 ; 0xa0 13e1c: fb90 f2f2 sdiv r2, r0, r2 13e20: b212 sxth r2, r2 13e22: f7ff bb04 b.w 1342e 13e26: 47a8 blx r5 13e28: ebc0 1000 rsb r0, r0, r0, lsl #4 13e2c: 0040 lsls r0, r0, #1 13e2e: 28ef cmp r0, #239 ; 0xef 13e30: f77f aafc ble.w 1342c 13e34: 2000 movs r0, #0 13e36: 47a8 blx r5 13e38: 211e movs r1, #30 13e3a: e7eb b.n 13e14 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13e3c: 2000 movs r0, #0 13e3e: 47a8 blx r5 13e40: 210f movs r1, #15 13e42: 2350 movs r3, #80 ; 0x50 13e44: fb00 3001 mla r0, r0, r1, r3 13e48: 22a0 movs r2, #160 ; 0xa0 13e4a: fb90 f2f2 sdiv r2, r0, r2 13e4e: b212 sxth r2, r2 13e50: f7ff bb01 b.w 13456 13e54: 47a8 blx r5 13e56: ebc0 1000 rsb r0, r0, r0, lsl #4 13e5a: 0040 lsls r0, r0, #1 13e5c: 28ef cmp r0, #239 ; 0xef 13e5e: f77f aaf9 ble.w 13454 13e62: 2000 movs r0, #0 13e64: 47a8 blx r5 13e66: 211e movs r1, #30 13e68: e7eb b.n 13e42 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 13e6a: 2000 movs r0, #0 13e6c: 47a8 blx r5 13e6e: 210f movs r1, #15 13e70: 2350 movs r3, #80 ; 0x50 13e72: fb00 3001 mla r0, r0, r1, r3 13e76: f06f 029f mvn.w r2, #159 ; 0x9f 13e7a: fb90 f2f2 sdiv r2, r0, r2 13e7e: b212 sxth r2, r2 13e80: f7ff bafe b.w 13480 13e84: 47a8 blx r5 13e86: ebc0 1000 rsb r0, r0, r0, lsl #4 13e8a: 0040 lsls r0, r0, #1 13e8c: 28ef cmp r0, #239 ; 0xef 13e8e: f77f aaf5 ble.w 1347c 13e92: 2000 movs r0, #0 13e94: 47a8 blx r5 13e96: 211e movs r1, #30 13e98: e7ea b.n 13e70 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 13e9a: 2201 movs r2, #1 13e9c: f7ff bb30 b.w 13500 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 13ea0: 2201 movs r2, #1 13ea2: f7ff bba5 b.w 135f0 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13ea6: 2201 movs r2, #1 13ea8: f7ff bbf8 b.w 1369c lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13eac: 2201 movs r2, #1 13eae: e430 b.n 13712 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13eb0: 2201 movs r2, #1 13eb2: e445 b.n 13740 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13eb4: 2201 movs r2, #1 13eb6: e45a b.n 1376e lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 13eb8: 2201 movs r2, #1 13eba: e493 b.n 137e4 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 13ebc: 2201 movs r2, #1 13ebe: e4a9 b.n 13814 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 13ec0: 2201 movs r2, #1 13ec2: e4de b.n 13882 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13ec4: 2000 movs r0, #0 13ec6: 47a8 blx r5 13ec8: 210f movs r1, #15 13eca: 2350 movs r3, #80 ; 0x50 13ecc: fb00 3001 mla r0, r0, r1, r3 13ed0: 22a0 movs r2, #160 ; 0xa0 13ed2: fb90 f2f2 sdiv r2, r0, r2 13ed6: b212 sxth r2, r2 13ed8: e4f3 b.n 138c2 13eda: 47a8 blx r5 13edc: ebc0 1000 rsb r0, r0, r0, lsl #4 13ee0: 0040 lsls r0, r0, #1 13ee2: 28ef cmp r0, #239 ; 0xef 13ee4: f77f acec ble.w 138c0 13ee8: 2000 movs r0, #0 13eea: 47a8 blx r5 13eec: 211e movs r1, #30 13eee: e7ec b.n 13eca lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13ef0: 2000 movs r0, #0 13ef2: 47a8 blx r5 13ef4: 210f movs r1, #15 13ef6: 2350 movs r3, #80 ; 0x50 13ef8: fb00 3001 mla r0, r0, r1, r3 13efc: 22a0 movs r2, #160 ; 0xa0 13efe: fb90 f2f2 sdiv r2, r0, r2 13f02: b212 sxth r2, r2 13f04: e507 b.n 13916 13f06: 47a8 blx r5 13f08: ebc0 1000 rsb r0, r0, r0, lsl #4 13f0c: 0040 lsls r0, r0, #1 13f0e: 28ef cmp r0, #239 ; 0xef 13f10: f77f ad00 ble.w 13914 13f14: 2000 movs r0, #0 13f16: 47a8 blx r5 13f18: 211e movs r1, #30 13f1a: e7ec b.n 13ef6 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13f1c: 2000 movs r0, #0 13f1e: 47a8 blx r5 13f20: 210f movs r1, #15 13f22: 2350 movs r3, #80 ; 0x50 13f24: fb00 3001 mla r0, r0, r1, r3 13f28: 22a0 movs r2, #160 ; 0xa0 13f2a: fb90 f2f2 sdiv r2, r0, r2 13f2e: b212 sxth r2, r2 13f30: e505 b.n 1393e 13f32: 47a8 blx r5 13f34: ebc0 1000 rsb r0, r0, r0, lsl #4 13f38: 0040 lsls r0, r0, #1 13f3a: 28ef cmp r0, #239 ; 0xef 13f3c: f77f acfe ble.w 1393c 13f40: 2000 movs r0, #0 13f42: 47a8 blx r5 13f44: 211e movs r1, #30 13f46: e7ec b.n 13f22 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13f48: 2000 movs r0, #0 13f4a: 47a8 blx r5 13f4c: 210f movs r1, #15 13f4e: 2350 movs r3, #80 ; 0x50 13f50: fb00 3001 mla r0, r0, r1, r3 13f54: 22a0 movs r2, #160 ; 0xa0 13f56: fb90 f2f2 sdiv r2, r0, r2 13f5a: b212 sxth r2, r2 13f5c: e503 b.n 13966 13f5e: 47a8 blx r5 13f60: ebc0 1000 rsb r0, r0, r0, lsl #4 13f64: 0040 lsls r0, r0, #1 13f66: 28ef cmp r0, #239 ; 0xef 13f68: f77f acfc ble.w 13964 13f6c: 2000 movs r0, #0 13f6e: 47a8 blx r5 13f70: 211e movs r1, #30 13f72: e7ec b.n 13f4e lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13f74: 2000 movs r0, #0 13f76: 47a8 blx r5 13f78: 210f movs r1, #15 13f7a: 2350 movs r3, #80 ; 0x50 13f7c: fb00 3001 mla r0, r0, r1, r3 13f80: 22a0 movs r2, #160 ; 0xa0 13f82: fb90 f2f2 sdiv r2, r0, r2 13f86: b212 sxth r2, r2 13f88: e501 b.n 1398e 13f8a: 47a8 blx r5 13f8c: ebc0 1000 rsb r0, r0, r0, lsl #4 13f90: 0040 lsls r0, r0, #1 13f92: 28ef cmp r0, #239 ; 0xef 13f94: f77f acfa ble.w 1398c 13f98: 2000 movs r0, #0 13f9a: 47a8 blx r5 13f9c: 211e movs r1, #30 13f9e: e7ec b.n 13f7a lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13fa0: 2000 movs r0, #0 13fa2: 47a8 blx r5 13fa4: 210f movs r1, #15 13fa6: 2350 movs r3, #80 ; 0x50 13fa8: fb00 3001 mla r0, r0, r1, r3 13fac: 22a0 movs r2, #160 ; 0xa0 13fae: fb90 f2f2 sdiv r2, r0, r2 13fb2: b212 sxth r2, r2 13fb4: e51a b.n 139ec 13fb6: 47a8 blx r5 13fb8: ebc0 1000 rsb r0, r0, r0, lsl #4 13fbc: 0040 lsls r0, r0, #1 13fbe: 28ef cmp r0, #239 ; 0xef 13fc0: f77f ad13 ble.w 139ea 13fc4: 2000 movs r0, #0 13fc6: 47a8 blx r5 13fc8: 211e movs r1, #30 13fca: e7ec b.n 13fa6 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13fcc: 2000 movs r0, #0 13fce: 47a8 blx r5 13fd0: 210f movs r1, #15 13fd2: 2350 movs r3, #80 ; 0x50 13fd4: fb00 3001 mla r0, r0, r1, r3 13fd8: 22a0 movs r2, #160 ; 0xa0 13fda: fb90 f2f2 sdiv r2, r0, r2 13fde: b212 sxth r2, r2 13fe0: e518 b.n 13a14 13fe2: 47a8 blx r5 13fe4: ebc0 1000 rsb r0, r0, r0, lsl #4 13fe8: 0040 lsls r0, r0, #1 13fea: 28ef cmp r0, #239 ; 0xef 13fec: f77f ad11 ble.w 13a12 13ff0: 2000 movs r0, #0 13ff2: 47a8 blx r5 13ff4: 211e movs r1, #30 13ff6: e7ec b.n 13fd2 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13ff8: 2000 movs r0, #0 13ffa: 47a8 blx r5 13ffc: 210f movs r1, #15 13ffe: 2350 movs r3, #80 ; 0x50 14000: fb00 3001 mla r0, r0, r1, r3 14004: 22a0 movs r2, #160 ; 0xa0 14006: fb90 f2f2 sdiv r2, r0, r2 1400a: b212 sxth r2, r2 1400c: e517 b.n 13a3e 1400e: 47a8 blx r5 14010: ebc0 1000 rsb r0, r0, r0, lsl #4 14014: 0040 lsls r0, r0, #1 14016: 28ef cmp r0, #239 ; 0xef 14018: f77f ad10 ble.w 13a3c 1401c: 2000 movs r0, #0 1401e: 47a8 blx r5 14020: 211e movs r1, #30 14022: e7ec b.n 13ffe lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 14024: 2000 movs r0, #0 14026: 47b0 blx r6 14028: 210f movs r1, #15 1402a: 2350 movs r3, #80 ; 0x50 1402c: fb00 3001 mla r0, r0, r1, r3 14030: 22a0 movs r2, #160 ; 0xa0 14032: fb90 f2f2 sdiv r2, r0, r2 14036: b212 sxth r2, r2 14038: e516 b.n 13a68 1403a: 47b0 blx r6 1403c: ebc0 1000 rsb r0, r0, r0, lsl #4 14040: 0040 lsls r0, r0, #1 14042: 28ef cmp r0, #239 ; 0xef 14044: f77f ad0f ble.w 13a66 14048: 2000 movs r0, #0 1404a: 47b0 blx r6 1404c: 2350 movs r3, #80 ; 0x50 1404e: 211e movs r1, #30 14050: fb00 3201 mla r2, r0, r1, r3 14054: 23a0 movs r3, #160 ; 0xa0 14056: fb92 f2f3 sdiv r2, r2, r3 1405a: e7ec b.n 14036 1405c: 00010351 .word 0x00010351 14060: 00a1adbd .word 0x00a1adbd 00014064 : * LV_DESIGN_DRAW: draw the object (always return 'true') * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return an element of `lv_design_res_t` */ static lv_design_res_t lv_img_design(lv_obj_t * img, const lv_area_t * clip_area, lv_design_mode_t mode) { 14064: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14068: 4b9f ldr r3, [pc, #636] ; (142e8 ) { 1406a: b0a7 sub sp, #156 ; 0x9c 1406c: 4616 mov r6, r2 1406e: 4604 mov r4, r0 14070: 4689 mov r9, r1 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14072: 4798 blx r3 if(mode == LV_DESIGN_COVER_CHK) { 14074: 2e02 cmp r6, #2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14076: 4605 mov r5, r0 if(mode == LV_DESIGN_COVER_CHK) { 14078: d15f bne.n 1413a _OBJ_GET_STYLE_##scalar(prop_name, func_name, value_type, style_type) \ _OBJ_SET_STYLE_LOCAL_##scalar(prop_name, func_name, value_type, style_type) \ _OBJ_SET_STYLE_##scalar(prop_name, func_name, value_type, style_type) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 1407a: 4f9c ldr r7, [pc, #624] ; (142ec ) 1407c: 4632 mov r2, r6 1407e: 2100 movs r1, #0 14080: 4620 mov r0, r4 14082: 47b8 blx r7 if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 14084: 2800 cmp r0, #0 14086: f040 81f5 bne.w 14474 if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 1408a: 7d2b ldrb r3, [r5, #20] 1408c: 0799 lsls r1, r3, #30 1408e: d427 bmi.n 140e0 /*Non true color format might have "holes"*/ if(ext->cf != LV_IMG_CF_TRUE_COLOR && ext->cf != LV_IMG_CF_RAW) return LV_DESIGN_RES_NOT_COVER; 14090: f003 03f8 and.w r3, r3, #248 ; 0xf8 14094: 2b20 cmp r3, #32 14096: d001 beq.n 1409c 14098: 2b08 cmp r3, #8 1409a: d121 bne.n 140e0 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 1409c: 2206 movs r2, #6 1409e: 2100 movs r1, #0 140a0: 4620 mov r0, r4 140a2: 47b8 blx r7 int32_t angle_final = lv_obj_get_style_transform_angle(img, LV_IMG_PART_MAIN); angle_final += ext->angle; 140a4: 89ab ldrh r3, [r5, #12] if(angle_final == 0) return LV_DESIGN_RES_NOT_COVER; 140a6: 42c3 cmn r3, r0 140a8: d01a beq.n 140e0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 140aa: 2207 movs r2, #7 140ac: 2100 movs r1, #0 140ae: 4620 mov r0, r4 140b0: 47b8 blx r7 int32_t zoom_final = lv_obj_get_style_transform_zoom(img, LV_IMG_PART_MAIN); zoom_final = (zoom_final * ext->zoom) >> 8; 140b2: 8a6b ldrh r3, [r5, #18] 140b4: f8df 8268 ldr.w r8, [pc, #616] ; 14320 140b8: 4358 muls r0, r3 140ba: 1207 asrs r7, r0, #8 if(zoom_final != LV_IMG_ZOOM_NONE) { 140bc: f5b7 7f80 cmp.w r7, #256 ; 0x100 140c0: d012 beq.n 140e8 if(_lv_area_is_in(clip_area, &img->coords, 0) == false) return LV_DESIGN_RES_NOT_COVER; 140c2: 2200 movs r2, #0 140c4: f104 0110 add.w r1, r4, #16 a.x1 += img->coords.x1; a.y1 += img->coords.y1; a.x2 += img->coords.x1; a.y2 += img->coords.y1; if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER; 140c8: 4648 mov r0, r9 140ca: 47c0 blx r8 140cc: b140 cbz r0, 140e0 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_OPA, line_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 140ce: 4b88 ldr r3, [pc, #544] ; (142f0 ) 140d0: f248 02ac movw r2, #32940 ; 0x80ac 140d4: 2100 movs r1, #0 140d6: 4620 mov r0, r4 140d8: 4798 blx r3 } if(lv_obj_get_style_image_opa(img, LV_IMG_PART_MAIN) != LV_OPA_COVER) return LV_DESIGN_RES_NOT_COVER; return LV_DESIGN_RES_COVER; 140da: 28ff cmp r0, #255 ; 0xff 140dc: bf08 it eq 140de: 2601 moveq r6, #1 lv_draw_rect(&img->coords, clip_area, &draw_dsc); } } return LV_DESIGN_RES_OK; } 140e0: 4630 mov r0, r6 140e2: b027 add sp, #156 ; 0x9c 140e4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} _lv_img_buf_get_transformed_area(&a, lv_obj_get_width(img), lv_obj_get_height(img), 0, zoom_final, &ext->pivot); 140e8: 4b82 ldr r3, [pc, #520] ; (142f4 ) 140ea: 4620 mov r0, r4 140ec: 4798 blx r3 140ee: 4b82 ldr r3, [pc, #520] ; (142f8 ) 140f0: 9003 str r0, [sp, #12] 140f2: 4620 mov r0, r4 140f4: 4798 blx r3 140f6: 350e adds r5, #14 140f8: 4602 mov r2, r0 140fa: e9cd 7500 strd r7, r5, [sp] 140fe: 9903 ldr r1, [sp, #12] 14100: 4d7e ldr r5, [pc, #504] ; (142fc ) 14102: 2300 movs r3, #0 14104: a811 add r0, sp, #68 ; 0x44 14106: 47a8 blx r5 a.x1 += img->coords.x1; 14108: 8a22 ldrh r2, [r4, #16] 1410a: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 a.y1 += img->coords.y1; 1410e: f8bd 1046 ldrh.w r1, [sp, #70] ; 0x46 a.x1 += img->coords.x1; 14112: 4413 add r3, r2 14114: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 a.y1 += img->coords.y1; 14118: 8a63 ldrh r3, [r4, #18] 1411a: 4419 add r1, r3 1411c: f8ad 1046 strh.w r1, [sp, #70] ; 0x46 a.x2 += img->coords.x1; 14120: f8bd 1048 ldrh.w r1, [sp, #72] ; 0x48 14124: 440a add r2, r1 14126: f8ad 2048 strh.w r2, [sp, #72] ; 0x48 a.y2 += img->coords.y1; 1412a: f8bd 204a ldrh.w r2, [sp, #74] ; 0x4a 1412e: 4413 add r3, r2 14130: f8ad 304a strh.w r3, [sp, #74] ; 0x4a if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER; 14134: 2200 movs r2, #0 14136: a911 add r1, sp, #68 ; 0x44 14138: e7c6 b.n 140c8 else if(mode == LV_DESIGN_DRAW_MAIN) { 1413a: 2e00 cmp r6, #0 1413c: f040 816f bne.w 1441e if(ext->h == 0 || ext->w == 0) return true; 14140: f9b0 300a ldrsh.w r3, [r0, #10] 14144: 2b00 cmp r3, #0 14146: f000 8168 beq.w 1441a 1414a: f9b0 3008 ldrsh.w r3, [r0, #8] 1414e: 2b00 cmp r3, #0 14150: f000 8163 beq.w 1441a lv_obj_get_coords(img, &img_coords); 14154: a904 add r1, sp, #16 14156: 4b6a ldr r3, [pc, #424] ; (14300 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 14158: 4f64 ldr r7, [pc, #400] ; (142ec ) 1415a: 4620 mov r0, r4 1415c: 4798 blx r3 lv_draw_rect_dsc_init(&bg_dsc); 1415e: 4b69 ldr r3, [pc, #420] ; (14304 ) 14160: a811 add r0, sp, #68 ; 0x44 14162: 4798 blx r3 lv_obj_init_draw_rect_dsc(img, LV_IMG_PART_MAIN, &bg_dsc); 14164: 4b68 ldr r3, [pc, #416] ; (14308 ) 14166: aa11 add r2, sp, #68 ; 0x44 14168: 4631 mov r1, r6 1416a: 4620 mov r0, r4 1416c: 4798 blx r3 1416e: 2233 movs r2, #51 ; 0x33 14170: 4631 mov r1, r6 14172: 4620 mov r0, r4 14174: 47b8 blx r7 14176: 46b8 mov r8, r7 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 14178: b108 cbz r0, 1417e bg_dsc.border_opa = LV_OPA_TRANSP; 1417a: f88d 6058 strb.w r6, [sp, #88] ; 0x58 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 1417e: 2207 movs r2, #7 14180: 2100 movs r1, #0 14182: 4620 mov r0, r4 14184: 47c0 blx r8 zoom_final = (zoom_final * ext->zoom) >> 8; 14186: 8a6b ldrh r3, [r5, #18] 14188: 4358 muls r0, r3 if(zoom_final == 0) return LV_DESIGN_RES_OK; 1418a: 1207 asrs r7, r0, #8 1418c: d0a8 beq.n 140e0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 1418e: 2206 movs r2, #6 14190: 2100 movs r1, #0 14192: 4620 mov r0, r4 14194: 47c0 blx r8 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 14196: f8bd 2016 ldrh.w r2, [sp, #22] 1419a: f8bd 3012 ldrh.w r3, [sp, #18] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1419e: f8bd 1014 ldrh.w r1, [sp, #20] angle_final += ext->angle; 141a2: f8b5 a00c ldrh.w sl, [r5, #12] _lv_img_buf_get_transformed_area(&bg_coords, lv_area_get_width(&img_coords), lv_area_get_height(&img_coords), 141a6: f8df b154 ldr.w fp, [pc, #340] ; 142fc return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 141aa: 3201 adds r2, #1 141ac: 1ad2 subs r2, r2, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 141ae: f8bd 3010 ldrh.w r3, [sp, #16] 141b2: 3101 adds r1, #1 angle_final += ext->angle; 141b4: 4482 add sl, r0 141b6: 1ac9 subs r1, r1, r3 _lv_img_buf_get_transformed_area(&bg_coords, lv_area_get_width(&img_coords), lv_area_get_height(&img_coords), 141b8: b2bf uxth r7, r7 141ba: f105 030e add.w r3, r5, #14 141be: e9cd 7300 strd r7, r3, [sp] 141c2: b212 sxth r2, r2 141c4: fa0f f38a sxth.w r3, sl 141c8: b209 sxth r1, r1 141ca: a806 add r0, sp, #24 141cc: 47d8 blx fp bg_coords.x1 += img_coords.x1; 141ce: f8bd 2010 ldrh.w r2, [sp, #16] 141d2: f8bd 3018 ldrh.w r3, [sp, #24] bg_coords.y1 += img_coords.y1; 141d6: f8bd 101a ldrh.w r1, [sp, #26] bg_coords.x1 += img_coords.x1; 141da: 4413 add r3, r2 141dc: f8ad 3018 strh.w r3, [sp, #24] bg_coords.y1 += img_coords.y1; 141e0: f8bd 3012 ldrh.w r3, [sp, #18] 141e4: 4419 add r1, r3 141e6: f8ad 101a strh.w r1, [sp, #26] bg_coords.x2 += img_coords.x1; 141ea: f8bd 101c ldrh.w r1, [sp, #28] 141ee: 440a add r2, r1 141f0: f8ad 201c strh.w r2, [sp, #28] bg_coords.y2 += img_coords.y1; 141f4: f8bd 201e ldrh.w r2, [sp, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 141f8: 2100 movs r1, #0 141fa: 4413 add r3, r2 141fc: 4620 mov r0, r4 141fe: 2212 movs r2, #18 14200: f8ad 301e strh.w r3, [sp, #30] 14204: 47c0 blx r8 bg_coords.x1 -= lv_obj_get_style_pad_left(img, LV_IMG_PART_MAIN); 14206: f8bd 3018 ldrh.w r3, [sp, #24] 1420a: 1a18 subs r0, r3, r0 1420c: f8ad 0018 strh.w r0, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14210: 2213 movs r2, #19 14212: 2100 movs r1, #0 14214: 4620 mov r0, r4 14216: 47c0 blx r8 bg_coords.x2 += lv_obj_get_style_pad_right(img, LV_IMG_PART_MAIN); 14218: f8bd 301c ldrh.w r3, [sp, #28] 1421c: 4418 add r0, r3 1421e: f8ad 001c strh.w r0, [sp, #28] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14222: 2210 movs r2, #16 14224: 2100 movs r1, #0 14226: 4620 mov r0, r4 14228: 47c0 blx r8 bg_coords.y1 -= lv_obj_get_style_pad_top(img, LV_IMG_PART_MAIN); 1422a: f8bd 301a ldrh.w r3, [sp, #26] 1422e: 1a18 subs r0, r3, r0 14230: f8ad 001a strh.w r0, [sp, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14234: 2211 movs r2, #17 14236: 2100 movs r1, #0 14238: 4620 mov r0, r4 1423a: 47c0 blx r8 bg_coords.y2 += lv_obj_get_style_pad_bottom(img, LV_IMG_PART_MAIN); 1423c: f8bd 301e ldrh.w r3, [sp, #30] 14240: 4418 add r0, r3 14242: f8ad 001e strh.w r0, [sp, #30] lv_draw_rect(&bg_coords, clip_area, &bg_dsc); 14246: aa11 add r2, sp, #68 ; 0x44 14248: 4649 mov r1, r9 1424a: a806 add r0, sp, #24 1424c: 4b2f ldr r3, [pc, #188] ; (1430c ) 1424e: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 14250: 2202 movs r2, #2 14252: 2100 movs r1, #0 14254: 4620 mov r0, r4 14256: 47c0 blx r8 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 14258: b198 cbz r0, 14282 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 1425a: 4b2d ldr r3, [pc, #180] ; (14310 ) 1425c: 201c movs r0, #28 1425e: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14260: 2201 movs r2, #1 14262: 4683 mov fp, r0 14264: 2100 movs r1, #0 14266: 4620 mov r0, r4 14268: 47c0 blx r8 lv_draw_mask_radius_init(mp, &bg_coords, r, false); 1426a: 2300 movs r3, #0 1426c: 4602 mov r2, r0 1426e: a906 add r1, sp, #24 14270: 4658 mov r0, fp 14272: f8df 80b0 ldr.w r8, [pc, #176] ; 14324 14276: 47c0 blx r8 lv_draw_mask_add(mp, img + 8); 14278: 4b26 ldr r3, [pc, #152] ; (14314 ) 1427a: f504 7118 add.w r1, r4, #608 ; 0x260 1427e: 4658 mov r0, fp 14280: 4798 blx r3 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_VARIABLE) { 14282: 7d2b ldrb r3, [r5, #20] 14284: 079a lsls r2, r3, #30 14286: f100 809a bmi.w 143be img_coords.x1 += ext->offset.x; 1428a: f8bd 2010 ldrh.w r2, [sp, #16] 1428e: 88ab ldrh r3, [r5, #4] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 14290: f9b4 c010 ldrsh.w ip, [r4, #16] img_coords.y1 += ext->offset.y; 14294: 88e9 ldrh r1, [r5, #6] img_coords.x1 += ext->offset.x; 14296: 441a add r2, r3 14298: b290 uxth r0, r2 1429a: b212 sxth r2, r2 if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 1429c: 4594 cmp ip, r2 img_coords.x1 += ext->offset.x; 1429e: f8ad 2010 strh.w r2, [sp, #16] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 142a2: bfb8 it lt 142a4: 892a ldrhlt r2, [r5, #8] img_coords.y1 += ext->offset.y; 142a6: f8bd 3012 ldrh.w r3, [sp, #18] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 142aa: bfbc itt lt 142ac: 1a82 sublt r2, r0, r2 142ae: f8ad 2010 strhlt.w r2, [sp, #16] img_coords.y1 += ext->offset.y; 142b2: 440b add r3, r1 if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 142b4: f9b4 2012 ldrsh.w r2, [r4, #18] img_coords.y1 += ext->offset.y; 142b8: b299 uxth r1, r3 142ba: b21b sxth r3, r3 if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 142bc: 429a cmp r2, r3 img_coords.y1 += ext->offset.y; 142be: f8ad 3012 strh.w r3, [sp, #18] if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 142c2: bfbe ittt lt 142c4: 896b ldrhlt r3, [r5, #10] 142c6: 1acb sublt r3, r1, r3 142c8: f8ad 3012 strhlt.w r3, [sp, #18] lv_draw_img_dsc_init(&img_dsc); 142cc: a80a add r0, sp, #40 ; 0x28 142ce: 4b12 ldr r3, [pc, #72] ; (14318 ) 142d0: 4798 blx r3 lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc); 142d2: 4b12 ldr r3, [pc, #72] ; (1431c ) 142d4: aa0a add r2, sp, #40 ; 0x28 142d6: 2100 movs r1, #0 142d8: 4620 mov r0, r4 142da: 4798 blx r3 img_dsc.zoom = zoom_final; 142dc: f8ad 7030 strh.w r7, [sp, #48] ; 0x30 if(img_dsc.zoom == 0) return LV_DESIGN_RES_OK; 142e0: bb17 cbnz r7, 14328 return LV_DESIGN_RES_OK; 142e2: 2600 movs r6, #0 142e4: e6fc b.n 140e0 142e6: bf00 nop 142e8: 00003f89 .word 0x00003f89 142ec: 000036f1 .word 0x000036f1 142f0: 00003819 .word 0x00003819 142f4: 0000239d .word 0x0000239d 142f8: 000023ed .word 0x000023ed 142fc: 0000c0a5 .word 0x0000c0a5 14300: 00002285 .word 0x00002285 14304: 00009bb5 .word 0x00009bb5 14308: 00004289 .word 0x00004289 1430c: 00009c01 .word 0x00009c01 14310: 0000eefd .word 0x0000eefd 14314: 00009719 .word 0x00009719 14318: 00007551 .word 0x00007551 1431c: 00004881 .word 0x00004881 14320: 0000e0d9 .word 0x0000e0d9 14324: 00009925 .word 0x00009925 img_dsc.pivot.x = ext->pivot.x; 14328: 89eb ldrh r3, [r5, #14] 1432a: f8ad 302c strh.w r3, [sp, #44] ; 0x2c img_dsc.pivot.y = ext->pivot.y; 1432e: 8a2b ldrh r3, [r5, #16] 14330: f8ad 302e strh.w r3, [sp, #46] ; 0x2e img_dsc.antialias = ext->antialias; 14334: 7d6b ldrb r3, [r5, #21] 14336: f89d 2037 ldrb.w r2, [sp, #55] ; 0x37 lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 1433a: 4c4f ldr r4, [pc, #316] ; (14478 ) img_dsc.angle = angle_final; 1433c: f8ad a02a strh.w sl, [sp, #42] ; 0x2a img_dsc.antialias = ext->antialias; 14340: f3c3 0300 ubfx r3, r3, #0, #1 14344: f363 0200 bfi r2, r3, #0, #1 14348: f88d 2037 strb.w r2, [sp, #55] ; 0x37 cords_tmp.y1 = img_coords.y1; 1434c: f9bd 3012 ldrsh.w r3, [sp, #18] cords_tmp.y2 = img_coords.y1 + ext->h - 1; 14350: 896a ldrh r2, [r5, #10] cords_tmp.y1 = img_coords.y1; 14352: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 cords_tmp.y2 = img_coords.y1 + ext->h - 1; 14356: 3b01 subs r3, #1 14358: 4413 add r3, r2 1435a: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 1435e: f9bd 2022 ldrsh.w r2, [sp, #34] ; 0x22 14362: f9bd 3016 ldrsh.w r3, [sp, #22] 14366: 429a cmp r2, r3 14368: f73f aeba bgt.w 140e0 cords_tmp.x1 = img_coords.x1; 1436c: f9bd 3010 ldrsh.w r3, [sp, #16] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 14370: 892a ldrh r2, [r5, #8] cords_tmp.x1 = img_coords.x1; 14372: f8ad 3020 strh.w r3, [sp, #32] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 14376: 3b01 subs r3, #1 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 14378: 4413 add r3, r2 1437a: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 1437e: f9bd 2020 ldrsh.w r2, [sp, #32] 14382: f9bd 3014 ldrsh.w r3, [sp, #20] 14386: 429a cmp r2, r3 14388: dd0b ble.n 143a2 for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 1438a: 896b ldrh r3, [r5, #10] 1438c: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 14390: 441a add r2, r3 14392: f8ad 2022 strh.w r2, [sp, #34] ; 0x22 14396: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 1439a: 4413 add r3, r2 1439c: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 143a0: e7dd b.n 1435e lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 143a2: 682a ldr r2, [r5, #0] 143a4: ab0a add r3, sp, #40 ; 0x28 143a6: 4649 mov r1, r9 143a8: a808 add r0, sp, #32 143aa: 47a0 blx r4 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 143ac: f8bd 2020 ldrh.w r2, [sp, #32] 143b0: 892b ldrh r3, [r5, #8] 143b2: 441a add r2, r3 143b4: f8ad 2020 strh.w r2, [sp, #32] 143b8: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 143bc: e7dc b.n 14378 else if(ext->src_type == LV_IMG_SRC_SYMBOL) { 143be: f003 0303 and.w r3, r3, #3 143c2: 2b02 cmp r3, #2 143c4: d118 bne.n 143f8 lv_draw_label_dsc_init(&label_dsc); 143c6: a80a add r0, sp, #40 ; 0x28 143c8: 4b2c ldr r3, [pc, #176] ; (1447c ) 143ca: 4798 blx r3 lv_obj_init_draw_label_dsc(img, LV_IMG_PART_MAIN, &label_dsc); 143cc: aa0a add r2, sp, #40 ; 0x28 143ce: 4620 mov r0, r4 143d0: 4b2b ldr r3, [pc, #172] ; (14480 ) 143d2: 2100 movs r1, #0 143d4: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 143d6: 4b2b ldr r3, [pc, #172] ; (14484 ) 143d8: f248 02a9 movw r2, #32937 ; 0x80a9 143dc: 2100 movs r1, #0 143de: 4620 mov r0, r4 143e0: 4798 blx r3 lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 143e2: 2300 movs r3, #0 143e4: 9300 str r3, [sp, #0] label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); 143e6: f8ad 0028 strh.w r0, [sp, #40] ; 0x28 lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 143ea: 682b ldr r3, [r5, #0] 143ec: 4c26 ldr r4, [pc, #152] ; (14488 ) 143ee: aa0a add r2, sp, #40 ; 0x28 143f0: 4649 mov r1, r9 143f2: a804 add r0, sp, #16 143f4: 47a0 blx r4 143f6: e673 b.n 140e0 LV_LOG_WARN("lv_img_design: image source type is unknown"); 143f8: 4b24 ldr r3, [pc, #144] ; (1448c ) 143fa: 9300 str r3, [sp, #0] 143fc: 4924 ldr r1, [pc, #144] ; (14490 ) 143fe: 4b25 ldr r3, [pc, #148] ; (14494 ) 14400: 4d25 ldr r5, [pc, #148] ; (14498 ) 14402: f240 22bb movw r2, #699 ; 0x2bb 14406: 2002 movs r0, #2 14408: 47a8 blx r5 lv_draw_img(&img->coords, clip_area, NULL, NULL); 1440a: 2300 movs r3, #0 1440c: f104 0010 add.w r0, r4, #16 14410: 461a mov r2, r3 14412: 4c19 ldr r4, [pc, #100] ; (14478 ) 14414: 4649 mov r1, r9 14416: 47a0 blx r4 14418: e662 b.n 140e0 if(ext->h == 0 || ext->w == 0) return true; 1441a: 2601 movs r6, #1 1441c: e660 b.n 140e0 else if(mode == LV_DESIGN_DRAW_POST) { 1441e: 2e01 cmp r6, #1 14420: f47f af5f bne.w 142e2 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 14424: 4d1d ldr r5, [pc, #116] ; (1449c ) 14426: 2202 movs r2, #2 14428: 2100 movs r1, #0 1442a: 4620 mov r0, r4 1442c: 47a8 blx r5 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 1442e: b128 cbz r0, 1443c lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8); 14430: 4b1b ldr r3, [pc, #108] ; (144a0 ) 14432: f504 7018 add.w r0, r4, #608 ; 0x260 14436: 4798 blx r3 _lv_mem_buf_release(param); 14438: 4b1a ldr r3, [pc, #104] ; (144a4 ) 1443a: 4798 blx r3 lv_draw_rect_dsc_init(&draw_dsc); 1443c: a811 add r0, sp, #68 ; 0x44 1443e: 4b1a ldr r3, [pc, #104] ; (144a8 ) 14440: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 14442: 2233 movs r2, #51 ; 0x33 14444: 2100 movs r1, #0 14446: 4620 mov r0, r4 14448: 47a8 blx r5 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 1444a: 2800 cmp r0, #0 1444c: f43f af49 beq.w 142e2 draw_dsc.bg_opa = LV_OPA_TRANSP; 14450: 2100 movs r1, #0 14452: f88d 1050 strb.w r1, [sp, #80] ; 0x50 draw_dsc.pattern_opa = LV_OPA_TRANSP; 14456: f88d 107a strb.w r1, [sp, #122] ; 0x7a draw_dsc.shadow_opa = LV_OPA_TRANSP; 1445a: f88d 106c strb.w r1, [sp, #108] ; 0x6c lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); 1445e: aa11 add r2, sp, #68 ; 0x44 14460: 4620 mov r0, r4 14462: 4b12 ldr r3, [pc, #72] ; (144ac ) 14464: 4798 blx r3 lv_draw_rect(&img->coords, clip_area, &draw_dsc); 14466: 4b12 ldr r3, [pc, #72] ; (144b0 ) 14468: aa11 add r2, sp, #68 ; 0x44 1446a: 4649 mov r1, r9 1446c: f104 0010 add.w r0, r4, #16 14470: 4798 blx r3 14472: e736 b.n 142e2 if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 14474: 2603 movs r6, #3 14476: e633 b.n 140e0 14478: 000075c1 .word 0x000075c1 1447c: 00007855 .word 0x00007855 14480: 000047c9 .word 0x000047c9 14484: 00003795 .word 0x00003795 14488: 00007885 .word 0x00007885 1448c: 0001fe07 .word 0x0001fe07 14490: 000242bc .word 0x000242bc 14494: 00024375 .word 0x00024375 14498: 0000e931 .word 0x0000e931 1449c: 000036f1 .word 0x000036f1 144a0: 000097d5 .word 0x000097d5 144a4: 0000ebb1 .word 0x0000ebb1 144a8: 00009bb5 .word 0x00009bb5 144ac: 00004289 .word 0x00004289 144b0: 00009c01 .word 0x00009c01 000144b4 : { 144b4: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(img, LV_OBJX_NAME); 144b6: 4b0d ldr r3, [pc, #52] ; (144ec ) { 144b8: 4604 mov r4, r0 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 144ba: 4798 blx r3 144bc: 4605 mov r5, r0 144be: b968 cbnz r0, 144dc 144c0: 4b0b ldr r3, [pc, #44] ; (144f0 ) 144c2: 490c ldr r1, [pc, #48] ; (144f4 ) 144c4: 9300 str r3, [sp, #0] 144c6: f44f 72e7 mov.w r2, #462 ; 0x1ce 144ca: 2003 movs r0, #3 144cc: 4e0a ldr r6, [pc, #40] ; (144f8 ) 144ce: 47b0 blx r6 144d0: 480a ldr r0, [pc, #40] ; (144fc ) 144d2: 490b ldr r1, [pc, #44] ; (14500 ) 144d4: 4622 mov r2, r4 144d6: 462b mov r3, r5 144d8: 4788 blx r1 144da: e7fe b.n 144da lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 144dc: 4b09 ldr r3, [pc, #36] ; (14504 ) 144de: 4620 mov r0, r4 144e0: 4798 blx r3 return ext->auto_size == 0 ? false : true; 144e2: 7d00 ldrb r0, [r0, #20] } 144e4: f3c0 0080 ubfx r0, r0, #2, #1 144e8: b002 add sp, #8 144ea: bd70 pop {r4, r5, r6, pc} 144ec: 00001795 .word 0x00001795 144f0: 000243e4 .word 0x000243e4 144f4: 000242bc .word 0x000242bc 144f8: 0000e931 .word 0x0000e931 144fc: 0001ef03 .word 0x0001ef03 14500: 0000179d .word 0x0000179d 14504: 00003f89 .word 0x00003f89 00014508 : { 14508: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} LV_ASSERT_OBJ(img, LV_OBJX_NAME); 1450c: 4d7b ldr r5, [pc, #492] ; (146fc ) { 1450e: b088 sub sp, #32 14510: 4606 mov r6, r0 14512: 460f mov r7, r1 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 14514: 47a8 blx r5 14516: 46aa mov sl, r5 14518: 4604 mov r4, r0 1451a: b960 cbnz r0, 14536 1451c: 4b78 ldr r3, [pc, #480] ; (14700 ) 1451e: 4979 ldr r1, [pc, #484] ; (14704 ) 14520: 9300 str r3, [sp, #0] 14522: 228f movs r2, #143 ; 0x8f 14524: 2003 movs r0, #3 14526: 4d78 ldr r5, [pc, #480] ; (14708 ) 14528: 47a8 blx r5 1452a: 4878 ldr r0, [pc, #480] ; (1470c ) 1452c: 4978 ldr r1, [pc, #480] ; (14710 ) 1452e: 4632 mov r2, r6 14530: 4623 mov r3, r4 14532: 4788 blx r1 14534: e7fe b.n 14534 lv_img_src_t src_type = lv_img_src_get_type(src_img); 14536: 4b77 ldr r3, [pc, #476] ; (14714 ) 14538: 4638 mov r0, r7 1453a: 4798 blx r3 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1453c: 4b76 ldr r3, [pc, #472] ; (14718 ) lv_img_src_t src_type = lv_img_src_get_type(src_img); 1453e: 4605 mov r5, r0 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14540: 4630 mov r0, r6 14542: 4798 blx r3 switch(src_type) { 14544: 2d02 cmp r5, #2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14546: 4604 mov r4, r0 switch(src_type) { 14548: d923 bls.n 14592 LV_LOG_WARN("lv_img_set_src: unknown type"); 1454a: 4b74 ldr r3, [pc, #464] ; (1471c ) 1454c: 9300 str r3, [sp, #0] 1454e: 496d ldr r1, [pc, #436] ; (14704 ) 14550: 4b6b ldr r3, [pc, #428] ; (14700 ) 14552: f8df 81b4 ldr.w r8, [pc, #436] ; 14708 14556: 22a0 movs r2, #160 ; 0xa0 14558: 2002 movs r0, #2 1455a: 47c0 blx r8 if(src_type == LV_IMG_SRC_UNKNOWN) { 1455c: 2d03 cmp r5, #3 1455e: d118 bne.n 14592 LV_LOG_WARN("lv_img_set_src: unknown image type"); 14560: 4b6f ldr r3, [pc, #444] ; (14720 ) 14562: 9300 str r3, [sp, #0] 14564: 4967 ldr r1, [pc, #412] ; (14704 ) 14566: 4b66 ldr r3, [pc, #408] ; (14700 ) 14568: 22a6 movs r2, #166 ; 0xa6 1456a: 2002 movs r0, #2 1456c: 47c0 blx r8 if(ext->src_type == LV_IMG_SRC_SYMBOL || ext->src_type == LV_IMG_SRC_FILE) { 1456e: 7d23 ldrb r3, [r4, #20] 14570: f003 0303 and.w r3, r3, #3 14574: 3b01 subs r3, #1 14576: 2b01 cmp r3, #1 14578: d802 bhi.n 14580 lv_mem_free(ext->src); 1457a: 6820 ldr r0, [r4, #0] 1457c: 4b69 ldr r3, [pc, #420] ; (14724 ) 1457e: 4798 blx r3 ext->src = NULL; 14580: 2300 movs r3, #0 14582: 6023 str r3, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 14584: 7d23 ldrb r3, [r4, #20] 14586: f043 0303 orr.w r3, r3, #3 1458a: 7523 strb r3, [r4, #20] } 1458c: b008 add sp, #32 1458e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_img_decoder_get_info(src_img, &header); 14592: 4b65 ldr r3, [pc, #404] ; (14728 ) 14594: a906 add r1, sp, #24 14596: 4638 mov r0, r7 14598: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { 1459a: 2d00 cmp r5, #0 1459c: d146 bne.n 1462c LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found"); 1459e: 4b63 ldr r3, [pc, #396] ; (1472c ) 145a0: 9300 str r3, [sp, #0] 145a2: 4958 ldr r1, [pc, #352] ; (14704 ) 145a4: 4b56 ldr r3, [pc, #344] ; (14700 ) 145a6: f8df 8160 ldr.w r8, [pc, #352] ; 14708 145aa: 22b4 movs r2, #180 ; 0xb4 145ac: 2001 movs r0, #1 145ae: 47c0 blx r8 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 145b0: 7d23 ldrb r3, [r4, #20] 145b2: f003 0303 and.w r3, r3, #3 145b6: 3b01 subs r3, #1 145b8: 2b01 cmp r3, #1 145ba: d802 bhi.n 145c2 lv_mem_free(ext->src); 145bc: 6820 ldr r0, [r4, #0] 145be: 4b59 ldr r3, [pc, #356] ; (14724 ) 145c0: 4798 blx r3 ext->src = src_img; 145c2: 6027 str r7, [r4, #0] ext->w = header.w; 145c4: 9a06 ldr r2, [sp, #24] ext->cf = header.cf; 145c6: f89d 0018 ldrb.w r0, [sp, #24] ext->w = header.w; 145ca: f3c2 238a ubfx r3, r2, #10, #11 145ce: 8123 strh r3, [r4, #8] ext->h = header.h; 145d0: f8bd 301a ldrh.w r3, [sp, #26] 145d4: f3c3 114a ubfx r1, r3, #5, #11 145d8: 8161 strh r1, [r4, #10] ext->src_type = src_type; 145da: 7d21 ldrb r1, [r4, #20] ext->cf = header.cf; 145dc: f3c0 0004 ubfx r0, r0, #0, #5 ext->src_type = src_type; 145e0: f005 0503 and.w r5, r5, #3 145e4: ea45 05c0 orr.w r5, r5, r0, lsl #3 145e8: f001 0104 and.w r1, r1, #4 ext->pivot.y = header.h / 2; 145ec: f3c3 1389 ubfx r3, r3, #6, #10 ext->src_type = src_type; 145f0: 430d orrs r5, r1 ext->pivot.x = header.w / 2; 145f2: f3c2 22c9 ubfx r2, r2, #11, #10 ext->pivot.y = header.h / 2; 145f6: 8223 strh r3, [r4, #16] ext->src_type = src_type; 145f8: 7525 strb r5, [r4, #20] if(lv_img_get_auto_size(img) != false) { 145fa: 4b4d ldr r3, [pc, #308] ; (14730 ) ext->pivot.x = header.w / 2; 145fc: 81e2 strh r2, [r4, #14] if(lv_img_get_auto_size(img) != false) { 145fe: 4630 mov r0, r6 14600: 4798 blx r3 14602: b130 cbz r0, 14612 lv_obj_set_size(img, ext->w, ext->h); 14604: f9b4 200a ldrsh.w r2, [r4, #10] 14608: f9b4 1008 ldrsh.w r1, [r4, #8] 1460c: 4b49 ldr r3, [pc, #292] ; (14734 ) 1460e: 4630 mov r0, r6 14610: 4798 blx r3 if(ext->angle || ext->zoom != LV_IMG_ZOOM_NONE) lv_obj_refresh_ext_draw_pad(img); 14612: 89a3 ldrh r3, [r4, #12] 14614: b91b cbnz r3, 1461e 14616: 8a63 ldrh r3, [r4, #18] 14618: f5b3 7f80 cmp.w r3, #256 ; 0x100 1461c: d002 beq.n 14624 1461e: 4b46 ldr r3, [pc, #280] ; (14738 ) 14620: 4630 mov r0, r6 14622: 4798 blx r3 lv_obj_invalidate(img); 14624: 4b45 ldr r3, [pc, #276] ; (1473c ) 14626: 4630 mov r0, r6 14628: 4798 blx r3 1462a: e7af b.n 1458c else if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_SYMBOL) { 1462c: 1e6b subs r3, r5, #1 1462e: b2db uxtb r3, r3 14630: 2b01 cmp r3, #1 14632: d831 bhi.n 14698 if(ext->src != src_img) { 14634: f8d4 9000 ldr.w r9, [r4] 14638: 454f cmp r7, r9 1463a: d02d beq.n 14698 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 1463c: 7d23 ldrb r3, [r4, #20] 1463e: f003 0303 and.w r3, r3, #3 14642: 3b01 subs r3, #1 const void * old_src = NULL; 14644: 2b01 cmp r3, #1 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 14646: 4638 mov r0, r7 14648: 4b3d ldr r3, [pc, #244] ; (14740 ) const void * old_src = NULL; 1464a: bf88 it hi 1464c: f04f 0900 movhi.w r9, #0 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 14650: 4798 blx r3 14652: 4b3c ldr r3, [pc, #240] ; (14744 ) 14654: 3001 adds r0, #1 14656: 4798 blx r3 14658: 4680 mov r8, r0 LV_ASSERT_MEM(new_str); 1465a: 47d0 blx sl 1465c: 4682 mov sl, r0 1465e: b960 cbnz r0, 1467a 14660: 4b27 ldr r3, [pc, #156] ; (14700 ) 14662: 4928 ldr r1, [pc, #160] ; (14704 ) 14664: 9300 str r3, [sp, #0] 14666: 22c7 movs r2, #199 ; 0xc7 14668: 2003 movs r0, #3 1466a: 4c27 ldr r4, [pc, #156] ; (14708 ) 1466c: 47a0 blx r4 1466e: 4836 ldr r0, [pc, #216] ; (14748 ) 14670: 4927 ldr r1, [pc, #156] ; (14710 ) 14672: 4642 mov r2, r8 14674: 4653 mov r3, sl 14676: 4788 blx r1 14678: e7fe b.n 14678 if(new_str == NULL) return; 1467a: f1b8 0f00 cmp.w r8, #0 1467e: d085 beq.n 1458c strcpy(new_str, src_img); 14680: 4b32 ldr r3, [pc, #200] ; (1474c ) 14682: 4639 mov r1, r7 14684: 4640 mov r0, r8 14686: 4798 blx r3 ext->src = new_str; 14688: f8c4 8000 str.w r8, [r4] if(old_src) lv_mem_free(old_src); 1468c: f1b9 0f00 cmp.w r9, #0 14690: d002 beq.n 14698 14692: 4b24 ldr r3, [pc, #144] ; (14724 ) 14694: 4648 mov r0, r9 14696: 4798 blx r3 if(src_type == LV_IMG_SRC_SYMBOL) { 14698: 2d02 cmp r5, #2 1469a: d193 bne.n 145c4 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1469c: 4b2c ldr r3, [pc, #176] ; (14750 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1469e: f8df 90b8 ldr.w r9, [pc, #184] ; 14758 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 146a2: f248 028e movw r2, #32910 ; 0x808e 146a6: 2100 movs r1, #0 146a8: 4630 mov r0, r6 146aa: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 146ac: f248 0280 movw r2, #32896 ; 0x8080 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 146b0: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 146b2: 2100 movs r1, #0 146b4: 4630 mov r0, r6 146b6: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 146b8: f248 0281 movw r2, #32897 ; 0x8081 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 146bc: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 146be: 2100 movs r1, #0 146c0: 4630 mov r0, r6 146c2: 47c8 blx r9 _lv_txt_get_size(&size, src_img, font, letter_space, line_space, 146c4: f647 4218 movw r2, #31768 ; 0x7c18 146c8: 2300 movs r3, #0 146ca: e9cd 2301 strd r2, r3, [sp, #4] 146ce: 9000 str r0, [sp, #0] 146d0: 9b05 ldr r3, [sp, #20] 146d2: 4642 mov r2, r8 146d4: 4639 mov r1, r7 146d6: a807 add r0, sp, #28 146d8: 4f1e ldr r7, [pc, #120] ; (14754 ) 146da: 47b8 blx r7 header.w = size.x; 146dc: f8bd 301c ldrh.w r3, [sp, #28] 146e0: f3c3 020a ubfx r2, r3, #0, #11 146e4: f9bd 301e ldrsh.w r3, [sp, #30] 146e8: 055b lsls r3, r3, #21 146ea: ea43 2382 orr.w r3, r3, r2, lsl #10 146ee: 9a06 ldr r2, [sp, #24] 146f0: f3c2 0209 ubfx r2, r2, #0, #10 146f4: 4313 orrs r3, r2 146f6: 9306 str r3, [sp, #24] 146f8: e764 b.n 145c4 146fa: bf00 nop 146fc: 00001795 .word 0x00001795 14700: 000243f9 .word 0x000243f9 14704: 000242bc .word 0x000242bc 14708: 0000e931 .word 0x0000e931 1470c: 0001ef03 .word 0x0001ef03 14710: 0000179d .word 0x0000179d 14714: 00007811 .word 0x00007811 14718: 00003f89 .word 0x00003f89 1471c: 000242ee .word 0x000242ee 14720: 0002430b .word 0x0002430b 14724: 0000eb2d .word 0x0000eb2d 14728: 0000cf6d .word 0x0000cf6d 1472c: 0002432e .word 0x0002432e 14730: 000144b5 .word 0x000144b5 14734: 000034c1 .word 0x000034c1 14738: 00002081 .word 0x00002081 1473c: 00002739 .word 0x00002739 14740: 0001637d .word 0x0001637d 14744: 0000ea75 .word 0x0000ea75 14748: 0001ee02 .word 0x0001ee02 1474c: 0001636d .word 0x0001636d 14750: 000038a9 .word 0x000038a9 14754: 000101fd .word 0x000101fd 14758: 000036f1 .word 0x000036f1 0001475c : { 1475c: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} lv_obj_t * img = lv_obj_create(par, copy); 14760: 4b53 ldr r3, [pc, #332] ; (148b0 ) LV_ASSERT_MEM(img); 14762: f8df 81a8 ldr.w r8, [pc, #424] ; 1490c { 14766: 460e mov r6, r1 14768: 4607 mov r7, r0 lv_obj_t * img = lv_obj_create(par, copy); 1476a: 4798 blx r3 1476c: 4605 mov r5, r0 LV_ASSERT_MEM(img); 1476e: 47c0 blx r8 14770: 4604 mov r4, r0 14772: b960 cbnz r0, 1478e 14774: 4b4f ldr r3, [pc, #316] ; (148b4 ) 14776: 4950 ldr r1, [pc, #320] ; (148b8 ) 14778: 9300 str r3, [sp, #0] 1477a: 2242 movs r2, #66 ; 0x42 1477c: 2003 movs r0, #3 1477e: 4e4f ldr r6, [pc, #316] ; (148bc ) 14780: 47b0 blx r6 14782: 484f ldr r0, [pc, #316] ; (148c0 ) 14784: 494f ldr r1, [pc, #316] ; (148c4 ) 14786: 462a mov r2, r5 14788: 4623 mov r3, r4 1478a: 4788 blx r1 1478c: e7fe b.n 1478c if(img == NULL) return NULL; 1478e: b315 cbz r5, 147d6 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 14790: 4c4d ldr r4, [pc, #308] ; (148c8 ) 14792: 6823 ldr r3, [r4, #0] 14794: b91b cbnz r3, 1479e 14796: 4b4d ldr r3, [pc, #308] ; (148cc ) 14798: 4628 mov r0, r5 1479a: 4798 blx r3 1479c: 6020 str r0, [r4, #0] lv_img_ext_t * ext = lv_obj_allocate_ext_attr(img, sizeof(lv_img_ext_t)); 1479e: 4b4c ldr r3, [pc, #304] ; (148d0 ) 147a0: 2118 movs r1, #24 147a2: 4628 mov r0, r5 147a4: 4798 blx r3 147a6: 4604 mov r4, r0 LV_ASSERT_MEM(ext); 147a8: 47c0 blx r8 147aa: 4680 mov r8, r0 147ac: b960 cbnz r0, 147c8 147ae: 4b41 ldr r3, [pc, #260] ; (148b4 ) 147b0: 4941 ldr r1, [pc, #260] ; (148b8 ) 147b2: 9300 str r3, [sp, #0] 147b4: 2249 movs r2, #73 ; 0x49 147b6: 2003 movs r0, #3 147b8: 4d40 ldr r5, [pc, #256] ; (148bc ) 147ba: 47a8 blx r5 147bc: 4840 ldr r0, [pc, #256] ; (148c0 ) 147be: 4941 ldr r1, [pc, #260] ; (148c4 ) 147c0: 4622 mov r2, r4 147c2: 4643 mov r3, r8 147c4: 4788 blx r1 147c6: e7fe b.n 147c6 if(ext == NULL) { 147c8: f04f 0800 mov.w r8, #0 147cc: b93c cbnz r4, 147de lv_obj_del(img); 147ce: 4628 mov r0, r5 147d0: 4b40 ldr r3, [pc, #256] ; (148d4 ) 147d2: 4798 blx r3 return NULL; 147d4: 4625 mov r5, r4 } 147d6: 4628 mov r0, r5 147d8: b002 add sp, #8 147da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} ext->src_type = LV_IMG_SRC_UNKNOWN; 147de: 7d23 ldrb r3, [r4, #20] ext->src = NULL; 147e0: f8c4 8000 str.w r8, [r4] ext->src_type = LV_IMG_SRC_UNKNOWN; 147e4: f003 0304 and.w r3, r3, #4 147e8: f043 0303 orr.w r3, r3, #3 147ec: 7523 strb r3, [r4, #20] ext->w = lv_obj_get_width(img); 147ee: 4628 mov r0, r5 147f0: 4b39 ldr r3, [pc, #228] ; (148d8 ) 147f2: 4798 blx r3 ext->h = lv_obj_get_height(img); 147f4: 4b39 ldr r3, [pc, #228] ; (148dc ) ext->w = lv_obj_get_width(img); 147f6: 8120 strh r0, [r4, #8] ext->h = lv_obj_get_height(img); 147f8: 4628 mov r0, r5 147fa: 4798 blx r3 ext->pivot.y = 0; 147fc: f04f 7380 mov.w r3, #16777216 ; 0x1000000 14800: 6123 str r3, [r4, #16] ext->auto_size = 1; 14802: 8aa3 ldrh r3, [r4, #20] lv_obj_set_signal_cb(img, lv_img_signal); 14804: 4936 ldr r1, [pc, #216] ; (148e0 ) ext->h = lv_obj_get_height(img); 14806: 8160 strh r0, [r4, #10] ext->auto_size = 1; 14808: f443 7382 orr.w r3, r3, #260 ; 0x104 1480c: 82a3 strh r3, [r4, #20] lv_obj_set_signal_cb(img, lv_img_signal); 1480e: 4628 mov r0, r5 14810: 4b34 ldr r3, [pc, #208] ; (148e4 ) ext->offset.x = 0; 14812: f8c4 8004 str.w r8, [r4, #4] ext->angle = 0; 14816: f8c4 800c str.w r8, [r4, #12] lv_obj_set_signal_cb(img, lv_img_signal); 1481a: 4798 blx r3 lv_obj_set_design_cb(img, lv_img_design); 1481c: 4932 ldr r1, [pc, #200] ; (148e8 ) 1481e: 4b33 ldr r3, [pc, #204] ; (148ec ) 14820: 4628 mov r0, r5 14822: 4798 blx r3 if(copy == NULL) { 14824: b9e6 cbnz r6, 14860 lv_theme_apply(img, LV_THEME_IMAGE); 14826: 4b32 ldr r3, [pc, #200] ; (148f0 ) 14828: 210f movs r1, #15 1482a: 4628 mov r0, r5 1482c: 4798 blx r3 lv_obj_set_click(img, false); 1482e: 4b31 ldr r3, [pc, #196] ; (148f4 ) 14830: 4631 mov r1, r6 14832: 4628 mov r0, r5 14834: 4798 blx r3 lv_obj_set_adv_hittest(img, true); /*Images have fast hit-testing*/ 14836: 4b30 ldr r3, [pc, #192] ; (148f8 ) 14838: 2101 movs r1, #1 1483a: 4628 mov r0, r5 1483c: 4798 blx r3 if(par != NULL) { 1483e: 7d23 ldrb r3, [r4, #20] 14840: b15f cbz r7, 1485a ext->auto_size = 1; 14842: f043 0304 orr.w r3, r3, #4 ext->auto_size = 0; 14846: 7523 strb r3, [r4, #20] LV_LOG_INFO("image created"); 14848: 4b2c ldr r3, [pc, #176] ; (148fc ) 1484a: 9300 str r3, [sp, #0] 1484c: 491a ldr r1, [pc, #104] ; (148b8 ) 1484e: 4b19 ldr r3, [pc, #100] ; (148b4 ) 14850: 4c1a ldr r4, [pc, #104] ; (148bc ) 14852: 227f movs r2, #127 ; 0x7f 14854: 2001 movs r0, #1 14856: 47a0 blx r4 return img; 14858: e7bd b.n 147d6 ext->auto_size = 0; 1485a: f367 0382 bfi r3, r7, #2, #1 1485e: e7f2 b.n 14846 lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 14860: 4b27 ldr r3, [pc, #156] ; (14900 ) 14862: 4630 mov r0, r6 14864: 4798 blx r3 ext->auto_size = copy_ext->auto_size; 14866: 7d03 ldrb r3, [r0, #20] 14868: 7d22 ldrb r2, [r4, #20] 1486a: f3c3 0380 ubfx r3, r3, #2, #1 1486e: f363 0282 bfi r2, r3, #2, #1 14872: 7522 strb r2, [r4, #20] ext->zoom = copy_ext->zoom; 14874: 8a43 ldrh r3, [r0, #18] 14876: 8263 strh r3, [r4, #18] ext->angle = copy_ext->angle; 14878: 8983 ldrh r3, [r0, #12] ext->antialias = copy_ext->antialias; 1487a: 7d42 ldrb r2, [r0, #21] ext->angle = copy_ext->angle; 1487c: 81a3 strh r3, [r4, #12] ext->antialias = copy_ext->antialias; 1487e: 7d63 ldrb r3, [r4, #21] 14880: f362 0300 bfi r3, r2, #0, #1 14884: 7563 strb r3, [r4, #21] ext->offset.x = copy_ext->offset.x; 14886: f9b0 3004 ldrsh.w r3, [r0, #4] 1488a: 80a3 strh r3, [r4, #4] ext->offset.y = copy_ext->offset.y; 1488c: f9b0 3006 ldrsh.w r3, [r0, #6] 14890: 80e3 strh r3, [r4, #6] ext->pivot.x = copy_ext->pivot.x; 14892: f9b0 300e ldrsh.w r3, [r0, #14] 14896: 81e3 strh r3, [r4, #14] ext->pivot.y = copy_ext->pivot.y; 14898: f9b0 3010 ldrsh.w r3, [r0, #16] lv_img_set_src(img, copy_ext->src); 1489c: 6801 ldr r1, [r0, #0] ext->pivot.y = copy_ext->pivot.y; 1489e: 8223 strh r3, [r4, #16] lv_img_set_src(img, copy_ext->src); 148a0: 4628 mov r0, r5 148a2: 4b18 ldr r3, [pc, #96] ; (14904 ) 148a4: 4798 blx r3 lv_obj_refresh_style(img, LV_STYLE_PROP_ALL); 148a6: 4b18 ldr r3, [pc, #96] ; (14908 ) 148a8: 21ff movs r1, #255 ; 0xff 148aa: 4628 mov r0, r5 148ac: 4798 blx r3 148ae: e7cb b.n 14848 148b0: 000030c5 .word 0x000030c5 148b4: 00024408 .word 0x00024408 148b8: 000242bc .word 0x000242bc 148bc: 0000e931 .word 0x0000e931 148c0: 0001ee02 .word 0x0001ee02 148c4: 0000179d .word 0x0000179d 148c8: 2000c7f8 .word 0x2000c7f8 148cc: 00003f41 .word 0x00003f41 148d0: 00002029 .word 0x00002029 148d4: 00004141 .word 0x00004141 148d8: 0000239d .word 0x0000239d 148dc: 000023ed .word 0x000023ed 148e0: 00014911 .word 0x00014911 148e4: 00001f8d .word 0x00001f8d 148e8: 00014065 .word 0x00014065 148ec: 00001fe1 .word 0x00001fe1 148f0: 00010345 .word 0x00010345 148f4: 00001e0d .word 0x00001e0d 148f8: 00001db9 .word 0x00001db9 148fc: 00024360 .word 0x00024360 14900: 00003f89 .word 0x00003f89 14904: 00014509 .word 0x00014509 14908: 00002d39 .word 0x00002d39 1490c: 00001795 .word 0x00001795 00014910 : * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted */ static lv_res_t lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param) { 14910: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} lv_res_t res; if(sign == LV_SIGNAL_GET_STYLE) { 14914: 2908 cmp r1, #8 { 14916: b085 sub sp, #20 14918: 4604 mov r4, r0 1491a: 4688 mov r8, r1 1491c: 4616 mov r6, r2 if(sign == LV_SIGNAL_GET_STYLE) { 1491e: d110 bne.n 14942 static lv_style_list_t * lv_img_get_style(lv_obj_t * img, uint8_t type) { lv_style_list_t * style_dsc_p; switch(type) { 14920: 7813 ldrb r3, [r2, #0] 14922: b13b cbz r3, 14934 info->result = lv_img_get_style(img, info->part); 14924: 2300 movs r3, #0 14926: 6053 str r3, [r2, #4] else return ancestor_signal(img, sign, param); 14928: 4b82 ldr r3, [pc, #520] ; (14b34 ) 1492a: 681b ldr r3, [r3, #0] } 1492c: b005 add sp, #20 1492e: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} else return ancestor_signal(img, sign, param); 14932: 4718 bx r3 case LV_IMG_PART_MAIN: style_dsc_p = &img->style_list; 14934: 3428 adds r4, #40 ; 0x28 info->result = lv_img_get_style(img, info->part); 14936: 6054 str r4, [r2, #4] if(info->result != NULL) return LV_RES_OK; 14938: 2701 movs r7, #1 } 1493a: 4638 mov r0, r7 1493c: b005 add sp, #20 1493e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} res = ancestor_signal(img, sign, param); 14942: 4b7c ldr r3, [pc, #496] ; (14b34 ) 14944: 681b ldr r3, [r3, #0] 14946: 4798 blx r3 if(res != LV_RES_OK) return res; 14948: 2801 cmp r0, #1 res = ancestor_signal(img, sign, param); 1494a: 4607 mov r7, r0 if(res != LV_RES_OK) return res; 1494c: d1f5 bne.n 1493a if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1494e: f1b8 0f07 cmp.w r8, #7 14952: d106 bne.n 14962 14954: 4978 ldr r1, [pc, #480] ; (14b38 ) 14956: 4b79 ldr r3, [pc, #484] ; (14b3c ) 14958: 4630 mov r0, r6 } 1495a: b005 add sp, #20 1495c: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 14960: 4718 bx r3 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14962: 4b77 ldr r3, [pc, #476] ; (14b40 ) 14964: 4620 mov r0, r4 14966: 4798 blx r3 14968: 4605 mov r5, r0 if(sign == LV_SIGNAL_CLEANUP) { 1496a: f1b8 0f00 cmp.w r8, #0 1496e: d10f bne.n 14990 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 14970: 7d03 ldrb r3, [r0, #20] 14972: f003 0303 and.w r3, r3, #3 14976: 3b01 subs r3, #1 14978: 2b01 cmp r3, #1 1497a: d8de bhi.n 1493a lv_mem_free(ext->src); 1497c: 4b71 ldr r3, [pc, #452] ; (14b44 ) 1497e: 6800 ldr r0, [r0, #0] 14980: 4798 blx r3 ext->src_type = LV_IMG_SRC_UNKNOWN; 14982: 7d2b ldrb r3, [r5, #20] ext->src = NULL; 14984: f8c5 8000 str.w r8, [r5] ext->src_type = LV_IMG_SRC_UNKNOWN; 14988: f043 0303 orr.w r3, r3, #3 1498c: 752b strb r3, [r5, #20] 1498e: e7d4 b.n 1493a else if(sign == LV_SIGNAL_STYLE_CHG) { 14990: f1b8 0f04 cmp.w r8, #4 14994: d109 bne.n 149aa if(ext->src_type == LV_IMG_SRC_SYMBOL) { 14996: 7d03 ldrb r3, [r0, #20] 14998: f003 0303 and.w r3, r3, #3 1499c: 2b02 cmp r3, #2 1499e: d1cc bne.n 1493a lv_img_set_src(img, ext->src); 149a0: 6801 ldr r1, [r0, #0] 149a2: 4b69 ldr r3, [pc, #420] ; (14b48 ) 149a4: 4620 mov r0, r4 149a6: 4798 blx r3 149a8: e7c7 b.n 1493a else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 149aa: f1b8 0f06 cmp.w r8, #6 149ae: d16c bne.n 14a8a _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 149b0: 4e66 ldr r6, [pc, #408] ; (14b4c ) 149b2: 2207 movs r2, #7 149b4: 2100 movs r1, #0 149b6: 4620 mov r0, r4 149b8: 47b0 blx r6 transf_zoom = (transf_zoom * ext->zoom) >> 8; 149ba: 8a6b ldrh r3, [r5, #18] 149bc: 4358 muls r0, r3 149be: ea4f 2920 mov.w r9, r0, asr #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 149c2: 4642 mov r2, r8 149c4: 2100 movs r1, #0 149c6: 4620 mov r0, r4 149c8: 47b0 blx r6 transf_angle += ext->angle; 149ca: 89ab ldrh r3, [r5, #12] 149cc: 4418 add r0, r3 149ce: b203 sxth r3, r0 if(transf_angle || transf_zoom != LV_IMG_ZOOM_NONE) { 149d0: b923 cbnz r3, 149dc 149d2: fa0f f289 sxth.w r2, r9 149d6: f5b2 7f80 cmp.w r2, #256 ; 0x100 149da: d031 beq.n 14a40 _lv_img_buf_get_transformed_area(&a, ext->w, ext->h, transf_angle, transf_zoom, &ext->pivot); 149dc: f105 000e add.w r0, r5, #14 149e0: f9b5 200a ldrsh.w r2, [r5, #10] 149e4: f9b5 1008 ldrsh.w r1, [r5, #8] 149e8: 9001 str r0, [sp, #4] 149ea: fa1f f089 uxth.w r0, r9 149ee: 9000 str r0, [sp, #0] 149f0: f8df 8164 ldr.w r8, [pc, #356] ; 14b58 149f4: a802 add r0, sp, #8 149f6: 47c0 blx r8 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 149f8: f9b4 1032 ldrsh.w r1, [r4, #50] ; 0x32 149fc: f9bd 3008 ldrsh.w r3, [sp, #8] img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 14a00: f9bd 200a ldrsh.w r2, [sp, #10] img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 14a04: f9b5 0008 ldrsh.w r0, [r5, #8] img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 14a08: 1acb subs r3, r1, r3 14a0a: 428b cmp r3, r1 14a0c: bfb8 it lt 14a0e: 460b movlt r3, r1 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 14a10: 1a8a subs r2, r1, r2 14a12: b21b sxth r3, r3 14a14: 4293 cmp r3, r2 14a16: bfb8 it lt 14a18: 4613 movlt r3, r2 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 14a1a: f9bd 200c ldrsh.w r2, [sp, #12] 14a1e: 440a add r2, r1 14a20: b21b sxth r3, r3 14a22: 1a12 subs r2, r2, r0 14a24: 4293 cmp r3, r2 14a26: bfb8 it lt 14a28: 4613 movlt r3, r2 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.y2 - ext->h); 14a2a: f9bd 200e ldrsh.w r2, [sp, #14] 14a2e: 440a add r2, r1 14a30: f9b5 100a ldrsh.w r1, [r5, #10] 14a34: b21b sxth r3, r3 14a36: 1a52 subs r2, r2, r1 14a38: 4293 cmp r3, r2 14a3a: bfb8 it lt 14a3c: 4613 movlt r3, r2 14a3e: 8663 strh r3, [r4, #50] ; 0x32 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14a40: 2212 movs r2, #18 14a42: 2100 movs r1, #0 14a44: 4620 mov r0, r4 14a46: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a48: 2213 movs r2, #19 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14a4a: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a4c: 2100 movs r1, #0 14a4e: 4620 mov r0, r4 14a50: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14a52: 2210 movs r2, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a54: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14a56: 2100 movs r1, #0 14a58: 4620 mov r0, r4 14a5a: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14a5c: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14a5e: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14a60: 2100 movs r1, #0 14a62: 4620 mov r0, r4 14a64: 47b0 blx r6 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, right); 14a66: 454d cmp r5, r9 14a68: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 14a6c: bfb8 it lt 14a6e: 464d movlt r5, r9 14a70: b22d sxth r5, r5 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, top); 14a72: 42ab cmp r3, r5 14a74: bfb8 it lt 14a76: 462b movlt r3, r5 14a78: 4543 cmp r3, r8 14a7a: bfb8 it lt 14a7c: 4643 movlt r3, r8 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, bottom); 14a7e: b21b sxth r3, r3 14a80: 4298 cmp r0, r3 14a82: bfb8 it lt 14a84: 4618 movlt r0, r3 14a86: 8660 strh r0, [r4, #50] ; 0x32 14a88: e757 b.n 1493a else if(sign == LV_SIGNAL_HIT_TEST) { 14a8a: f1b8 0f0a cmp.w r8, #10 14a8e: f47f af54 bne.w 1493a if(ext->zoom != 256 && ext->angle == 0) { 14a92: f8b0 c012 ldrh.w ip, [r0, #18] 14a96: f5bc 7f80 cmp.w ip, #256 ; 0x100 14a9a: d045 beq.n 14b28 14a9c: 8983 ldrh r3, [r0, #12] 14a9e: 2b00 cmp r3, #0 14aa0: d142 bne.n 14b28 14aa2: 8aa5 ldrh r5, [r4, #20] 14aa4: 8a23 ldrh r3, [r4, #16] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 14aa6: 8a62 ldrh r2, [r4, #18] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 14aa8: 6920 ldr r0, [r4, #16] 14aaa: 6961 ldr r1, [r4, #20] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 14aac: 3501 adds r5, #1 14aae: 1aed subs r5, r5, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 14ab0: 8ae3 ldrh r3, [r4, #22] 14ab2: 3301 adds r3, #1 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 14ab4: b22d sxth r5, r5 14ab6: 1a9b subs r3, r3, r2 14ab8: aa02 add r2, sp, #8 14aba: c203 stmia r2!, {r0, r1} 14abc: fb0c f205 mul.w r2, ip, r5 14ac0: 32ff adds r2, #255 ; 0xff 14ac2: bf48 it mi 14ac4: 32ff addmi r2, #255 ; 0xff lv_coord_t width_offset = (origin_width - scaled_width) / 2; 14ac6: f342 220f sbfx r2, r2, #8, #16 14aca: 1aad subs r5, r5, r2 14acc: eb05 75d5 add.w r5, r5, r5, lsr #31 coords.x1 += width_offset; 14ad0: f8bd 2008 ldrh.w r2, [sp, #8] info->result = _lv_area_is_point_on(&coords, info->point, 0); 14ad4: 6831 ldr r1, [r6, #0] coords.x1 += width_offset; 14ad6: f3c5 054f ubfx r5, r5, #1, #16 14ada: 442a add r2, r5 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 14adc: b21b sxth r3, r3 coords.x1 += width_offset; 14ade: f8ad 2008 strh.w r2, [sp, #8] coords.x2 -= width_offset; 14ae2: f8bd 200c ldrh.w r2, [sp, #12] lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 14ae6: fb03 fc0c mul.w ip, r3, ip coords.x2 -= width_offset; 14aea: 1b55 subs r5, r2, r5 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 14aec: f11c 02ff adds.w r2, ip, #255 ; 0xff 14af0: bf48 it mi 14af2: f50c 72ff addmi.w r2, ip, #510 ; 0x1fe lv_coord_t height_offset = (origin_height - scaled_height) / 2; 14af6: f342 220f sbfx r2, r2, #8, #16 14afa: 1a9b subs r3, r3, r2 14afc: eb03 73d3 add.w r3, r3, r3, lsr #31 coords.y1 += height_offset; 14b00: f8bd 200a ldrh.w r2, [sp, #10] coords.x2 -= width_offset; 14b04: f8ad 500c strh.w r5, [sp, #12] coords.y1 += height_offset; 14b08: f3c3 034f ubfx r3, r3, #1, #16 14b0c: 441a add r2, r3 14b0e: f8ad 200a strh.w r2, [sp, #10] coords.y2 -= height_offset; 14b12: f8bd 200e ldrh.w r2, [sp, #14] 14b16: 1ad3 subs r3, r2, r3 14b18: f8ad 300e strh.w r3, [sp, #14] info->result = _lv_area_is_point_on(&coords, info->point, 0); 14b1c: 2200 movs r2, #0 14b1e: 4b0c ldr r3, [pc, #48] ; (14b50 ) 14b20: a802 add r0, sp, #8 14b22: 4798 blx r3 info->result = lv_obj_is_point_on_coords(img, info->point); 14b24: 7130 strb r0, [r6, #4] 14b26: e708 b.n 1493a 14b28: 6831 ldr r1, [r6, #0] 14b2a: 4b0a ldr r3, [pc, #40] ; (14b54 ) 14b2c: 4620 mov r0, r4 14b2e: 4798 blx r3 14b30: e7f8 b.n 14b24 14b32: bf00 nop 14b34: 2000c7f8 .word 0x2000c7f8 14b38: 0002436e .word 0x0002436e 14b3c: 0000426d .word 0x0000426d 14b40: 00003f89 .word 0x00003f89 14b44: 0000eb2d .word 0x0000eb2d 14b48: 00014509 .word 0x00014509 14b4c: 000036f1 .word 0x000036f1 14b50: 0000df69 .word 0x0000df69 14b54: 00004231 .word 0x00004231 14b58: 0000c0a5 .word 0x0000c0a5 00014b5c : * Free the dot_tmp_ptr field if it was previously allocated. * Always clears the field * @param label pointer to label object. */ static void lv_label_dot_tmp_free(lv_obj_t * label) { 14b5c: b510 push {r4, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b5e: 4b08 ldr r3, [pc, #32] ; (14b80 ) 14b60: 4798 blx r3 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 14b62: 7c43 ldrb r3, [r0, #17] 14b64: 07db lsls r3, r3, #31 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b66: 4604 mov r4, r0 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 14b68: d503 bpl.n 14b72 14b6a: 6840 ldr r0, [r0, #4] 14b6c: b108 cbz r0, 14b72 lv_mem_free(ext->dot.tmp_ptr); 14b6e: 4b05 ldr r3, [pc, #20] ; (14b84 ) 14b70: 4798 blx r3 } ext->dot_tmp_alloc = false; 14b72: 7c63 ldrb r3, [r4, #17] 14b74: f36f 0300 bfc r3, #0, #1 14b78: 7463 strb r3, [r4, #17] ext->dot.tmp_ptr = NULL; 14b7a: 2300 movs r3, #0 14b7c: 6063 str r3, [r4, #4] } 14b7e: bd10 pop {r4, pc} 14b80: 00003f89 .word 0x00003f89 14b84: 0000eb2d .word 0x0000eb2d 00014b88 : { 14b88: b5f8 push {r3, r4, r5, r6, r7, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b8a: 4e1a ldr r6, [pc, #104] ; (14bf4 ) { 14b8c: 4605 mov r5, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b8e: 47b0 blx r6 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 14b90: 7c03 ldrb r3, [r0, #16] 14b92: f003 0307 and.w r3, r3, #7 14b96: 2b02 cmp r3, #2 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b98: 4604 mov r4, r0 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 14b9a: d128 bne.n 14bee if(ext->dot_end == LV_LABEL_DOT_END_INV) return; 14b9c: 8901 ldrh r1, [r0, #8] 14b9e: f64f 73ff movw r3, #65535 ; 0xffff 14ba2: 4299 cmp r1, r3 14ba4: d023 beq.n 14bee uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i); 14ba6: 4b14 ldr r3, [pc, #80] ; (14bf8 ) 14ba8: 6800 ldr r0, [r0, #0] 14baa: 681b ldr r3, [r3, #0] 14bac: 3903 subs r1, #3 14bae: 4798 blx r3 14bb0: 4607 mov r7, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14bb2: 4628 mov r0, r5 14bb4: 47b0 blx r6 if(ext->dot_tmp_alloc) { 14bb6: 7c42 ldrb r2, [r0, #17] 14bb8: 07d2 lsls r2, r2, #31 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14bba: 4603 mov r3, r0 return ext->dot.tmp_ptr; 14bbc: bf4c ite mi 14bbe: 6843 ldrmi r3, [r0, #4] return ext->dot.tmp; 14bc0: 3304 addpl r3, #4 while(ext->text[byte_i + i] != '\0') { 14bc2: 2200 movs r2, #0 14bc4: fa57 f182 uxtab r1, r7, r2 14bc8: 6826 ldr r6, [r4, #0] 14bca: b2d0 uxtb r0, r2 14bcc: f816 e001 ldrb.w lr, [r6, r1] ext->text[byte_i + i] = dot_tmp[i]; 14bd0: 5c18 ldrb r0, [r3, r0] while(ext->text[byte_i + i] != '\0') { 14bd2: eb06 0c01 add.w ip, r6, r1 14bd6: 3201 adds r2, #1 14bd8: f1be 0f00 cmp.w lr, #0 14bdc: d108 bne.n 14bf0 lv_label_dot_tmp_free(label); 14bde: 4b07 ldr r3, [pc, #28] ; (14bfc ) ext->text[byte_i + i] = dot_tmp[i]; 14be0: f88c 0000 strb.w r0, [ip] lv_label_dot_tmp_free(label); 14be4: 4628 mov r0, r5 14be6: 4798 blx r3 ext->dot_end = LV_LABEL_DOT_END_INV; 14be8: f64f 73ff movw r3, #65535 ; 0xffff 14bec: 8123 strh r3, [r4, #8] } 14bee: bdf8 pop {r3, r4, r5, r6, r7, pc} ext->text[byte_i + i] = dot_tmp[i]; 14bf0: 5470 strb r0, [r6, r1] i++; 14bf2: e7e7 b.n 14bc4 14bf4: 00003f89 .word 0x00003f89 14bf8: 2000005c .word 0x2000005c 14bfc: 00014b5d .word 0x00014b5d 00014c00 : { 14c00: b570 push {r4, r5, r6, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c02: 4b05 ldr r3, [pc, #20] ; (14c18 ) { 14c04: 4604 mov r4, r0 14c06: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c08: 4798 blx r3 lv_obj_invalidate(label); 14c0a: 4b04 ldr r3, [pc, #16] ; (14c1c ) ext->offset.y = y; 14c0c: 81c5 strh r5, [r0, #14] lv_obj_invalidate(label); 14c0e: 4620 mov r0, r4 } 14c10: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_invalidate(label); 14c14: 4718 bx r3 14c16: bf00 nop 14c18: 00003f89 .word 0x00003f89 14c1c: 00002739 .word 0x00002739 00014c20 : { 14c20: b570 push {r4, r5, r6, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c22: 4b05 ldr r3, [pc, #20] ; (14c38 ) { 14c24: 4604 mov r4, r0 14c26: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c28: 4798 blx r3 lv_obj_invalidate(label); 14c2a: 4b04 ldr r3, [pc, #16] ; (14c3c ) ext->offset.x = x; 14c2c: 8185 strh r5, [r0, #12] lv_obj_invalidate(label); 14c2e: 4620 mov r0, r4 } 14c30: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_invalidate(label); 14c34: 4718 bx r3 14c36: bf00 nop 14c38: 00003f89 .word 0x00003f89 14c3c: 00002739 .word 0x00002739 00014c40 : { 14c40: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c42: 4b1a ldr r3, [pc, #104] ; (14cac ) { 14c44: 9103 str r1, [sp, #12] 14c46: 4616 mov r6, r2 14c48: 4604 mov r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c4a: 4798 blx r3 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 14c4c: 4b18 ldr r3, [pc, #96] ; (14cb0 ) lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c4e: 4605 mov r5, r0 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 14c50: 4620 mov r0, r4 14c52: 4798 blx r3 if(len > sizeof(char *)) { 14c54: 2e04 cmp r6, #4 14c56: 9903 ldr r1, [sp, #12] 14c58: d91e bls.n 14c98 ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 14c5a: 4b16 ldr r3, [pc, #88] ; (14cb4 ) 14c5c: 1c70 adds r0, r6, #1 14c5e: 4798 blx r3 if(ext->dot.tmp_ptr == NULL) { 14c60: 9903 ldr r1, [sp, #12] ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 14c62: 6068 str r0, [r5, #4] 14c64: 4604 mov r4, r0 if(ext->dot.tmp_ptr == NULL) { 14c66: b958 cbnz r0, 14c80 LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr"); 14c68: 4b13 ldr r3, [pc, #76] ; (14cb8 ) 14c6a: 9300 str r3, [sp, #0] 14c6c: 2003 movs r0, #3 14c6e: 4b13 ldr r3, [pc, #76] ; (14cbc ) 14c70: 4913 ldr r1, [pc, #76] ; (14cc0 ) 14c72: 4d14 ldr r5, [pc, #80] ; (14cc4 ) 14c74: f240 52b5 movw r2, #1461 ; 0x5b5 14c78: 47a8 blx r5 return false; 14c7a: 4620 mov r0, r4 } 14c7c: b004 add sp, #16 14c7e: bd70 pop {r4, r5, r6, pc} _lv_memcpy(ext->dot.tmp_ptr, data, len); 14c80: 4b11 ldr r3, [pc, #68] ; (14cc8 ) 14c82: 4632 mov r2, r6 14c84: 4798 blx r3 ext->dot.tmp_ptr[len] = '\0'; 14c86: 686b ldr r3, [r5, #4] 14c88: 2200 movs r2, #0 14c8a: 559a strb r2, [r3, r6] ext->dot_tmp_alloc = true; 14c8c: 7c6b ldrb r3, [r5, #17] 14c8e: f043 0301 orr.w r3, r3, #1 14c92: 746b strb r3, [r5, #17] return true; 14c94: 2001 movs r0, #1 14c96: e7f1 b.n 14c7c ext->dot_tmp_alloc = false; 14c98: 7c6b ldrb r3, [r5, #17] 14c9a: f36f 0300 bfc r3, #0, #1 14c9e: 746b strb r3, [r5, #17] _lv_memcpy(ext->dot.tmp, data, len); 14ca0: 4632 mov r2, r6 14ca2: 4b09 ldr r3, [pc, #36] ; (14cc8 ) 14ca4: 1d28 adds r0, r5, #4 14ca6: 4798 blx r3 14ca8: e7f4 b.n 14c94 14caa: bf00 nop 14cac: 00003f89 .word 0x00003f89 14cb0: 00014b5d .word 0x00014b5d 14cb4: 0000ea75 .word 0x0000ea75 14cb8: 000244b9 .word 0x000244b9 14cbc: 000244ff .word 0x000244ff 14cc0: 00024485 .word 0x00024485 14cc4: 0000e931 .word 0x0000e931 14cc8: 0000ec79 .word 0x0000ec79 00014ccc : static void get_txt_coords(const lv_obj_t * label, lv_area_t * area) { 14ccc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} lv_obj_get_coords(label, area); 14cd0: 4b13 ldr r3, [pc, #76] ; (14d20 ) _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14cd2: f8df 8050 ldr.w r8, [pc, #80] ; 14d24 { 14cd6: 4605 mov r5, r0 14cd8: 460c mov r4, r1 lv_obj_get_coords(label, area); 14cda: 4798 blx r3 14cdc: 2212 movs r2, #18 14cde: 2100 movs r1, #0 14ce0: 4628 mov r0, r5 14ce2: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14ce4: 2213 movs r2, #19 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14ce6: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14ce8: 2100 movs r1, #0 14cea: 4628 mov r0, r5 14cec: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14cee: 2210 movs r2, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14cf0: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14cf2: 2100 movs r1, #0 14cf4: 4628 mov r0, r5 14cf6: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14cf8: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14cfa: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14cfc: 2100 movs r1, #0 14cfe: 4628 mov r0, r5 14d00: 47c0 blx r8 lv_coord_t left = lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN); lv_coord_t right = lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); lv_coord_t top = lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN); lv_coord_t bottom = lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); area->x1 += left; 14d02: 8823 ldrh r3, [r4, #0] area->x2 -= right; 14d04: 88a1 ldrh r1, [r4, #4] area->x1 += left; 14d06: 441f add r7, r3 area->y1 += top; 14d08: 8863 ldrh r3, [r4, #2] area->x1 += left; 14d0a: 8027 strh r7, [r4, #0] area->y1 += top; 14d0c: 441e add r6, r3 area->y2 -= bottom; 14d0e: 88e3 ldrh r3, [r4, #6] area->y1 += top; 14d10: 8066 strh r6, [r4, #2] area->x2 -= right; 14d12: eba1 0209 sub.w r2, r1, r9 area->y2 -= bottom; 14d16: 1a18 subs r0, r3, r0 area->x2 -= right; 14d18: 80a2 strh r2, [r4, #4] area->y2 -= bottom; 14d1a: 80e0 strh r0, [r4, #6] } 14d1c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 14d20: 00002285 .word 0x00002285 14d24: 000036f1 .word 0x000036f1 00014d28 : { 14d28: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14d2a: 4b13 ldr r3, [pc, #76] ; (14d78 ) { 14d2c: 4604 mov r4, r0 14d2e: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14d30: 4798 blx r3 14d32: 4606 mov r6, r0 14d34: b968 cbnz r0, 14d52 14d36: 4b11 ldr r3, [pc, #68] ; (14d7c ) 14d38: 4911 ldr r1, [pc, #68] ; (14d80 ) 14d3a: 9300 str r3, [sp, #0] 14d3c: f44f 72c4 mov.w r2, #392 ; 0x188 14d40: 2003 movs r0, #3 14d42: 4d10 ldr r5, [pc, #64] ; (14d84 ) 14d44: 47a8 blx r5 14d46: 4810 ldr r0, [pc, #64] ; (14d88 ) 14d48: 4910 ldr r1, [pc, #64] ; (14d8c ) 14d4a: 4622 mov r2, r4 14d4c: 4633 mov r3, r6 14d4e: 4788 blx r1 14d50: e7fe b.n 14d50 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14d52: 4b0f ldr r3, [pc, #60] ; (14d90 ) 14d54: 4620 mov r0, r4 14d56: 4798 blx r3 if(ext->align == align) return; 14d58: 7c03 ldrb r3, [r0, #16] 14d5a: f3c3 1201 ubfx r2, r3, #4, #2 14d5e: 42aa cmp r2, r5 14d60: d008 beq.n 14d74 ext->align = align; 14d62: f365 1305 bfi r3, r5, #4, #2 14d66: 7403 strb r3, [r0, #16] lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 14d68: 4b0a ldr r3, [pc, #40] ; (14d94 ) 14d6a: 4620 mov r0, r4 } 14d6c: b002 add sp, #8 14d6e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 14d72: 4718 bx r3 } 14d74: b002 add sp, #8 14d76: bd70 pop {r4, r5, r6, pc} 14d78: 00001795 .word 0x00001795 14d7c: 00024514 .word 0x00024514 14d80: 00024485 .word 0x00024485 14d84: 0000e931 .word 0x0000e931 14d88: 0001ef03 .word 0x0001ef03 14d8c: 0000179d .word 0x0000179d 14d90: 00003f89 .word 0x00003f89 14d94: 00002739 .word 0x00002739 00014d98 : { 14d98: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14d9a: 4b0c ldr r3, [pc, #48] ; (14dcc ) { 14d9c: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14d9e: 4798 blx r3 14da0: 4605 mov r5, r0 14da2: b968 cbnz r0, 14dc0 14da4: 4b0a ldr r3, [pc, #40] ; (14dd0 ) 14da6: 490b ldr r1, [pc, #44] ; (14dd4 ) 14da8: 9300 str r3, [sp, #0] 14daa: f44f 72f2 mov.w r2, #484 ; 0x1e4 14dae: 2003 movs r0, #3 14db0: 4e09 ldr r6, [pc, #36] ; (14dd8 ) 14db2: 47b0 blx r6 14db4: 4809 ldr r0, [pc, #36] ; (14ddc ) 14db6: 490a ldr r1, [pc, #40] ; (14de0 ) 14db8: 4622 mov r2, r4 14dba: 462b mov r3, r5 14dbc: 4788 blx r1 14dbe: e7fe b.n 14dbe lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14dc0: 4b08 ldr r3, [pc, #32] ; (14de4 ) 14dc2: 4620 mov r0, r4 14dc4: 4798 blx r3 } 14dc6: 6800 ldr r0, [r0, #0] 14dc8: b002 add sp, #8 14dca: bd70 pop {r4, r5, r6, pc} 14dcc: 00001795 .word 0x00001795 14dd0: 0002455d .word 0x0002455d 14dd4: 00024485 .word 0x00024485 14dd8: 0000e931 .word 0x0000e931 14ddc: 0001ef03 .word 0x0001ef03 14de0: 0000179d .word 0x0000179d 14de4: 00003f89 .word 0x00003f89 00014de8 : { 14de8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14dea: 4b0d ldr r3, [pc, #52] ; (14e20 ) { 14dec: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14dee: 4798 blx r3 14df0: 4605 mov r5, r0 14df2: b968 cbnz r0, 14e10 14df4: 4b0b ldr r3, [pc, #44] ; (14e24 ) 14df6: 490c ldr r1, [pc, #48] ; (14e28 ) 14df8: 9300 str r3, [sp, #0] 14dfa: f44f 72f9 mov.w r2, #498 ; 0x1f2 14dfe: 2003 movs r0, #3 14e00: 4e0a ldr r6, [pc, #40] ; (14e2c ) 14e02: 47b0 blx r6 14e04: 480a ldr r0, [pc, #40] ; (14e30 ) 14e06: 490b ldr r1, [pc, #44] ; (14e34 ) 14e08: 4622 mov r2, r4 14e0a: 462b mov r3, r5 14e0c: 4788 blx r1 14e0e: e7fe b.n 14e0e lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14e10: 4b09 ldr r3, [pc, #36] ; (14e38 ) 14e12: 4620 mov r0, r4 14e14: 4798 blx r3 return ext->long_mode; 14e16: 7c00 ldrb r0, [r0, #16] } 14e18: f000 0007 and.w r0, r0, #7 14e1c: b002 add sp, #8 14e1e: bd70 pop {r4, r5, r6, pc} 14e20: 00001795 .word 0x00001795 14e24: 0002456f .word 0x0002456f 14e28: 00024485 .word 0x00024485 14e2c: 0000e931 .word 0x0000e931 14e30: 0001ef03 .word 0x0001ef03 14e34: 0000179d .word 0x0000179d 14e38: 00003f89 .word 0x00003f89 00014e3c : { 14e3c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e3e: 4b0f ldr r3, [pc, #60] ; (14e7c ) { 14e40: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e42: 4798 blx r3 14e44: 4605 mov r5, r0 14e46: b968 cbnz r0, 14e64 14e48: 4b0d ldr r3, [pc, #52] ; (14e80 ) 14e4a: 490e ldr r1, [pc, #56] ; (14e84 ) 14e4c: 9300 str r3, [sp, #0] 14e4e: f240 12ff movw r2, #511 ; 0x1ff 14e52: 2003 movs r0, #3 14e54: 4e0c ldr r6, [pc, #48] ; (14e88 ) 14e56: 47b0 blx r6 14e58: 480c ldr r0, [pc, #48] ; (14e8c ) 14e5a: 490d ldr r1, [pc, #52] ; (14e90 ) 14e5c: 4622 mov r2, r4 14e5e: 462b mov r3, r5 14e60: 4788 blx r1 14e62: e7fe b.n 14e62 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14e64: 4b0b ldr r3, [pc, #44] ; (14e94 ) 14e66: 4620 mov r0, r4 14e68: 4798 blx r3 lv_label_align_t align = ext->align; 14e6a: 7c00 ldrb r0, [r0, #16] 14e6c: f3c0 1001 ubfx r0, r0, #4, #2 align = LV_LABEL_ALIGN_LEFT; 14e70: 2803 cmp r0, #3 } 14e72: bf08 it eq 14e74: 2000 moveq r0, #0 14e76: b002 add sp, #8 14e78: bd70 pop {r4, r5, r6, pc} 14e7a: bf00 nop 14e7c: 00001795 .word 0x00001795 14e80: 00024586 .word 0x00024586 14e84: 00024485 .word 0x00024485 14e88: 0000e931 .word 0x0000e931 14e8c: 0001ef03 .word 0x0001ef03 14e90: 0000179d .word 0x0000179d 14e94: 00003f89 .word 0x00003f89 00014e98 : { 14e98: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e9a: 4b0d ldr r3, [pc, #52] ; (14ed0 ) { 14e9c: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e9e: 4798 blx r3 14ea0: 4605 mov r5, r0 14ea2: b968 cbnz r0, 14ec0 14ea4: 4b0b ldr r3, [pc, #44] ; (14ed4 ) 14ea6: 490c ldr r1, [pc, #48] ; (14ed8 ) 14ea8: 9300 str r3, [sp, #0] 14eaa: f240 221b movw r2, #539 ; 0x21b 14eae: 2003 movs r0, #3 14eb0: 4e0a ldr r6, [pc, #40] ; (14edc ) 14eb2: 47b0 blx r6 14eb4: 480a ldr r0, [pc, #40] ; (14ee0 ) 14eb6: 490b ldr r1, [pc, #44] ; (14ee4 ) 14eb8: 4622 mov r2, r4 14eba: 462b mov r3, r5 14ebc: 4788 blx r1 14ebe: e7fe b.n 14ebe lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14ec0: 4b09 ldr r3, [pc, #36] ; (14ee8 ) 14ec2: 4620 mov r0, r4 14ec4: 4798 blx r3 return ext->recolor == 0 ? false : true; 14ec6: 7c00 ldrb r0, [r0, #16] } 14ec8: f3c0 1080 ubfx r0, r0, #6, #1 14ecc: b002 add sp, #8 14ece: bd70 pop {r4, r5, r6, pc} 14ed0: 00001795 .word 0x00001795 14ed4: 00024599 .word 0x00024599 14ed8: 00024485 .word 0x00024485 14edc: 0000e931 .word 0x0000e931 14ee0: 0001ef03 .word 0x0001ef03 14ee4: 0000179d .word 0x0000179d 14ee8: 00003f89 .word 0x00003f89 00014eec : { 14eec: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 14ef0: ed2d 8b02 vpush {d8} 14ef4: b08b sub sp, #44 ; 0x2c LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14ef6: 4e93 ldr r6, [pc, #588] ; (15144 ) { 14ef8: 9102 str r1, [sp, #8] 14efa: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14efc: 47b0 blx r6 14efe: 4605 mov r5, r0 14f00: b968 cbnz r0, 14f1e 14f02: 4b91 ldr r3, [pc, #580] ; (15148 ) 14f04: 4991 ldr r1, [pc, #580] ; (1514c ) 14f06: 9300 str r3, [sp, #0] 14f08: f240 22a5 movw r2, #677 ; 0x2a5 14f0c: 2003 movs r0, #3 14f0e: 4e90 ldr r6, [pc, #576] ; (15150 ) 14f10: 47b0 blx r6 14f12: 4890 ldr r0, [pc, #576] ; (15154 ) 14f14: 4990 ldr r1, [pc, #576] ; (15158 ) 14f16: 4622 mov r2, r4 14f18: 462b mov r3, r5 14f1a: 4788 blx r1 14f1c: e7fe b.n 14f1c LV_ASSERT_NULL(pos); 14f1e: 9802 ldr r0, [sp, #8] 14f20: 47b0 blx r6 14f22: 4605 mov r5, r0 14f24: b968 cbnz r0, 14f42 14f26: 4b88 ldr r3, [pc, #544] ; (15148 ) 14f28: 4988 ldr r1, [pc, #544] ; (1514c ) 14f2a: 9300 str r3, [sp, #0] 14f2c: f240 22a6 movw r2, #678 ; 0x2a6 14f30: 2003 movs r0, #3 14f32: 4c87 ldr r4, [pc, #540] ; (15150 ) 14f34: 47a0 blx r4 14f36: 9a02 ldr r2, [sp, #8] 14f38: 4886 ldr r0, [pc, #536] ; (15154 ) 14f3a: 4987 ldr r1, [pc, #540] ; (15158 ) 14f3c: 462b mov r3, r5 14f3e: 4788 blx r1 14f40: e7fe b.n 14f40 get_txt_coords(label, &txt_coords); 14f42: a908 add r1, sp, #32 14f44: 4620 mov r0, r4 14f46: 4b85 ldr r3, [pc, #532] ; (1515c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f48: 4f85 ldr r7, [pc, #532] ; (15160 ) 14f4a: 4798 blx r3 const char * txt = lv_label_get_text(label); 14f4c: 4b85 ldr r3, [pc, #532] ; (15164 ) 14f4e: 4620 mov r0, r4 14f50: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14f52: 4b85 ldr r3, [pc, #532] ; (15168 ) const char * txt = lv_label_get_text(label); 14f54: 4680 mov r8, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14f56: 4620 mov r0, r4 14f58: 4798 blx r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 14f5a: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 14f5e: f8bd 2020 ldrh.w r2, [sp, #32] 14f62: 3301 adds r3, #1 14f64: 1a9b subs r3, r3, r2 14f66: b21b sxth r3, r3 14f68: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14f6a: f248 028e movw r2, #32910 ; 0x808e 14f6e: 2100 movs r1, #0 14f70: 4620 mov r0, r4 14f72: ee08 3a90 vmov s17, r3 14f76: 4b7d ldr r3, [pc, #500] ; (1516c ) 14f78: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f7a: f248 0281 movw r2, #32897 ; 0x8081 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14f7e: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f80: 2100 movs r1, #0 14f82: 4620 mov r0, r4 14f84: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 14f86: f248 0280 movw r2, #32896 ; 0x8080 14f8a: 2100 movs r1, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f8c: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 14f8e: 4620 mov r0, r4 14f90: 47b8 blx r7 * @param font_p pointer to a font * @return the height of a font */ static inline lv_coord_t lv_font_get_line_height(const lv_font_t * font_p) { return font_p->line_height; 14f92: f9ba 3008 ldrsh.w r3, [sl, #8] 14f96: 9303 str r3, [sp, #12] if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 14f98: 7c33 ldrb r3, [r6, #16] 14f9a: f3c3 1680 ubfx r6, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 14f9e: 061a lsls r2, r3, #24 14fa0: bf48 it mi 14fa2: f046 0602 orrmi.w r6, r6, #2 14fa6: ee08 0a10 vmov s16, r0 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 14faa: 075b lsls r3, r3, #29 lv_label_align_t align = lv_label_get_align(label); 14fac: 4620 mov r0, r4 14fae: 4b70 ldr r3, [pc, #448] ; (15170 ) if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 14fb0: bf08 it eq 14fb2: f046 0610 orreq.w r6, r6, #16 lv_label_align_t align = lv_label_get_align(label); 14fb6: 4798 blx r3 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 14fb8: 2801 cmp r0, #1 lv_label_align_t align = lv_label_get_align(label); 14fba: 4604 mov r4, r0 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 14fbc: d108 bne.n 14fd0 14fbe: f046 0604 orr.w r6, r6, #4 y += letter_height + line_space; 14fc2: 9b03 ldr r3, [sp, #12] new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14fc4: f04f 0b00 mov.w fp, #0 y += letter_height + line_space; 14fc8: 442b add r3, r5 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14fca: 465f mov r7, fp y += letter_height + line_space; 14fcc: 9304 str r3, [sp, #16] 14fce: e059 b.n 15084 if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 14fd0: 2802 cmp r0, #2 14fd2: d1f6 bne.n 14fc2 14fd4: f046 0608 orr.w r6, r6, #8 14fd8: e7f3 b.n 14fc2 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14fda: ee18 3a90 vmov r3, s17 14fde: ee18 2a10 vmov r2, s16 14fe2: 4d64 ldr r5, [pc, #400] ; (15174 ) 14fe4: 9600 str r6, [sp, #0] 14fe6: 4651 mov r1, sl 14fe8: 4648 mov r0, r9 14fea: 47a8 blx r5 if(pos->y <= y + letter_height) { 14fec: 9b02 ldr r3, [sp, #8] 14fee: f9b3 2002 ldrsh.w r2, [r3, #2] 14ff2: 9b03 ldr r3, [sp, #12] 14ff4: 445b add r3, fp 14ff6: 429a cmp r2, r3 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14ff8: eb00 0507 add.w r5, r0, r7 if(pos->y <= y + letter_height) { 14ffc: dc3d bgt.n 1507a letter = _lv_txt_encoded_prev(txt, &tmp); 14ffe: 4b5e ldr r3, [pc, #376] ; (15178 ) uint32_t tmp = new_line_start; 15000: 9507 str r5, [sp, #28] letter = _lv_txt_encoded_prev(txt, &tmp); 15002: 681b ldr r3, [r3, #0] 15004: a907 add r1, sp, #28 15006: 4640 mov r0, r8 15008: 4798 blx r3 if(letter != '\n' && txt[new_line_start] == '\0') new_line_start++; 1500a: 280a cmp r0, #10 1500c: d003 beq.n 15016 1500e: f818 3005 ldrb.w r3, [r8, r5] 15012: b903 cbnz r3, 15016 15014: 3501 adds r5, #1 if(align == LV_LABEL_ALIGN_CENTER) { 15016: 2c01 cmp r4, #1 15018: d13c bne.n 15094 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 1501a: 1be9 subs r1, r5, r7 1501c: ee18 3a10 vmov r3, s16 15020: 4c56 ldr r4, [pc, #344] ; (1517c ) 15022: 9600 str r6, [sp, #0] 15024: 4652 mov r2, sl 15026: b289 uxth r1, r1 15028: 4648 mov r0, r9 1502a: 47a0 blx r4 1502c: f8bd 4024 ldrh.w r4, [sp, #36] ; 0x24 15030: f8bd 3020 ldrh.w r3, [sp, #32] 15034: 3401 adds r4, #1 15036: 1ae4 subs r4, r4, r3 x += lv_area_get_width(&txt_coords) / 2 - line_w / 2; 15038: f3c4 33c0 ubfx r3, r4, #15, #1 1503c: eb00 70d0 add.w r0, r0, r0, lsr #31 15040: fa03 f384 sxtah r3, r3, r4 15044: 1044 asrs r4, r0, #1 15046: ebc4 0463 rsb r4, r4, r3, asr #1 1504a: b224 sxth r4, r4 lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 1504c: 2300 movs r3, #0 1504e: f88d 301b strb.w r3, [sp, #27] uint32_t i = 0; 15052: 9307 str r3, [sp, #28] if(new_line_start > 0) { 15054: 2d00 cmp r5, #0 15056: d16e bne.n 15136 logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 15058: 4d49 ldr r5, [pc, #292] ; (15180 ) 1505a: 9907 ldr r1, [sp, #28] 1505c: 682b ldr r3, [r5, #0] 1505e: 4648 mov r0, r9 15060: 4798 blx r3 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 15062: 682b ldr r3, [r5, #0] logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 15064: 4604 mov r4, r0 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 15066: 4639 mov r1, r7 15068: 4640 mov r0, r8 1506a: 4798 blx r3 1506c: 4420 add r0, r4 } 1506e: b280 uxth r0, r0 15070: b00b add sp, #44 ; 0x2c 15072: ecbd 8b02 vpop {d8} 15076: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} y += letter_height + line_space; 1507a: 9b04 ldr r3, [sp, #16] 1507c: 449b add fp, r3 1507e: fa0f fb8b sxth.w fp, fp new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 15082: 462f mov r7, r5 while(txt[line_start] != '\0') { 15084: f818 3007 ldrb.w r3, [r8, r7] 15088: eb08 0907 add.w r9, r8, r7 1508c: 2b00 cmp r3, #0 1508e: d1a4 bne.n 14fda 15090: 463d mov r5, r7 15092: e7c0 b.n 15016 else if(align == LV_LABEL_ALIGN_RIGHT) { 15094: 2c02 cmp r4, #2 15096: d111 bne.n 150bc line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 15098: 1be9 subs r1, r5, r7 1509a: ee18 3a10 vmov r3, s16 1509e: 4c37 ldr r4, [pc, #220] ; (1517c ) 150a0: 9600 str r6, [sp, #0] 150a2: 4652 mov r2, sl 150a4: b289 uxth r1, r1 150a6: 4648 mov r0, r9 150a8: 47a0 blx r4 150aa: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 150ae: f8bd 4020 ldrh.w r4, [sp, #32] 150b2: 3301 adds r3, #1 150b4: 1b1b subs r3, r3, r4 x += lv_area_get_width(&txt_coords) - line_w; 150b6: 1a18 subs r0, r3, r0 150b8: b204 sxth r4, r0 150ba: e7c7 b.n 1504c lv_coord_t x = 0; 150bc: 2400 movs r4, #0 150be: e7c5 b.n 1504c if(_lv_txt_is_cmd(&cmd_state, bidi_txt[i]) != false) { 150c0: 9b07 ldr r3, [sp, #28] 150c2: 9005 str r0, [sp, #20] 150c4: f819 1003 ldrb.w r1, [r9, r3] 150c8: 4b2e ldr r3, [pc, #184] ; (15184 ) 150ca: f10d 001b add.w r0, sp, #27 150ce: 4798 blx r3 150d0: 9a05 ldr r2, [sp, #20] 150d2: b198 cbz r0, 150fc while(i + line_start < new_line_start) { 150d4: 9b07 ldr r3, [sp, #28] 150d6: 443b add r3, r7 150d8: 429d cmp r5, r3 150da: d9bd bls.n 15058 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 150dc: f8db 3000 ldr.w r3, [fp] 150e0: a907 add r1, sp, #28 150e2: 4648 mov r0, r9 150e4: 4798 blx r3 150e6: 4606 mov r6, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 150e8: 9807 ldr r0, [sp, #28] 150ea: f8db 3000 ldr.w r3, [fp] 150ee: 2100 movs r1, #0 150f0: 4448 add r0, r9 150f2: 4798 blx r3 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 150f4: 9b04 ldr r3, [sp, #16] uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 150f6: 4602 mov r2, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 150f8: 2b00 cmp r3, #0 150fa: d1e1 bne.n 150c0 x += lv_font_get_glyph_width(font, letter, letter_next); 150fc: 4b22 ldr r3, [pc, #136] ; (15188 ) 150fe: 4631 mov r1, r6 15100: 4650 mov r0, sl 15102: 4798 blx r3 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 15104: 9b02 ldr r3, [sp, #8] x += lv_font_get_glyph_width(font, letter, letter_next); 15106: 4420 add r0, r4 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 15108: f9b3 3000 ldrsh.w r3, [r3] x += lv_font_get_glyph_width(font, letter, letter_next); 1510c: b284 uxth r4, r0 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 1510e: b200 sxth r0, r0 15110: 4283 cmp r3, r0 15112: da02 bge.n 1511a i = i_act; 15114: 9b03 ldr r3, [sp, #12] 15116: 9307 str r3, [sp, #28] break; 15118: e79e b.n 15058 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 1511a: 9b07 ldr r3, [sp, #28] 1511c: 18fa adds r2, r7, r3 1511e: 4295 cmp r5, r2 15120: d0f8 beq.n 15114 15122: f818 2002 ldrb.w r2, [r8, r2] 15126: 2a00 cmp r2, #0 15128: d0f4 beq.n 15114 x += letter_space; 1512a: ee18 2a10 vmov r2, s16 1512e: 4414 add r4, r2 15130: b224 sxth r4, r4 i_act = i; 15132: 9303 str r3, [sp, #12] 15134: e7ce b.n 150d4 uint32_t i_act = i; 15136: 9303 str r3, [sp, #12] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 15138: f006 0301 and.w r3, r6, #1 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 1513c: f8df b04c ldr.w fp, [pc, #76] ; 1518c if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 15140: 9304 str r3, [sp, #16] 15142: e7c7 b.n 150d4 15144: 00001795 .word 0x00001795 15148: 000245de .word 0x000245de 1514c: 00024485 .word 0x00024485 15150: 0000e931 .word 0x0000e931 15154: 0001ef03 .word 0x0001ef03 15158: 0000179d .word 0x0000179d 1515c: 00014ccd .word 0x00014ccd 15160: 000036f1 .word 0x000036f1 15164: 00014d99 .word 0x00014d99 15168: 00003f89 .word 0x00003f89 1516c: 000038a9 .word 0x000038a9 15170: 00014e3d .word 0x00014e3d 15174: 00010025 .word 0x00010025 15178: 20000068 .word 0x20000068 1517c: 0000ff7d .word 0x0000ff7d 15180: 20000064 .word 0x20000064 15184: 0000ff41 .word 0x0000ff41 15188: 0000d1b9 .word 0x0000d1b9 1518c: 20000058 .word 0x20000058 00015190 : { 15190: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15194: 4b8a ldr r3, [pc, #552] ; (153c0 ) { 15196: b099 sub sp, #100 ; 0x64 15198: 4604 mov r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1519a: 4798 blx r3 if(ext->text == NULL) return; 1519c: 6803 ldr r3, [r0, #0] lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1519e: 4605 mov r5, r0 if(ext->text == NULL) return; 151a0: 2b00 cmp r3, #0 151a2: d061 beq.n 15268 get_txt_coords(label, &txt_coords); 151a4: 4b87 ldr r3, [pc, #540] ; (153c4 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 151a6: f8df 924c ldr.w r9, [pc, #588] ; 153f4 151aa: a906 add r1, sp, #24 151ac: 4620 mov r0, r4 151ae: 4798 blx r3 151b0: f8bd 301c ldrh.w r3, [sp, #28] 151b4: f8bd 2018 ldrh.w r2, [sp, #24] 151b8: 3301 adds r3, #1 151ba: 1a9b subs r3, r3, r2 151bc: fa0f f883 sxth.w r8, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 151c0: f248 028e movw r2, #32910 ; 0x808e 151c4: 4b80 ldr r3, [pc, #512] ; (153c8 ) 151c6: 2100 movs r1, #0 151c8: 4620 mov r0, r4 151ca: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 151cc: f248 0281 movw r2, #32897 ; 0x8081 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 151d0: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 151d2: 2100 movs r1, #0 151d4: 4620 mov r0, r4 151d6: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 151d8: 2100 movs r1, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 151da: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 151dc: f248 0280 movw r2, #32896 ; 0x8080 151e0: 4620 mov r0, r4 151e2: 47c8 blx r9 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 151e4: 7c2a ldrb r2, [r5, #16] _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 151e6: 9700 str r7, [sp, #0] if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 151e8: f3c2 1380 ubfx r3, r2, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 151ec: 0611 lsls r1, r2, #24 151ee: bf48 it mi 151f0: f043 0302 orrmi.w r3, r3, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 151f4: 0752 lsls r2, r2, #29 151f6: bf08 it eq 151f8: f043 0310 orreq.w r3, r3, #16 _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 151fc: e9cd 8301 strd r8, r3, [sp, #4] 15200: 4682 mov sl, r0 15202: f8df 81f4 ldr.w r8, [pc, #500] ; 153f8 15206: 6829 ldr r1, [r5, #0] 15208: 4603 mov r3, r0 1520a: 4632 mov r2, r6 1520c: a804 add r0, sp, #16 1520e: 47c0 blx r8 if(ext->long_mode == LV_LABEL_LONG_EXPAND) { 15210: f895 8010 ldrb.w r8, [r5, #16] 15214: f018 0807 ands.w r8, r8, #7 15218: d129 bne.n 1526e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1521a: 2212 movs r2, #18 1521c: 4641 mov r1, r8 1521e: 4620 mov r0, r4 15220: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15222: 2213 movs r2, #19 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15224: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15226: 4641 mov r1, r8 15228: 4620 mov r0, r4 1522a: 47c8 blx r9 size.x += lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); 1522c: 4428 add r0, r5 1522e: f8bd 5010 ldrh.w r5, [sp, #16] 15232: 4428 add r0, r5 15234: f8ad 0010 strh.w r0, [sp, #16] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15238: 2210 movs r2, #16 1523a: 4641 mov r1, r8 1523c: 4620 mov r0, r4 1523e: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15240: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15242: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15244: 4641 mov r1, r8 15246: 4620 mov r0, r4 15248: 47c8 blx r9 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1524a: f8bd 2012 ldrh.w r2, [sp, #18] lv_obj_set_size(label, size.x, size.y); 1524e: f9bd 1010 ldrsh.w r1, [sp, #16] 15252: 4b5e ldr r3, [pc, #376] ; (153cc ) size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 15254: 4428 add r0, r5 15256: 4402 add r2, r0 15258: b212 sxth r2, r2 lv_obj_set_size(label, size.x, size.y); 1525a: 4620 mov r0, r4 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1525c: f8ad 2012 strh.w r2, [sp, #18] lv_obj_set_size(label, size.x, size.y); 15260: 4798 blx r3 lv_obj_invalidate(label); 15262: 4b5b ldr r3, [pc, #364] ; (153d0 ) 15264: 4620 mov r0, r4 15266: 4798 blx r3 } 15268: b019 add sp, #100 ; 0x64 1526a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(ext->long_mode == LV_LABEL_LONG_SROLL) { 1526e: f1b8 0f03 cmp.w r8, #3 15272: f040 80c3 bne.w 153fc lv_anim_init(&a); 15276: 4b57 ldr r3, [pc, #348] ; (153d4 ) 15278: a808 add r0, sp, #32 1527a: 4798 blx r3 lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1527c: 2220 movs r2, #32 * @param a pointer to an initialized `lv_anim_t` variable * @param cnt repeat count or `LV_ANIM_REPEAT_INFINITE` for infinite repetition. 0: to disable repetition. */ static inline void lv_anim_set_repeat_count(lv_anim_t * a, uint16_t cnt) { a->repeat_cnt = cnt; 1527e: f64f 73ff movw r3, #65535 ; 0xffff 15282: 4611 mov r1, r2 15284: f8ad 3054 strh.w r3, [sp, #84] ; 0x54 a->var = var; 15288: 9408 str r4, [sp, #32] 1528a: 4b53 ldr r3, [pc, #332] ; (153d8 ) 1528c: 4630 mov r0, r6 1528e: 4798 blx r3 15290: eb00 030a add.w r3, r0, sl 15294: f44f 707a mov.w r0, #1000 ; 0x3e8 ext->anim_speed) * 15298: 896f ldrh r7, [r5, #10] 1529a: f8bd 2018 ldrh.w r2, [sp, #24] if(size.x > lv_area_get_width(&txt_coords)) { 1529e: f9bd 1010 ldrsh.w r1, [sp, #16] lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 152a2: 4343 muls r3, r0 152a4: fb93 f3f7 sdiv r3, r3, r7 152a8: eb03 0343 add.w r3, r3, r3, lsl #1 a->playback_delay = delay; 152ac: b29b uxth r3, r3 152ae: 9312 str r3, [sp, #72] ; 0x48 * @param a pointer to an initialized `lv_anim_t` variable * @param delay delay in milliseconds before repeating the animation. */ static inline void lv_anim_set_repeat_delay(lv_anim_t * a, uint16_t delay) { a->repeat_delay = delay; 152b0: 9314 str r3, [sp, #80] ; 0x50 152b2: f8bd 301c ldrh.w r3, [sp, #28] 152b6: 3301 adds r3, #1 152b8: 1a9b subs r3, r3, r2 152ba: b29a uxth r2, r3 if(size.x > lv_area_get_width(&txt_coords)) { 152bc: b21b sxth r3, r3 152be: 4299 cmp r1, r3 152c0: dd74 ble.n 153ac lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 152c2: 1a52 subs r2, r2, r1 a->exec_cb = exec_cb; 152c4: f8df 8124 ldr.w r8, [pc, #292] ; 153ec lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 152c8: 4b44 ldr r3, [pc, #272] ; (153dc ) 152ca: f8cd 8024 str.w r8, [sp, #36] ; 0x24 a->start = start; 152ce: 2100 movs r1, #0 lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 152d0: b212 sxth r2, r2 a->end = end; 152d2: e9cd 120e strd r1, r2, [sp, #56] ; 0x38 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 152d6: 4638 mov r0, r7 152d8: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 152da: 4b41 ldr r3, [pc, #260] ; (153e0 ) a->time = duration; 152dc: 9010 str r0, [sp, #64] ; 0x40 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 152de: 9013 str r0, [sp, #76] ; 0x4c lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 152e0: 4641 mov r1, r8 152e2: 4620 mov r0, r4 152e4: 4798 blx r3 if(anim_cur) { 152e6: 2800 cmp r0, #0 152e8: d05e beq.n 153a8 act_time = anim_cur->act_time; 152ea: 6a43 ldr r3, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 152ec: f890 003c ldrb.w r0, [r0, #60] ; 0x3c 152f0: f000 0001 and.w r0, r0, #1 if(act_time < a.time) { 152f4: 9a10 ldr r2, [sp, #64] ; 0x40 152f6: 429a cmp r2, r3 152f8: dd11 ble.n 1531e a.act_time = act_time; /*To keep the old position*/ 152fa: 9311 str r3, [sp, #68] ; 0x44 a.early_apply = 0; 152fc: f89d 3056 ldrb.w r3, [sp, #86] ; 0x56 15300: f36f 0300 bfc r3, #0, #1 15304: f88d 3056 strb.w r3, [sp, #86] ; 0x56 if(playback_now) { 15308: b148 cbz r0, 1531e a.playback_now = 1; 1530a: f89d 305c ldrb.w r3, [sp, #92] ; 0x5c 1530e: f043 0301 orr.w r3, r3, #1 15312: f88d 305c strb.w r3, [sp, #92] ; 0x5c a.start = a.end; 15316: e9dd 320e ldrd r3, r2, [sp, #56] ; 0x38 a.end = tmp; 1531a: e9cd 230e strd r2, r3, [sp, #56] ; 0x38 lv_anim_start(&a); 1531e: 4b31 ldr r3, [pc, #196] ; (153e4 ) 15320: a808 add r0, sp, #32 15322: 4798 blx r3 hor_anim = true; 15324: 2701 movs r7, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15326: f8bd 301e ldrh.w r3, [sp, #30] 1532a: f8bd 201a ldrh.w r2, [sp, #26] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1532e: f9bd 1012 ldrsh.w r1, [sp, #18] 15332: 3301 adds r3, #1 15334: 1a9b subs r3, r3, r2 15336: b29a uxth r2, r3 15338: b21b sxth r3, r3 1533a: 4299 cmp r1, r3 1533c: f340 80cf ble.w 154de 15340: 2f00 cmp r7, #0 15342: f040 80cc bne.w 154de lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 15346: 8933 ldrh r3, [r6, #8] a->exec_cb = exec_cb; 15348: 4e27 ldr r6, [pc, #156] ; (153e8 ) lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1534a: 8968 ldrh r0, [r5, #10] 1534c: 9609 str r6, [sp, #36] ; 0x24 lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 1534e: 1a52 subs r2, r2, r1 15350: 1ad2 subs r2, r2, r3 15352: b212 sxth r2, r2 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15354: 4b21 ldr r3, [pc, #132] ; (153dc ) 15356: 4639 mov r1, r7 a->end = end; 15358: e9cd 720e strd r7, r2, [sp, #56] ; 0x38 1535c: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1535e: 4b20 ldr r3, [pc, #128] ; (153e0 ) a->time = duration; 15360: 9010 str r0, [sp, #64] ; 0x40 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15362: 9013 str r0, [sp, #76] ; 0x4c lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 15364: 4631 mov r1, r6 15366: 4620 mov r0, r4 15368: 4798 blx r3 if(anim_cur) { 1536a: b330 cbz r0, 153ba playback_now = anim_cur->playback_now; 1536c: f890 703c ldrb.w r7, [r0, #60] ; 0x3c act_time = anim_cur->act_time; 15370: 6a43 ldr r3, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 15372: f007 0701 and.w r7, r7, #1 if(act_time < a.time) { 15376: 9a10 ldr r2, [sp, #64] ; 0x40 15378: 429a cmp r2, r3 1537a: dd11 ble.n 153a0 a.act_time = act_time; /*To keep the old position*/ 1537c: 9311 str r3, [sp, #68] ; 0x44 a.early_apply = 0; 1537e: f89d 3056 ldrb.w r3, [sp, #86] ; 0x56 15382: f36f 0300 bfc r3, #0, #1 15386: f88d 3056 strb.w r3, [sp, #86] ; 0x56 if(playback_now) { 1538a: b14f cbz r7, 153a0 a.playback_now = 1; 1538c: f89d 305c ldrb.w r3, [sp, #92] ; 0x5c 15390: f043 0301 orr.w r3, r3, #1 15394: f88d 305c strb.w r3, [sp, #92] ; 0x5c a.start = a.end; 15398: e9dd 320e ldrd r3, r2, [sp, #56] ; 0x38 a.end = tmp; 1539c: e9cd 230e strd r2, r3, [sp, #56] ; 0x38 lv_anim_start(&a); 153a0: 4b10 ldr r3, [pc, #64] ; (153e4 ) 153a2: a808 add r0, sp, #32 153a4: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 153a6: e75c b.n 15262 int32_t act_time = 0; 153a8: 4603 mov r3, r0 153aa: e7a3 b.n 152f4 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 153ac: 490f ldr r1, [pc, #60] ; (153ec ) 153ae: 4b10 ldr r3, [pc, #64] ; (153f0 ) 153b0: 4620 mov r0, r4 ext->offset.x = 0; 153b2: 2700 movs r7, #0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 153b4: 4798 blx r3 ext->offset.x = 0; 153b6: 81af strh r7, [r5, #12] 153b8: e7b5 b.n 15326 int32_t act_time = 0; 153ba: 463b mov r3, r7 153bc: e7db b.n 15376 153be: bf00 nop 153c0: 00003f89 .word 0x00003f89 153c4: 00014ccd .word 0x00014ccd 153c8: 000038a9 .word 0x000038a9 153cc: 000034c1 .word 0x000034c1 153d0: 00002739 .word 0x00002739 153d4: 0000dcbd .word 0x0000dcbd 153d8: 0000d1b9 .word 0x0000d1b9 153dc: 0000de51 .word 0x0000de51 153e0: 0000de1d .word 0x0000de1d 153e4: 0000dd65 .word 0x0000dd65 153e8: 00014c01 .word 0x00014c01 153ec: 00014c21 .word 0x00014c21 153f0: 0000dcf5 .word 0x0000dcf5 153f4: 000036f1 .word 0x000036f1 153f8: 000101fd .word 0x000101fd else if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 153fc: f1b8 0f04 cmp.w r8, #4 15400: d174 bne.n 154ec lv_anim_init(&a); 15402: 4b8f ldr r3, [pc, #572] ; (15640 ) 15404: a808 add r0, sp, #32 15406: 4798 blx r3 a->repeat_cnt = cnt; 15408: f64f 73ff movw r3, #65535 ; 0xffff 1540c: f8ad 3054 strh.w r3, [sp, #84] ; 0x54 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 15410: f8bd 301c ldrh.w r3, [sp, #28] 15414: f8bd 2018 ldrh.w r2, [sp, #24] a->var = var; 15418: 9408 str r4, [sp, #32] 1541a: 3301 adds r3, #1 1541c: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1541e: f9bd 2010 ldrsh.w r2, [sp, #16] 15422: b21b sxth r3, r3 15424: 429a cmp r2, r3 15426: dd53 ble.n 154d0 lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 15428: 2220 movs r2, #32 1542a: 4611 mov r1, r2 1542c: 4b85 ldr r3, [pc, #532] ; (15644 ) a->exec_cb = exec_cb; 1542e: 4f86 ldr r7, [pc, #536] ; (15648 ) 15430: 4630 mov r0, r6 15432: 4798 blx r3 15434: ebc0 3280 rsb r2, r0, r0, lsl #14 15438: eb00 0282 add.w r2, r0, r2, lsl #2 1543c: f8bd 0010 ldrh.w r0, [sp, #16] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15440: 4b82 ldr r3, [pc, #520] ; (1564c ) 15442: 9709 str r7, [sp, #36] ; 0x24 lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 15444: 1a12 subs r2, r2, r0 a->start = start; 15446: 2100 movs r1, #0 15448: b212 sxth r2, r2 a->end = end; 1544a: e9cd 120e strd r1, r2, [sp, #56] ; 0x38 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1544e: 8968 ldrh r0, [r5, #10] 15450: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15452: 4b7f ldr r3, [pc, #508] ; (15650 ) a->time = duration; 15454: 9010 str r0, [sp, #64] ; 0x40 15456: 4639 mov r1, r7 15458: 4620 mov r0, r4 1545a: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1545c: b100 cbz r0, 15460 1545e: 6a40 ldr r0, [r0, #36] ; 0x24 if(act_time < a.time) { 15460: 9b10 ldr r3, [sp, #64] ; 0x40 15462: 4283 cmp r3, r0 a.early_apply = 0; 15464: bfc1 itttt gt 15466: f89d 3056 ldrbgt.w r3, [sp, #86] ; 0x56 a.act_time = act_time; /*To keep the old position*/ 1546a: 9011 strgt r0, [sp, #68] ; 0x44 a.early_apply = 0; 1546c: f36f 0300 bfcgt r3, #0, #1 15470: f88d 3056 strbgt.w r3, [sp, #86] ; 0x56 lv_anim_start(&a); 15474: a808 add r0, sp, #32 15476: 4b77 ldr r3, [pc, #476] ; (15654 ) 15478: 4798 blx r3 hor_anim = true; 1547a: 2701 movs r7, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1547c: f8bd 301e ldrh.w r3, [sp, #30] 15480: f8bd 101a ldrh.w r1, [sp, #26] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 15484: f9bd 2012 ldrsh.w r2, [sp, #18] 15488: 3301 adds r3, #1 1548a: 1a5b subs r3, r3, r1 1548c: b21b sxth r3, r3 1548e: 429a cmp r2, r3 15490: dd25 ble.n 154de 15492: bb27 cbnz r7, 154de lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 15494: 8933 ldrh r3, [r6, #8] a->exec_cb = exec_cb; 15496: 4e70 ldr r6, [pc, #448] ; (15658 ) lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15498: 8968 ldrh r0, [r5, #10] 1549a: 9609 str r6, [sp, #36] ; 0x24 lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 1549c: 441a add r2, r3 1549e: 4252 negs r2, r2 154a0: b212 sxth r2, r2 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 154a2: 4b6a ldr r3, [pc, #424] ; (1564c ) 154a4: 4639 mov r1, r7 a->end = end; 154a6: e9cd 720e strd r7, r2, [sp, #56] ; 0x38 154aa: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 154ac: 4b68 ldr r3, [pc, #416] ; (15650 ) a->time = duration; 154ae: 9010 str r0, [sp, #64] ; 0x40 154b0: 4631 mov r1, r6 154b2: 4620 mov r0, r4 154b4: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 154b6: b100 cbz r0, 154ba 154b8: 6a47 ldr r7, [r0, #36] ; 0x24 if(act_time < a.time) { 154ba: 9b10 ldr r3, [sp, #64] ; 0x40 154bc: 42bb cmp r3, r7 a.early_apply = 0; 154be: bfc1 itttt gt 154c0: f89d 3056 ldrbgt.w r3, [sp, #86] ; 0x56 a.act_time = act_time; /*To keep the old position*/ 154c4: 9711 strgt r7, [sp, #68] ; 0x44 a.early_apply = 0; 154c6: f36f 0300 bfcgt r3, #0, #1 154ca: f88d 3056 strbgt.w r3, [sp, #86] ; 0x56 154ce: e767 b.n 153a0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 154d0: 495d ldr r1, [pc, #372] ; (15648 ) 154d2: 4b62 ldr r3, [pc, #392] ; (1565c ) 154d4: 4620 mov r0, r4 ext->offset.x = 0; 154d6: 2700 movs r7, #0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 154d8: 4798 blx r3 ext->offset.x = 0; 154da: 81af strh r7, [r5, #12] 154dc: e7ce b.n 1547c lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 154de: 4b5f ldr r3, [pc, #380] ; (1565c ) 154e0: 495d ldr r1, [pc, #372] ; (15658 ) 154e2: 4620 mov r0, r4 154e4: 4798 blx r3 ext->offset.y = 0; 154e6: 2300 movs r3, #0 154e8: 81eb strh r3, [r5, #14] 154ea: e6ba b.n 15262 else if(ext->long_mode == LV_LABEL_LONG_DOT) { 154ec: f1b8 0f02 cmp.w r8, #2 154f0: f040 808d bne.w 1560e 154f4: f8bd 301e ldrh.w r3, [sp, #30] 154f8: f8bd 201a ldrh.w r2, [sp, #26] 154fc: 3301 adds r3, #1 154fe: 1a9b subs r3, r3, r2 if(size.y <= lv_area_get_height(&txt_coords)) { /*No dots are required, the text is short enough*/ 15500: f9bd 2012 ldrsh.w r2, [sp, #18] 15504: b21b sxth r3, r3 15506: 429a cmp r2, r3 15508: dc03 bgt.n 15512 ext->dot_end = LV_LABEL_DOT_END_INV; 1550a: f64f 73ff movw r3, #65535 ; 0xffff 1550e: 812b strh r3, [r5, #8] 15510: e6a7 b.n 15262 else if(_lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/ 15512: 4b53 ldr r3, [pc, #332] ; (15660 ) 15514: 6828 ldr r0, [r5, #0] 15516: 681b ldr r3, [r3, #0] 15518: 4798 blx r3 1551a: 2803 cmp r0, #3 1551c: d9f5 bls.n 1550a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1551e: f8bd 801c ldrh.w r8, [sp, #28] 15522: f8bd 3018 ldrh.w r3, [sp, #24] byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 15526: f8df 9154 ldr.w r9, [pc, #340] ; 1567c (lv_font_get_glyph_width(font, '.', '.') + letter_space) * 1552a: 222e movs r2, #46 ; 0x2e 1552c: f108 0801 add.w r8, r8, #1 15530: 4611 mov r1, r2 15532: eba8 0803 sub.w r8, r8, r3 15536: 4630 mov r0, r6 15538: 4b42 ldr r3, [pc, #264] ; (15644 ) 1553a: 4798 blx r3 1553c: 4450 add r0, sl return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1553e: f8bd 301e ldrh.w r3, [sp, #30] 15542: f8bd 201a ldrh.w r2, [sp, #26] p.x = lv_area_get_width(&txt_coords) - 15546: ebc0 3a80 rsb sl, r0, r0, lsl #14 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1554a: fa1f f888 uxth.w r8, r8 1554e: eb00 008a add.w r0, r0, sl, lsl #2 15552: 4440 add r0, r8 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15554: 3301 adds r3, #1 15556: f8ad 0014 strh.w r0, [sp, #20] 1555a: 1a9b subs r3, r3, r2 (lv_font_get_line_height(font) + line_space); /*Round down to the last line*/ 1555c: f9b6 0008 ldrsh.w r0, [r6, #8] 15560: b29b uxth r3, r3 p.y -= line_space; /*Trim the last line space*/ 15562: 1bda subs r2, r3, r7 (lv_font_get_line_height(font) + line_space); /*Round down to the last line*/ 15564: 4407 add r7, r0 p.y -= p.y % 15566: b21b sxth r3, r3 15568: fb93 f0f7 sdiv r0, r3, r7 1556c: fb07 3310 mls r3, r7, r0, r3 p.y -= line_space; /*Trim the last line space*/ 15570: 1ad3 subs r3, r2, r3 uint32_t letter_id = lv_label_get_letter_on(label, &p); 15572: a905 add r1, sp, #20 p.y -= line_space; /*Trim the last line space*/ 15574: f8ad 3016 strh.w r3, [sp, #22] uint32_t letter_id = lv_label_get_letter_on(label, &p); 15578: 4620 mov r0, r4 1557a: 4b3a ldr r3, [pc, #232] ; (15664 ) 1557c: 4798 blx r3 size_t txt_len = strlen(ext->text); 1557e: 682f ldr r7, [r5, #0] 15580: 4b39 ldr r3, [pc, #228] ; (15668 ) uint32_t letter_id = lv_label_get_letter_on(label, &p); 15582: 4606 mov r6, r0 size_t txt_len = strlen(ext->text); 15584: 4638 mov r0, r7 15586: 4798 blx r3 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 15588: 4b38 ldr r3, [pc, #224] ; (1566c ) size_t txt_len = strlen(ext->text); 1558a: 4680 mov r8, r0 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 1558c: 681b ldr r3, [r3, #0] 1558e: 4631 mov r1, r6 15590: 4638 mov r0, r7 15592: 4798 blx r3 15594: 9008 str r0, [sp, #32] while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 15596: 9f08 ldr r7, [sp, #32] byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 15598: 6828 ldr r0, [r5, #0] 1559a: f8d9 3000 ldr.w r3, [r9] while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1559e: f107 0b03 add.w fp, r7, #3 155a2: 45c3 cmp fp, r8 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 155a4: 4438 add r0, r7 while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 155a6: d82c bhi.n 15602 155a8: f04f 0a04 mov.w sl, #4 uint8_t len = 0; 155ac: f04f 0800 mov.w r8, #0 len += _lv_txt_encoded_size(&ext->text[byte_id]); 155b0: 9a08 ldr r2, [sp, #32] 155b2: 6828 ldr r0, [r5, #0] 155b4: f8d9 3000 ldr.w r3, [r9] 155b8: 4410 add r0, r2 155ba: 4798 blx r3 _lv_txt_encoded_next(ext->text, &byte_id); 155bc: 4b2c ldr r3, [pc, #176] ; (15670 ) len += _lv_txt_encoded_size(&ext->text[byte_id]); 155be: 4480 add r8, r0 _lv_txt_encoded_next(ext->text, &byte_id); 155c0: 681b ldr r3, [r3, #0] 155c2: 6828 ldr r0, [r5, #0] 155c4: a908 add r1, sp, #32 155c6: 4798 blx r3 for(i = 0; i <= LV_LABEL_DOT_NUM; i++) { 155c8: f1ba 0a01 subs.w sl, sl, #1 len += _lv_txt_encoded_size(&ext->text[byte_id]); 155cc: fa5f f888 uxtb.w r8, r8 for(i = 0; i <= LV_LABEL_DOT_NUM; i++) { 155d0: d1ee bne.n 155b0 if(lv_label_set_dot_tmp(label, &ext->text[byte_id_ori], len)) { 155d2: 6829 ldr r1, [r5, #0] 155d4: 4b27 ldr r3, [pc, #156] ; (15674 ) 155d6: 4642 mov r2, r8 155d8: 4439 add r1, r7 155da: 4620 mov r0, r4 155dc: 4798 blx r3 155de: 2800 cmp r0, #0 155e0: f43f ae3f beq.w 15262 ext->text[byte_id_ori + i] = '.'; 155e4: 682b ldr r3, [r5, #0] 155e6: 222e movs r2, #46 ; 0x2e 155e8: 55da strb r2, [r3, r7] 155ea: 682b ldr r3, [r5, #0] 155ec: 443b add r3, r7 ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 155ee: 3603 adds r6, #3 ext->text[byte_id_ori + i] = '.'; 155f0: 705a strb r2, [r3, #1] 155f2: 682b ldr r3, [r5, #0] 155f4: 443b add r3, r7 155f6: 709a strb r2, [r3, #2] ext->text[byte_id_ori + LV_LABEL_DOT_NUM] = '\0'; 155f8: 682b ldr r3, [r5, #0] 155fa: f803 a00b strb.w sl, [r3, fp] ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 155fe: 812e strh r6, [r5, #8] 15600: e62f b.n 15262 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 15602: 4798 blx r3 15604: 9b08 ldr r3, [sp, #32] 15606: 1a18 subs r0, r3, r0 15608: 9008 str r0, [sp, #32] letter_id--; 1560a: 3e01 subs r6, #1 1560c: e7c3 b.n 15596 else if(ext->long_mode == LV_LABEL_LONG_BREAK) { 1560e: f1b8 0f01 cmp.w r8, #1 15612: f47f ae26 bne.w 15262 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15616: 2210 movs r2, #16 15618: 2100 movs r1, #0 1561a: 4620 mov r0, r4 1561c: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1561e: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15620: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15622: 2100 movs r1, #0 15624: 4620 mov r0, r4 15626: 47c8 blx r9 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 15628: f8bd 1012 ldrh.w r1, [sp, #18] lv_obj_set_height(label, size.y); 1562c: 4b12 ldr r3, [pc, #72] ; (15678 ) size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1562e: 4428 add r0, r5 15630: 4401 add r1, r0 15632: b209 sxth r1, r1 lv_obj_set_height(label, size.y); 15634: 4620 mov r0, r4 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 15636: f8ad 1012 strh.w r1, [sp, #18] lv_obj_set_height(label, size.y); 1563a: 4798 blx r3 1563c: e611 b.n 15262 1563e: bf00 nop 15640: 0000dcbd .word 0x0000dcbd 15644: 0000d1b9 .word 0x0000d1b9 15648: 00014c21 .word 0x00014c21 1564c: 0000de51 .word 0x0000de51 15650: 0000de1d .word 0x0000de1d 15654: 0000dd65 .word 0x0000dd65 15658: 00014c01 .word 0x00014c01 1565c: 0000dcf5 .word 0x0000dcf5 15660: 20000060 .word 0x20000060 15664: 00014eed .word 0x00014eed 15668: 0001637d .word 0x0001637d 1566c: 2000005c .word 0x2000005c 15670: 20000058 .word 0x20000058 15674: 00014c41 .word 0x00014c41 15678: 000035d1 .word 0x000035d1 1567c: 20000054 .word 0x20000054 00015680 : { 15680: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15684: 4f40 ldr r7, [pc, #256] ; (15788 ) { 15686: 4606 mov r6, r0 15688: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1568a: 47b8 blx r7 1568c: 46b9 mov r9, r7 1568e: 4604 mov r4, r0 15690: b960 cbnz r0, 156ac 15692: 4b3e ldr r3, [pc, #248] ; (1578c ) 15694: 493e ldr r1, [pc, #248] ; (15790 ) 15696: 9300 str r3, [sp, #0] 15698: 22b8 movs r2, #184 ; 0xb8 1569a: 2003 movs r0, #3 1569c: 4d3d ldr r5, [pc, #244] ; (15794 ) 1569e: 47a8 blx r5 156a0: 483d ldr r0, [pc, #244] ; (15798 ) 156a2: 493e ldr r1, [pc, #248] ; (1579c ) 156a4: 4632 mov r2, r6 156a6: 4623 mov r3, r4 156a8: 4788 blx r1 156aa: e7fe b.n 156aa lv_obj_invalidate(label); 156ac: 4b3c ldr r3, [pc, #240] ; (157a0 ) 156ae: 4630 mov r0, r6 156b0: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 156b2: 4b3c ldr r3, [pc, #240] ; (157a4 ) 156b4: 4630 mov r0, r6 156b6: 4798 blx r3 156b8: 4604 mov r4, r0 if(text == NULL) { 156ba: b92d cbnz r5, 156c8 lv_label_refr_text(label); 156bc: 4b3a ldr r3, [pc, #232] ; (157a8 ) 156be: 4630 mov r0, r6 } 156c0: b003 add sp, #12 156c2: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} lv_label_refr_text(label); 156c6: 4718 bx r3 LV_ASSERT_STR(text); 156c8: 4628 mov r0, r5 156ca: 47b8 blx r7 156cc: 4680 mov r8, r0 156ce: b960 cbnz r0, 156ea 156d0: 4b2e ldr r3, [pc, #184] ; (1578c ) 156d2: 492f ldr r1, [pc, #188] ; (15790 ) 156d4: 9300 str r3, [sp, #0] 156d6: 22c4 movs r2, #196 ; 0xc4 156d8: 2003 movs r0, #3 156da: 4c2e ldr r4, [pc, #184] ; (15794 ) 156dc: 47a0 blx r4 156de: 482e ldr r0, [pc, #184] ; (15798 ) 156e0: 492e ldr r1, [pc, #184] ; (1579c ) 156e2: 462a mov r2, r5 156e4: 4643 mov r3, r8 156e6: 4788 blx r1 156e8: e7fe b.n 156e8 if(ext->text == text && ext->static_txt == 0) { 156ea: 6820 ldr r0, [r4, #0] 156ec: f8df 80d0 ldr.w r8, [pc, #208] ; 157c0 156f0: 4285 cmp r5, r0 156f2: d11f bne.n 15734 156f4: 7c23 ldrb r3, [r4, #16] 156f6: 071b lsls r3, r3, #28 156f8: d424 bmi.n 15744 ext->text = lv_mem_realloc(ext->text, strlen(ext->text) + 1); 156fa: 4628 mov r0, r5 156fc: 47c0 blx r8 156fe: 4b2b ldr r3, [pc, #172] ; (157ac ) 15700: 1c41 adds r1, r0, #1 15702: 4628 mov r0, r5 15704: 4798 blx r3 15706: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 15708: 47b8 blx r7 1570a: 4605 mov r5, r0 1570c: b960 cbnz r0, 15728 1570e: 4b1f ldr r3, [pc, #124] ; (1578c ) 15710: 491f ldr r1, [pc, #124] ; (15790 ) 15712: 9300 str r3, [sp, #0] 15714: 22d5 movs r2, #213 ; 0xd5 15716: 2003 movs r0, #3 15718: 4e1e ldr r6, [pc, #120] ; (15794 ) 1571a: 47b0 blx r6 1571c: 6822 ldr r2, [r4, #0] 1571e: 4824 ldr r0, [pc, #144] ; (157b0 ) 15720: 491e ldr r1, [pc, #120] ; (1579c ) 15722: 462b mov r3, r5 15724: 4788 blx r1 15726: e7fe b.n 15726 if(ext->text == NULL) return; 15728: 6823 ldr r3, [r4, #0] 1572a: 2b00 cmp r3, #0 1572c: d1c6 bne.n 156bc } 1572e: b003 add sp, #12 15730: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(ext->text != NULL && ext->static_txt == 0) { 15734: b130 cbz r0, 15744 15736: 7c23 ldrb r3, [r4, #16] 15738: f013 0708 ands.w r7, r3, #8 1573c: d102 bne.n 15744 lv_mem_free(ext->text); 1573e: 4b1d ldr r3, [pc, #116] ; (157b4 ) 15740: 4798 blx r3 ext->text = NULL; 15742: 6027 str r7, [r4, #0] size_t len = strlen(text) + 1; 15744: 4628 mov r0, r5 15746: 47c0 blx r8 ext->text = lv_mem_alloc(len); 15748: 4b1b ldr r3, [pc, #108] ; (157b8 ) 1574a: 3001 adds r0, #1 1574c: 4798 blx r3 1574e: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 15750: 47c8 blx r9 15752: 4607 mov r7, r0 15754: b960 cbnz r0, 15770 15756: 4b0d ldr r3, [pc, #52] ; (1578c ) 15758: 490d ldr r1, [pc, #52] ; (15790 ) 1575a: 9300 str r3, [sp, #0] 1575c: 22ee movs r2, #238 ; 0xee 1575e: 2003 movs r0, #3 15760: 4d0c ldr r5, [pc, #48] ; (15794 ) 15762: 47a8 blx r5 15764: 6822 ldr r2, [r4, #0] 15766: 4812 ldr r0, [pc, #72] ; (157b0 ) 15768: 490c ldr r1, [pc, #48] ; (1579c ) 1576a: 463b mov r3, r7 1576c: 4788 blx r1 1576e: e7fe b.n 1576e if(ext->text == NULL) return; 15770: 6820 ldr r0, [r4, #0] 15772: 2800 cmp r0, #0 15774: d0db beq.n 1572e strcpy(ext->text, text); 15776: 4b11 ldr r3, [pc, #68] ; (157bc ) 15778: 4629 mov r1, r5 1577a: 4798 blx r3 ext->static_txt = 0; 1577c: 7c23 ldrb r3, [r4, #16] 1577e: f36f 03c3 bfc r3, #3, #1 15782: 7423 strb r3, [r4, #16] 15784: e79a b.n 156bc 15786: bf00 nop 15788: 00001795 .word 0x00001795 1578c: 000245f5 .word 0x000245f5 15790: 00024485 .word 0x00024485 15794: 0000e931 .word 0x0000e931 15798: 0001ef03 .word 0x0001ef03 1579c: 0000179d .word 0x0000179d 157a0: 00002739 .word 0x00002739 157a4: 00003f89 .word 0x00003f89 157a8: 00015191 .word 0x00015191 157ac: 0000ee5d .word 0x0000ee5d 157b0: 0001ee02 .word 0x0001ee02 157b4: 0000eb2d .word 0x0000eb2d 157b8: 0000ea75 .word 0x0000ea75 157bc: 0001636d .word 0x0001636d 157c0: 0001637d .word 0x0001637d 000157c4 : { 157c4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 157c6: 4b16 ldr r3, [pc, #88] ; (15820 ) { 157c8: 4605 mov r5, r0 157ca: 460e mov r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 157cc: 4798 blx r3 157ce: 4604 mov r4, r0 157d0: b968 cbnz r0, 157ee 157d2: 4b14 ldr r3, [pc, #80] ; (15824 ) 157d4: 4914 ldr r1, [pc, #80] ; (15828 ) 157d6: 9300 str r3, [sp, #0] 157d8: f44f 72a6 mov.w r2, #332 ; 0x14c 157dc: 2003 movs r0, #3 157de: 4e13 ldr r6, [pc, #76] ; (1582c ) 157e0: 47b0 blx r6 157e2: 4813 ldr r0, [pc, #76] ; (15830 ) 157e4: 4913 ldr r1, [pc, #76] ; (15834 ) 157e6: 462a mov r2, r5 157e8: 4623 mov r3, r4 157ea: 4788 blx r1 157ec: e7fe b.n 157ec lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 157ee: 4b12 ldr r3, [pc, #72] ; (15838 ) 157f0: 4628 mov r0, r5 157f2: 4798 blx r3 if(ext->static_txt == 0 && ext->text != NULL) { 157f4: 7c03 ldrb r3, [r0, #16] 157f6: f013 0708 ands.w r7, r3, #8 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 157fa: 4604 mov r4, r0 if(ext->static_txt == 0 && ext->text != NULL) { 157fc: d104 bne.n 15808 157fe: 6800 ldr r0, [r0, #0] 15800: b110 cbz r0, 15808 lv_mem_free(ext->text); 15802: 4b0e ldr r3, [pc, #56] ; (1583c ) 15804: 4798 blx r3 ext->text = NULL; 15806: 6027 str r7, [r4, #0] if(text != NULL) { 15808: b126 cbz r6, 15814 ext->static_txt = 1; 1580a: 7c23 ldrb r3, [r4, #16] ext->text = (char *)text; 1580c: 6026 str r6, [r4, #0] ext->static_txt = 1; 1580e: f043 0308 orr.w r3, r3, #8 15812: 7423 strb r3, [r4, #16] lv_label_refr_text(label); 15814: 4b0a ldr r3, [pc, #40] ; (15840 ) 15816: 4628 mov r0, r5 } 15818: b003 add sp, #12 1581a: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} lv_label_refr_text(label); 1581e: 4718 bx r3 15820: 00001795 .word 0x00001795 15824: 0002461d .word 0x0002461d 15828: 00024485 .word 0x00024485 1582c: 0000e931 .word 0x0000e931 15830: 0001ef03 .word 0x0001ef03 15834: 0000179d .word 0x0000179d 15838: 00003f89 .word 0x00003f89 1583c: 0000eb2d .word 0x0000eb2d 15840: 00015191 .word 0x00015191 00015844 : { 15844: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15846: 4b23 ldr r3, [pc, #140] ; (158d4 ) { 15848: 4604 mov r4, r0 1584a: 460e mov r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1584c: 4798 blx r3 1584e: 4605 mov r5, r0 15850: b968 cbnz r0, 1586e 15852: 4b21 ldr r3, [pc, #132] ; (158d8 ) 15854: 4921 ldr r1, [pc, #132] ; (158dc ) 15856: 9300 str r3, [sp, #0] 15858: f240 1265 movw r2, #357 ; 0x165 1585c: 2003 movs r0, #3 1585e: 4e20 ldr r6, [pc, #128] ; (158e0 ) 15860: 47b0 blx r6 15862: 4820 ldr r0, [pc, #128] ; (158e4 ) 15864: 4920 ldr r1, [pc, #128] ; (158e8 ) 15866: 4622 mov r2, r4 15868: 462b mov r3, r5 1586a: 4788 blx r1 1586c: e7fe b.n 1586c lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1586e: 4b1f ldr r3, [pc, #124] ; (158ec ) lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 15870: 4f1f ldr r7, [pc, #124] ; (158f0 ) lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15872: 4620 mov r0, r4 15874: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 15876: 491f ldr r1, [pc, #124] ; (158f4 ) lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15878: 4605 mov r5, r0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 1587a: 4620 mov r0, r4 1587c: 47b8 blx r7 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y); 1587e: 491e ldr r1, [pc, #120] ; (158f8 ) 15880: 4620 mov r0, r4 15882: 47b8 blx r7 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15884: 491d ldr r1, [pc, #116] ; (158fc ) 15886: 4620 mov r0, r4 15888: 47b8 blx r7 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1588a: 491d ldr r1, [pc, #116] ; (15900 ) 1588c: 4620 mov r0, r4 1588e: 47b8 blx r7 if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 15890: 1ef2 subs r2, r6, #3 ext->offset.x = 0; 15892: 2300 movs r3, #0 if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 15894: 2a02 cmp r2, #2 ext->offset.x = 0; 15896: 60eb str r3, [r5, #12] 15898: 7c2b ldrb r3, [r5, #16] if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 1589a: bf8c ite hi 1589c: 2200 movhi r2, #0 1589e: 2201 movls r2, #1 158a0: f362 13c7 bfi r3, r2, #7, #1 158a4: 742b strb r3, [r5, #16] if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 158a6: f003 0307 and.w r3, r3, #7 158aa: 2b02 cmp r3, #2 158ac: d107 bne.n 158be 158ae: 892a ldrh r2, [r5, #8] 158b0: f64f 73ff movw r3, #65535 ; 0xffff 158b4: 429a cmp r2, r3 158b6: d002 beq.n 158be lv_label_revert_dots(label); 158b8: 4b12 ldr r3, [pc, #72] ; (15904 ) 158ba: 4620 mov r0, r4 158bc: 4798 blx r3 ext->long_mode = long_mode; 158be: 7c2b ldrb r3, [r5, #16] 158c0: f366 0302 bfi r3, r6, #0, #3 158c4: 742b strb r3, [r5, #16] lv_label_refr_text(label); 158c6: 4b10 ldr r3, [pc, #64] ; (15908 ) 158c8: 4620 mov r0, r4 } 158ca: b003 add sp, #12 158cc: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} lv_label_refr_text(label); 158d0: 4718 bx r3 158d2: bf00 nop 158d4: 00001795 .word 0x00001795 158d8: 00024636 .word 0x00024636 158dc: 00024485 .word 0x00024485 158e0: 0000e931 .word 0x0000e931 158e4: 0001ef03 .word 0x0001ef03 158e8: 0000179d .word 0x0000179d 158ec: 00003f89 .word 0x00003f89 158f0: 0000dcf5 .word 0x0000dcf5 158f4: 0000293d .word 0x0000293d 158f8: 0000299d .word 0x0000299d 158fc: 00014c21 .word 0x00014c21 15900: 00014c01 .word 0x00014c01 15904: 00014b89 .word 0x00014b89 15908: 00015191 .word 0x00015191 0001590c : { 1590c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1590e: 4b13 ldr r3, [pc, #76] ; (1595c ) { 15910: 4604 mov r4, r0 15912: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15914: 4798 blx r3 15916: 4606 mov r6, r0 15918: b968 cbnz r0, 15936 1591a: 4b11 ldr r3, [pc, #68] ; (15960 ) 1591c: 4911 ldr r1, [pc, #68] ; (15964 ) 1591e: 9300 str r3, [sp, #0] 15920: f44f 72cd mov.w r2, #410 ; 0x19a 15924: 2003 movs r0, #3 15926: 4d10 ldr r5, [pc, #64] ; (15968 ) 15928: 47a8 blx r5 1592a: 4810 ldr r0, [pc, #64] ; (1596c ) 1592c: 4910 ldr r1, [pc, #64] ; (15970 ) 1592e: 4622 mov r2, r4 15930: 4633 mov r3, r6 15932: 4788 blx r1 15934: e7fe b.n 15934 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15936: 4b0f ldr r3, [pc, #60] ; (15974 ) 15938: 4620 mov r0, r4 1593a: 4798 blx r3 if(ext->recolor == en) return; 1593c: 7c03 ldrb r3, [r0, #16] 1593e: f3c3 1280 ubfx r2, r3, #6, #1 15942: 42aa cmp r2, r5 15944: d008 beq.n 15958 ext->recolor = en == false ? 0 : 1; 15946: f365 1386 bfi r3, r5, #6, #1 1594a: 7403 strb r3, [r0, #16] lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to 1594c: 4b0a ldr r3, [pc, #40] ; (15978 ) 1594e: 4620 mov r0, r4 } 15950: b002 add sp, #8 15952: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to 15956: 4718 bx r3 } 15958: b002 add sp, #8 1595a: bd70 pop {r4, r5, r6, pc} 1595c: 00001795 .word 0x00001795 15960: 0002464d .word 0x0002464d 15964: 00024485 .word 0x00024485 15968: 0000e931 .word 0x0000e931 1596c: 0001ef03 .word 0x0001ef03 15970: 0000179d .word 0x0000179d 15974: 00003f89 .word 0x00003f89 15978: 00015191 .word 0x00015191 0001597c : { 1597c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} lv_obj_t * new_label = lv_obj_create(par, copy); 15980: 4b71 ldr r3, [pc, #452] ; (15b48 ) LV_ASSERT_MEM(new_label); 15982: 4e72 ldr r6, [pc, #456] ; (15b4c ) { 15984: b085 sub sp, #20 15986: 460f mov r7, r1 lv_obj_t * new_label = lv_obj_create(par, copy); 15988: 4798 blx r3 1598a: 4604 mov r4, r0 LV_ASSERT_MEM(new_label); 1598c: 47b0 blx r6 1598e: 46b0 mov r8, r6 15990: 4605 mov r5, r0 15992: b960 cbnz r0, 159ae 15994: 4b6e ldr r3, [pc, #440] ; (15b50 ) 15996: 496f ldr r1, [pc, #444] ; (15b54 ) 15998: 9300 str r3, [sp, #0] 1599a: 2254 movs r2, #84 ; 0x54 1599c: 2003 movs r0, #3 1599e: 4e6e ldr r6, [pc, #440] ; (15b58 ) 159a0: 47b0 blx r6 159a2: 486e ldr r0, [pc, #440] ; (15b5c ) 159a4: 496e ldr r1, [pc, #440] ; (15b60 ) 159a6: 4622 mov r2, r4 159a8: 462b mov r3, r5 159aa: 4788 blx r1 159ac: e7fe b.n 159ac if(new_label == NULL) return NULL; 159ae: b924 cbnz r4, 159ba 159b0: 2400 movs r4, #0 } 159b2: 4620 mov r0, r4 159b4: b005 add sp, #20 159b6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 159ba: 4d6a ldr r5, [pc, #424] ; (15b64 ) 159bc: 682b ldr r3, [r5, #0] 159be: b91b cbnz r3, 159c8 159c0: 4b69 ldr r3, [pc, #420] ; (15b68 ) 159c2: 4620 mov r0, r4 159c4: 4798 blx r3 159c6: 6028 str r0, [r5, #0] lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 159c8: 4b68 ldr r3, [pc, #416] ; (15b6c ) lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 159ca: 4e69 ldr r6, [pc, #420] ; (15b70 ) lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 159cc: 2114 movs r1, #20 159ce: 4620 mov r0, r4 159d0: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 159d2: 4620 mov r0, r4 159d4: 47b0 blx r6 159d6: 4605 mov r5, r0 LV_ASSERT_MEM(ext); 159d8: 47c0 blx r8 159da: 4681 mov r9, r0 159dc: b960 cbnz r0, 159f8 159de: 4b5c ldr r3, [pc, #368] ; (15b50 ) 159e0: 495c ldr r1, [pc, #368] ; (15b54 ) 159e2: 9300 str r3, [sp, #0] 159e4: 225d movs r2, #93 ; 0x5d 159e6: 2003 movs r0, #3 159e8: 4c5b ldr r4, [pc, #364] ; (15b58 ) 159ea: 47a0 blx r4 159ec: 485b ldr r0, [pc, #364] ; (15b5c ) 159ee: 495c ldr r1, [pc, #368] ; (15b60 ) 159f0: 462a mov r2, r5 159f2: 464b mov r3, r9 159f4: 4788 blx r1 159f6: e7fe b.n 159f6 if(ext == NULL) { 159f8: 2300 movs r3, #0 159fa: b91d cbnz r5, 15a04 lv_obj_del(new_label); 159fc: 4b5d ldr r3, [pc, #372] ; (15b74 ) 159fe: 4620 mov r0, r4 15a00: 4798 blx r3 return NULL; 15a02: e7d5 b.n 159b0 ext->dot_end = LV_LABEL_DOT_END_INV; 15a04: 4a5c ldr r2, [pc, #368] ; (15b78 ) lv_obj_set_design_cb(new_label, lv_label_design); 15a06: 495d ldr r1, [pc, #372] ; (15b7c ) 15a08: f8df 91c4 ldr.w r9, [pc, #452] ; 15bd0 ext->offset.x = 0; 15a0c: e9c5 2302 strd r2, r3, [r5, #8] ext->dot.tmp_ptr = NULL; 15a10: e9c5 3300 strd r3, r3, [r5] ext->long_mode = LV_LABEL_LONG_EXPAND; 15a14: 8a2b ldrh r3, [r5, #16] 15a16: f423 73bf bic.w r3, r3, #382 ; 0x17e 15a1a: f023 0301 bic.w r3, r3, #1 15a1e: f043 0330 orr.w r3, r3, #48 ; 0x30 15a22: 822b strh r3, [r5, #16] lv_obj_set_design_cb(new_label, lv_label_design); 15a24: 4620 mov r0, r4 15a26: 4b56 ldr r3, [pc, #344] ; (15b80 ) 15a28: 4798 blx r3 lv_obj_set_signal_cb(new_label, lv_label_signal); 15a2a: 4956 ldr r1, [pc, #344] ; (15b84 ) 15a2c: 4b56 ldr r3, [pc, #344] ; (15b88 ) 15a2e: 4620 mov r0, r4 15a30: 4798 blx r3 if(copy == NULL) { 15a32: b9bf cbnz r7, 15a64 lv_theme_apply(new_label, LV_THEME_LABEL); 15a34: 4b55 ldr r3, [pc, #340] ; (15b8c ) 15a36: 2112 movs r1, #18 15a38: 4620 mov r0, r4 15a3a: 4798 blx r3 lv_obj_set_click(new_label, false); 15a3c: 4b54 ldr r3, [pc, #336] ; (15b90 ) 15a3e: 4639 mov r1, r7 15a40: 4620 mov r0, r4 15a42: 4798 blx r3 lv_label_set_long_mode(new_label, LV_LABEL_LONG_EXPAND); 15a44: 4639 mov r1, r7 15a46: 4620 mov r0, r4 15a48: 47c8 blx r9 lv_label_set_text(new_label, "Text"); 15a4a: 4952 ldr r1, [pc, #328] ; (15b94 ) 15a4c: 4b52 ldr r3, [pc, #328] ; (15b98 ) 15a4e: 4620 mov r0, r4 15a50: 4798 blx r3 LV_LOG_INFO("label created"); 15a52: 4b52 ldr r3, [pc, #328] ; (15b9c ) 15a54: 9300 str r3, [sp, #0] 15a56: 493f ldr r1, [pc, #252] ; (15b54 ) 15a58: 4b3d ldr r3, [pc, #244] ; (15b50 ) 15a5a: 4d3f ldr r5, [pc, #252] ; (15b58 ) 15a5c: 22a8 movs r2, #168 ; 0xa8 15a5e: 2001 movs r0, #1 15a60: 47a8 blx r5 return new_label; 15a62: e7a6 b.n 159b2 lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 15a64: 4638 mov r0, r7 15a66: 47b0 blx r6 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 15a68: 4b4d ldr r3, [pc, #308] ; (15ba0 ) lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 15a6a: 4606 mov r6, r0 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 15a6c: 4638 mov r0, r7 15a6e: 4798 blx r3 15a70: 4601 mov r1, r0 15a72: 4620 mov r0, r4 15a74: 47c8 blx r9 lv_label_set_recolor(new_label, lv_label_get_recolor(copy)); 15a76: 4b4b ldr r3, [pc, #300] ; (15ba4 ) 15a78: 4638 mov r0, r7 15a7a: 4798 blx r3 15a7c: 4b4a ldr r3, [pc, #296] ; (15ba8 ) 15a7e: 4601 mov r1, r0 15a80: 4620 mov r0, r4 15a82: 4798 blx r3 lv_label_set_align(new_label, lv_label_get_align(copy)); 15a84: 4b49 ldr r3, [pc, #292] ; (15bac ) 15a86: 4638 mov r0, r7 15a88: 4798 blx r3 15a8a: 4b49 ldr r3, [pc, #292] ; (15bb0 ) 15a8c: 4601 mov r1, r0 15a8e: 4620 mov r0, r4 15a90: 4798 blx r3 if(copy_ext->static_txt == 0) 15a92: 7c33 ldrb r3, [r6, #16] 15a94: f013 0f08 tst.w r3, #8 lv_label_set_text(new_label, lv_label_get_text(copy)); 15a98: 4638 mov r0, r7 15a9a: 4b46 ldr r3, [pc, #280] ; (15bb4 ) if(copy_ext->static_txt == 0) 15a9c: d123 bne.n 15ae6 lv_label_set_text(new_label, lv_label_get_text(copy)); 15a9e: 4798 blx r3 15aa0: 4b3d ldr r3, [pc, #244] ; (15b98 ) 15aa2: 4601 mov r1, r0 15aa4: 4620 mov r0, r4 lv_label_set_text_static(new_label, lv_label_get_text(copy)); 15aa6: 4798 blx r3 if(copy_ext->long_mode == LV_LABEL_LONG_DOT) { 15aa8: 7c33 ldrb r3, [r6, #16] 15aaa: f003 0307 and.w r3, r3, #7 15aae: 2b02 cmp r3, #2 15ab0: d12b bne.n 15b0a ext->text = lv_mem_realloc(ext->text, _lv_mem_get_size(copy_ext->text)); 15ab2: 6830 ldr r0, [r6, #0] 15ab4: f8df 911c ldr.w r9, [pc, #284] ; 15bd4 15ab8: 682f ldr r7, [r5, #0] 15aba: 47c8 blx r9 15abc: 4b3e ldr r3, [pc, #248] ; (15bb8 ) 15abe: 4601 mov r1, r0 15ac0: 4638 mov r0, r7 15ac2: 4798 blx r3 15ac4: 6028 str r0, [r5, #0] LV_ASSERT_MEM(ext->text); 15ac6: 47c0 blx r8 15ac8: 4607 mov r7, r0 15aca: b988 cbnz r0, 15af0 15acc: 4b20 ldr r3, [pc, #128] ; (15b50 ) 15ace: 4921 ldr r1, [pc, #132] ; (15b54 ) 15ad0: 9300 str r3, [sp, #0] 15ad2: 2295 movs r2, #149 ; 0x95 15ad4: 2003 movs r0, #3 15ad6: 4c20 ldr r4, [pc, #128] ; (15b58 ) 15ad8: 47a0 blx r4 15ada: 682a ldr r2, [r5, #0] 15adc: 481f ldr r0, [pc, #124] ; (15b5c ) 15ade: 4920 ldr r1, [pc, #128] ; (15b60 ) 15ae0: 463b mov r3, r7 15ae2: 4788 blx r1 15ae4: e7fe b.n 15ae4 lv_label_set_text_static(new_label, lv_label_get_text(copy)); 15ae6: 4798 blx r3 15ae8: 4b34 ldr r3, [pc, #208] ; (15bbc ) 15aea: 4601 mov r1, r0 15aec: 4620 mov r0, r4 15aee: e7da b.n 15aa6 if(ext->text == NULL) return NULL; 15af0: 682f ldr r7, [r5, #0] 15af2: 2f00 cmp r7, #0 15af4: f43f af5c beq.w 159b0 _lv_memcpy(ext->text, copy_ext->text, _lv_mem_get_size(copy_ext->text)); 15af8: 6831 ldr r1, [r6, #0] 15afa: 9103 str r1, [sp, #12] 15afc: 4608 mov r0, r1 15afe: 47c8 blx r9 15b00: 9903 ldr r1, [sp, #12] 15b02: 4b2f ldr r3, [pc, #188] ; (15bc0 ) 15b04: 4602 mov r2, r0 15b06: 4638 mov r0, r7 15b08: 4798 blx r3 if(copy_ext->dot_tmp_alloc && copy_ext->dot.tmp_ptr) { 15b0a: 7c73 ldrb r3, [r6, #17] 15b0c: 07db lsls r3, r3, #31 15b0e: d514 bpl.n 15b3a 15b10: 6870 ldr r0, [r6, #4] 15b12: b190 cbz r0, 15b3a uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr); 15b14: 4b2b ldr r3, [pc, #172] ; (15bc4 ) 15b16: 4798 blx r3 lv_label_set_dot_tmp(new_label, ext->dot.tmp_ptr, len); 15b18: 6869 ldr r1, [r5, #4] 15b1a: 4b2b ldr r3, [pc, #172] ; (15bc8 ) 15b1c: b282 uxth r2, r0 15b1e: 4620 mov r0, r4 15b20: 4798 blx r3 ext->dot_tmp_alloc = copy_ext->dot_tmp_alloc; 15b22: 7c72 ldrb r2, [r6, #17] 15b24: 7c6b ldrb r3, [r5, #17] 15b26: f362 0300 bfi r3, r2, #0, #1 15b2a: 746b strb r3, [r5, #17] ext->dot_end = copy_ext->dot_end; 15b2c: 8933 ldrh r3, [r6, #8] 15b2e: 812b strh r3, [r5, #8] lv_obj_refresh_style(new_label, LV_STYLE_PROP_ALL); 15b30: 21ff movs r1, #255 ; 0xff 15b32: 4b26 ldr r3, [pc, #152] ; (15bcc ) 15b34: 4620 mov r0, r4 15b36: 4798 blx r3 15b38: e78b b.n 15a52 _lv_memcpy(ext->dot.tmp, copy_ext->dot.tmp, sizeof(ext->dot.tmp)); 15b3a: 2204 movs r2, #4 15b3c: 4b20 ldr r3, [pc, #128] ; (15bc0 ) 15b3e: 18b1 adds r1, r6, r2 15b40: 18a8 adds r0, r5, r2 15b42: 4798 blx r3 15b44: e7ed b.n 15b22 15b46: bf00 nop 15b48: 000030c5 .word 0x000030c5 15b4c: 00001795 .word 0x00001795 15b50: 00024662 .word 0x00024662 15b54: 00024485 .word 0x00024485 15b58: 0000e931 .word 0x0000e931 15b5c: 0001ee02 .word 0x0001ee02 15b60: 0000179d .word 0x0000179d 15b64: 2000c7fc .word 0x2000c7fc 15b68: 00003f41 .word 0x00003f41 15b6c: 00002029 .word 0x00002029 15b70: 00003f89 .word 0x00003f89 15b74: 00004141 .word 0x00004141 15b78: 0019ffff .word 0x0019ffff 15b7c: 00015d35 .word 0x00015d35 15b80: 00001fe1 .word 0x00001fe1 15b84: 00015bd9 .word 0x00015bd9 15b88: 00001f8d .word 0x00001f8d 15b8c: 00010345 .word 0x00010345 15b90: 00001e0d .word 0x00001e0d 15b94: 000244e3 .word 0x000244e3 15b98: 00015681 .word 0x00015681 15b9c: 000244e8 .word 0x000244e8 15ba0: 00014de9 .word 0x00014de9 15ba4: 00014e99 .word 0x00014e99 15ba8: 0001590d .word 0x0001590d 15bac: 00014e3d .word 0x00014e3d 15bb0: 00014d29 .word 0x00014d29 15bb4: 00014d99 .word 0x00014d99 15bb8: 0000ee5d .word 0x0000ee5d 15bbc: 000157c5 .word 0x000157c5 15bc0: 0000ec79 .word 0x0000ec79 15bc4: 0001637d .word 0x0001637d 15bc8: 00014c41 .word 0x00014c41 15bcc: 00002d39 .word 0x00002d39 15bd0: 00015845 .word 0x00015845 15bd4: 0000eb95 .word 0x0000eb95 00015bd8 : if(sign == LV_SIGNAL_GET_STYLE) { 15bd8: 2908 cmp r1, #8 { 15bda: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 15bde: 4604 mov r4, r0 15be0: 460e mov r6, r1 15be2: 4615 mov r5, r2 if(sign == LV_SIGNAL_GET_STYLE) { 15be4: d10e bne.n 15c04 switch(type) { 15be6: 7813 ldrb r3, [r2, #0] 15be8: b133 cbz r3, 15bf8 info->result = lv_label_get_style(label, info->part); 15bea: 2300 movs r3, #0 15bec: 6053 str r3, [r2, #4] else return ancestor_signal(label, sign, param); 15bee: 4b25 ldr r3, [pc, #148] ; (15c84 ) } 15bf0: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} else return ancestor_signal(label, sign, param); 15bf4: 681b ldr r3, [r3, #0] 15bf6: 4718 bx r3 style_dsc_p = &label->style_list; 15bf8: 3428 adds r4, #40 ; 0x28 info->result = lv_label_get_style(label, info->part); 15bfa: 6054 str r4, [r2, #4] if(info->result != NULL) return LV_RES_OK; 15bfc: 2701 movs r7, #1 } 15bfe: 4638 mov r0, r7 15c00: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} res = ancestor_signal(label, sign, param); 15c04: 4b1f ldr r3, [pc, #124] ; (15c84 ) 15c06: 681b ldr r3, [r3, #0] 15c08: 4798 blx r3 if(res != LV_RES_OK) return res; 15c0a: 2801 cmp r0, #1 res = ancestor_signal(label, sign, param); 15c0c: 4607 mov r7, r0 if(res != LV_RES_OK) return res; 15c0e: d1f6 bne.n 15bfe if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 15c10: 2e07 cmp r6, #7 15c12: d105 bne.n 15c20 15c14: 4628 mov r0, r5 15c16: 491c ldr r1, [pc, #112] ; (15c88 ) 15c18: 4b1c ldr r3, [pc, #112] ; (15c8c ) } 15c1a: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 15c1e: 4718 bx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15c20: 4b1b ldr r3, [pc, #108] ; (15c90 ) 15c22: 4620 mov r0, r4 15c24: 4798 blx r3 15c26: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 15c28: b966 cbnz r6, 15c44 if(ext->static_txt == 0) { 15c2a: 7c03 ldrb r3, [r0, #16] 15c2c: f013 0508 ands.w r5, r3, #8 15c30: d104 bne.n 15c3c lv_mem_free(ext->text); 15c32: 6800 ldr r0, [r0, #0] 15c34: 4b17 ldr r3, [pc, #92] ; (15c94 ) 15c36: 4798 blx r3 ext->text = NULL; 15c38: f8c8 5000 str.w r5, [r8] lv_label_dot_tmp_free(label); 15c3c: 4b16 ldr r3, [pc, #88] ; (15c98 ) 15c3e: 4620 mov r0, r4 lv_label_refr_text(label); 15c40: 4798 blx r3 15c42: e7dc b.n 15bfe else if(sign == LV_SIGNAL_STYLE_CHG) { 15c44: 2e04 cmp r6, #4 15c46: d105 bne.n 15c54 lv_label_revert_dots(label); 15c48: 4b14 ldr r3, [pc, #80] ; (15c9c ) 15c4a: 4620 mov r0, r4 15c4c: 4798 blx r3 lv_label_refr_text(label); 15c4e: 4b14 ldr r3, [pc, #80] ; (15ca0 ) 15c50: 4620 mov r0, r4 15c52: e7f5 b.n 15c40 else if(sign == LV_SIGNAL_COORD_CHG) { 15c54: 2e02 cmp r6, #2 15c56: d1d2 bne.n 15bfe return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 15c58: 8a23 ldrh r3, [r4, #16] 15c5a: 8aa2 ldrh r2, [r4, #20] 15c5c: 8829 ldrh r1, [r5, #0] 15c5e: 1ad2 subs r2, r2, r3 15c60: 88ab ldrh r3, [r5, #4] 15c62: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 15c64: b292 uxth r2, r2 15c66: b29b uxth r3, r3 15c68: 429a cmp r2, r3 15c6a: d1ed bne.n 15c48 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15c6c: 8a63 ldrh r3, [r4, #18] 15c6e: 8ae2 ldrh r2, [r4, #22] 15c70: 8869 ldrh r1, [r5, #2] 15c72: 1ad2 subs r2, r2, r3 15c74: 88eb ldrh r3, [r5, #6] 15c76: 1a5b subs r3, r3, r1 15c78: b292 uxth r2, r2 15c7a: b29b uxth r3, r3 15c7c: 429a cmp r2, r3 15c7e: d1e3 bne.n 15c48 15c80: e7bd b.n 15bfe 15c82: bf00 nop 15c84: 2000c7fc .word 0x2000c7fc 15c88: 000244f6 .word 0x000244f6 15c8c: 0000426d .word 0x0000426d 15c90: 00003f89 .word 0x00003f89 15c94: 0000eb2d .word 0x0000eb2d 15c98: 00014b5d .word 0x00014b5d 15c9c: 00014b89 .word 0x00014b89 15ca0: 00015191 .word 0x00015191 00015ca4 : { 15ca4: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15ca6: 4b0b ldr r3, [pc, #44] ; (15cd4 ) { 15ca8: 4605 mov r5, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15caa: 4798 blx r3 15cac: 4604 mov r4, r0 15cae: b968 cbnz r0, 15ccc 15cb0: 4b09 ldr r3, [pc, #36] ; (15cd8 ) 15cb2: 490a ldr r1, [pc, #40] ; (15cdc ) 15cb4: 9300 str r3, [sp, #0] 15cb6: f240 321d movw r2, #797 ; 0x31d 15cba: 2003 movs r0, #3 15cbc: 4e08 ldr r6, [pc, #32] ; (15ce0 ) 15cbe: 47b0 blx r6 15cc0: 4808 ldr r0, [pc, #32] ; (15ce4 ) 15cc2: 4909 ldr r1, [pc, #36] ; (15ce8 ) 15cc4: 462a mov r2, r5 15cc6: 4623 mov r3, r4 15cc8: 4788 blx r1 15cca: e7fe b.n 15cca } 15ccc: f64f 70ff movw r0, #65535 ; 0xffff 15cd0: b002 add sp, #8 15cd2: bd70 pop {r4, r5, r6, pc} 15cd4: 00001795 .word 0x00001795 15cd8: 0002468a .word 0x0002468a 15cdc: 00024485 .word 0x00024485 15ce0: 0000e931 .word 0x0000e931 15ce4: 0001ef03 .word 0x0001ef03 15ce8: 0000179d .word 0x0000179d 00015cec : { 15cec: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15cee: 4b0b ldr r3, [pc, #44] ; (15d1c ) { 15cf0: 4605 mov r5, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15cf2: 4798 blx r3 15cf4: 4604 mov r4, r0 15cf6: b968 cbnz r0, 15d14 15cf8: 4b09 ldr r3, [pc, #36] ; (15d20 ) 15cfa: 490a ldr r1, [pc, #40] ; (15d24 ) 15cfc: 9300 str r3, [sp, #0] 15cfe: f44f 724c mov.w r2, #816 ; 0x330 15d02: 2003 movs r0, #3 15d04: 4e08 ldr r6, [pc, #32] ; (15d28 ) 15d06: 47b0 blx r6 15d08: 4808 ldr r0, [pc, #32] ; (15d2c ) 15d0a: 4909 ldr r1, [pc, #36] ; (15d30 ) 15d0c: 462a mov r2, r5 15d0e: 4623 mov r3, r4 15d10: 4788 blx r1 15d12: e7fe b.n 15d12 } 15d14: f64f 70ff movw r0, #65535 ; 0xffff 15d18: b002 add sp, #8 15d1a: bd70 pop {r4, r5, r6, pc} 15d1c: 00001795 .word 0x00001795 15d20: 000246a6 .word 0x000246a6 15d24: 00024485 .word 0x00024485 15d28: 0000e931 .word 0x0000e931 15d2c: 0001ef03 .word 0x0001ef03 15d30: 0000179d .word 0x0000179d 00015d34 : { 15d34: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if(mode == LV_DESIGN_COVER_CHK) 15d38: 2a02 cmp r2, #2 { 15d3a: b0a9 sub sp, #164 ; 0xa4 15d3c: 4605 mov r5, r0 15d3e: 4688 mov r8, r1 15d40: 4617 mov r7, r2 if(mode == LV_DESIGN_COVER_CHK) 15d42: f000 80fa beq.w 15f3a else if(mode == LV_DESIGN_DRAW_MAIN) { 15d46: 2a00 cmp r2, #0 15d48: f040 8100 bne.w 15f4c lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15d4c: 4b80 ldr r3, [pc, #512] ; (15f50 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 15d4e: f8df 9238 ldr.w r9, [pc, #568] ; 15f88 15d52: 4798 blx r3 15d54: 2204 movs r2, #4 15d56: 4639 mov r1, r7 15d58: 4604 mov r4, r0 15d5a: 4628 mov r0, r5 15d5c: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 15d5e: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 15d60: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 15d62: 4639 mov r1, r7 15d64: 4628 mov r0, r5 15d66: 47c8 blx r9 15d68: 6969 ldr r1, [r5, #20] 15d6a: 4602 mov r2, r0 15d6c: 6928 ldr r0, [r5, #16] 15d6e: ab06 add r3, sp, #24 15d70: c303 stmia r3!, {r0, r1} bg_coords.x2 += w; 15d72: f8bd 001c ldrh.w r0, [sp, #28] bg_coords.x1 -= w; 15d76: f8bd 1018 ldrh.w r1, [sp, #24] 15d7a: b2b3 uxth r3, r6 15d7c: 1ac9 subs r1, r1, r3 bg_coords.x2 += w; 15d7e: 4403 add r3, r0 15d80: f8ad 301c strh.w r3, [sp, #28] bg_coords.y1 -= h; 15d84: f8bd 301a ldrh.w r3, [sp, #26] bg_coords.x1 -= w; 15d88: f8ad 1018 strh.w r1, [sp, #24] bg_coords.y1 -= h; 15d8c: b290 uxth r0, r2 15d8e: 1a1b subs r3, r3, r0 15d90: f8ad 301a strh.w r3, [sp, #26] bg_coords.y2 += h; 15d94: f8bd 301e ldrh.w r3, [sp, #30] 15d98: 4418 add r0, r3 15d9a: f8ad 001e strh.w r0, [sp, #30] lv_draw_rect_dsc_init(&draw_rect_dsc); 15d9e: 4b6d ldr r3, [pc, #436] ; (15f54 ) 15da0: a813 add r0, sp, #76 ; 0x4c 15da2: 4798 blx r3 lv_obj_init_draw_rect_dsc(label, LV_LABEL_PART_MAIN, &draw_rect_dsc); 15da4: 4b6c ldr r3, [pc, #432] ; (15f58 ) 15da6: aa13 add r2, sp, #76 ; 0x4c 15da8: 4639 mov r1, r7 15daa: 4628 mov r0, r5 15dac: 4798 blx r3 lv_draw_rect(&bg_coords, clip_area, &draw_rect_dsc); 15dae: aa13 add r2, sp, #76 ; 0x4c 15db0: 4b6a ldr r3, [pc, #424] ; (15f5c ) 15db2: 4641 mov r1, r8 15db4: a806 add r0, sp, #24 15db6: 4798 blx r3 get_txt_coords(label, &txt_coords); 15db8: 4b69 ldr r3, [pc, #420] ; (15f60 ) 15dba: a908 add r1, sp, #32 15dbc: 4628 mov r0, r5 15dbe: 4798 blx r3 bool is_common = _lv_area_intersect(&txt_clip, clip_area, &txt_coords); 15dc0: 4b68 ldr r3, [pc, #416] ; (15f64 ) 15dc2: aa08 add r2, sp, #32 15dc4: 4641 mov r1, r8 15dc6: a80a add r0, sp, #40 ; 0x28 15dc8: 4798 blx r3 if(!is_common) return LV_DESIGN_RES_OK; 15dca: 2800 cmp r0, #0 15dcc: f000 80b5 beq.w 15f3a lv_label_align_t align = lv_label_get_align(label); 15dd0: 4b65 ldr r3, [pc, #404] ; (15f68 ) 15dd2: 4628 mov r0, r5 15dd4: 4798 blx r3 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 15dd6: 7c23 ldrb r3, [r4, #16] 15dd8: f3c3 1680 ubfx r6, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 15ddc: 061a lsls r2, r3, #24 15dde: bf48 it mi 15de0: f046 0602 orrmi.w r6, r6, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 15de4: 075b lsls r3, r3, #29 15de6: bf08 it eq 15de8: f046 0610 orreq.w r6, r6, #16 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 15dec: 2801 cmp r0, #1 15dee: f040 80a8 bne.w 15f42 15df2: f046 0604 orr.w r6, r6, #4 lv_draw_label_dsc_init(&label_draw_dsc); 15df6: 4b5d ldr r3, [pc, #372] ; (15f6c ) 15df8: a80c add r0, sp, #48 ; 0x30 15dfa: 4798 blx r3 label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 15dfc: 4b5c ldr r3, [pc, #368] ; (15f70 ) 15dfe: 4628 mov r0, r5 15e00: 4798 blx r3 label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 15e02: 4b5c ldr r3, [pc, #368] ; (15f74 ) label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 15e04: f8ad 003e strh.w r0, [sp, #62] ; 0x3e label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 15e08: 4628 mov r0, r5 15e0a: 4798 blx r3 label_draw_dsc.ofs_x = ext->offset.x; 15e0c: 89a3 ldrh r3, [r4, #12] 15e0e: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 label_draw_dsc.ofs_y = ext->offset.y; 15e12: 89e3 ldrh r3, [r4, #14] label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 15e14: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 label_draw_dsc.ofs_y = ext->offset.y; 15e18: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 15e1c: aa0c add r2, sp, #48 ; 0x30 15e1e: 4b56 ldr r3, [pc, #344] ; (15f78 ) label_draw_dsc.flag = flag; 15e20: f88d 6047 strb.w r6, [sp, #71] ; 0x47 lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 15e24: 2100 movs r1, #0 15e26: 4628 mov r0, r5 15e28: 4798 blx r3 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 15e2a: 7c23 ldrb r3, [r4, #16] 15e2c: f003 0207 and.w r2, r3, #7 15e30: 3a03 subs r2, #3 15e32: 2a01 cmp r2, #1 15e34: d824 bhi.n 15e80 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 15e36: f003 0330 and.w r3, r3, #48 ; 0x30 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 15e3a: 2b10 cmp r3, #16 15e3c: d001 beq.n 15e42 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 15e3e: 2b20 cmp r3, #32 15e40: d11e bne.n 15e80 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 15e42: f647 4318 movw r3, #31768 ; 0x7c18 15e46: 9301 str r3, [sp, #4] 15e48: f9bd 303a ldrsh.w r3, [sp, #58] ; 0x3a 15e4c: 9300 str r3, [sp, #0] 15e4e: 9602 str r6, [sp, #8] 15e50: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 15e54: 9a0d ldr r2, [sp, #52] ; 0x34 15e56: 6821 ldr r1, [r4, #0] 15e58: 4d48 ldr r5, [pc, #288] ; (15f7c ) 15e5a: a805 add r0, sp, #20 15e5c: 47a8 blx r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 15e5e: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 15e62: f8bd 2020 ldrh.w r2, [sp, #32] 15e66: 3301 adds r3, #1 15e68: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 15e6a: f9bd 2014 ldrsh.w r2, [sp, #20] 15e6e: b21b sxth r3, r3 15e70: 429a cmp r2, r3 label_draw_dsc.flag &= ~LV_TXT_FLAG_CENTER; 15e72: bfc2 ittt gt 15e74: f89d 3047 ldrbgt.w r3, [sp, #71] ; 0x47 15e78: f023 030c bicgt.w r3, r3, #12 15e7c: f88d 3047 strbgt.w r3, [sp, #71] ; 0x47 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15e80: f04f 0900 mov.w r9, #0 15e84: f8cd 9000 str.w r9, [sp] 15e88: 6823 ldr r3, [r4, #0] 15e8a: f8df 80f8 ldr.w r8, [pc, #248] ; 15f84 15e8e: aa0c add r2, sp, #48 ; 0x30 15e90: a90a add r1, sp, #40 ; 0x28 15e92: a808 add r0, sp, #32 15e94: 47c0 blx r8 if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 15e96: 7c23 ldrb r3, [r4, #16] 15e98: f003 0307 and.w r3, r3, #7 15e9c: 2b04 cmp r3, #4 15e9e: d14c bne.n 15f3a _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 15ea0: f647 4318 movw r3, #31768 ; 0x7c18 15ea4: 9301 str r3, [sp, #4] 15ea6: f9bd 303a ldrsh.w r3, [sp, #58] ; 0x3a 15eaa: 9300 str r3, [sp, #0] 15eac: 9602 str r6, [sp, #8] 15eae: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 15eb2: 9a0d ldr r2, [sp, #52] ; 0x34 15eb4: 6821 ldr r1, [r4, #0] 15eb6: 4d31 ldr r5, [pc, #196] ; (15f7c ) 15eb8: a805 add r0, sp, #20 15eba: 47a8 blx r5 15ebc: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 15ec0: f8bd 1020 ldrh.w r1, [sp, #32] if(size.x > lv_area_get_width(&txt_coords)) { 15ec4: f9bd 3014 ldrsh.w r3, [sp, #20] 15ec8: 3201 adds r2, #1 15eca: 1a52 subs r2, r2, r1 15ecc: b212 sxth r2, r2 15ece: 4293 cmp r3, r2 15ed0: dd16 ble.n 15f00 label_draw_dsc.ofs_x = ext->offset.x + size.x + 15ed2: 89a5 ldrh r5, [r4, #12] lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 15ed4: 980d ldr r0, [sp, #52] ; 0x34 15ed6: 2220 movs r2, #32 label_draw_dsc.ofs_x = ext->offset.x + size.x + 15ed8: 442b add r3, r5 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 15eda: 4611 mov r1, r2 label_draw_dsc.ofs_x = ext->offset.x + size.x + 15edc: b29d uxth r5, r3 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 15ede: 4b28 ldr r3, [pc, #160] ; (15f80 ) 15ee0: 4798 blx r3 label_draw_dsc.ofs_y = ext->offset.y; 15ee2: 89e3 ldrh r3, [r4, #14] lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15ee4: f8cd 9000 str.w r9, [sp] label_draw_dsc.ofs_x = ext->offset.x + size.x + 15ee8: eb00 0040 add.w r0, r0, r0, lsl #1 15eec: 4405 add r5, r0 label_draw_dsc.ofs_y = ext->offset.y; 15eee: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15ef2: aa0c add r2, sp, #48 ; 0x30 15ef4: 6823 ldr r3, [r4, #0] label_draw_dsc.ofs_x = ext->offset.x + size.x + 15ef6: f8ad 5042 strh.w r5, [sp, #66] ; 0x42 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15efa: a90a add r1, sp, #40 ; 0x28 15efc: a808 add r0, sp, #32 15efe: 47c0 blx r8 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15f00: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 15f04: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 if(size.y > lv_area_get_height(&txt_coords)) { 15f08: f9bd 2016 ldrsh.w r2, [sp, #22] 15f0c: 3301 adds r3, #1 15f0e: 1a5b subs r3, r3, r1 15f10: b21b sxth r3, r3 15f12: 429a cmp r2, r3 15f14: dd11 ble.n 15f3a label_draw_dsc.ofs_x = ext->offset.x; 15f16: 89a3 ldrh r3, [r4, #12] 15f18: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 15f1c: 9b0d ldr r3, [sp, #52] ; 0x34 label_draw_dsc.ofs_y = ext->offset.y + size.y + lv_font_get_line_height(label_draw_dsc.font); 15f1e: 891b ldrh r3, [r3, #8] 15f20: 441a add r2, r3 15f22: 89e3 ldrh r3, [r4, #14] 15f24: 441a add r2, r3 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15f26: 2300 movs r3, #0 15f28: 9300 str r3, [sp, #0] 15f2a: 6823 ldr r3, [r4, #0] label_draw_dsc.ofs_y = ext->offset.y + size.y + lv_font_get_line_height(label_draw_dsc.font); 15f2c: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15f30: 4c14 ldr r4, [pc, #80] ; (15f84 ) 15f32: aa0c add r2, sp, #48 ; 0x30 15f34: a90a add r1, sp, #40 ; 0x28 15f36: a808 add r0, sp, #32 15f38: 47a0 blx r4 } 15f3a: 4638 mov r0, r7 15f3c: b029 add sp, #164 ; 0xa4 15f3e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 15f42: 2802 cmp r0, #2 15f44: bf08 it eq 15f46: f046 0608 orreq.w r6, r6, #8 15f4a: e754 b.n 15df6 return LV_DESIGN_RES_OK; 15f4c: 2700 movs r7, #0 15f4e: e7f4 b.n 15f3a 15f50: 00003f89 .word 0x00003f89 15f54: 00009bb5 .word 0x00009bb5 15f58: 00004289 .word 0x00004289 15f5c: 00009c01 .word 0x00009c01 15f60: 00014ccd .word 0x00014ccd 15f64: 0000ded1 .word 0x0000ded1 15f68: 00014e3d .word 0x00014e3d 15f6c: 00007855 .word 0x00007855 15f70: 00015ca5 .word 0x00015ca5 15f74: 00015ced .word 0x00015ced 15f78: 000047c9 .word 0x000047c9 15f7c: 000101fd .word 0x000101fd 15f80: 0000d1b9 .word 0x0000d1b9 15f84: 00007885 .word 0x00007885 15f88: 000036f1 .word 0x000036f1 00015f8c <__aeabi_uldivmod>: 15f8c: b953 cbnz r3, 15fa4 <__aeabi_uldivmod+0x18> 15f8e: b94a cbnz r2, 15fa4 <__aeabi_uldivmod+0x18> 15f90: 2900 cmp r1, #0 15f92: bf08 it eq 15f94: 2800 cmpeq r0, #0 15f96: bf1c itt ne 15f98: f04f 31ff movne.w r1, #4294967295 ; 0xffffffff 15f9c: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff 15fa0: f000 b974 b.w 1628c <__aeabi_idiv0> 15fa4: f1ad 0c08 sub.w ip, sp, #8 15fa8: e96d ce04 strd ip, lr, [sp, #-16]! 15fac: f000 f806 bl 15fbc <__udivmoddi4> 15fb0: f8dd e004 ldr.w lr, [sp, #4] 15fb4: e9dd 2302 ldrd r2, r3, [sp, #8] 15fb8: b004 add sp, #16 15fba: 4770 bx lr 00015fbc <__udivmoddi4>: 15fbc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 15fc0: 9e08 ldr r6, [sp, #32] 15fc2: 460d mov r5, r1 15fc4: 4604 mov r4, r0 15fc6: 4688 mov r8, r1 15fc8: 2b00 cmp r3, #0 15fca: d14d bne.n 16068 <__udivmoddi4+0xac> 15fcc: 428a cmp r2, r1 15fce: 4694 mov ip, r2 15fd0: d968 bls.n 160a4 <__udivmoddi4+0xe8> 15fd2: fab2 f282 clz r2, r2 15fd6: b152 cbz r2, 15fee <__udivmoddi4+0x32> 15fd8: fa01 f302 lsl.w r3, r1, r2 15fdc: f1c2 0120 rsb r1, r2, #32 15fe0: fa20 f101 lsr.w r1, r0, r1 15fe4: fa0c fc02 lsl.w ip, ip, r2 15fe8: ea41 0803 orr.w r8, r1, r3 15fec: 4094 lsls r4, r2 15fee: ea4f 451c mov.w r5, ip, lsr #16 15ff2: 0c21 lsrs r1, r4, #16 15ff4: fbb8 fef5 udiv lr, r8, r5 15ff8: fa1f f78c uxth.w r7, ip 15ffc: fb05 831e mls r3, r5, lr, r8 16000: ea41 4303 orr.w r3, r1, r3, lsl #16 16004: fb0e f107 mul.w r1, lr, r7 16008: 4299 cmp r1, r3 1600a: d90b bls.n 16024 <__udivmoddi4+0x68> 1600c: eb1c 0303 adds.w r3, ip, r3 16010: f10e 30ff add.w r0, lr, #4294967295 ; 0xffffffff 16014: f080 811e bcs.w 16254 <__udivmoddi4+0x298> 16018: 4299 cmp r1, r3 1601a: f240 811b bls.w 16254 <__udivmoddi4+0x298> 1601e: f1ae 0e02 sub.w lr, lr, #2 16022: 4463 add r3, ip 16024: 1a5b subs r3, r3, r1 16026: b2a4 uxth r4, r4 16028: fbb3 f0f5 udiv r0, r3, r5 1602c: fb05 3310 mls r3, r5, r0, r3 16030: ea44 4403 orr.w r4, r4, r3, lsl #16 16034: fb00 f707 mul.w r7, r0, r7 16038: 42a7 cmp r7, r4 1603a: d90a bls.n 16052 <__udivmoddi4+0x96> 1603c: eb1c 0404 adds.w r4, ip, r4 16040: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff 16044: f080 8108 bcs.w 16258 <__udivmoddi4+0x29c> 16048: 42a7 cmp r7, r4 1604a: f240 8105 bls.w 16258 <__udivmoddi4+0x29c> 1604e: 4464 add r4, ip 16050: 3802 subs r0, #2 16052: 1be4 subs r4, r4, r7 16054: ea40 400e orr.w r0, r0, lr, lsl #16 16058: 2100 movs r1, #0 1605a: b11e cbz r6, 16064 <__udivmoddi4+0xa8> 1605c: 40d4 lsrs r4, r2 1605e: 2300 movs r3, #0 16060: e9c6 4300 strd r4, r3, [r6] 16064: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 16068: 428b cmp r3, r1 1606a: d908 bls.n 1607e <__udivmoddi4+0xc2> 1606c: 2e00 cmp r6, #0 1606e: f000 80ee beq.w 1624e <__udivmoddi4+0x292> 16072: 2100 movs r1, #0 16074: e9c6 0500 strd r0, r5, [r6] 16078: 4608 mov r0, r1 1607a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1607e: fab3 f183 clz r1, r3 16082: 2900 cmp r1, #0 16084: d14a bne.n 1611c <__udivmoddi4+0x160> 16086: 42ab cmp r3, r5 16088: d302 bcc.n 16090 <__udivmoddi4+0xd4> 1608a: 4282 cmp r2, r0 1608c: f200 80f9 bhi.w 16282 <__udivmoddi4+0x2c6> 16090: 1a84 subs r4, r0, r2 16092: eb65 0303 sbc.w r3, r5, r3 16096: 2001 movs r0, #1 16098: 4698 mov r8, r3 1609a: 2e00 cmp r6, #0 1609c: d0e2 beq.n 16064 <__udivmoddi4+0xa8> 1609e: e9c6 4800 strd r4, r8, [r6] 160a2: e7df b.n 16064 <__udivmoddi4+0xa8> 160a4: b902 cbnz r2, 160a8 <__udivmoddi4+0xec> 160a6: deff udf #255 ; 0xff 160a8: fab2 f282 clz r2, r2 160ac: 2a00 cmp r2, #0 160ae: f040 8091 bne.w 161d4 <__udivmoddi4+0x218> 160b2: eba1 050c sub.w r5, r1, ip 160b6: ea4f 471c mov.w r7, ip, lsr #16 160ba: fa1f fe8c uxth.w lr, ip 160be: 2101 movs r1, #1 160c0: fbb5 f3f7 udiv r3, r5, r7 160c4: fb07 5013 mls r0, r7, r3, r5 160c8: 0c25 lsrs r5, r4, #16 160ca: ea45 4500 orr.w r5, r5, r0, lsl #16 160ce: fb0e f003 mul.w r0, lr, r3 160d2: 42a8 cmp r0, r5 160d4: d908 bls.n 160e8 <__udivmoddi4+0x12c> 160d6: eb1c 0505 adds.w r5, ip, r5 160da: f103 38ff add.w r8, r3, #4294967295 ; 0xffffffff 160de: d202 bcs.n 160e6 <__udivmoddi4+0x12a> 160e0: 42a8 cmp r0, r5 160e2: f200 80cb bhi.w 1627c <__udivmoddi4+0x2c0> 160e6: 4643 mov r3, r8 160e8: 1a2d subs r5, r5, r0 160ea: b2a4 uxth r4, r4 160ec: fbb5 f0f7 udiv r0, r5, r7 160f0: fb07 5510 mls r5, r7, r0, r5 160f4: ea44 4405 orr.w r4, r4, r5, lsl #16 160f8: fb0e fe00 mul.w lr, lr, r0 160fc: 45a6 cmp lr, r4 160fe: d908 bls.n 16112 <__udivmoddi4+0x156> 16100: eb1c 0404 adds.w r4, ip, r4 16104: f100 35ff add.w r5, r0, #4294967295 ; 0xffffffff 16108: d202 bcs.n 16110 <__udivmoddi4+0x154> 1610a: 45a6 cmp lr, r4 1610c: f200 80bb bhi.w 16286 <__udivmoddi4+0x2ca> 16110: 4628 mov r0, r5 16112: eba4 040e sub.w r4, r4, lr 16116: ea40 4003 orr.w r0, r0, r3, lsl #16 1611a: e79e b.n 1605a <__udivmoddi4+0x9e> 1611c: f1c1 0720 rsb r7, r1, #32 16120: 408b lsls r3, r1 16122: fa22 fc07 lsr.w ip, r2, r7 16126: ea4c 0c03 orr.w ip, ip, r3 1612a: fa20 f407 lsr.w r4, r0, r7 1612e: fa05 f301 lsl.w r3, r5, r1 16132: 431c orrs r4, r3 16134: 40fd lsrs r5, r7 16136: ea4f 491c mov.w r9, ip, lsr #16 1613a: fa00 f301 lsl.w r3, r0, r1 1613e: fbb5 f8f9 udiv r8, r5, r9 16142: 0c20 lsrs r0, r4, #16 16144: fa1f fe8c uxth.w lr, ip 16148: fb09 5518 mls r5, r9, r8, r5 1614c: ea40 4505 orr.w r5, r0, r5, lsl #16 16150: fb08 f00e mul.w r0, r8, lr 16154: 42a8 cmp r0, r5 16156: fa02 f201 lsl.w r2, r2, r1 1615a: d90b bls.n 16174 <__udivmoddi4+0x1b8> 1615c: eb1c 0505 adds.w r5, ip, r5 16160: f108 3aff add.w sl, r8, #4294967295 ; 0xffffffff 16164: f080 8088 bcs.w 16278 <__udivmoddi4+0x2bc> 16168: 42a8 cmp r0, r5 1616a: f240 8085 bls.w 16278 <__udivmoddi4+0x2bc> 1616e: f1a8 0802 sub.w r8, r8, #2 16172: 4465 add r5, ip 16174: 1a2d subs r5, r5, r0 16176: b2a4 uxth r4, r4 16178: fbb5 f0f9 udiv r0, r5, r9 1617c: fb09 5510 mls r5, r9, r0, r5 16180: ea44 4505 orr.w r5, r4, r5, lsl #16 16184: fb00 fe0e mul.w lr, r0, lr 16188: 45ae cmp lr, r5 1618a: d908 bls.n 1619e <__udivmoddi4+0x1e2> 1618c: eb1c 0505 adds.w r5, ip, r5 16190: f100 34ff add.w r4, r0, #4294967295 ; 0xffffffff 16194: d26c bcs.n 16270 <__udivmoddi4+0x2b4> 16196: 45ae cmp lr, r5 16198: d96a bls.n 16270 <__udivmoddi4+0x2b4> 1619a: 3802 subs r0, #2 1619c: 4465 add r5, ip 1619e: ea40 4008 orr.w r0, r0, r8, lsl #16 161a2: fba0 9402 umull r9, r4, r0, r2 161a6: eba5 050e sub.w r5, r5, lr 161aa: 42a5 cmp r5, r4 161ac: 46c8 mov r8, r9 161ae: 46a6 mov lr, r4 161b0: d356 bcc.n 16260 <__udivmoddi4+0x2a4> 161b2: d053 beq.n 1625c <__udivmoddi4+0x2a0> 161b4: b15e cbz r6, 161ce <__udivmoddi4+0x212> 161b6: ebb3 0208 subs.w r2, r3, r8 161ba: eb65 050e sbc.w r5, r5, lr 161be: fa05 f707 lsl.w r7, r5, r7 161c2: fa22 f301 lsr.w r3, r2, r1 161c6: 40cd lsrs r5, r1 161c8: 431f orrs r7, r3 161ca: e9c6 7500 strd r7, r5, [r6] 161ce: 2100 movs r1, #0 161d0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 161d4: f1c2 0320 rsb r3, r2, #32 161d8: fa20 f103 lsr.w r1, r0, r3 161dc: fa0c fc02 lsl.w ip, ip, r2 161e0: fa25 f303 lsr.w r3, r5, r3 161e4: 4095 lsls r5, r2 161e6: 430d orrs r5, r1 161e8: ea4f 471c mov.w r7, ip, lsr #16 161ec: fa1f fe8c uxth.w lr, ip 161f0: fbb3 f1f7 udiv r1, r3, r7 161f4: fb07 3011 mls r0, r7, r1, r3 161f8: 0c2b lsrs r3, r5, #16 161fa: ea43 4300 orr.w r3, r3, r0, lsl #16 161fe: fb01 f00e mul.w r0, r1, lr 16202: 4298 cmp r0, r3 16204: fa04 f402 lsl.w r4, r4, r2 16208: d908 bls.n 1621c <__udivmoddi4+0x260> 1620a: eb1c 0303 adds.w r3, ip, r3 1620e: f101 38ff add.w r8, r1, #4294967295 ; 0xffffffff 16212: d22f bcs.n 16274 <__udivmoddi4+0x2b8> 16214: 4298 cmp r0, r3 16216: d92d bls.n 16274 <__udivmoddi4+0x2b8> 16218: 3902 subs r1, #2 1621a: 4463 add r3, ip 1621c: 1a1b subs r3, r3, r0 1621e: b2ad uxth r5, r5 16220: fbb3 f0f7 udiv r0, r3, r7 16224: fb07 3310 mls r3, r7, r0, r3 16228: ea45 4503 orr.w r5, r5, r3, lsl #16 1622c: fb00 f30e mul.w r3, r0, lr 16230: 42ab cmp r3, r5 16232: d908 bls.n 16246 <__udivmoddi4+0x28a> 16234: eb1c 0505 adds.w r5, ip, r5 16238: f100 38ff add.w r8, r0, #4294967295 ; 0xffffffff 1623c: d216 bcs.n 1626c <__udivmoddi4+0x2b0> 1623e: 42ab cmp r3, r5 16240: d914 bls.n 1626c <__udivmoddi4+0x2b0> 16242: 3802 subs r0, #2 16244: 4465 add r5, ip 16246: 1aed subs r5, r5, r3 16248: ea40 4101 orr.w r1, r0, r1, lsl #16 1624c: e738 b.n 160c0 <__udivmoddi4+0x104> 1624e: 4631 mov r1, r6 16250: 4630 mov r0, r6 16252: e707 b.n 16064 <__udivmoddi4+0xa8> 16254: 4686 mov lr, r0 16256: e6e5 b.n 16024 <__udivmoddi4+0x68> 16258: 4618 mov r0, r3 1625a: e6fa b.n 16052 <__udivmoddi4+0x96> 1625c: 454b cmp r3, r9 1625e: d2a9 bcs.n 161b4 <__udivmoddi4+0x1f8> 16260: ebb9 0802 subs.w r8, r9, r2 16264: eb64 0e0c sbc.w lr, r4, ip 16268: 3801 subs r0, #1 1626a: e7a3 b.n 161b4 <__udivmoddi4+0x1f8> 1626c: 4640 mov r0, r8 1626e: e7ea b.n 16246 <__udivmoddi4+0x28a> 16270: 4620 mov r0, r4 16272: e794 b.n 1619e <__udivmoddi4+0x1e2> 16274: 4641 mov r1, r8 16276: e7d1 b.n 1621c <__udivmoddi4+0x260> 16278: 46d0 mov r8, sl 1627a: e77b b.n 16174 <__udivmoddi4+0x1b8> 1627c: 3b02 subs r3, #2 1627e: 4465 add r5, ip 16280: e732 b.n 160e8 <__udivmoddi4+0x12c> 16282: 4608 mov r0, r1 16284: e709 b.n 1609a <__udivmoddi4+0xde> 16286: 4464 add r4, ip 16288: 3802 subs r0, #2 1628a: e742 b.n 16112 <__udivmoddi4+0x156> 0001628c <__aeabi_idiv0>: 1628c: 4770 bx lr 1628e: bf00 nop 00016290 <__libc_init_array>: 16290: b570 push {r4, r5, r6, lr} 16292: 4d0d ldr r5, [pc, #52] ; (162c8 <__libc_init_array+0x38>) 16294: 4c0d ldr r4, [pc, #52] ; (162cc <__libc_init_array+0x3c>) 16296: 1b64 subs r4, r4, r5 16298: 10a4 asrs r4, r4, #2 1629a: 2600 movs r6, #0 1629c: 42a6 cmp r6, r4 1629e: d109 bne.n 162b4 <__libc_init_array+0x24> 162a0: 4d0b ldr r5, [pc, #44] ; (162d0 <__libc_init_array+0x40>) 162a2: 4c0c ldr r4, [pc, #48] ; (162d4 <__libc_init_array+0x44>) 162a4: f00e fa2c bl 24700 <_init> 162a8: 1b64 subs r4, r4, r5 162aa: 10a4 asrs r4, r4, #2 162ac: 2600 movs r6, #0 162ae: 42a6 cmp r6, r4 162b0: d105 bne.n 162be <__libc_init_array+0x2e> 162b2: bd70 pop {r4, r5, r6, pc} 162b4: f855 3b04 ldr.w r3, [r5], #4 162b8: 4798 blx r3 162ba: 3601 adds r6, #1 162bc: e7ee b.n 1629c <__libc_init_array+0xc> 162be: f855 3b04 ldr.w r3, [r5], #4 162c2: 4798 blx r3 162c4: 3601 adds r6, #1 162c6: e7f2 b.n 162ae <__libc_init_array+0x1e> 162c8: 0002470c .word 0x0002470c 162cc: 0002470c .word 0x0002470c 162d0: 0002470c .word 0x0002470c 162d4: 00024710 .word 0x00024710 000162d8 : 162d8: b510 push {r4, lr} 162da: 3901 subs r1, #1 162dc: 4402 add r2, r0 162de: 4290 cmp r0, r2 162e0: d101 bne.n 162e6 162e2: 2000 movs r0, #0 162e4: e005 b.n 162f2 162e6: 7803 ldrb r3, [r0, #0] 162e8: f811 4f01 ldrb.w r4, [r1, #1]! 162ec: 42a3 cmp r3, r4 162ee: d001 beq.n 162f4 162f0: 1b18 subs r0, r3, r4 162f2: bd10 pop {r4, pc} 162f4: 3001 adds r0, #1 162f6: e7f2 b.n 162de 000162f8 : 162f8: 440a add r2, r1 162fa: 4291 cmp r1, r2 162fc: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff 16300: d100 bne.n 16304 16302: 4770 bx lr 16304: b510 push {r4, lr} 16306: f811 4b01 ldrb.w r4, [r1], #1 1630a: f803 4f01 strb.w r4, [r3, #1]! 1630e: 4291 cmp r1, r2 16310: d1f9 bne.n 16306 16312: bd10 pop {r4, pc} 00016314 : 16314: 4288 cmp r0, r1 16316: b510 push {r4, lr} 16318: eb01 0402 add.w r4, r1, r2 1631c: d902 bls.n 16324 1631e: 4284 cmp r4, r0 16320: 4623 mov r3, r4 16322: d807 bhi.n 16334 16324: 1e43 subs r3, r0, #1 16326: 42a1 cmp r1, r4 16328: d008 beq.n 1633c 1632a: f811 2b01 ldrb.w r2, [r1], #1 1632e: f803 2f01 strb.w r2, [r3, #1]! 16332: e7f8 b.n 16326 16334: 4402 add r2, r0 16336: 4601 mov r1, r0 16338: 428a cmp r2, r1 1633a: d100 bne.n 1633e 1633c: bd10 pop {r4, pc} 1633e: f813 4d01 ldrb.w r4, [r3, #-1]! 16342: f802 4d01 strb.w r4, [r2, #-1]! 16346: e7f7 b.n 16338 00016348 : 16348: 4402 add r2, r0 1634a: 4603 mov r3, r0 1634c: 4293 cmp r3, r2 1634e: d100 bne.n 16352 16350: 4770 bx lr 16352: f803 1b01 strb.w r1, [r3], #1 16356: e7f9 b.n 1634c 00016358 : 16358: f810 2b01 ldrb.w r2, [r0], #1 1635c: f811 3b01 ldrb.w r3, [r1], #1 16360: 2a01 cmp r2, #1 16362: bf28 it cs 16364: 429a cmpcs r2, r3 16366: d0f7 beq.n 16358 16368: 1ad0 subs r0, r2, r3 1636a: 4770 bx lr 0001636c : 1636c: 4603 mov r3, r0 1636e: f811 2b01 ldrb.w r2, [r1], #1 16372: f803 2b01 strb.w r2, [r3], #1 16376: 2a00 cmp r2, #0 16378: d1f9 bne.n 1636e 1637a: 4770 bx lr 0001637c : 1637c: 4603 mov r3, r0 1637e: f813 2b01 ldrb.w r2, [r3], #1 16382: 2a00 cmp r2, #0 16384: d1fb bne.n 1637e 16386: 1a18 subs r0, r3, r0 16388: 3801 subs r0, #1 1638a: 4770 bx lr 1638c: 682f2e2e .word 0x682f2e2e 16390: 732f6c61 .word 0x732f6c61 16394: 682f6372 .word 0x682f6372 16398: 695f6c61 .word 0x695f6c61 1639c: 00632e6f .word 0x00632e6f 163a0: 682f2e2e .word 0x682f2e2e 163a4: 732f6c61 .word 0x732f6c61 163a8: 682f6372 .word 0x682f6372 163ac: 745f6c61 .word 0x745f6c61 163b0: 72656d69 .word 0x72656d69 163b4: 632e .short 0x632e 163b6: 00 .byte 0x00 163b7: 2e .byte 0x2e 163b8: 61682f2e .word 0x61682f2e 163bc: 74752f6c .word 0x74752f6c 163c0: 2f736c69 .word 0x2f736c69 163c4: 2f637273 .word 0x2f637273 163c8: 6c697475 .word 0x6c697475 163cc: 696c5f73 .word 0x696c5f73 163d0: 632e7473 .word 0x632e7473 163d4: 00 .byte 0x00 163d5: 2e .byte 0x2e 163d6: 2f2e .short 0x2f2e 163d8: 2f6c7068 .word 0x2f6c7068 163dc: 63726573 .word 0x63726573 163e0: 682f6d6f .word 0x682f6d6f 163e4: 735f6c70 .word 0x735f6c70 163e8: 6f637265 .word 0x6f637265 163ec: 00632e6d .word 0x00632e6d 163f0: 40003000 .word 0x40003000 163f4: 40003400 .word 0x40003400 163f8: 41012000 .word 0x41012000 163fc: 41014000 .word 0x41014000 16400: 43000000 .word 0x43000000 16404: 43000400 .word 0x43000400 16408: 43000800 .word 0x43000800 1640c: 43000c00 .word 0x43000c00 00016410 <_i2cms>: 16410: 00000003 00200014 00000100 000000ff ...... ......... 16420: 00d70000 07270400 ......'. 00016428 : ... 16438: 2f2e2e00 2f6c6168 2f637273 5f6c6168 .../hal/src/hal_ 16448: 72617375 73615f74 2e636e79 2e2e0063 usart_async.c... 16458: 6c61682f 6974752f 732f736c 752f6372 /hal/utils/src/u 16468: 736c6974 6e69725f 66756267 2e726566 tils_ringbuffer. 16478: 2e2e0063 6c70682f 2f63742f 5f6c7068 c.../hpl/tc/hpl_ 16488: 632e6374 00000000 40003800 40003c00 tc.c.....8.@.<.@ 16498: 4101a000 4101c000 42001400 42001800 ...A...A...B...B 164a8: 43001400 43001800 ...C...C 000164b0 <_tcs>: 164b0: 006b0000 00000308 00000000 00003a97 ..k..........:.. 164c0: 00000000 682f2e2e 702f6c70 2f74726f ....../hpl/port/ 164d0: 5f6c7068 6f697067 7361625f 00682e65 hpl_gpio_base.h. 164e0: 6c6c6548 6f57206f 00646c72 Hello World. 000164ec : 164ec: 1662e40a 0000855b 000164f8 ..b.[....d.. 000164f8 : 164f8: ff07060b ffac882c ff871f25 ff895139 ....,...%...9Q.. 16508: ffdcc46d ffc88348 ffc65632 ff46434d m...H...2V..MCF. 16518: ff480a16 ffbca25c ffc22d38 ff8b6c67 ..H.\...8-..gl.. 16528: ff48272d ff893622 ffc76d41 ffc38576 -'H."6..Am..v... 16538: ffc6a49a ffa53520 ff692621 ffa95139 .... 5..!&i.9Q.. 16548: ffe8e2a9 ff26242e ffe96e40 ffe98843 .....$&.@n..C... 16558: ffaea64b ff873848 ffc5c4c9 ffa86e33 K...H8......3n.. 16568: ff69646a ffe45640 ff69342e ff280917 jdi.@V...4i...(. 16578: ffa8554e ffe7a996 ff838383 ff67101b NU............g. 16588: ff9e8880 ffc76e60 ffe7a65f ffe99647 ....`n.._...G... 16598: ffe68779 ffa9202e ff694527 ff8a4335 y.... ..'Ei.5C.. 165a8: ffa76f64 ff493329 ffc0b5af ff89575f do..)3I....._W.. 165b8: ffc75543 ffa9462d ff9f9789 ffab603f CU..-F......?`.. 165c8: ff882c1d ffc97948 ff27151b ffc69482 .,..Hy....'..... 165d8: ff69282f ffe6b669 ffdfd484 ff48151b /(i.i.........H. 165e8: ffc89364 ffe66e5b ffc14715 ffe4c4bc d...[n...G...... 165f8: ff98371e ffc66343 ffe1e4e8 ff73542a .7..Cc......*Ts. 16608: ff673a3e ffb7532b ff872b32 ffe68a60 >:g.+S..2+..`... 16618: ff19141e ffd68448 ff38373f ffea9964 ....H...?78.d... 16628: ffd69881 ff875f47 ff592621 ff37161a ....G_..!&Y...7. 16638: ffe65550 ff886e77 ffd8a894 ffa97a73 PU..wn......sz.. 16648: ff571922 ffeba872 fff6f3de ffa3a59e ".W.r........... 16658: ffe03d49 ff671c24 ffa28c94 ffa86254 I=..$.g.....Tb.. 16668: ffecc483 ffd76e48 ffa9473f ffa93a38 ....Hn..?G..8:.. 16678: ffd5d4d6 ffa77937 ffe76254 ff595861 ....7y..Tb..aXY. 16688: ff884648 ffd6b4a7 ffb0999a ff9b5036 HF..........6P.. 16698: ff782620 ff392328 ffb3b5b4 ffe77a45 &x.(#9.....Ez.. 166a8: ffe8b596 ff593331 ffd87a46 ffc19aa2 ....13Y.Fz...... 166b8: ff160c16 ffb1887e ff886263 ff797679 ....~...cb..yvy. 166c8: ff762930 ffc13d43 ff973c30 ff79362d 0)v.C=..0<..-6y. 166d8: ff67474c ff994530 ffbfb560 fff7975f LGg.0E..`..._... 166e8: ffd7624b ffc9875c ff952d18 ffe87959 Kb..\....-..Yy.. 166f8: ffc04945 ff94968f ff9c9729 ffebddae EI......)....... 16708: ffc0aa64 ffe99a78 fff3ead1 ffc56232 d...x.......2b.. 16718: ffd8343e ff685a61 ffda9842 fff1643e >4..aZh.B...>d.. 16728: ff928678 ffd8b859 ffc67a62 ffe4dcdd x...Y...bz...... 16738: ff867c7c ff574a54 ffdaa94f ffd58a7b ||..TJW.O...{... 16748: ffafa9a4 ffd9a57b ffd6cdcd ff766b6f ....{.......okv. 16758: ffecd27c fff7b894 ffa99931 ff84766c |.......1...lv.. 16768: ffe1cb82 ffd85019 fff5b57b ffb96d49 .....P..{...Im.. 16778: ffbb7947 ffac2b34 ffd7895e ffa48654 Gy..4+..^...T... 16788: ff972129 ff570c18 ffc3aaaf ffede6bf )!....W......... 16798: ffacac64 ff370815 fff9a55c ff7b4432 d.....7.\...2D{. 167a8: ffc1bcbf fff69b7e ff78575a ffb76e5f ....~...ZWx._n.. 167b8: ff99614b ffb97a64 ff771a22 ff994747 Ka..dz..".w.GG.. 167c8: ff986266 fff68745 fff6a996 ff77121c fb..E.........w. 167d8: fff7964c ffd8544a fffbc7b6 ff783a40 L...JT......@:x. 167e8: fffa875f fff5a67a ffae8b97 ff78484a _...z.......JHx. 167f8: fff8d7bb fffbfaf8 fff2c89a ffeeebeb ................ 16808: fffb6e49 ffb7624f fffb6459 ffd97965 In..Ob..Yd..ey.. 16818: ff883930 ff973747 ff483942 ff291825 09..G7..B9H.%.). 16828: ffe4da9b ff481725 ffd79d99 ff381825 ....%.H.....%.8. 16838: fff75652 ff995249 ffe5bcb4 ff5a373e RV..IR......>7Z. 16848: ff98944c ffd99566 fffcd2d4 ffb7584e L...f.......NX.. 16858: ff97595d ffc3343f ffdc494b ff95786b ]Y..?4..KI..kx.. 16868: ffb9613b ff982931 fff97a43 ffd03c46 ;a..1)..Cz..F<.. 16878: fffb785b ff997b7b ffa63c23 ffc79d8b [x..{{..#<...... 16888: ffdadbdf ff885350 ff9f9b96 ffeab97a ....PS......z... 16898: ffb7553a ff572a2f ffd7aba7 ffd9babb :U../*W......... 168a8: ff382938 ff8e8b89 ffdbbb69 ffecd7a1 8)8.....i....... 168b8: fff8b8ab ff966f68 ffab6c51 ffd86f5d ....ho..Ql..]o.. 168c8: fffb6e5b ff997077 ffd56331 ffd14848 [n..wp..1c..HH.. 168d8: fffc5a44 ffdccc73 ff4b4b54 ffc38c7a DZ..s...TKK.z... 168e8: ffc6ac9f ff2b2c37 ffcbcbcf ff6b6b6f ....7,+.....okk. 168f8: 70707070 70707070 70707070 70704870 pppppppppppppHpp 16908: 48487070 36363648 e90c69cb 7744442d ppHHH666.i..-DDw 16918: 771212e9 133179c8 c8763113 133179c8 ...w.y1..1v..y1. 16928: e2e23131 407e40e2 40e2e2e2 25c531e2 11...@~@...@.1.% 16938: 30c785a2 0d76b35e 46464646 404040dd ...0^.v.FFFF.@@@ 16948: d1135e5f 5f762bb3 c876765f 9ca240c8 _^...+v__vv..@.. 16958: e714c156 bd0439bd 9c263ae7 140404a7 V....9...:&..... 16968: 7be0bce7 8047efef f3bc3d80 569c4733 ...{..G..=..3G.V 16978: 5c56c1c1 9ce79cee 56ef39f9 9c86f93a ..V\.....9.V:... 16988: 0e0ec785 9ccc55c7 c156e74b 9f35a2c2 .....U..K.V...5. 16998: 9f9f9f9f 339f9f9f 67672033 20677979 .......33 ggyyg 169a8: dc132020 1e126717 7070704e 70707070 ...g..Nppppppp 169b8: 70707070 70487070 48487070 36364848 ppppppHpppHHHH66 169c8: 694e0c36 2b2b2d69 744e1e2b 3179c877 6.Nii-+++.Ntw.y1 169d8: 7631315e 3179c8c8 e2313113 3440e2e2 ^11v..y1.11...@4 169e8: e2313140 9f9fd731 c72825c5 76b35e30 @11.1....%(.0^.v 169f8: 4634340d 40407e46 13b37640 2b2bb3d1 .44FF~@@@v....++ 16a08: 40765f5f 6e407676 86c1869c f9e73904 __v@vv@n.....9.. 16a18: 559c3955 ee9c869c f4bc5c14 4783ef7b U9.U.....\..{..G 16a28: bc625e80 044720f3 c1c1c186 c28304f9 .^b.. G......... 16a38: 9c39f9e7 a7f9ccc1 35354b9c a75cd535 ..9......K555.\. 16a48: 565c55ef 3cd5efc1 7d7d7d7d 05050505 .U\V...<}}}}.... 16a58: c59f9fa0 33333333 dc333333 77136e17 ....3333333..n.w 16a68: 7070740d 70707070 70707070 36487070 .tppppppppppppH6 16a78: 48707048 cb364848 4e4ecb36 bb1e1e0c HppHHH6.6.NN.... 16a88: 4ec82bb3 2bc87777 79797979 79c8c876 .+.Nww.+yyyyv..y 16a98: 31131331 40e2e231 1331e240 13c5af33 1..11..@@.1.3... 16aa8: 28f3e831 b35ee8f3 34340d76 7e7e4646 1..(..^.v.44FF~~ 16ab8: b3764040 2bb3d113 76315f2b 40767640 @@v....++_1v@vv@ 16ac8: 86a79c6e e7393a56 f955553a 9c86e726 n...V:9.:UU.&... 16ad8: b59c83ee 83efbce0 7cb35e4b 6e13f3e0 ........K^.|...n 16ae8: c1c186e7 a73a3ac1 550455e7 0483c19c .....::..U.U.... 16af8: 67a2e73a 5c55a2a0 5c9e14a7 2683c156 :..g..U\...\V..& 16b08: 3c3c3cd5 7d7d3c3c 9f350505 9fdcdc9f .<<<<<}}..5..... 16b18: 3113c5c5 33336e0e 700d0d34 70707070 ...1.n334..ppppp 16b28: 70707070 48707070 70704836 36484848 pppppppH6HppHHH6 16b38: 1e6936cb bb790c0c c82bbbbb c877744e .6i...y...+.Ntw. 16b48: 2b2bc8c8 76c8c8c8 13133179 31313131 ..++...vy1..1111 16b58: c53176e2 7613c5af 25e83176 b3e841f3 .v1....vv1.%.A.. 16b68: 340d76b3 34343434 5f114040 b3d1d1b3 .v.44444@@._.... 16b78: 3131762b 76767676 c2e7f340 04a7c1c0 +v11vvvv@....... 16b88: 55553a04 86e72604 9ccc8d3a c2bce0b8 .:UU.&..:....... 16b98: b35e4bcc d13de07c c1a7396e 8383c1c1 .K^.|.=.n9...... 16ba8: 042639a7 14c19c55 9f4b9ee7 99853564 .9&.U.....K.d5.. 16bb8: 9e14a75c 83c186e7 7d3cd526 7d3c3c3c \.......&.<}<<<} 16bc8: a005057d 33dc9f9f 13dcc5dc 0d794579 }......3....yEy. 16bd8: 0d74680d 70707070 70707070 70707070 .ht.pppppppppppp 16be8: 70704836 36484870 cfcbcbcb 2b1e6912 6HpppHH6.....i.+ 16bf8: 2b6dbbbb 7774122b 762b2bc8 c8c8c876 ..m++.tw.++vv... 16c08: 13317976 13313113 9f133131 407933af vy1..11.11...3y@ 16c18: 790d7676 5ee8e8e8 0d76b3b3 34343434 vv.y...^..v.4444 16c28: 11407e34 1313b35f 31767967 76767631 4~@._...gyv11vvv 16c38: 390e7676 c1c156ef 39cc043a 39260426 vv.9.V..:..9&.&9 16c48: cc8def86 bce0b89c 5e4bcc5c 3dbc7c64 ........\.K^d|.= 16c58: a7550ed1 a7c1c1c1 26e7a7cc 569c55ee ..U........&.U.V 16c68: 35475583 2149f1b0 14143a9c c186e79e .UG5..I!.:...... 16c78: 3cd52683 7d7d7d7d 3505057d dc9fa035 .&.<}}}}}..55... 16c88: 13133333 0d767979 12743379 70707068 33..yyv.y3t.hppp 16c98: 70707070 70707070 70704848 36484870 ppppppppHHpppHH6 16ca8: cbcbcb36 c80c3636 d344bb2b 7412bb79 6...66..+.D.y..t 16cb8: 792bc877 76797979 3179c8c8 13131313 w.+yyyyv..y1.... 16cc8: af9f1331 763113dc e6344040 3131e22c 1.....1v@@4.,.11 16cd8: 7679b35e 34340d0d 40403434 13b35f11 ^.yv..4444@@._.. 16ce8: 76b31313 7679315f 417676c8 c1c11439 ...v_1yv.vvA9... 16cf8: 1404ccc1 26ee4be7 8d83a755 f4b89c3a .....K.&U...:... 16d08: 4bcce7bc bc7cb35e 260e133d c1c1c183 ...K^.|.=..&.... 16d18: e7a79c83 e755e726 0e4befa7 a2f2f5dc ....&.U...K..... 16d28: 143acc5c ef55e714 d52683c1 a27d7d3c \.:...U...&.<}}. 16d38: 05057d7d 9f356e35 311333dc 40767979 }}..5n5..3.1yyv@ 16d48: c87d3334 70701268 70707070 70704870 43}.h.pppppppHpp 16d58: 70707070 48487070 cbcbcb36 773636cb ppppppHH6....66w 16d68: 44bb2b76 1ee91ebb 2bc87774 31317979 v+.D....tw.+yy11 16d78: 79c8c879 e8e81331 c5b19fe8 31313131 y..y1.......1111 16d88: 647e0d40 5e406fc1 b35e5e5e 34340d76 @.~d.o@^^^^.v.44 16d98: 40343434 b35f4040 5e131313 31313176 444@@@_....^v111 16da8: 76767631 56ef3941 f914c1c1 397b5ca7 1vvvA9.V.....\{9 16db8: 83a72626 273a9c8d 3a39e0f4 b9b3804b &&....:'..9:K... 16dc8: c5133dbc c1c18355 869c83c1 55e7269c .=..U........&.U 16dd8: c75c3ae7 33e633dc 3a145cd5 bde714cc .:\..3.3.\.:.... 16de8: 26ef865c 7d7d3c3c 05057d7d 35491735 \..&<<}}}}..5.I5 16df8: 1333dc9f 0d0d7979 c513680d 7074680d ..3.yy...h...htp 16e08: 48487070 70364870 70483670 48707070 ppHHpH6pp6HppppH 16e18: cbcbcb48 cbcbcbcb bb2b7677 771e6d44 H.......wv+.Dm.w 16e28: 77771277 3179792b c8c87931 e8131379 w.ww+yy11y..y... 16e38: d78e8ec5 31e2e231 024040e2 40a6c1be ....1..1.@@....@ 16e48: 5e5e5e5e 340d76b3 0d346834 5f404040 ^^^^.v.44h4.@@@_ 16e58: 1313135e 31315e5e 795e3131 5c264176 ^...^^1111^yvA&\ 16e68: a7c1c186 7b9ca7f9 83264b55 3a048da7 .......{UK&....: 16e78: bdf4f44b 5e807b3a 5b3de030 c18699af K...:{.^0.=[.... 16e88: 9c14c1c1 554b9c86 4be75555 662ce89f ......KUUU.K..,f 16e98: 145c4b33 e714cc3a efcc9ebd 7d3c7d85 3K\.:........}<} 16ea8: 057d7d7d 6e176e05 33dc9f35 0d767913 }}}..n.n5..3.yv. 16eb8: 79680d0d 74687413 70707070 48367070 ..hy.thtpppppp6H 16ec8: 36367070 48707048 cbcb3648 69cbcbcb pp66HppHH6.....i 16ed8: bb1e6936 bb44d344 777777c8 792b2b77 6i..D.D..wwww++y 16ee8: c8c87979 e8137979 e8257d8e 40403113 yy..yy...}%..1@@ 16ef8: 4040e2e2 60c1fe68 5e5e3176 0d76b35e ..@@h..`v1^^^.v. 16f08: bb72680d 11e27eb2 13135e5f 315ee813 .hr..~.._^....^1 16f18: 5ee85e31 aa877931 c1c1869e 3aa7f9a7 1^.^1y.........: 16f28: 4b4b267b ee26a783 f4f44b3a 307b9cad {&KK..&.:K....{0 16f38: 17e0e85e 83c210b1 a7c1c156 4b9c869c ^.......V......K 16f48: 477b5555 6613dc0e 5c4bdc24 cc3a9ccc UU{G...f$.K\..:. 16f58: 5cbdade7 7d7dd55c 7d7d7d7d 49173505 ...\\.}}}}}}.5.I 16f68: dc9f9f35 76797913 340d0d0d 68687468 5....yyv...4hthh 16f78: 70707068 70707070 48703670 70484836 hpppppppp6pH6HHp 16f88: cbcb4848 cbcbcbcb 69cbcbcb 2b44d32d HH.........i-.D+ 16f98: 770dc8ab 2b2b7777 c8c8792b 9f137979 ...www+++y..yy.. 16fa8: d7418e8e 344031e8 40e2e27e 5642e534 ..A..1@4~..@4.BV 16fb8: 5e5fd156 76b35e5e 2eb20d0d 7e7766c1 V._^^^.v.....fw~ 16fc8: 135e31e2 5ee81313 13133131 6e311313 .1^....^11....1n 16fd8: c156e7aa 863a86c1 4b4b7bcc 39a7cc4b ..V...:..{KKK..9 16fe8: e04bf939 7be77bc6 27dc5e30 5510fc85 9.K..{.{0^.'...U 16ff8: c1c1569c 9c86f9a7 bcad4b4b 67dce80e .V......KK.....g 17008: d50eb4ac 9c9c3a5c 85ade7cc 7dd59e9e ....\:.........} 17018: 7d7d7d7d 4935057d dc9f3535 79791333 }}}}}.5I55..3.yy 17028: 0d0d4076 6868340d 70707474 70707070 v@...4hhttpppppp 17038: 70487070 4836cf48 cb484870 cb15cbcb ppHpH.6HpHH..... 17048: 0ccbcbcb 44d32d0c 7979ab2b 2b77c840 .....-.D+.yy@.w+ 17058: 7931792b 8edc7979 4141258e 7e1131d7 +y1yyy...%AA.1.~ 17068: 11117e34 c3e10240 4053c1c3 b35e5e5e 4~..@.....S@^^^. 17078: 340d0d76 42c142bb 5e3134f1 13131313 v..4.B.B.41^.... 17088: 13135e5e dcc535e8 569c4b27 3a86c1c1 ^^...5..'K.V...: 17098: 7b7bcca7 a73a4b4b 4bee2639 e7bcc6e0 ..{{KK:.9&.K.... 170a8: 8ac5b97b 5b715255 c156ee47 86f9a7c1 {...URq[G.V..... 170b8: bc7b4b3a 1313e85d 0ed11ab4 9c3ae7d5 :K{.].........:. 170c8: ad5ccc9c a2555585 7d7d7d7d 05057d7d ..\..UU.}}}}}}.. 170d8: 9f9f3505 793113dc 76767979 76767676 .5....1yyyvvvvvv 170e8: 70120d0d 48707070 70707070 36cfcf70 ...ppppHppppp..6 170f8: 36487036 69cbcbcb e9cb6969 6d4477c8 6pH6...iii...wDm 17108: 132bd344 c80d795e dc13792b 8eaf1313 D.+.^y..+y...... 17118: 2541c525 11e2e841 117e347e 94684011 %.A%A...~4~..@h. 17128: 10c1c3c3 5e5e5e40 460d76b3 c172b240 ....@^^^.v.F@.r. 17138: c894c1c1 131313e2 135e5e5e dc3939e8 ........^^^..99. 17148: 9c47dcdc 56c1c156 27cca7f9 9c277bb8 ..G.V..V...'.{'. 17158: 394b39a7 bcc6e07b d5f37b55 20b13755 .9K9{...U{..U7. 17168: 86396ed1 f9a7c1c1 bc27efa7 e813e87f .n9.......'..... 17178: 13ac6679 f9e7856e 5c3a5c5c d5d585bd yf..n...\\:\.... 17188: 7d7d7dd5 05050505 35350505 1313dc35 .}}}......555... 17198: 79797979 79797979 c8797979 70707070 yyyyyyyyyyy.pppp 171a8: 70707048 cbcf3600 48483636 cbcbcb36 Hppp.6..66HH6... 171b8: cb696969 bb77c877 ababb3bb 0d763113 iii.w.w......1v. 171c8: 13792bc8 9fb19fc5 41d7e813 e245e841 .+y........AA.E. 171d8: 7e347e11 68401111 c1c3c32e 5e31c896 .~4~..@h......1^ 171e8: 0d76b35e 5940460d c1c1c194 2079d160 ^.v..F@Y....`.y 171f8: 5eb3b3d1 9f9895e8 47313113 c1c1869c ...^.....11G.... 17208: cca73a56 17b8bc27 b839a79c d0f4b8aa V:..'.....9..... 17218: 21b69ebc 205bb195 395dd1d1 a7c1c1a7 ...!..[ ..]9.... 17228: 273aa7f9 1313dc3d be1a79e8 e7ad47e8 ..:'=....y...G.. 17238: 3a5ce79c a285bd5c 7da24bd5 a005057d ..\:\....K.}}... 17248: 350505a0 13130e6e 79767979 31797979 ...5n...yyvyyyy1 17258: 5e5e315e 70707079 70704848 36004870 ^1^^ypppHHpppH.6 17268: 48cb36cf cbcbcb48 69696915 c8c869cb .6.HH....iii.i.. 17278: b3b32b1e 4076b32b 79797940 138e8e13 .+..+.v@@yyy.... 17288: 31317979 31314531 3440e2e2 40e2117e yy111E11..@4~..@ 17298: c3c360c8 31d1c3c1 7679b313 46460d0d .`.....1..yv..FF 172a8: c1e47734 53c3c1c1 b3b31379 9fd59f5e 4w.....Sy...^... 172b8: 31311313 c1a70447 a73a56c1 b8e04bcc ..11G....V:..K.. 172c8: 55a7e7b5 e0b5bce0 babaadf4 b320c54c ...U........L. . 172d8: 5db3d1b3 c1c18326 cc830486 13134127 ...]&.......'A.. 172e8: e4d81313 adad5db4 e7e79c9e 85bd5c3a .....]......:\.. 172f8: a285d5a2 a0057d7d a0a0a0a0 13339f9f ....}}........3. 17308: 0d2b7913 31797976 795e3131 70707979 .y+.vyy111^yyypp 17318: 70483648 480ce969 cb363670 cbcb4836 H6Hpi..Hp66.6H.. 17328: 696915cb 794ecb69 abab6d77 40312b67 ..iii.Nywm..g+1@ 17338: 13131376 13af8e33 79797979 e2317979 v...3...yyyyyy1. 17348: 4011e2e2 e2117e34 8f42e57e 53c1c342 ...@4~..~.B.B..S 17358: b37913e2 460d0d76 72a44034 c1c156c1 ..y.v..F4@.r.V.. 17368: b37971c1 13d75eb3 795e135e a7046e76 .qy..^..^.^yvn.. 17378: f956c1c1 e04b1414 14e7b8b5 bce06226 ..V...K.....&b.. 17388: babaadbc 5e807cad b3d1b364 c1cc265d .....|.^d...]&.. 17398: cc0486c1 31e8273a 24791331 ad47d860 ....:'.11.y$`.G. 173a8: e79c9e85 bd5c9ce7 85d5a285 7d7d7da2 ......\......}}} 173b8: a0a0057d 9f9fa0a0 79133333 760d0d0d }.......33.y...v 173c8: 5e793179 7079795e 36364870 0c0c7000 y1y^^yyppH66.p.. 173d8: 367070cb cb484836 6969cbcb 4ecb6969 .pp66HH...iiii.N 173e8: bb1ee9c8 79b32b64 c5d71376 13c57d8e ....d+.yv....}.. 173f8: 76767679 76797979 11e2e240 117e347e yvvvyyyv@...~4~. 17408: c3e57ee2 c1c3e4e4 79137610 0d0d7679 .~.......v.yyv.. 17418: 5f403434 c3c16602 37c1c1c1 5e5eb3c8 44@_.f.....7..^^ 17428: 315e5e5e ee6e7676 56c1c114 4b14ccf9 ^^^1vvn....V...K 17438: 39b5b5e0 bc414b3a adf0babd 80dabcbd ...9:KA......... 17448: 20b3645e 3a2641b3 0486c156 13179c9c ^d. .A&:V....... 17458: c8135e79 adc56aac 9c398585 5c9ce7e7 y^...j....9....\ 17468: 4bd585bd 3c7dd5ad 7d7d3c3c a0a07d7d ...K..}<<<}}}}.. 17478: 3333339f 0d2b6733 79790d0d b3b35e79 .3333g+...yyy^.. 17488: 36367070 36000070 7048360c 48487070 pp66p..6.6HpppHH 17498: 69cbcbcb cb696969 abe9cbcb 1364642b ...iiii.....+dd. 174a8: c5133179 13c57d0f 76767913 79797976 y1...}...yvvvyyy 174b8: 11404076 7e347e40 f17ee211 c36060c1 v@@.@~4~..~..``. 174c8: 137696c1 0d767979 11403446 6077e211 ..v.yyv.F4@...w` 174d8: 565642c3 5e0d6fc1 5e795e5e 5d40765e .BVV.o.^^^y^^v@] 174e8: c1c1cc39 14ccf956 b5bce026 8ed59c26 9...V...&...&... 174f8: e0f0d699 dae07be0 b3645e80 2741b320 .....{...^d. .A' 17508: 86c186f9 49040404 31137913 f35ae4e5 .......I.y.1..Z. 17518: 558555bd 9c9ee75c d5bdbd9c 9595b685 .U.U\........... 17528: 216c2121 52525252 b13ce395 13339fa0 !!l!RRRR..<...3. 17538: 0d34c879 b3797676 700036b3 70487048 y.4.vvy..6.pHpHp 17548: 36363670 48707070 15cbcb48 69696969 p666pppHH...iiii 17558: e90c69cb 206413bb c5137920 d7c58e0f .i....d y...... 17568: 76311313 79797676 11404079 347e4011 ..1vvvyyy@@..@~4 17578: 02e21134 fe60c15a d856c1c3 76797931 4...Z.`...V.1yyv 17588: 40340d0d 11315f11 8fe4c12f 66c156c3 ..4@._1./....V.f 17598: 765e5e0d 0d765e5e 56cc3941 3af956c1 .^^v^^v.A9.V.V.: 175a8: e0f426cc 219ebdb5 bc9eba65 e0bcc6c6 .&.....!e....... 175b8: 195e75da d7b32064 c1860427 ee048d86 .u^.d ..'....... 175c8: 1379136e f542e179 85555547 9e9ee755 n.y.y.B.GUU.U... 175d8: 99993a3a d2baf06c 3c4c9521 7d7d3c3c ::..l...!.L<<<}} 175e8: 4c3c7d7d fbce5252 c879139f 0d34340d }}E. 1a34c: e887dce8 06e845e8 4545e8e8 45e8dce8 .....E....EE...E 1a35c: 13f6de87 37797679 0d0db0fc 7774740d ....yvy7.....ttw 1a36c: 74777777 77777474 bbbb77bb 69e90c38 wwwtttww.w..8..i 1a37c: 0ccfcfcf 483648cf cbcb48cb 89579169 .....H6H.H..i.W. 1a38c: 69690c2d e944bf44 1ebb6444 771e1e1e -.iiD.D.Dd.....w 1a39c: 79792b77 0dc8c82b 4141e876 76797913 w+yy+...v.AA.yyv 1a3ac: 76404040 79797676 40763131 e2e24040 @@@vvvyy11v@@@.. 1a3bc: 7d333140 13a09552 31e23131 404040e2 @13}R...11.1.@@@ 1a3cc: 12114011 ff735722 4a979797 00000000 .@.."Ws....J.... 1a3dc: 00000000 1c1c97ec 739797ff 70704897 ...........s.Hpp 1a3ec: 60cf7070 31134066 45313131 acace640 pp.`f@.1111E@... 1a3fc: 32e1db24 4545e2e6 87dce8e8 4545e806 $..2..EE......EE 1a40c: 45e8e8e8 e8e8e845 13e80645 e3677631 ...EE...E...1vg. 1a41c: 7774b0fc 74747477 77777777 38747474 ..twwtttwwwwttt8 1a42c: bb772b77 cde9bbab cfcfcf69 366969cf w+w.....i....ii6 1a43c: 6d69cbcb e61c6969 6969ec91 d1e5780c ..imii....ii.x.. 1a44c: 1e6d6dab 1e1e6464 792b771e c8c82b2b .mm.dd...w+y++.. 1a45c: 5d30790d 76791341 40404076 79767676 .y0]A.yvv@@@vvvy 1a46c: 79313179 31404040 523c9f13 e2319f4c y11y@@@1.. 1bc0c: 4a6391ab 00000048 00000000 70700000 ..cJH.........pp 1bc1c: cf4fcfcf cd4ecd4f 545454cd cd54544e ..O.O.N..TTTNTT. 1bc2c: 4e54543b 12771212 46a1df68 cd545459 ;TTN..w.h..FYTT. 1bc3c: 232354cd a9a9a9a5 a9a9a9a9 080808a9 .T##............ 1bc4c: 08080808 08080808 a5a5a508 a5a5a5a5 ................ 1bc5c: a5a5a5a5 08a5a5a5 d9b2a9a9 2323a4df ..............## 1bc6c: a5a52323 a5a90223 a5a5a5a5 b202b7a5 ##..#........... 1bc7c: a4d9ddb7 89897391 4444e978 44ed4444 .....s..x.DDDD.D 1bc8c: f7f7b975 5f75dff7 b702a4a1 59b2b2b7 u.....u_.......Y 1bc9c: 54a55459 3b3ba93b 4f4fcdcd 1f4f3636 YT.T;.;;..OO66O. 1bcac: 1f363636 701f1f70 48707070 70707070 666.p..ppppHpppp 1bcbc: cb364848 79690c69 ec89aef6 00000048 HH6.i.iy....H... 1bccc: 00000000 70000000 cd1fcd1f 4ecdcdcd .......p.......N 1bcdc: 5454cdcd 54545454 54543b54 12124e54 ..TTTTTTT;TTTN.. 1bcec: a968d959 1f1f1f1f 701f1f1f a9a5a5a9 Y.h........p.... 1bcfc: a9a9a9a9 a9a9a9a9 0808a908 08080808 ................ 1bd0c: a5080808 a5a5a5a5 a9a908a5 08a9a9a9 ................ 1bd1c: dfd90254 2323a4d9 a5a52323 08a423a5 T.....####...#.. 1bd2c: a5a5a508 b7a5a5a5 02b7b2b2 89971c59 ............Y... 1bd3c: 6de96d89 2278d344 dd02dd74 a1a1a1a1 .m.mD.x"t....... 1bd4c: a4a4dda1 b2020202 54a55459 3ba90854 ........YT.TT..; 1bd5c: 4f3bcd3b 36361f4f 3636361f 361f1f70 ;.;OO.66.666p..6 1bd6c: 70707036 70707070 36cb3670 770c69cb 6pppppppp6.6.i.w 1bd7c: ec91338b 00000048 00007000 70000000 .3..H....p.....p 1bd8c: 364fcf70 4e4fcdcd 54cd3b38 544e4e54 p.O6..ON8;.TTNNT 1bd9c: 54545454 12545454 1f3bdd54 1f1f1f1f TTTTTTT.T.;..... 1bdac: 1f1f1f1f 0870701f a9a9a9a5 a9a9a9a9 .....pp......... 1bdbc: a9a9a9a9 08080808 08080808 08a50808 ................ 1bdcc: b2a5a9a9 d9a1a1dd d95858d9 2323a4a1 .........XX...## 1bddc: a5232323 a4a5a5a5 a5a5a959 a5a5a5a5 ###.....Y....... 1bdec: b2b223a5 89970cb7 e9e97889 89e9d36d .#.......x..m... 1bdfc: dfda021c 2323b2a1 23b7b7b7 54232323 ......##...####T 1be0c: 3b545454 3ba93b3b 4f3b3b3b 1f1f1f4f TTT;;;.;;;;OO... 1be1c: 361f1f36 3670701f 48707036 70707070 6..6.pp66ppHpppp 1be2c: cb707048 6d69cf69 6944f606 00007036 Hpp.i.im..Di6p.. 1be3c: 00700000 00000000 36cd7000 cdcdcd1f ..p......p.6.... 1be4c: 4ecd4ee9 545454cd 54545454 54545454 .N.N.TTTTTTTTTTT 1be5c: 1f3b5954 1f1f1fa9 1f1f1f1f 1f1f1f1f TY;............. 1be6c: a9a5a970 a9a9a9a9 a9a9a9a9 0808a9a9 p............... 1be7c: 08080808 a9080808 d9a10208 58585858 ............XXXX 1be8c: d9d9dfdf 2323a4a1 a5232323 a508a5a5 ......#####..... 1be9c: a51f0202 a5a5a5a5 23a5a5a5 97fae546 ...........#F... 1beac: e9788989 e96de9e9 2308911c a1d9a102 ..x...m....#.... 1bebc: a523b2a4 080808a5 cd54543b a93b3b3b ..#.....;TT.;;;. 1becc: 1f4f3b3b 4fa91f1f 1f70704f 70707070 ;;O....OOpp.pppp 1bedc: 70707036 70707070 70363670 d30c6936 6pppppppp66p6i.. 1beec: 69798b67 007048cb 00000000 00000000 g.yi.Hp......... 1befc: 4f700000 cdcd4f1f 543bcd1e 545438e9 ..pO.O....;T.8TT 1bf0c: 5454544e 54545454 a9545459 1f1f1fa9 NTTTTTTTYTT..... 1bf1c: 1f1f1f1f 1f1f1f1f a9701f1f a9a9a9a5 ..........p..... 1bf2c: a9a9a9a9 a9a9a9a9 0808a9a9 08a90808 ................ 1bf3c: d9d9d9dd d9dfdfdf a1d9d9d9 23b702a1 ...............# 1bf4c: a5232323 08a5a5a5 a9a10223 a5a5a508 ###.....#....... 1bf5c: a5a5a5a5 6389e644 2d898989 6de90c0c ....D..c...-...m 1bf6c: 0a1effe9 b7b2dda1 020202b2 02a4a402 ................ 1bf7c: 3ba559b2 3ba9a908 543ba9a9 d9a1ddb2 .Y.;...;..;T.... 1bf8c: 4f298888 70701f70 48707070 70707070 ..)Op.pppppHpppp 1bf9c: cb487070 78693636 0c3e06e5 7048cb69 ppH.66ix..>.i.Hp ... 1bfb4: 70700000 4f4f7070 cdcd1e4e bbbb4e4e ..ppppOON...NN.. 1bfc4: 54544e54 54545454 08545454 1f1f1fa9 TNTTTTTTTTT..... 1bfd4: 1f1f1f1f 1f1f1f1f 1f1f1f1f a908a91f ................ 1bfe4: a9a9a9a9 a9a9a9a9 a9a9a9a9 591f08a9 ...............Y 1bff4: d9a1a1d9 dfdfdfdf a1d9d9d9 23b70229 ............)..# 1c004: a5232323 a5a5a5a5 a1b22308 08a5a9b2 ###......#...... 1c014: 54a5a5a5 69bfe651 918991ff 2d0c0c0c ...TQ..i.......- 1c024: 741c6d2d 58585888 0a0a8858 b202dda1 -m.t.XXXX....... 1c034: 88d9ddb2 d90ad9d9 88d9d9d9 88888888 ................ 1c044: 88888888 701f7029 70707070 70707070 ....)p.ppppppppp 1c054: 70487070 892d6936 0ce2c889 4848cb69 ppHp6i-.....i.HH 1c064: 00000070 00000000 70000000 36707070 p..........pppp6 1c074: 3b381ecd 381eab1e 54543864 54545454 ..8;...8d8TTTTTT 1c084: cd545454 1f1fa9a9 1f1f1f1f 1f1f1f1f TTT............. 1c094: 1f1f1f1f 081f1f1f a9a91f08 a9a9a9a9 ................ 1c0a4: a9a9a9a9 591f08a9 dfd9d958 d9d9df58 .......YX...X... 1c0b4: a1a1d9d9 232302a4 a5232323 a5a5a5a5 ......#####..... 1c0c4: b22308a5 08a9a1dd 44a508a5 08388ced ..#........D..8. 1c0d4: 89911cca 0c0c0c91 63d30c2d d9a12923 ........-..c#).. 1c0e4: 888888d9 58585858 59b229d9 d9d9a102 ....XXXX.).Y.... 1c0f4: 880a0ad9 0a0a0ad9 0a0a0a0a 704f0a0a ..............Op 1c104: 70707070 70707070 48707070 89cacb48 pppppppppppHH... 1c114: 4e0d2d91 4836cbcb 00007070 00000000 .-.N..6Hpp...... 1c124: 00000000 36707000 cd38cd1f bb1e7977 .....pp6..8.wy.. 1c134: 54abbb1e 54545454 3b545454 a9a9083b ...TTTTTTTT;;... 1c144: 1f1f1f1f a9a91f1f 1f1f1f1f 1f1f1f1f ................ 1c154: a9a90800 a9a9a9a9 a9a9a9a9 08a9a9a9 ................ 1c164: 0854dd88 d9465908 a1a1a1d9 b723b7a4 ..T..YF.......#. 1c174: a5232323 a5a5a5a5 2308a5a5 b2d902b2 ###........#.... 1c184: 5154081f a508bfed 918963a9 0ccdca63 ..TQ.....c..c... 1c194: 910c2d0c a4a4b791 0a0aa1a1 dfd9d90a .-.............. 1c1a4: 5858dfdf 6859ddd9 a1a1a129 0a0a0a0a ..XX..Yh)....... 1c1b4: a1a10a0a cfdda1a1 70703670 70707070 ........p6pppppp 1c1c4: 70707070 6391ec48 cdcd69ca 4836cbcb ppppH..c.i....6H 1c1d4: 00007048 00000000 00000000 70700000 Hp............pp 1c1e4: 4f4fcd4f 54c80e4e 641e1e1e 54545438 O.OON..T...d8TTT 1c1f4: 54545454 a9083b3b 1f1f1fa9 1f1f1f1f TTTT;;.......... 1c204: 1f1fa9a9 1f1f1f1f 08a9cd1f a9a9a9a9 ................ 1c214: a9a9a9a9 1fa9a9a9 1f00a502 1f1f1f1f ................ 1c224: a1d9dda9 2323b702 a5a5a523 a5a5a5a5 ......###....... 1c234: 08a5a5a5 a1b2b223 e6d3540a 08084e90 ....#....T...N.. 1c244: 91ffcb08 690c6391 0c2d0c0c a4b72d63 .....c.i..-.c-.. 1c254: a1a12929 a1a1a1a1 88d9d9d9 d958dfd9 ))............X. 1c264: a42959b2 a1a129a4 dda1a1a1 6846dddd .Y)..)........Fh 1c274: 7036703b 70707070 70707070 07910769 ;p6pppppppppi... 1c284: 36484815 48483648 00707048 00000000 .HH6H6HHHpp..... 1c294: 00000000 70007000 cdcd7070 12dc33cd .....p.ppp...3.. 1c2a4: 4e4e4e12 5454bbab 54545454 08543b54 .NNN..TTTTTTT;T. 1c2b4: 1f1fa9a9 1f1f1f1f 1fa91fa9 1f1f1f1f ................ 1c2c4: 12131e1f a9a9a9a9 a9a9a9a9 1fa9a9a9 ................ 1c2d4: a9000808 a9a9a9a9 021f1fa9 2323b2a1 ..............## 1c2e4: a5a5a523 a5a5a5a5 08a5a5a5 b2b22308 #............#.. 1c2f4: e69380a4 08080878 1c4a0808 69916391 ....x.....J..c.i 1c304: 0c0c0c69 a5cf632d a40223a5 29a12929 i...-c...#..)).) 1c314: a1a1a1a1 d9df88d9 cd0258df 54545968 .........X..hYTT 1c324: 59595454 59595959 1f70cd54 70707070 TTYYYYYYT.p.pppp 1c334: cb707070 ec91fa4a 48707048 48484848 ppp.J...HppHHHHH 1c344: 70704848 00000000 00000000 00000000 HHpp............ 1c354: 36367000 77791e4f 54e94e77 54ab1e54 .p66O.ywwN.TT..T 1c364: 54545454 54545454 1fa9a908 1f1f1f1f TTTTTTTT........ 1c374: a9a9a91f 1f1f1f1f 67331e1f a9084f79 ..........3gyO.. 1c384: 1fa9a9a9 a9a9a9a9 1f1fa91f 1f1f1f1f ................ 1c394: a9a9a91f 23dddd1f a5a52323 08a508a5 .......###...... 1c3a4: a5a5a5a5 b2230808 ceea5bb2 08a9a95e ......#..[..^... 1c3b4: 63a90808 ca639163 0c0c6969 a963ca0c ...cc.c.ii....c. 1c3c4: a5a508a5 a4a4b2a5 dda1dddd dfd9a1dd ................ 1c3d4: dfd9d9df b212cd68 595959b2 cdcd5454 ....h....YYYTT.. 1c3e4: 70cfcdcd 70707070 4acb7070 cbec0707 ...ppppppp.J.... 1c3f4: 70707048 48484870 48484848 00000070 HppppHHHHHHHp... 1c404: 00000000 001f0000 4f700000 541ecd4f ..........pOO..T 1c414: 4e4e774e 3838544e 54545454 54595454 NwNNNT88TTTTTTYT 1c424: a9a90854 1f1f1f1f a9a91f1f 1f1f1fa9 T............... 1c434: 1379121f a9123113 a9a9a9a9 a9a91f1f ..y..1.......... 1c444: 1fa91fa9 1f1f1f1f a91f1f1f a1a91fa9 ................ 1c454: a5a5a5b2 08080808 08080808 23080808 ...............# 1c464: 5ba66619 08290aa1 3608a91f 639191ff .f.[..)....6...c 1c474: 0cec690c fa91ec2d a5a5a508 a5080808 .i..-........... 1c484: 020202b2 4646dddd d9dfd9a1 cf54d9d9 ......FF......T. 1c494: 595454cd 59595959 cd545959 70707070 .TTYYYYYYYT.pppp 1c4a4: ca154870 70cb4a07 70700000 48487070 pH...J.p..ppppHH 1c4b4: 48484848 00007070 00000000 70000000 HHHHpp.........p 1c4c4: 70000070 4ecf3b36 381e543b 1e544e4e p..p6;.N;T.8NNT. 1c4d4: 54545454 59545454 08a53b59 a91f1fa9 TTTTTTTYY;...... 1c4e4: a9a91f1f 1fa9a9a9 0d34121f 79131379 ..........4.y..y 1c4f4: a9a908a9 1f1f1fa9 a91fa9a9 1f1f1f1f ................ 1c504: 1f1f1f1f 1fa91f1f a5a5a454 08080808 ........T....... 1c514: 08080808 cd08a508 7453a6f1 0aa12902 ..........St.).. 1c524: 1f1f23a1 6391ff4a ec696991 63ec2d0c .#..J..c.ii..-.c 1c534: a5a508ca 3ba5a5a5 b2543b3b dd466802 .......;;;T..hF. 1c544: d9dd5968 a1d9d9df cdcfcfcf cdcdcdcd hY.............. 1c554: 545454cd 7070704f 07ca1548 7070154a .TTTOpppH...J.pp 1c564: 70700070 70707070 48484848 00707070 p.ppppppHHHHppp. ... 1c580: 4f1f7000 38cd3b4e 544e5438 544e5454 .p.ON;.88TNTTTNT 1c590: 54545454 a9595959 1fa9a908 a91f1f1f TTTTYYY......... 1c5a0: 1fa9a9a9 686868a9 13790d34 08081279 .....hhh4.y.y... 1c5b0: 1fa9a9a9 1f1f1f1f 1f1f1fa9 1f1f1f1f ................ 1c5c0: 1f1f1f1f b7b21fa9 080808a5 08080808 ................ 1c5d0: 44080808 596466e6 a1a40223 a4290a0a ...D.fdY#.....). 1c5e0: 63fffaa9 69690763 0c0cecec 08086963 ...cc.ii....ci.. 1c5f0: 08080808 3b3b3b3b 6868593b 5468dd68 ....;;;;;Yhhh.hT 1c600: a1d9d946 cdcb68d9 cdcdcdcd cdcdcd54 F....h......T... 1c610: 36704f54 4a07caec 70704815 70007070 TOp6...J.Hpppp.p 1c620: 70707070 70704848 70707070 00000000 ppppHHpppppp.... 1c630: 70000000 0000701f 70707000 cd3b544f ...p.p...pppOT;. 1c640: 4e4e3838 4e4e5454 54545459 12595959 88NNTTNNYTTTYYY. 1c650: 1f1fa959 a9a91f1f a91f1f1f 68686854 Y...........Thhh 1c660: 76343468 08797979 a9a9a908 1f1f1f1f h44vyyy......... 1c670: 1f1fa91f 1f1f1f1f 1f1f1f1f 3b1fa91f ...............; 1c680: 0808a502 08080808 5154083b 23597294 ........;.TQ.rY# 1c690: 02b223b2 a1a1a1a4 ffec0229 69ec631c .#......)....c.i 1c6a0: ececec69 a5a963ca 3b3b3b08 3b3b3b3b i....c...;;;;;;; 1c6b0: 54cdcd3b 46686868 d9745468 cfa1a1a1 ;..ThhhFhTt..... 1c6c0: cdcdcdcf cdcdcdcd 1536cdcd cbec4aca ..........6..J.. 1c6d0: 70707070 70707070 70707000 70707070 pppppppp.ppppppp 1c6e0: 70704870 00000070 00000000 001f7000 pHppp........p.. 1c6f0: a9700000 1f1f7070 381e38cd 3854544e ..p.pp...8.8NTT8 1c700: 5454541e 12595959 3b591212 1f1f1fa9 .TTTYYY...Y;.... 1c710: 593ba91f 68b26868 34346868 310d0d0d ..;Yhh.hhh44...1 1c720: a9a9a912 1f1fa9a9 1f081f1f 1f1f1f1f ................ 1c730: 1f1f1f1f a9a91f1f 0823021f 3b080808 ..........#....; 1c740: e6783b3b a508e9ed 2323b259 a1a102b2 ;;x.....Y.##.... 1c750: a5292929 699163ec ececec69 1ffa07ec )))..c.ii....... 1c760: 3b3b0808 3b3b3b4f cdcd3b3b 686854cd ..;;O;;;;;...Thh 1c770: cd6868b2 d9a1a168 cfcfcf54 cdcdcdcd .hh.h...T....... 1c780: 36cdcdcd 704815ec 70707070 70707070 ...6..Hppppppppp 1c790: 70707070 70707070 70484870 00000070 pppppppppHHpp... 1c7a0: 00000000 00707000 00000000 1f70701f .....pp......pp. 1c7b0: 1e38cd1f 5454381e 5412bb12 59595959 ..8..8TT...TYYYY 1c7c0: 59121259 59595959 0d741259 6868680d Y..YYYYYY.t..hhh 1c7d0: 34346868 0d343434 a9a97931 1fa9a9a9 hh44444.1y...... 1c7e0: a91f1f1f 1f1f1fa9 1f1f1f1f a9a91f1f ................ 1c7f0: b259364f 08080808 94e1e908 3b083bae O6Y..........;.; 1c800: 23b223a5 a4b259a5 29292929 ca697002 .#.#.Y..)))).pi. 1c810: ecec6969 4a91ecec 08a94fa9 4f4f3b3b ii.....J.O..;;OO 1c820: 3bcf4f4f 54cdcdcd 6868b2b2 a1ddcd54 OO.;...T..hhT... 1c830: cfcb46d9 cfcdcfcf cfcdcfcf 70707070 .F..........pppp 1c840: 70707070 70364848 70707070 70707070 ppppHH6ppppppppp 1c850: 70484870 00007070 00000000 00000000 pHHppp.......... 1c860: 00000000 70707070 383b1f1f 544e3838 ....pppp..;888NT 1c870: 12771254 59595959 59681259 b2595959 T.w.YYYYY.hYYYY. 1c880: 683468b2 0dc82bc8 34686868 34343434 .h4h.+..hhh44444 1c890: 3b131340 a9a9a9a9 1f1f1f1f 1f1f081f @..;............ 1c8a0: 1f1f1f1f a91f1f1f 0d1e4f4f 083b3bb2 ........OO...;;. 1c8b0: 90e6ae08 083b08e9 59a5a53b b723a523 ......;.;..Y#.#. 1c8c0: 2929a4b2 cba92929 ec6969cf 63ececec ..))))...ii....c 1c8d0: a94fa9ec 4f4f4f4f cf4f4f4f cdcdcfcf ..O.OOOOOOO..... 1c8e0: 59b259cd 546868b2 cfa14654 cfcfcfcf .Y.Y.hhTTF...... 1c8f0: cdcfcfcf 7070001f 70707070 36363636 ......pppppp6666 1c900: 00707048 70700070 70487070 00007070 Hpp.p.ppppHppp.. ... 1c91c: 701f7000 a91f7070 5454543b 38121254 .p.ppp..;TTTT..8 1c92c: 12125959 68126812 34685959 0d0d6868 YY...h.hYYh4hh.. 1c93c: c8c87468 68340dc8 34343434 e8314034 ht....4h44444@1. 1c94c: a9a9a912 1f1f1fa9 1f08701f 1f1f1f1f .........p...... 1c95c: 4fa9a91f 161e4f4f 0854b245 78e6ed6d ...OOO..E.T.m..x 1c96c: 083b3b3b a5a53ba9 a5082359 2902b723 ;;;..;..Y#..#..) 1c97c: 1fa5b729 151569cb ecececec a9a936fa )....i.......6.. 1c98c: 4f4f4fa9 4f4f4f4f cfcfcfcf 54cdcd4f .OOOOOOO....O..T 1c99c: 36540259 54484848 cfcfcfcd cfcfcfcf Y.T6HHHT........ 1c9ac: 707070cf 48707070 4e4f3636 0070704f .ppppppH66ONOpp. 1c9bc: 00000000 70707000 00000000 00000000 .....ppp........ 1c9cc: 00000000 00007070 00000000 3b707070 ....pp......ppp; 1c9dc: 543ba9a9 59545454 59591259 68686868 ..;TTTTYY.YYhhhh 1c9ec: 0db2b268 c8683476 6868680d 34c80d0d h...v4h..hhh...4 1c9fc: 34340234 31403434 a9a9c813 1f1fa91f 4.4444@1........ 1ca0c: a91f1f1f 1f1f1fa9 a9a9a9a9 06774fa9 .............Ow. 1ca1c: 4e23e8b5 0c51e697 3b3bcd08 a53ba93b ..#N..Q...;;;.;. 1ca2c: a52323a5 b702b2a5 00000008 15360000 .##...........6. 1ca3c: ecec1569 4f1ffafa a9a9a9a9 4f4f4f4f i......O....OOOO 1ca4c: cfcf4f4f cf4fcfcf 483659cd 48cbcb36 OO....O..Y6H6..H 1ca5c: cfcb4f36 cfcfcfcf 700036cf 36707070 6O.......6.pppp6 1ca6c: 404f3636 70703640 00000000 70000000 66O@@6pp.......p 1ca7c: 00000070 00000000 00000000 00000000 p............... 1ca8c: 70000000 70700070 3b08a9a9 59125454 ...pp.pp...;TT.Y 1ca9c: 77123812 68746812 b2b26868 3476130d .8.w.hthhh....v4 1caac: b268c876 0d346868 34023434 40343434 v.h.hh4.44.4444@ 1cabc: 3b797979 1f1f1fa9 701f1f1f a91fa9a9 yyy;.......p.... 1cacc: 1fa9a9a9 31c8cd1f bf79f687 a9d3edbe .......1..y..... 1cadc: 3bcdcd3b 3ba9083b 23a5a5a5 08022308 ;..;;..;...#.#.. ... 1caf4: 70700000 1f15cb70 a9a9a9a9 4fa9a9a9 ..ppp..........O 1cb04: 4f4f4f4f cfcfcf4f 481f59cf 48483636 OOOOO....Y.H66HH 1cb14: cf4f3648 4f4fcfcf 7070cf4f 70707070 H6O...OOO.pppppp 1cb24: 344f4f36 7036129d 00000070 00000000 6OO4..6pp....... 1cb34: 00000070 70007070 00007070 70700000 p...pp.ppp....pp 1cb44: 00000000 70007070 4f1f1f70 3838593b ....pp.pp..O;Y88 1cb54: 12771212 74127477 68686868 340d68b2 ..w.wt.thhhh.h.4 1cb64: 68767634 0d68b2b2 3434340d 34343434 4vvh..h..4444444 1cb74: af79400d 1f1f08b4 1f1f1f1f 1fa91f1f .@y............. 1cb84: 701fa9a9 79311e4f e35b7976 a94fbf5a ...pO.1yvy[.Z.O. 1cb94: cdcd3b3b 4f3b3bcd a508a53b 0023b2a5 ;;...;;O;.....#. ... 1cbac: 70000000 701fa91f a94f1f4f a9a9a9a9 ...p...pO.O..... 1cbbc: 4f4f4f4f cb364f4f 481f594f 48483636 OOOOOO6.OY.H66HH 1cbcc: 363b4848 364fcfcf 0048cb36 70707070 HH;6..O66.H.pppp 1cbdc: 124fcf36 364fe29d 00000070 70000000 6.O...O6p......p 1cbec: 00000000 48707000 70707048 00000070 .....ppHHpppp... ... 1cc04: 1f1f7070 383854a9 77123838 59747412 pp...T8888.w.ttY 1cc14: 68681268 59b26868 3468b2b2 68686834 h.hhhh.Y..h44hhh 1cc24: 340dc8c8 34020234 fc37f279 a9543765 ...44..4y.7.e7T. 1cc34: 1f1fa91f a91f1fa9 4f1f1fa9 7913791e ...........O.y.y 1cc44: 65fbd176 3b081e0f cd3b4fa9 4f4fcdcd v..e...;.O;...OO 1cc54: a53b3b4f 00a559a5 00000000 00000000 O;;..Y.......... 1cc64: 00000000 4f1f1f1f 1f361f1f 3636361f .......O..6..666 1cc74: 4f4f3636 364f3636 48a95436 48484836 66OO66O66T.H6HHH 1cc84: 1fcf4848 36364f36 0036cb36 70707070 HH..6O666.6.pppp 1cc94: 4ecf3670 36129d3e 70007036 00000000 p6.N>..66p.p.... 1cca4: 70000070 48487070 48484848 00004848 p..pppHHHHHHHH.. ... 1ccbc: 1f707000 7454a91f 12383874 74741274 .pp...Ttt88.t.tt 1cccc: 68b25959 68686868 b2686868 686868b2 YY.hhhhhhhh..hhh 1ccdc: c8790d68 2c2b3434 fbfc2ee3 c831795b h.y.44+,....[y1. 1ccec: a91f1fa9 a91f1fa9 1e4f1f1f 79314513 ..........O..E1y 1ccfc: e3657167 4f740dd1 3b4fa908 4fcfcdcd gqe...tO..O;...O 1cd0c: 3b4f4f4f 00a9233b 00000000 00000000 OOO;;#.......... 1cd1c: 00000000 701f1f70 3670a91f 361f1f1f ....p..p..p6...6 1cd2c: 36363636 364f4f36 70083b36 48484848 66666OO66;.pHHHH 1cd3c: 1f364848 36364f36 00363636 70707070 HH6.6O66666.pppp 1cd4c: 3b4f361f cde29d40 00004836 70007000 .6O;@...6H...p.p 1cd5c: 70707000 48484848 15484848 00fd1515 .pppHHHHHHH..... 1cd6c: 00007070 70000000 70707070 54a9361f pp.....ppppp.6.T 1cd7c: 74747412 68121212 68595974 68686868 .ttt...htYYhhhhh 1cd8c: 68686868 68b26868 0d343468 fce32c79 hhhhhh.hh44.y,.. 1cd9c: 76d153e3 79764040 1fa97745 1f1f1f1f .S.v@@vyEw...... 1cdac: 13c84ea9 133113e8 f2fcfcaf 0d0d0dc8 .N....1......... 1cdbc: a9a9a93b cfcdcd4f a9a94f4f 00a9543b ;...O...OO..;T.. ... 1cdd4: 48151500 1f007070 1fa9701f 36361f1f ...Hpp...p....66 1cde4: 36361f1f 36363636 703b3b36 48484848 ..6666666;;pHHHH 1cdf4: a9364848 36364f1f 70363636 70707000 HH6..O66666p.ppp 1ce04: 4f363670 123e3e12 00703636 00000000 p66O.>>.66p..... 1ce14: 48487070 15484848 fd151515 07074a4a ppHHHHH.....JJ.. ... 1ce2c: 1f700000 4f361f1f 7412543b 12681274 ..p...6O;T.tt.h. 1ce3c: 5959340d 740d6868 68687434 b2686868 .4YYhh.t4thhhhh. 1ce4c: c8346868 71fcfc53 34340dd1 76767676 hh4.S..q..44vvvv 1ce5c: 31453131 4e541277 e8e86777 af313113 11E1w.TNwg...11. 1ce6c: 79716510 0d0d0d0d a9a94e0d cfcf4fa9 .eqy.....N...O.. 1ce7c: a94f4fcf 001fa5a9 00000000 00000000 .OO............. 1ce8c: cb150000 70707048 1f1f7000 1f1f70a9 ....Hppp.p...p.. 1ce9c: 1f36361f 36363636 703b4f36 48484870 .66.66666O;ppHHH 1ceac: 1f364848 36363648 70483636 70707070 HH6.H66666Hppppp 1cebc: 36367070 343e403b 7048364f 00000000 pp66;@>4O6Hp.... 1cecc: 48484870 15151548 07074afd 4a4a0707 pHHHH....J....JJ 1cedc: 000000fd 00000000 70700000 361f1f1f ..........pp...6 1ceec: 12543b4f 68127474 b268130d 0d68b2b2 O;T.tt.h..h...h. 1cefc: 34346874 68686868 712b6868 79b46ffc th44hhhhhh+q.o.y 1cf0c: 340d0d0d 76797634 31313176 13e8e813 ...44vyvv111.... 1cf1c: 1313e845 37333113 76d13765 0d0dc876 E....137e7.vv... 1cf2c: 4f74770d cf4fa9a9 a94fcfcf 007008a9 .wtO..O...O...p. ... 1cf44: 15480000 70707015 70007070 1f70a91f ..H..ppppp.p..p. 1cf54: 361f1f1f 36363636 703b3636 70007070 ...6666666;ppp.p 1cf64: 36484848 48484870 00704836 70707070 HHH6pHHH6Hp.pppp 1cf74: 36707070 e23e1236 704836cd 48707070 ppp66.>..6HppppH 1cf84: 48484848 4afd1515 4a070707 1515fd4a HHHH...J...JJ... 1cf94: 00004848 00000000 00000000 1f363670 HH..........p66. 1cfa4: 543b4f36 12747459 68c80d74 68b25959 6O;TYtt.t..hYY.h 1cfb4: 68686868 68686834 fc53c8b2 68345b10 hhhh4hhh..S..[4h 1cfc4: 0dc8c834 79763434 31313176 13131331 4...44vyv1111... 1cfd4: 13131313 650f1331 76795b10 c80dc876 ....1..e.[yvv... 1cfe4: 7474770d 4f3b1f4e 4f4fcfcf 0070a93b .wttN.;O..OO;.p. ... 1cffc: 15000000 700015cb 70707070 a91f0070 .......pppppp... 1d00c: 36363670 36363636 704f3648 70701f70 p6666666H6Opp.pp 1d01c: 48487070 36364870 70707048 70707070 ppHHpH66Hppppppp 1d02c: 36707070 e240cf36 483636cd 48484870 ppp66.@..66HpHHH 1d03c: 15484848 07074afd 15fd4a4a 48481515 HHH..J..JJ....HH 1d04c: 00484848 00000000 00000000 1f700000 HHH...........p. 1d05c: cd363670 59595454 74127459 68685912 p66.TTYYYt.t.Yhh 1d06c: 68686868 b2683468 711053c8 34767664 hhhhh4h..S.qdvv4 1d07c: 0d0d3468 0d34340d 13137676 13133131 h4...44.vv..11.. 1d08c: 31131313 eafcaf13 797979b1 c8c8c876 ...1.....yyyv... 1d09c: 74770dc8 1fcf7474 3bcdcd3b 00001f3b ..wttt..;..;;... ... 1d0b8: 00481515 70707070 00707070 36701f1f ..H.ppppppp...p6 1d0c8: 48363636 70a94f36 70701f70 70707070 666H6O.pp.pppppp 1d0d8: 48707070 70007070 70707070 70707070 pppHpp.ppppppppp 1d0e8: 34cd3636 483636cd 48484848 4afd1548 66.4.66HHHHHH..J 1d0f8: fd4a074a 48151515 48484848 00707048 J.J....HHHHHHpp. 1d108: 00000000 70000000 70000000 4f367070 .......p...ppp6O 1d118: 5454cdcd 12125959 68685974 0d686868 ..TTYY..tYhhhhh. 1d128: 77b26868 2b241053 0d346868 34683434 hh.wS.$+hh4.44h4 1d138: 34343434 31404034 31313113 13131313 44444@@1.111.... 1d148: 0f65e35b 79797967 c8c8c82b 777777c8 [.e.gyyy+....www 1d158: 74383874 4f4f7070 0000701f 00000000 t88tppOO.p...... ... 1d170: 48151548 70707000 70707070 00707070 H..H.pppppppppp. 1d180: 361f7070 701fa936 70707070 70707070 pp.66..ppppppppp 1d190: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d1a0: cf364870 48cbcbcf 15484848 074afd15 pH6....HHHH...J. 1d1b0: 1515fd4a 48484815 70484848 00000070 J....HHHHHHpp... ... 1d1c8: 70000070 4f487070 121254cf 12125959 p..pppHO.T..YY.. 1d1d8: 68595974 68343434 f1746868 b2c85310 tYYh444hhht..S.. 1d1e8: 68686868 34343468 34686868 400d3434 hhhhh444hhh444.@ 1d1f8: 31311331 33313131 33e365fb 76797979 1.111113.e.3yyyv 1d208: c8c8c876 797977c8 38387477 00000038 v....wyywt888... ... 1d228: 15154800 70700000 70707070 70707070 .H....pppppppppp 1d238: 70000070 70707070 70707070 70707070 p..ppppppppppppp 1d248: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d258: 36487070 cbcbcb36 fd151515 fd4a074a ppH66.......J.J. 1d268: 48481515 48484848 00707048 00000000 ..HHHHHHHpp..... ... 1d280: 70000000 36707070 0d12cdcd 59595968 ...pppp6....hYYY 1d290: 59595959 34686868 66e56868 34682bbe YYYYhhh4hh.f.+h4 1d2a0: 68686868 34686868 34686834 34343434 hhhhhhh44hh44444 1d2b0: 31317634 b1133131 79f210fc 76767979 4v1111.....yyyvv 1d2c0: c8c8c8c8 45c877c8 381e74c8 00006938 .....w.E.t.88i.. 1d2d0: 00707070 00000000 00000000 00000000 ppp............. 1d2e0: 15150000 70000015 70707070 70707070 .......ppppppppp 1d2f0: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d300: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d310: 48487070 cbcbcbcb 074aec15 15fd4a07 ppHH......J..J.. 1d320: 48484848 00704848 00000000 00000000 HHHHHHp......... ... 1d33c: 70707070 4554cd4f 59595976 59595959 ppppO.TEvYYYYYYY 1d34c: 68685959 66be2b68 0d6868e5 68683434 YYhhh+.f.hh.44hh 1d35c: 68686868 34686868 34460d34 76763434 hhhhhhh44.F444vv 1d36c: e3f27940 7967b1fc c8767679 c8c8c8c8 @y....gyyvv..... 1d37c: 77777777 381e1e77 00483838 70707000 wwwww..888H..ppp ... 1d398: 15700000 00004815 70707070 70707070 ..p..H..pppppppp 1d3a8: 70707070 701f7070 70707070 70707070 pppppp.ppppppppp 1d3b8: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d3c8: 48484848 15cb4848 ca91074a 4815694a HHHHHH..J...Ji.H 1d3d8: 70484848 00000000 00000000 00000000 HHHp............ ... 1d3f4: 70700000 ab4f3636 59126887 59595959 ..pp66O..h.YYYYY 1d404: 68685959 dba6f174 6868b274 68340d0d YYhht...t.hh..4h 1d414: 68686868 34686868 0d0d3434 40343446 hhhhhhh444..F44@ 1d424: e3372c79 764067b1 c8c8c876 77c8c8c8 y,7..g@vv......w 1d434: 77777777 1e1e1e1e 000c3838 70000000 wwww....88.....p ... 1d450: 48000000 00701515 70707000 70707070 ...H..p..ppppppp 1d460: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d470: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d480: 48484848 ca15cbcb eccafa91 4815e969 HHHH........i..H 1d490: 00004848 00000000 00000000 00000000 HH.............. ... 1d4a8: 70000000 70007070 0c363636 121277dc ...ppp.p666..w.. 1d4b8: 59595959 68595959 646666d1 68686868 YYYYYYYh.ffdhhhh 1d4c8: 68680d68 68686868 34686868 46346834 h.hhhhhhhhh44h4F 1d4d8: 2b34460d f27171f1 76767679 c8c8c876 .F4+.qq.yvvvv... 1d4e8: 7777c8c8 77777777 381e1e1e cb384e38 ..wwwwww...88N8. 1d4f8: 00000000 00000070 00000000 00000000 ....p........... 1d508: 00000000 00151515 70700000 70707070 ..........pppppp 1d518: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d528: 70707070 70707070 4f367070 48707070 pppppppppp6OpppH 1d538: 48cb4848 6307fd48 15154a91 48e9e9cb HH.HH..c.J.....H 1d548: 00007048 00000000 00000000 00000000 Hp.............. ... 1d560: 00007000 70707070 36cfcf1f 4e6979ab .p..pppp...6.yiN 1d570: 54545454 12595959 74f16553 68686868 TTTTYYY.Se.thhhh 1d580: 68686868 68686868 34686868 6868340d hhhhhhhhhhh4.4hh 1d590: b02b4634 0d67f153 4076400d c80d0d0d 4F+.S.g..@v@.... 1d5a0: 7777c8c8 1e1e7777 381e1e1e e94ee938 ..wwww.....88.N. 1d5b0: 00000048 00007000 00000000 00000000 H....p.......... 1d5c0: 00000000 1548fd00 70000000 70707070 ......H....ppppp 1d5d0: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d5e0: 70707070 70707070 594f7070 4848703b ppppppppppOY;pHH 1d5f0: 48cbcb48 9163faec 15cb154a 691e69cb H..H..c.J....i.i 1d600: 00007048 00000000 00000000 00000000 Hp.............. ... 1d618: 00707000 70700000 4f367070 cf691e0c .pp...pppp6O..i. 1d628: 54cdcdcf bb545954 682b5a66 68686868 ...TTYT.fZ+hhhhh 1d638: 68686834 34686868 68686834 340d0d68 4hhhhhh44hhhh..4 1d648: b0640d68 34462bb0 0d0d0d34 0d0d0d0d h.d..+F44....... 1d658: 7777c8c8 1e1e1e77 381e1e1e 4ee9e9e9 ..www......8...N 1d668: 0000000c 00700000 00000000 00000000 ......p......... 1d678: 00000000 15fd4800 70000048 70707070 .....H..H..ppppp 1d688: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d698: 70707070 70707070 59367070 48483659 pppppppppp6YY6HH 1d6a8: ec4848cb 4a631c63 cbcb1515 124ecbcb .HH.c.cJ......N. 1d6b8: 00007036 00000000 00000000 00000000 6p.............. ... 1d6d0: 70700000 70707070 36367070 cfcfcf36 ..pppppppp666... 1d6e0: 59cdcfcf 2f545459 59597294 68686812 ...YYTT/.rYY.hhh 1d6f0: 68346868 34686868 6874460d 0d466868 hh4hhhh4.FthhhF. 1d700: 2b2bc80d 46464646 0d343446 0d0d0d0d ..++FFFFF44..... 1d710: 7777c80d 1e1e7777 e91e3838 4ee9e9e9 ..wwww..88.....N 1d720: 0000cb4e 70000000 00000000 00000000 N......p........ 1d730: 00000000 15150000 00007015 70707070 .........p..pppp 1d740: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d750: 48707070 70707048 cf487070 cb483654 pppHHpppppH.T6H. 1d760: 631548cb 154a6397 484815cb 12693648 .H.c.cJ...HHH6i. 1d770: 0070703b 00000000 00000000 00000000 ;pp............. ... 1d788: 70700000 70707070 4f707070 3636364f ..pppppppppOO666 1d798: 544fcf4f 0b545968 59a5bf94 74681259 O.OThYT....YY.ht 1d7a8: 34686868 6868400d 74460d68 74686868 hhh4.@hhh.Fthhht 1d7b8: 74460d0d 46746868 46746874 0d0d3434 ..FthhtFthtF44.. 1d7c8: c80dc80d 1e1e7779 e9e9381e 4ee9e9e9 ....yw...8.....N 1d7d8: 00480c0c 00000000 00000070 00000000 ..H.....p....... 1d7e8: 00000000 fd000000 00001548 70707000 ........H....ppp 1d7f8: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d808: 361f7070 70363636 36707070 15cb36cf pp.6666pppp6.6.. 1d818: 73071548 48154a1c 48484848 4e484848 H..s.J.HHHHHHHHN 1d828: 00703612 00000000 00000000 00000000 .6p............. ... 1d840: 70700000 70707070 70707070 36364f4f ..ppppppppppOO66 1d850: cfcf3636 24387454 54541e94 12595959 66..Tt8$..TTYYY. 1d860: 68687474 6831f640 68686868 74686874 tthh@.1hhhhhthht 1d870: 68747474 68687468 74686868 0d464646 ttthhthhhhhtFFF. 1d880: 79c80d0d 387731f6 e9e9e938 0c0ce9e9 ...y.1w88....... 1d890: 0069cdcd 00000000 00007000 00000000 ..i......p...... ... 1d8a8: 001548fd 70700000 70707070 70707070 .H....pppppppppp 1d8b8: 70707070 70707070 36367070 4f543636 pppppppppp6666TO 1d8c8: 48707070 15cb3636 73ff4acb 48481507 pppH66...J.s..HH 1d8d8: 48484848 cb484848 70704f12 00000000 HHHHHHH..Opp.... ... 1d8f8: 70000000 70707070 701f1f70 36361f70 ...pppppp..pp.66 1d908: cf363636 5a4ecdcf cd3b38e6 5959593b 666...NZ.8;.;YYY 1d918: 68747412 3487f634 68686834 74747468 .tth4..44hhhhttt 1d928: 74747474 68687474 74746868 46467468 tttttthhhhtthtFF 1d938: 31c8c80d 1ec8f616 e9e9e91e cd0ce9e9 ...1............ 1d948: cbcdcdcd 00000000 00000000 00000000 ................ 1d958: 70700000 00000070 4848fd48 48000000 ..ppp...H.HH...H 1d968: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d978: 36367070 59684f36 48484836 cb15cb36 pp666OhY6HHH6... 1d988: 63736315 48154815 48484848 48484848 .csc.H.HHHHHHHHH 1d998: 7070cdcd 00000000 00000000 00000000 ..pp............ ... 1d9b4: 361f1f70 36361f1f 1f1f1f1f cf363636 p..6..66....666. 1d9c4: 32e9cfcf cd54e932 59543b3b 74746859 ...22.T.;;TYYhtt 1d9d4: 34877968 68686868 74746868 68686868 hy.4hhhhhhtthhhh 1d9e4: 68686874 74746868 74747468 79c80d74 thhhhhtthtttt..y 1d9f4: 7479165d e9e9e91e cd0c0c0c cdcdcdcd ].yt............ 1da04: 00000048 00000000 70000000 36363636 H..........p6666 1da14: 00363636 48151500 00000000 70707048 666....H....Hppp 1da24: 70707070 70707070 70707070 36484870 pppppppppppppHH6 1da34: 34684f36 4848484f 15151548 4aff73ca 6Oh4OHHHH....s.J 1da44: 48481548 70704848 48487070 0048cd36 H.HHHHppppHH6.H. ... 1da6c: 361f1f00 36363636 36363636 36363636 ...6666666666666 1da7c: e66dcfcb 59544e5a 543b3b54 74125959 ..m.ZNTYT;;TYY.t 1da8c: 34406874 68686868 68686868 68686868 th@4hhhhhhhhhhhh 1da9c: 68121268 74741212 74686874 c80d7474 h..h..ttthhttt.. 1daac: 77e816f6 0ce9e91e cd0c0c0c cfcdcdcd ...w............ 1dabc: 00007069 00000000 cb000000 36cbcfcf ip.............6 1dacc: 48703636 48fd0070 00000015 70704800 66pHp..H.....Hpp 1dadc: 70707070 70707070 70707070 36487070 ppppppppppppppH6 1daec: 7e593636 48363654 fdcb1548 15fa901c 66Y~T66HH....... 1dafc: 48481515 70704848 70707070 00363648 ..HHHHppppppH66. ... 1db24: 1f1f0000 3636361f 36363636 36363636 .....66666666666 1db34: 576d4f36 54cf4e24 3b3b5974 12595954 6OmW$N.TtY;;TYY. 1db44: 68747474 68686868 12686812 12747474 ttthhhhh.hh.ttt. 1db54: 12121274 74121212 12127474 c8747412 t......ttt...tt. 1db64: c8871606 0ce9381e cdcdcd0c cfcfcfcd .....8.......... 1db74: 0000cbcf 00000000 36000000 36cbcfcf ...........6...6 1db84: 48363636 fd707048 00004848 70700000 666HHpp.HH....pp 1db94: 70707070 70487070 48707070 48487048 ppppppHppppHHpHH 1dba4: 7e543636 cb36cf68 071515cb 484aff73 66T~h.6.....s.JH 1dbb4: 48484815 70707048 70707070 70707070 .HHHHppppppppppp ... 1dbdc: 1f000000 361f1f1f 36363636 36363636 .......666666666 1dbec: 57e93636 cfcd548c cd5454cf 59543b4f 66.W.T...TT.O;TY 1dbfc: 74747459 12686868 12686812 38743812 Yttthhh..hh..8t8 1dc0c: 12121212 12121212 12383812 74741212 .........88...tt 1dc1c: c8f61613 0ce9381e cfcdcdcd cfcfcfcf .....8.......... 1dc2c: 0048cfcf 00000000 70000000 cbcbcfcf ..H........p.... 1dc3c: 483636cb 48704848 007048fd 70000000 .66HHHpH.Hp....p 1dc4c: 70707070 70707070 70707070 48484870 pppppppppppppHHH 1dc5c: 343b3636 cbcbcd68 1cfd4815 1515fa22 66;4h....H.."... 1dc6c: 48484815 70707048 70707070 00707070 .HHHHpppppppppp. ... 1dc98: 1f36361f 3636361f 36363636 e60c3636 .66..666666666.. 1dca8: cdcfcded cfcfcfcf 3b4f4fcf 38121254 .........OO;T..8 1dcb8: 12121238 12686812 12121212 12121212 8....hh......... 1dcc8: 12121212 12125959 12121212 c8f6f60d ....YY.......... 1dcd8: 0ce93838 cfcfcdcd cfcfcfcf 70cfcfcf 88.............p ... 1dcf0: cbcbcfcb 363636cb 70484848 004815fd .....666HHHp..H. 1dd00: 00000000 70707070 70707070 70707070 ....pppppppppppp 1dd10: 48487070 68cf3648 cbcb5402 7307cbcb ppHHH6.h.T.....s 1dd20: 1548fdff 70484848 70707070 70707070 ..H.HHHppppppppp 1dd30: 00707070 00000000 00000000 00000000 ppp............. ... 1dd50: 36363600 1f36361f 36361f1f edcd3636 .666.66...6666.. 1dd60: cf4f0c32 cfcfcfcf 3b4f54cf 12593b3b 2.O......TO;;;Y. 1dd70: 12121212 12681212 12121259 12123838 ......h.Y...88.. 1dd80: 59121212 59595912 59595959 77310d12 ...Y.YYYYYYY..1w 1dd90: 0ce94e12 cfcfcfcd cfcfcfcf 36cfcfcf .N.............6 ... 1dda8: cbcfcf70 36363636 48484848 4848fd70 p...6666HHHHp.HH 1ddb8: 00000000 70707000 48707070 70707070 .....ppppppHpppp 1ddc8: 48707070 59364848 69695402 226315cb pppHHH6Y.Tii..c" 1ddd8: 151515fa 70484848 70707070 70707070 ....HHHppppppppp 1dde8: 70707070 00000000 00000000 00000000 pppp............ ... 1de08: 1f1f0000 1f361f1f 1f1f1f36 9bcf3636 ......6.6...66.. 1de18: cf366d57 cfcfcfcf 3636cfcf 593b4f36 Wm6.......666O;Y 1de28: 59121212 59125959 12121212 12121212 ...YYY.Y........ 1de38: 59121212 54595959 54545454 4e125454 ...YYYYTTTTTTT.N 1de48: cd0c4e4e cfcfcfcf cfcfcfcf cb3636cb NN...........66. 1de58: 00000048 00000000 cbcfcb00 483636cb H............66H 1de68: 48484848 48fd4870 00000048 70700000 HHHHpH.HH.....pp 1de78: 70707070 70707048 70707070 cd484848 ppppHpppppppHHH. 1de88: 69695968 7397eccb 4815484a 70704848 hYii...sJH.HHHpp 1de98: 70707070 70707070 70707070 00000070 ppppppppppppp... ... 1dec0: 1f000000 1f1f1f1f 361f1f1f 891f361f ...........6.6.. 1ded0: cb1f7857 cdcfcbcf 54cfcfcf 3b3b4fcd Wx.........T.O;; 1dee0: 59121259 59595959 59126812 59595959 Y..YYYYY.h.YYYYY 1def0: 54595959 54545454 54545454 54545454 YYYTTTTTTTTTTTTT 1df00: cdcdcd54 cfcfcfcf cbcbcbcf 363636cb T............666 1df10: 00007036 00000000 cbcf7000 703636cb 6p.......p...66p 1df20: 48487070 15157048 00007048 70000000 ppHHHp..Hp.....p 1df30: 70707070 70707070 70707070 36484870 pppppppppppppHH6 1df40: 15695454 6373cacb 48484815 70484848 TTi...sc.HHHHHHp 1df50: 70707070 70707070 00000070 00000000 ppppppppp....... ... 1df7c: 70707070 1f707070 2d1f361f 364f9781 ppppppp..6.-..O6 1df8c: cd4f3636 cf69cfcd 4f4f4fcd 125959cd 66O...i..OOO.YY. 1df9c: 59595959 59121259 54545959 54545454 YYYYY..YYYTTTTTT 1dfac: 54545454 54545454 cdcd5454 cfcdcdcd TTTTTTTTTT...... 1dfbc: 4f4fcfcf 36363636 36363636 00003636 ..OO6666666666.. 1dfcc: 00000000 cb360000 483636cb 48707048 ......6..66HHppH 1dfdc: fd704848 00004848 00000000 70707070 HHp.HH......pppp 1dfec: 70707070 70707070 48487070 cbcbcf36 ppppppppppHH6... 1dffc: ca736315 48481548 70707048 70707070 .cs.H.HHHppppppp 1e00c: 70707070 00000070 00000000 00000000 ppppp........... ... 1e034: 70707000 70707070 cf1f1f70 1f692273 .pppppppp...s"i. 1e044: 36363636 cd69cf4f 36cf4e0c 5954cf36 6666O.i..N.66.TY 1e054: 54595959 54545459 54545454 54544e54 YYYTYTTTTTTTTNTT 1e064: 54545454 54545454 3bcdcd3b 4f4f3b3b TTTTTTTT;..;;;OO 1e074: 364f4f4f 36363636 36363636 00703636 OOO66666666666p. 1e084: 00000000 36000000 483636cb 48484848 .......6.66HHHHH 1e094: 48484848 0048484a 00000000 70707000 HHHHJHH......ppp 1e0a4: 70707070 70707070 48707070 cbcbcb48 pppppppppppHH... 1e0b4: fd1c1cec 48481548 70707070 70707070 ....H.HHpppppppp 1e0c4: 00707070 00000070 00000000 00000000 ppp.p........... ... 1e0ec: 70700000 70707070 1f707070 7091ed91 ..ppppppppp....p 1e0fc: 36361f70 0ccdcf36 cd2b2b0c cdcf4fcf p.666....++..O.. 1e10c: 54545454 54545454 54545454 54545454 TTTTTTTTTTTTTTTT 1e11c: 54545454 3b54cd54 4fa9a9a9 1f1fa91f TTTTT.T;...O.... 1e12c: 1f1f701f 361f1f1f 36361f1f 00701f36 .p.....6..666.p. 1e13c: 00000000 70000000 48363636 48704848 .......p666HHHpH 1e14c: 70484848 4848fd48 00000000 70480000 HHHpH.HH......Hp 1e15c: 70707048 70707070 48707070 cbcb4848 HppppppppppHHH.. 1e16c: 15631c4a 48484848 70707070 70707070 J.c.HHHHpppppppp 1e17c: 00000000 70007000 00000000 00000000 .....p.p........ ... 1e1a4: 70000000 70707070 70707070 361cff69 ...pppppppppi..6 1e1b4: 36707070 cdcd3636 1e6eab0c 4f3636cf ppp666....n..66O 1e1c4: 545454cf 54545454 54545454 54545454 .TTTTTTTTTTTTTTT 1e1d4: 3b3b3b3b a93b3b3b 701f1f1f 70707070 ;;;;;;;....ppppp 1e1e4: 70707070 701f1f70 70707070 70707070 ppppp..ppppppppp ... 1e1fc: 36367070 48484870 48487070 4815fd70 pp66pHHHppHHp..H 1e20c: 00000070 70000000 70707070 70707070 p......ppppppppp 1e21c: 48707070 48cb4848 48071c4a 70484848 pppHHH.HJ..HHHHp 1e22c: 00000070 00007000 00000000 00007000 p....p.......p.. ... 1e260: 70707070 70707070 4affca70 70707070 ppppppppp..Jpppp 1e270: cf363636 0e6ee9cd 3636cf0c 54544f36 666...n...666OTT 1e280: 3bcdcd54 cdcdcdcd 3b54cd3b 3b3b3b3b T..;....;.T;;;;; 1e290: 1f3b3b3b 7070701f 70707070 00007000 ;;;..ppppppp.p.. 1e2a0: 70700000 70707070 00707070 00000000 ..ppppppppp..... 1e2b0: 00000000 48707000 70484848 48484848 .....ppHHHHpHHHH 1e2c0: 48fd0048 00000048 70000000 70707070 H..HH......ppppp 1e2d0: 70700070 48707070 48484848 484a634a p.pppppHHHHHJcJH 1e2e0: 70704848 00000070 00007070 00000070 HHppp...pp..p... 1e2f0: 00707000 00000000 00000000 00000000 .pp............. ... 1e318: 70707000 70707070 91633670 70707036 .pppppppp6c.6ppp 1e328: 36367070 b5670ccf 36cdcdab 3b4f3636 pp66..g....666O; 1e338: 3b3b3bcd 3b3b3b3b 4f3b3b3b 1f1fa94f .;;;;;;;;;;OO... 1e348: 701fa9a9 70707070 00707070 00000000 ...pppppppp..... 1e358: 00000000 00707000 00700000 00000000 .....pp...p..... 1e368: 00000000 70700000 70704870 70487070 ......pppHppppHp 1e378: 4a707048 00004848 00000000 00707000 HppJHH.......pp. 1e388: 00000000 70707000 48484848 48fd634a .....pppHHHHJc.H 1e398: 70704848 00007070 00000000 00000000 HHpppp.......... 1e3a8: 70700000 00000070 00000000 00000000 ..ppp........... ... 1e3d0: 70700000 70707070 63ec7000 707070ec ..pppppp.p.c.ppp 1e3e0: 36707070 6e4e4f36 cf690c87 4f1f7036 ppp66ONn..i.6p.O 1e3f0: 3b3b3b3b a9080808 70a9a91f 1f707070 ;;;;.......pppp. 1e400: 7070701f 00707070 00000070 00000000 .pppppp.p....... ... 1e424: 70000000 70707070 70707070 48007070 ...ppppppppppp.H 1e434: 007070fd 00000000 00700000 00000000 .pp.......p..... 1e444: 70700000 48484848 4815fa4a 00704848 ..ppHHHHJ..HHHp. 1e454: 00007000 00000000 00000000 70700000 .p............pp 1e464: 00007036 00000000 00000000 00000000 6p.............. ... 1e488: 70000000 00707070 4a700000 000036fa ...pppp...pJ.6.. 1e498: 70700000 2a363670 4f4f1e6e 70707036 ..ppp66*n.OO6ppp 1e4a8: 1f4f4f1f 1f1fa91f 70700070 70707070 .OO.....p.pppppp 1e4b8: 70707070 00707070 00000000 00000000 ppppppp......... 1e4c8: 00000000 00007000 00000000 00000000 .....p.......... ... 1e4e0: 70707000 70707070 00707070 00701515 .pppppppppp...p. ... 1e4fc: 70700000 48484848 48154a4a 00704848 ..ppHHHHJJ.HHHp. ... 1e518: 70700000 00704f36 00000000 00000000 ..pp6Op......... ... 1e544: 00007070 70000000 00704a4a 70000000 pp.....pJJp....p 1e554: 36367070 4f4fab67 70703636 1f1f7070 pp66g.OO66pppp.. 1e564: 00707070 70707000 70707070 70707070 ppp..ppppppppppp 1e574: 70707070 00000000 00000000 00000000 pppp............ 1e584: 00700000 00000000 00000000 00000000 ..p............. 1e594: 00000000 70000000 00007070 00000000 .......ppp...... 1e5a4: 70481500 00000000 00000000 00000000 ..Hp............ 1e5b4: 70000000 48484848 48484afd 00007048 ...pHHHH.JHHHp.. ... 1e5d0: 70000000 00363b70 00000000 00000000 ...pp;6......... ... 1e5fc: 00707000 00000000 70154a70 00000000 .pp.....pJ.p.... 1e60c: 70707000 36364e4f 70703636 70707070 .pppON6666pppppp 1e61c: 70707070 00000070 70707000 70707070 ppppp....ppppppp 1e62c: 00707070 00000000 00000000 00000000 ppp............. ... 1e65c: 00150000 00000000 00000000 00000000 ................ 1e66c: 70000000 48484870 4848fdfd 00007048 ...ppHHH..HHHp.. ... 1e688: 70000000 703b4f70 00000000 00000000 ...ppO;p........ ... 1e6bc: cb4a4800 00000000 70700000 36707070 .HJ.......ppppp6 1e6cc: 7070701f 70707070 70707070 00007070 .ppppppppppppp.. 1e6dc: 00000000 70000000 00000000 00000000 .......p........ ... 1e714: 48700000 00000000 00000000 00000000 ..pH............ 1e724: 00000000 48484870 4848fdfd 00007048 ....pHHH..HHHp.. ... 1e744: 364f1f70 00000070 00000000 00000000 p.O6p........... ... 1e774: fd480000 00000048 00000000 70707070 ..H.H.......pppp 1e784: 70707070 70000070 70707070 00707070 ppppp..pppppppp. ... 1e7e0: 48487070 48481515 00000070 00000000 ppHH..HHp....... ... 1e7fc: 4f4f7000 00000070 00000000 00000000 .pOOp........... ... 1e82c: 48000000 00004848 00000000 70000000 ...HHH.........p 1e83c: 70707070 00000070 70707000 00000070 ppppp....pppp... ... 1e898: 48487000 48481515 00000070 00000000 .pHH..HHp....... ... 1e8b4: 4f1f0000 0000001f 00000000 00000000 ...O............ ... 1e8e4: 70000000 70484848 00000000 00000000 ...pHHHp........ 1e8f4: 70000000 00000000 70000000 00000070 ...p.......pp... ... 1e950: 48700000 48481515 00000070 00000000 ..pH..HHp....... ... 1e96c: 36700000 00007036 00000000 00000000 ..p66p.......... ... 1e9a0: 48484870 00000000 00000000 00000000 pHHH............ ... 1ea08: 70000000 70481548 00000070 00000000 ...pH.Hpp....... ... 1ea24: 70000000 00007036 00000000 00000000 ...p6p.......... ... 1ea50: 2e000000 68732f2e 64657261 6968742f ...../shared/thi 1ea60: 61706472 2f797472 6c67766c 6372732f rdparty/lvgl/src 1ea70: 5f766c2f 65726f63 5f766c2f 75626564 /lv_core/lv_debu 1ea80: 00632e67 645f766c 67756265 6568635f g.c.lv_debug_che 1ea90: 735f6b63 203a7274 6f6e2061 53412d6e ck_str: a non-AS 1eaa0: 20494943 72616863 73616820 70657220 CII char has rep 1eab0: 65746165 6f6d2064 74206572 206e6168 eated more than 1eac0: 445f564c 47554245 5254535f 58414d5f LV_DEBUG_STR_MAX 1ead0: 5045525f 20544145 656d6974 6c002973 _REPEAT times).l 1eae0: 65645f76 5f677562 63656863 74735f6b v_debug_check_st 1eaf0: 69203a72 6c61766e 63206469 20726168 r: invalid char 1eb00: 74206e69 73206568 6e697274 3c282067 in the string (< 1eb10: 20303120 756c6176 6c002965 65645f76 10 value).lv_de 1eb20: 5f677562 63656863 74735f6b 73203a72 bug_check_str: s 1eb30: 6e697274 73692067 6e6f6c20 20726567 tring is longer 1eb40: 6e616874 5f564c20 55424544 54535f47 than LV_DEBUG_ST 1eb50: 414d5f52 454c5f58 4854474e R_MAX_LENGTH. 0001eb5d <__func__.2>: 1eb5d: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 1eb6d: tr. 0001eb70 : 1eb70: 33323130 37363534 42413938 46454443 0123456789ABCDEF ... 0001eb81 <__func__.0>: 1eb81: 645f766c 67756265 676f6c5f 7272655f lv_debug_log_err 1eb91: 2e00726f 68732f2e 64657261 6968742f or.../shared/thi 1eba1: 61706472 2f797472 6c67766c 6372732f rdparty/lvgl/src 1ebb1: 5f766c2f 65726f63 5f766c2f 70736964 /lv_core/lv_disp 1ebc1: 6c00632e 63735f76 63615f72 6e203a74 .c.lv_scr_act: n 1ebd1: 6964206f 616c7073 65722079 74736967 o display regist 1ebe1: 64657265 206f7420 20746567 20737469 ered to get its 1ebf1: 2e746361 72637320 006e6565 6c5f766c act. screen.lv_l 1ec01: 72657961 706f745f 6f6e203a 73696420 ayer_top: no dis 1ec11: 79616c70 67657220 65747369 20646572 play registered 1ec21: 67206f74 69207465 74207374 6c20706f to get its top l 1ec31: 72657961 5f766c00 6579616c 79735f72 ayer.lv_layer_sy 1ec41: 6e203a73 6964206f 616c7073 65722079 s: no display re 1ec51: 74736967 64657265 206f7420 20746567 gistered to get 1ec61: 20737469 2e737973 79616c20 6c007265 its sys. layer.l 1ec71: 69645f76 615f7073 67697373 63735f6e v_disp_assign_sc 1ec81: 6e656572 7274203a 6f742079 73736120 reen: try to ass 1ec91: 206e6769 6f6e2061 63732d6e 6e656572 ign a non-screen 1eca1: 6a626f20 00746365 645f766c 5f707369 object.lv_disp_ 1ecb1: 5f746567 63616e69 65766974 6d69745f get_inactive_tim 1ecc1: 6e203a65 6964206f 616c7073 65722079 e: no display re 1ecd1: 74736967 64657265 5f766c00 70736964 gistered.lv_disp 1ece1: 6972745f 63615f67 69766974 203a7974 _trig_activity: 1ecf1: 64206f6e 6c707369 72207961 73696765 no display regis 1ed01: 65726574 766c0064 7369645f 65675f70 tered.lv_disp_ge 1ed11: 65725f74 745f7266 3a6b7361 206f6e20 t_refr_task: no 1ed21: 70736964 2079616c 69676572 72657473 display register 1ed31: ed. 0001ed34 <__func__.6>: 1ed34: 645f766c 5f707369 5f746567 5f726373 lv_disp_get_scr_ 1ed44: 00746361 act. 0001ed48 <__func__.5>: 1ed48: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 1ed58: 6f745f72 r_top. 0001ed5e <__func__.4>: 1ed5e: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 1ed6e: 79735f72 r_sys. 0001ed74 <__func__.3>: 1ed74: 645f766c 5f707369 69737361 735f6e67 lv_disp_assign_s 1ed84: 65657263 creen. 0001ed8a <__func__.2>: 1ed8a: 645f766c 5f707369 5f746567 63616e69 lv_disp_get_inac 1ed9a: 65766974 6d69745f tive_time. 0001eda4 <__func__.1>: 1eda4: 645f766c 5f707369 67697274 7463615f lv_disp_trig_act 1edb4: 74697669 ivity. 0001edba <__func__.0>: 1edba: 5f766c5f 70736964 7465675f 6665725f _lv_disp_get_ref 1edca: 61745f72 2e006b73 68732f2e 64657261 r_task.../shared 1edda: 6968742f 61706472 2f797472 6c67766c /thirdparty/lvgl 1edea: 6372732f 5f766c2f 65726f63 5f766c2f /src/lv_core/lv_ 1edfa: 756f7267 00632e70 2074754f 6d20666f group.c.Out of m 1ee0a: 726f6d65 766c0079 6f72675f 615f7075 emory.lv_group_a 1ee1a: 6f5f6464 203a6a62 20656874 656a626f dd_obj: the obje 1ee2a: 69207463 6c612073 64616572 64612079 ct is already ad 1ee3a: 20646564 74206f74 20736968 756f7267 ded to this grou 1ee4a: 766c0070 6f72675f 615f7075 6f5f6464 p.lv_group_add_o 1ee5a: 203a6a62 69737361 6f206e67 63656a62 bj: assign objec 1ee6a: 6f742074 206e6120 6568746f 72672072 t to an other gr 1ee7a: 0070756f oup. 0001ee7e <__func__.1>: 1ee7e: 675f766c 70756f72 6572635f 00657461 lv_group_create. 0001ee8e <__func__.0>: 1ee8e: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 1ee9e: 2f2e2e00 72616873 742f6465 64726968 .../shared/third 1eeae: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1eebe: 6f635f76 6c2f6572 626f5f76 00632e6a v_core/lv_obj.c. 1eece: 695f766c 3a74696e 726c6120 79646165 lv_init: already 1eede: 696e6920 00646574 695f766c 2074696e inited.lv_init 1eeee: 64616572 766c0079 6965645f 2074696e ready.lv_deinit 1eefe: 656e6f64 4c554e00 6f70204c 65746e69 done.NULL pointe 1ef0e: 766c0072 7263735f 7465675f 7369645f r.lv_scr_get_dis 1ef1e: 73203a70 65657263 6f6e206e 6f662074 p: screen not fo 1ef2e: 00646e75 6f5f766c 735f6a62 625f7465 und.lv_obj_set_b 1ef3e: 5f657361 3a726964 766e6920 64696c61 ase_dir: invalid 1ef4e: 73616220 69642065 766c0072 6a626f5f base dir.lv_obj 1ef5e: 656c635f 735f6e61 656c7974 73696c5f _clean_style_lis 1ef6e: 63203a74 74276e61 6e696620 74732064 t: can't find st 1ef7e: 20656c79 68746977 61706020 00607472 yle with `part`. 1ef8e: 6f5f766c 735f6a62 705f7465 203a736f lv_obj_set_pos: 1ef9e: 20746f6e 6e616863 676e6967 736f7020 not changing pos 1efae: 6f697469 666f206e 72637320 206e6565 ition of screen 1efbe: 656a626f 6c007463 626f5f76 64615f6a object.lv_obj_ad 1efce: 74735f64 3a656c79 6e616320 66207427 d_style: can't f 1efde: 20646e69 6c797473 69772065 60206874 ind style with ` 1efee: 65707974 766c0060 6a626f5f 6572635f type`.lv_obj_cre 1effe: 3a657461 746f6e20 73696420 79616c70 ate: not display 1f00e: 65726320 64657461 206f7420 66206f73 created to so f 1f01e: 202e7261 70206f4e 6563616c 206f7420 ar. No place to 1f02e: 69737361 74206e67 6e206568 73207765 assign the new s 1f03e: 65657263 624f006e 7463656a 65726320 creen.Object cre 1f04e: 20657461 64616572 61430079 2074276e ate ready.Can't 1f05e: 20746573 20656874 65726170 6f20746e set the parent o 1f06e: 20612066 65726373 43006e65 74276e61 f a screen.Can't 1f07e: 74657320 72617020 20746e65 4e203d3d set parent == N 1f08e: 204c4c55 61206f74 626f206e 7463656a ULL to an object 1f09e: 5f766c00 006a626f .lv_obj. 0001f0a6 <__func__.90>: 1f0a6: 695f766c 0074696e lv_init. 0001f0ae <__func__.89>: 1f0ae: 645f766c 696e6965 lv_deinit. 0001f0b8 <__func__.86>: 1f0b8: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async ... 0001f0c9 <__func__.69>: 1f0c9: 6f5f766c 735f6a62 615f7465 5f6f7475 lv_obj_set_auto_ 1f0d9: 6c616572 006e6769 realign. 0001f0e1 <__func__.68>: 1f0e1: 6f5f766c 735f6a62 655f7465 635f7478 lv_obj_set_ext_c 1f0f1: 6b63696c 6572615f lick_area. 0001f0fb <__func__.62>: 1f0fb: 6f5f766c 735f6a62 615f7465 685f7664 lv_obj_set_adv_h 1f10b: 65747469 ittest. 0001f112 <__func__.61>: 1f112: 6f5f766c 735f6a62 635f7465 6b63696c lv_obj_set_click ... 0001f123 <__func__.60>: 1f123: 6f5f766c 735f6a62 745f7465 lv_obj_set_top. 0001f132 <__func__.59>: 1f132: 6f5f766c 735f6a62 645f7465 00676172 lv_obj_set_drag. 0001f142 <__func__.58>: 1f142: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 1f152: 00726964 dir. 0001f156 <__func__.57>: 1f156: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 1f166: 6f726874 throw. 0001f16c <__func__.56>: 1f16c: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 1f17c: 65726170 parent. 0001f183 <__func__.55>: 1f183: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 1f193: 76655f74 00746e65 t_event. 0001f19b <__func__.53>: 1f19b: 6f5f766c 615f6a62 705f6464 65746f72 lv_obj_add_prote 1f1ab: ct. 0001f1ae <__func__.52>: 1f1ae: 6f5f766c 635f6a62 7261656c 6f72705f lv_obj_clear_pro 1f1be: 74636574 tect. 0001f1c3 <__func__.47>: 1f1c3: 6f5f766c 735f6a62 655f7465 746e6576 lv_obj_set_event 1f1d3: 0062635f _cb. 0001f1d7 <__func__.45>: 1f1d7: 655f766c 746e6576 6e65735f 75665f64 lv_event_send_fu 1f1e7: nc. 0001f1ea <__func__.46>: 1f1ea: 655f766c 746e6576 6e65735f lv_event_send. 0001f1f8 <__func__.44>: 1f1f8: 6f5f766c 735f6a62 735f7465 616e6769 lv_obj_set_signa 1f208: 62635f6c l_cb. 0001f20d <__func__.43>: 1f20d: 6f5f766c 735f6a62 645f7465 67697365 lv_obj_set_desig 1f21d: 62635f6e n_cb. 0001f222 <__func__.42>: 1f222: 6f5f766c 615f6a62 636f6c6c 5f657461 lv_obj_allocate_ 1f232: 5f747865 72747461 ext_attr. 0001f23b <__func__.41>: 1f23b: 6f5f766c 725f6a62 65726665 655f6873 lv_obj_refresh_e 1f24b: 645f7478 5f776172 00646170 xt_draw_pad. 0001f257 <__func__.38>: 1f257: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 1f267: t. 0001f269 <__func__.40>: 1f269: 6f5f766c 675f6a62 735f7465 65657263 lv_obj_get_scree 1f279: n. 0001f27b <__func__.39>: 1f27b: 6f5f766c 675f6a62 645f7465 00707369 lv_obj_get_disp. 0001f28b <__func__.37>: 1f28b: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child ... 0001f29c <__func__.54>: 1f29c: 6f5f766c 735f6a62 625f7465 5f657361 lv_obj_set_base_ 1f2ac: 00726964 dir. 0001f2b0 <__func__.36>: 1f2b0: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 1f2c0: 6361625f _back. 0001f2c6 <__func__.35>: 1f2c6: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 1f2d6: 6572646c ldren. 0001f2dc <__func__.34>: 1f2dc: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 1f2ec: 6572646c 65725f6e 73727563 00657669 ldren_recursive. 0001f2fc <__func__.33>: 1f2fc: 6f5f766c 675f6a62 635f7465 64726f6f lv_obj_get_coord 1f30c: s. 0001f30e <__func__.31>: 1f30e: 6f5f766c 675f6a62 785f7465 lv_obj_get_x. 0001f31b <__func__.30>: 1f31b: 6f5f766c 675f6a62 795f7465 lv_obj_get_y. 0001f328 <__func__.29>: 1f328: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width ... 0001f339 <__func__.28>: 1f339: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 1f349: t. 0001f34b <__func__.25>: 1f34b: 6f5f766c 675f6a62 615f7465 5f6f7475 lv_obj_get_auto_ 1f35b: 6c616572 006e6769 realign. 0001f363 <__func__.24>: 1f363: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f373: 6b63696c 6461705f 66656c5f lick_pad_left. 0001f381 <__func__.23>: 1f381: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f391: 6b63696c 6461705f 6769725f lick_pad_right. 0001f3a0 <__func__.22>: 1f3a0: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f3b0: 6b63696c 6461705f 706f745f lick_pad_top. 0001f3bd <__func__.21>: 1f3bd: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f3cd: 6b63696c 6461705f 746f625f 006d6f74 lick_pad_bottom. 0001f3dd <__func__.20>: 1f3dd: 6f5f766c 675f6a62 655f7465 645f7478 lv_obj_get_ext_d 1f3ed: 5f776172 00646170 raw_pad. 0001f3f5 <__func__.66>: 1f3f5: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 1f405: 6c5f656c 00747369 le_list. 0001f40d <__func__.19>: 1f40d: 6f5f766c 675f6a62 6c5f7465 6c61636f lv_obj_get_local 1f41d: 7974735f _style. 0001f424 <__func__.65>: 1f424: 6f5f766c 725f6a62 766f6d65 74735f65 lv_obj_remove_st 1f434: 5f656c79 61636f6c 72705f6c yle_local_prop. 0001f443 <__func__.18>: 1f443: 6f5f766c 675f6a62 685f7465 65646469 lv_obj_get_hidde 1f453: n. 0001f455 <__func__.83>: 1f455: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 1f465: 72615f65 e_area. 0001f46c <__func__.82>: 1f46c: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 1f47c: e. 0001f47e <__func__.80>: 1f47e: 6f5f766c 6d5f6a62 5f65766f 65726f66 lv_obj_move_fore 1f48e: 756f7267 ground. 0001f495 <__func__.79>: 1f495: 6f5f766c 6d5f6a62 5f65766f 6b636162 lv_obj_move_back 1f4a5: 756f7267 ground. 0001f4ac <__func__.78>: 1f4ac: 6f5f766c 735f6a62 705f7465 lv_obj_set_pos. 0001f4bb <__func__.77>: 1f4bb: 6f5f766c 735f6a62 785f7465 lv_obj_set_x. 0001f4c8 <__func__.76>: 1f4c8: 6f5f766c 735f6a62 795f7465 lv_obj_set_y. 0001f4d5 <__func__.72>: 1f4d5: 6f5f766c 615f6a62 6e67696c lv_obj_align. 0001f4e2 <__func__.71>: 1f4e2: 6f5f766c 615f6a62 6e67696c 69726f5f lv_obj_align_ori 1f4f2: go. 0001f4f5 <__func__.70>: 1f4f5: 6f5f766c 725f6a62 696c6165 lv_obj_realign. 0001f504 <__func__.64>: 1f504: 6f5f766c 725f6a62 65726665 735f6873 lv_obj_refresh_s 1f514: 656c7974 tyle. 0001f519 <__func__.67>: 1f519: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style ... 0001f52a <__func__.63>: 1f52a: 6f5f766c 735f6a62 685f7465 65646469 lv_obj_set_hidde 1f53a: n. 0001f53c <__func__.17>: 1f53c: 6f5f766c 675f6a62 615f7465 685f7664 lv_obj_get_adv_h 1f54c: 65747469 ittest. 0001f553 <__func__.16>: 1f553: 6f5f766c 675f6a62 635f7465 6b63696c lv_obj_get_click ... 0001f564 <__func__.15>: 1f564: 6f5f766c 675f6a62 745f7465 lv_obj_get_top. 0001f573 <__func__.14>: 1f573: 6f5f766c 675f6a62 645f7465 00676172 lv_obj_get_drag. 0001f583 <__func__.13>: 1f583: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 1f593: 00726964 dir. 0001f597 <__func__.12>: 1f597: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 1f5a7: 6f726874 throw. 0001f5ad <__func__.11>: 1f5ad: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 1f5bd: 76655f74 00746e65 t_event. 0001f5c5 <__func__.10>: 1f5c5: 6f5f766c 675f6a62 625f7465 5f657361 lv_obj_get_base_ 1f5d5: 00726964 dir. 0001f5d9 <__func__.88>: 1f5d9: 6f5f766c 635f6a62 74616572 lv_obj_create. 0001f5e7 <__func__.81>: 1f5e7: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 1f5f7: t. 0001f5f9 <__func__.75>: 1f5f9: 6f5f766c 735f6a62 735f7465 00657a69 lv_obj_set_size. 0001f609 <__func__.74>: 1f609: 6f5f766c 735f6a62 775f7465 68746469 lv_obj_set_width ... 0001f61a <__func__.73>: 1f61a: 6f5f766c 735f6a62 685f7465 68676965 lv_obj_set_heigh 1f62a: t. 0001f62c <__func__.9>: 1f62c: 6f5f766c 675f6a62 705f7465 65746f72 lv_obj_get_prote 1f63c: ct. 0001f63f <__func__.8>: 1f63f: 6f5f766c 695f6a62 72705f73 6365746f lv_obj_is_protec 1f64f: 00646574 ted. 0001f653 <__func__.7>: 1f653: 6f5f766c 675f6a62 735f7465 65746174 lv_obj_get_state ... 0001f664 <__func__.27>: 1f664: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 1f674: 7469665f _fit. 0001f679 <__func__.26>: 1f679: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 1f689: 69665f74 t_fit. 0001f68f <__func__.32>: 1f68f: 6f5f766c 675f6a62 695f7465 72656e6e lv_obj_get_inner 1f69f: 6f6f635f 00736472 _coords.... 0001f6aa <__func__.51>: 1f6aa: 6f5f766c 735f6a62 735f7465 65746174 lv_obj_set_state ... 0001f6bb <__func__.50>: 1f6bb: 6e617274 72635f73 65746165 trans_create. 0001f6c8 <__func__.49>: 1f6c8: 6f5f766c 615f6a62 735f6464 65746174 lv_obj_add_state ... 0001f6d9 <__func__.48>: 1f6d9: 6f5f766c 635f6a62 7261656c 6174735f lv_obj_clear_sta 1f6e9: te. 0001f6ec <__func__.6>: 1f6ec: 6f5f766c 675f6a62 735f7465 616e6769 lv_obj_get_signa 1f6fc: 62635f6c l_cb. 0001f701 <__func__.5>: 1f701: 6f5f766c 675f6a62 645f7465 67697365 lv_obj_get_desig 1f711: 62635f6e n_cb. 0001f716 <__func__.4>: 1f716: 6f5f766c 675f6a62 655f7465 746e6576 lv_obj_get_event 1f726: 0062635f _cb. 0001f72a <__func__.3>: 1f72a: 6f5f766c 675f6a62 655f7465 615f7478 lv_obj_get_ext_a 1f73a: 00727474 ttr. 0001f73e <__func__.2>: 1f73e: 6f5f766c 675f6a62 745f7465 00657079 lv_obj_get_type. 0001f74e <__func__.1>: 1f74e: 6f5f766c 675f6a62 675f7465 70756f72 lv_obj_get_group ... 0001f75f <__func__.87>: 1f75f: 6f5f766c 645f6a62 lv_obj_del. 0001f76a <__func__.85>: 1f76a: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async 1f77a: 0062635f _cb. 0001f77e <__func__.84>: 1f77e: 6f5f766c 635f6a62 6e61656c lv_obj_clean. 0001f78b <__func__.0>: 1f78b: 6f5f766c 695f6a62 6f665f73 65737563 lv_obj_is_focuse 1f79b: 2e2e0064 6168732f 2f646572 72696874 d.../shared/thir 1f7ab: 72617064 6c2f7974 2f6c6776 2f637273 dparty/lvgl/src/ 1f7bb: 635f766c 2f65726f 725f766c 2e726665 lv_core/lv_refr. 1f7cb: 61430063 2074276e 20746573 20424456 c.Can't set VDB 1f7db: 67696568 75207468 676e6973 65687420 height using the 1f7eb: 756f7220 6620646e 74636e75 2e6e6f69 round function. 1f7fb: 72572820 20676e6f 6e756f72 62635f64 (Wrong round_cb 1f80b: 20726f20 73206f74 6c6c616d 42445620 or to small VDB 1f81b: ). 0001f81d <__func__.0>: 1f81d: 725f766c 5f726665 61657261 2f2e2e00 lv_refr_area.../ 1f82d: 72616873 742f6465 64726968 74726170 shared/thirdpart 1f83d: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 1f84d: 6c2f6572 74735f76 2e656c79 766c0063 re/lv_style.c.lv 1f85d: 7974735f 6c5f656c 5f747369 6f6d6572 _style_list_remo 1f86d: 735f6576 656c7974 6f63203a 6e646c75 ve_style: couldn 1f87d: 72207427 6c6c6165 7461636f 6c632065 't reallocate cl 1f88d: 20737361 7473696c 5f766c00 6c797473 ass list.lv_styl 1f89d: 696c5f65 615f7473 735f6464 656c7974 e_list_add_style 1f8ad: 6f63203a 6e646c75 61207427 74206464 : couldn't add t 1f8bd: 63206568 7373616c 74656700 636f6c5f he class.get_loc 1f8cd: 735f6c61 656c7974 6f63203a 6e646c75 al_style: couldn 1f8dd: 63207427 74616572 6f6c2065 206c6163 't create local 1f8ed: 6c797473 766c0065 7974735f 6c5f656c style.lv_style_l 1f8fd: 5f747369 5f646461 6e617274 74735f73 ist_add_trans_st 1f90d: 3a656c79 756f6320 276e646c 72632074 yle: couldn't cr 1f91d: 65746165 61727420 7469736e 206e6f69 eate transition 1f92d: 6c797473 style. 0001f933 <__func__.5>: 1f933: 5f766c5f 6c797473 696c5f65 725f7473 _lv_style_list_r 1f943: 766f6d65 74735f65 00656c79 emove_style. 0001f94f <__func__.6>: 1f94f: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 1f95f: 735f6464 656c7974 dd_style. 0001f968 <__func__.7>: 1f968: 5f746567 6f6c6c61 6f6c5f63 5f6c6163 get_alloc_local_ 1f978: 6c797473 style. 0001f97e <__func__.4>: 1f97e: 5f766c5f 6c797473 65735f65 6e695f74 _lv_style_set_in 1f98e: t. 0001f990 <__func__.3>: 1f990: 5f766c5f 6c797473 65735f65 6f635f74 _lv_style_set_co 1f9a0: 00726f6c lor. 0001f9a4 <__func__.2>: 1f9a4: 5f766c5f 6c797473 65735f65 706f5f74 _lv_style_set_op 1f9b4: a. 0001f9b6 <__func__.1>: 1f9b6: 5f766c5f 6c797473 65735f65 74705f74 _lv_style_set_pt 1f9c6: r. 0001f9c8 <__func__.0>: 1f9c8: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 1f9d8: 745f6464 736e6172 7974735f 2e00656c dd_trans_style.. 1f9e8: 68732f2e 64657261 6968742f 61706472 ./shared/thirdpa 1f9f8: 2f797472 6c67766c 6372732f 5f766c2f rty/lvgl/src/lv_ 1fa08: 77617264 5f766c2f 77617264 656c625f draw/lv_draw_ble 1fa18: 632e646e 6c696600 6c625f6c 65646e65 nd.c.fill_blende 1fa28: 75203a64 7075736e 74726f70 62206465 d: unsupported b 1fa38: 646e656c 646f6d20 lend mode. 0001fa42 <__func__.1>: 1fa42: 6c6c6966 656c625f 6465646e fill_blended. 0001fa4f <__func__.0>: 1fa4f: 5f70616d 6e656c62 00646564 732f2e2e map_blended.../s 1fa5f: 65726168 68742f64 70647269 79747261 hared/thirdparty 1fa6f: 67766c2f 72732f6c 766c2f63 6172645f /lvgl/src/lv_dra 1fa7f: 766c2f77 6172645f 6d695f77 00632e67 w/lv_draw_img.c. 1fa8f: 67616d49 72642065 203a7761 20637273 Image draw: src 1fa9f: 4e207369 004c4c55 640a6f4e 00617461 is NULL.No.data. 1faaf: 67616d49 72642065 65207761 726f7272 Image draw error 1fabf: 616d4900 64206567 20776172 276e6163 .Image draw can' 1facf: 65722074 74206461 6c206568 00656e69 t read the line. 1fadf: ... 0001fae2 : 1fae2: 01101810 01080402 ........... 0001faed <__func__.2>: 1faed: 645f766c 5f776172 00676d69 lv_draw_img. 0001faf9 <__func__.1>: 1faf9: 695f766c 645f676d 5f776172 65726f63 lv_img_draw_core 1fb09: 2f2e2e00 72616873 742f6465 64726968 .../shared/third 1fb19: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1fb29: 72645f76 6c2f7761 72645f76 6c5f7761 v_draw/lv_draw_l 1fb39: 6c656261 6c00632e 72645f76 6c5f7761 abel.c.lv_draw_l 1fb49: 65747465 67203a72 6870796c 63736420 etter: glyph dsc 1fb59: 6f6e202e 6f662074 00646e75 645f766c . not found.lv_d 1fb69: 5f776172 7474656c 203a7265 72616863 raw_letter: char 1fb79: 65746361 20732772 6d746962 6e207061 acter's bitmap n 1fb89: 6620746f 646e756f 5f766c00 77617264 ot found.lv_draw 1fb99: 74656c5f 3a726574 766e6920 64696c61 _letter: invalid 1fba9: 70706220 746f6e20 756f6620 6c00646e bpp not found.l 1fbb9: 72645f76 6c5f7761 65747465 69203a72 v_draw_letter: i 1fbc9: 6c61766e 62206469 nvalid bpp. 0001fbd4 <_lv_bpp8_opa_table>: 1fbd4: 03020100 07060504 0b0a0908 0f0e0d0c ................ 1fbe4: 13121110 17161514 1b1a1918 1f1e1d1c ................ 1fbf4: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./ 1fc04: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>? 1fc14: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO 1fc24: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_ 1fc34: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno 1fc44: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~. 1fc54: 83828180 87868584 8b8a8988 8f8e8d8c ................ 1fc64: 93929190 97969594 9b9a9998 9f9e9d9c ................ 1fc74: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................ 1fc84: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................ 1fc94: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................ 1fca4: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................ 1fcb4: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................ 1fcc4: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................ 0001fcd4 <_lv_bpp4_opa_table>: 1fcd4: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........ 0001fce4 <_lv_bpp2_opa_table>: 1fce4: ffaa5500 .U.. 0001fce8 <_lv_bpp1_opa_table>: 1fce8: .. 0001fcea <__func__.5>: 1fcea: 645f766c 5f776172 7474656c lv_draw_letter. 0001fcf9 <__func__.4>: 1fcf9: 77617264 74656c5f 5f726574 70627573 draw_letter_subp 1fd09: x. 0001fd0b <__func__.3>: 1fd0b: 77617264 74656c5f 5f726574 6d726f6e draw_letter_norm 1fd1b: al. 0001fd1e <_lv_bpp3_opa_table>: 1fd1e: 6d492400 ffdbb692 .$Im.... 0001fd26 : 1fd26: 81808080 83828281 87868584 8d8c8a89 ................ 1fd36: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................ 1fd46: 2f2e2eb5 72616873 742f6465 64726968 .../shared/third 1fd56: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1fd66: 72645f76 6c2f7761 72645f76 6d5f7761 v_draw/lv_draw_m 1fd76: 2e6b7361 766c0063 73616d5f 64615f6b ask.c.lv_mask_ad 1fd86: 6e203a64 6c70206f 20656361 61206f74 d: no place to a 1fd96: 74206464 6d206568 006b7361 dd the mask. 0001fda2 <__func__.1>: 1fda2: 645f766c 5f776172 6b73616d 6464615f lv_draw_mask_add 1fdb2: 2f2e2e00 72616873 742f6465 64726968 .../shared/third 1fdc2: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1fdd2: 72645f76 6c2f7761 72645f76 725f7761 v_draw/lv_draw_r 1fde2: 2e746365 72640063 695f7761 203a676d ect.c.draw_img: 1fdf2: 276e6163 65672074 6d692074 20656761 can't get image 1fe02: 6f666e69 5f766c00 5f676d69 69736564 info.lv_img_desi 1fe12: 203a6e67 67616d69 6f732065 65637275 gn: image source 1fe22: 70797420 73692065 6b6e7520 6e776f6e type is unknown 1fe32: ffff0000 .... 0001fe36 <__func__.0>: 1fe36: 77617264 7461705f 6e726574 22110000 draw_pattern..." 1fe46: 66554433 aa998877 eeddccbb 3DUfw........ 0001fe53 <__func__.0>: 1fe53: 695f766c 625f676d 735f6675 705f7465 lv_img_buf_set_p 1fe63: 74656c61 2e006574 68732f2e 64657261 alette.../shared 1fe73: 6968742f 61706472 2f797472 6c67766c /thirdparty/lvgl 1fe83: 6372732f 5f766c2f 77617264 5f766c2f /src/lv_draw/lv_ 1fe93: 5f676d69 68636163 00632e65 695f766c img_cache.c.lv_i 1fea3: 635f676d 65686361 65706f5f 74203a6e mg_cache_open: t 1feb3: 63206568 65686361 7a697320 73692065 he cache size is 1fec3: 69003020 6567616d 61726420 63203a77 0.image draw: c 1fed3: 65686361 73696d20 63202c73 65736f6c ache miss, close 1fee3: 646e6120 75657220 61206573 6e65206e and reuse an en 1fef3: 00797274 67616d69 72642065 203a7761 try.image draw: 1ff03: 68636163 696d2065 202c7373 68636163 cache miss, cach 1ff13: 74206465 6e61206f 706d6520 65207974 ed to an empty e 1ff23: 7972746e 616d4900 64206567 20776172 ntry.Image draw 1ff33: 6e6e6163 6f20746f 206e6570 20656874 cannot open the 1ff43: 67616d69 65722065 72756f73 image resource. 0001ff52 <__func__.1>: 1ff52: 5f766c5f 5f676d69 68636163 706f5f65 _lv_img_cache_op 1ff62: en. 0001ff65 <__func__.0>: 1ff65: 695f766c 635f676d 65686361 7465735f lv_img_cache_set 1ff75: 7a69735f 2e2e0065 6168732f 2f646572 _size.../shared/ 1ff85: 72696874 72617064 6c2f7974 2f6c6776 thirdparty/lvgl/ 1ff95: 2f637273 645f766c 2f776172 695f766c src/lv_draw/lv_i 1ffa5: 645f676d 646f6365 632e7265 616d4900 mg_decoder.c.Ima 1ffb5: 67206567 69207465 206f666e 20746567 ge get info get 1ffc5: 64616572 6c696620 65682065 72656461 read file header 1ffd5: 616d4900 67206567 69207465 206f666e .Image get info 1ffe5: 6e756f66 6e752064 776f6e6b 7273206e found unknown sr 1fff5: 79742063 42006570 746c6975 206e692d c type.Built-in 20005: 67616d69 65642065 65646f63 65732072 image decoder se 20015: 66206b65 656c6961 75420064 2d746c69 ek failed.Built- 20025: 69206e69 6567616d 63656420 7265646f in image decoder 20035: 61657220 61662064 64656c69 69754200 read failed.Bui 20045: 692d746c 6d69206e 20656761 6f636564 lt-in image deco 20055: 20726564 64616572 746f6e20 70757320 der read not sup 20065: 74726f70 68742073 6f632065 20726f6c ports the color 20075: 6d726f66 62007461 42006e69 746c6975 format.bin.Built 20085: 206e692d 67616d69 65642065 65646f63 -in image decode 20095: 61632072 2074276e 6e65706f 65687420 r can't open the 200a5: 6c696620 6d690065 65645f67 65646f63 file.img_decode 200b5: 75625f72 5f746c69 6f5f6e69 3a6e6570 r_built_in_open: 200c5: 74756f20 20666f20 6f6d656d 49007972 out of memory.I 200d5: 6567616d 63656420 7265646f 65706f20 mage decoder ope 200e5: 75203a6e 6f6e6b6e 63206e77 726f6c6f n: unknown color 200f5: 726f6620 0074616d 695f766c 645f676d format.lv_img_d 20105: 646f6365 695f7265 3a74696e 74756f20 ecoder_init: out 20115: 20666f20 6f6d656d of memory. 00020120 <__func__.3>: 20120: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 20130: 746c6975 5f6e695f 6f666e69 uilt_in_info. 0002013d <__func__.0>: 2013d: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 2014d: 746c6975 5f6e695f 656e696c 7572745f uilt_in_line_tru 2015d: 6f635f65 00726f6c 33221100 77665544 e_color..."3DUfw 2016d: bbaa9988 ffeeddcc ........ 00020175 <__func__.1>: 20175: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 20185: 746c6975 5f6e695f 64616572 6e696c5f uilt_in_read_lin 20195: e. 00020197 <__func__.2>: 20197: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 201a7: 746c6975 5f6e695f 6e65706f uilt_in_open. 000201b4 <__func__.4>: 201b4: 695f766c 645f676d 646f6365 635f7265 lv_img_decoder_c 201c4: 74616572 reate. 000201ca <__func__.5>: 201ca: 5f766c5f 5f676d69 6f636564 5f726564 _lv_img_decoder_ 201da: 74696e69 2f2e2e00 72616873 742f6465 init.../shared/t 201ea: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 201fa: 6c2f6372 6f665f76 6c2f746e 6f665f76 rc/lv_font/lv_fo 2020a: 665f746e 745f746d 632e7478 nt_fmt_txt.c. 00020217 : 20217: 06040200 0f0d0b09 ........ 0002021f <__func__.0>: 2021f: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm 2022f: 665f7061 745f746d 00007478 ap_fmt_txt... 0002023c : 2023c: 0002024c 00020e94 00020df9 0000313d L...........=1.. 0002024c : 2024c: 00000100 00000000 00000100 00000003 ................ 2025c: 00000200 00000000 00000000 00000000 ................ 2026c: 00010000 00000000 00000000 00000000 ................ 2027c: 000c0100 0000fa07 f1f20000 04060c02 ................ 2028c: 010d02f6 0008030b 00000000 00000000 ................ 2029c: 020f0000 000000fe 00000000 00000000 ................ 202ac: f8000500 00000000 0504fb00 00fd0000 ................ 202bc: fd0003fe fbfffd00 00000000 fd0000fd ................ 202cc: fd0000fc 0000fb00 00000000 fd000000 ................ 202dc: 00fc00fd 00e100f9 0500fb00 fb000008 ................ 202ec: 05080303 000005fc 000000f1 00000000 ................ 202fc: 00000000 000000f7 00000000 00000000 ................ 2030c: f9000000 f600f3fd 000000fe 000a0100 ................ 2031c: 01fffef8 0000fc00 0000edfe 00000000 ................ 2032c: 00000000 0afeec00 00000000 00000000 ................ 2033c: 00000000 000000f6 00000000 08000000 ................ 2034c: 00000300 000000fb 00000000 00000000 ................ 2035c: 00000000 020a0000 00000001 00000000 ................ ... 2038c: 000000f7 00000000 00000000 00000000 ................ 2039c: 00000000 02000000 fd080305 fd050000 ................ 203ac: 0702ddf8 00fd0105 00080009 00e80008 ................ 203bc: 080008fd 000305fd 00fd0100 0014fc00 ................ 203cc: 00080014 0804030b f7000000 00000000 ................ 203dc: 0200fe01 02fbfdfb 0000fd00 0000f600 ................ ... 203f4: 0000ef00 00000000 00000000 00000000 ................ 20404: 00f20100 000000f0 1900fe00 0303fdfd ................ 20414: 03fd00fe 00f20000 00000000 00000000 ................ 20424: 00e70000 00000003 00000000 00000000 ................ 20434: 0f00f000 00f70000 e7ef0008 0008fbef ................ 20444: 0300ef00 00fc00fa 00000000 00000000 ................ 20454: 07000000 0000e108 00000000 00000000 ................ 20464: 000c0000 00000002 02020000 ff00fbfd ................ 20474: 0000fdff 000000fe 00fe00fb fa00fbfa ................ 20484: 00fbf8f8 00fb00fb fe000000 00030000 ................ 20494: 0100fd02 03000000 000000fe ff0303fe ................ 204a4: fb000000 0000ff00 01000000 00fe0300 ................ 204b4: 00fc00fd 0800fe00 00fd0000 00000000 ................ 204c4: fefe01ff 00fd0000 000000fd 00000000 ................ 204d4: ffff0000 00fdfd00 00000000 fe000001 ................ 204e4: fdfdfd00 00000000 00000000 0000fe00 ................ 204f4: fdfe0000 f800fc00 0005f8fe 0503fb00 ................ 20504: fffa0007 f4ff00fd f202fe03 01000003 ................ 20514: fef200f3 f300feea 00070500 00000003 ................ 20524: fb000100 00f800fd 00fd0000 00fd0000 ................ 20534: 00000000 ff00ffff 000000fd 00000000 ................ 20544: fe00fdfd 0000fefd 000000fd 00000000 ................ 20554: 00000000 fd00fefe fb00fe00 fd000003 ................ 20564: 00030301 00000000 0000fe00 02000000 ................ 20574: 00fd0000 00fdfefd 00000000 00020000 ................ 20584: 000000fe 00fcfd00 fe0800fb 0000f801 ................ 20594: f5f3f307 fe0003fb fb00fbef fb04fb00 ................ 205a4: 00f900f0 02ff0100 000300fe f300f6f8 ................ 205b4: f8fafbfa fbfff9fd 010002f9 0000fd00 ................ 205c4: 03000200 00000000 00000000 fd000000 ................ 205d4: ff00ff00 fafc00fd f800fffa 00000000 ................ 205e4: 00fe0000 01000000 000000fe 00000003 ................ 205f4: 00000000 00000c00 00000000 00000002 ................ 20604: 000000fd 00000000 00000000 000300fb ................ ... 20620: 000000fe 000000fb 00f8f300 f3fc0000 ................ 20630: 03fd0000 0000f900 00000000 00000000 ................ 20640: fb0000fc 00000000 00000000 00000000 ................ 20650: 00fb0003 03000000 fbfb0200 fdfdfd00 ................ 20660: 00000000 00f80000 fdfc00fd f8fafa00 ................ 20670: 00fb00fe 000000f8 00001400 fd000001 ................ 20680: f5000300 00000000 08fbe800 00f5fe08 ................ 20690: f300fc03 ee03fdff 040003fd f8f7fcf7 ................ 206a0: f10000f5 00000f00 000000ff f9fdffff ................ 206b0: 00e8fff8 00000000 00000000 00000001 ................ ... 206cc: ff00fd00 0000fcfd 00fd00fb 00000000 ................ ... 206e4: 00ff0000 050000fb fa0003ff f9fffe03 ................ 206f4: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................ 20704: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................ 20714: 00000003 00000000 0003fb00 fdfe00fc ................ 20724: fefefef8 fffdfeff 00000000 fefefd00 ................ 20734: 00000000 fe00fe03 fe000000 fdfefefd ................ 20744: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................ 20754: 03fcf400 fe0002fc fc00f8fe fc000001 ................ 20764: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................ 20774: 0008fcfb 00000000 00000000 00000003 ................ ... 20798: 000000fc 00000000 00000000 00000000 ................ ... 207c4: 000000fe 00000000 00000000 00000000 ................ ... 207e0: fdfe0000 00000000 00000000 00000000 ................ 207f0: fd0000fc fdfd0000 00000000 000000fd ................ 20800: 0000ff00 fe000000 00000000 00fb00fc ................ 20810: 00f80000 0105fa02 0000f4fe f600fdfa ................ 20820: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................ 20830: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................ 20840: feee0000 f7fa0608 00f80100 05fdfef3 ................ 20850: 0001fde8 f3fdef00 0000edfd 010f00ee ................ 20860: 0000fe00 feff0000 ef00fef6 00000000 ................ 20870: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................ 20880: f4000000 fef8f8fd fcfdfafc f8fefb00 ................ 20890: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................ 208a0: 03000000 0afb0200 fdfdfd00 00000000 ................ 208b0: 00f80000 fdfc00fd f8fafa00 02fb00fe ................ 208c0: 0000000a 00001400 fd000001 00000300 ................ 208d0: 00000000 00ff0000 00000000 0000fbfe ................ 208e0: ff000000 fd000000 fb0000fd fb0000fd ................ 208f0: 00ff0400 00000000 00000100 05040000 ................ 20900: f800fe02 f80800fc 0afbfbf8 feea0305 ................ 20910: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................ 20920: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................ 20930: 00fc0003 080200f9 faf6f7fa ed010008 ................ 20940: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................ 20950: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................ 20960: fd000007 00fefb00 0400fbfd 000003f8 ................ 20970: fafd00f2 faf8fefc f800faf8 f8fbfafd ................ 20980: 010000fd f800fc0c fbfd00fd f6f9f9fa ................ 20990: 0005fbfd fdf300fc f7f80502 fd08f8fb ................ 209a0: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................ 209b0: 080000ff 00effe07 f606faf1 f5f7fbef ................ 209c0: 0005f8f3 fd000000 fd030000 05fb0205 ................ 209d0: fff80000 0100ff00 0000fe01 00000000 ................ 209e0: 000000fd 01080200 0000fd00 fefe0000 ................ 209f0: 000000fd 00000201 00020000 000a00fe ................ 20a00: fd010105 00000500 00000200 00000000 ................ 20a10: 00000000 07000800 00000000 00000000 ................ 20a20: 00000000 00f10000 080004fd 03190000 ................ 20a30: 0303fbfb 00f301fe 00f10c00 00000000 ................ 20a40: 00000000 0aef0000 00000024 00000000 ........$....... 20a50: 00000000 0000f100 00000000 00000000 ................ ... 20a70: fb0000fc 000000fe 00000000 00000000 ................ ... 20a88: 00f900fe 00000100 fefb2103 03f90708 .........!...... 20a98: 03030000 000000fd 00000000 00000000 ................ 20aa8: 000007df 00000000 00000000 00000000 ................ 20ab8: f9000000 f9000000 00000000 0000fffa ................ 20ac8: fd00fa00 0000f400 00000000 00000000 ................ 20ad8: 0000ef00 00010000 00000000 0000fd00 ................ 20ae8: 00fc00fb 000000f9 00fd03fc fafdf900 ................ 20af8: 00f90000 00f400fd eb0000fd f7fdf6fb ................ 20b08: 00ef0000 0000fff9 00000000 fbfc0000 ................ 20b18: 0000fcfe 00fa0000 05fd03fa fefafe00 ................ 20b28: fd00fbfc f902feff 000000ff 00fcfee9 ................ 20b38: f4fe00fa fe0000fe 000000fe fe000200 ................ 20b48: 0004fefc 00000000 00000000 00000000 ................ ... 20b74: 00030000 00000000 fe00fa00 fb000000 ................ 20b84: 00000003 00fbfdf9 fd00f900 0000f400 ................ 20b94: 00e70000 00f3f7fb fe00ef00 000000fc ................ 20ba4: 00000000 fffcfd00 000001fc 0800fd04 ................ 20bb4: f8fdfd0d 06040d03 030b03f9 00070607 ................ ... 20bcc: 0c100000 fe00fdfb 00140b14 00030000 ................ 20bdc: 00000900 000000fc 00000000 00fe0000 ................ 20bec: 00000000 04000000 00000000 f6fefdea ................ 20bfc: ef0000f3 00000000 00000000 00000000 ................ 20c0c: 00000000 0000fc00 00000000 fe000000 ................ ... 20c24: 00000004 fefdea00 0000f3f6 000000f6 ................ ... 20c44: 000000fe fd0003fa f8030502 03feff00 ................ 20c54: 00000200 00fa0000 00fbfefe 1000f6fe ................ 20c64: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................ ... 20c7c: 0000fe00 00000000 00040000 ea000000 ................ 20c8c: f3f6fefd 00ef0000 00000000 00000d00 ................ ... 20ca4: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................ 20cb4: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................ 20cc4: fefefdfd fe00fefd 040004ff 000800fe ................ ... 20cdc: fe000000 0000fdfd 00ff00f9 000000fc ................ ... 20cf4: 000000f1 00000000 00000000 fd00fdfd ................ 20d04: 00000000 fc0000fe fc0003fd f900fefb ................ 20d14: fdfefafe 0000fc00 00000000 00000000 ................ 20d24: 0800ef00 00fb0000 fd000000 0000fd00 ................ 20d34: fe0000ff 0000fa00 f8f8fd0b ff030302 ................ 20d44: 020402f9 fe080208 f60000f9 f9f80000 ................ 20d54: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................ 20d64: 000009fd 00fb00fe 00fa0300 0002fd03 ................ 20d74: fe00f800 03fd00ff 000000fe 00fafdf6 ................ 20d84: f40000f8 00fd0900 000200fb f8fd00fd ................ 20d94: 0003fd00 fe000000 fd030000 fd000001 ................ 20da4: 00fd00fe 00000000 00000000 00000000 ................ 20db4: 00000000 000600f0 0000fe00 00010000 ................ 20dc4: 0000fdfd 06000500 00000000 01f1f000 ................ 20dd4: f604080b 09000b02 00000500 00000000 ................ 20de4: 00000000 00000e00 00000000 00000000 ................ 20df4: 00000000 ..... 00020df9 : 20df9: 02010000 05040300 08070602 0a090a09 ................ 20e09: 0e0d0c0b 0c11100f 15141312 00000015 ................ 20e19: 19181716 19191917 1a191917 19191919 ................ 20e29: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#. 20e39: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&** 20e49: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#. 20e59: 00000931 00000000 00000000 00000000 1............... ... 00020e94 : 20e94: 02010000 05040300 08070602 0a090a09 ................ 20ea4: 0d000c0b 11100f0e 140c1312 00000014 ................ 20eb4: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. .. 20ec4: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+. 20ed4: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450-- 20ee4: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)... 20ef4: 0000093d 00000000 00000000 00000000 =............... ... 00020f30 : 20f30: 00000020 0001005f 00000000 00000000 ..._........... 20f40: 00000000 000000b0 0060f7f3 00020f58 ..........`.X... 20f50: 00000000 0002003b ....;... 00020f58 : 20f58: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a. 20f68: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x. 20f78: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................ 20f88: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................ 20f98: efc9efc8 efe3efcb f014efe5 f017f015 ................ 20fa8: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;... 20fb8: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T. 20fc8: f712f4aa 0000f7f2 ........ 00020fd0 : ... 20fd8: 04500000 00000000 04500000 00010c03 ..P.......P..... 20fe8: 06400012 07010505 0b40001f 00000c0b ..@.......@..... 20ff8: 09f00061 fe00100a 0d8000b1 00000c0d a............... 21008: 0b0000ff ff000d0b 03600147 07010502 ........G.`..... 21018: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p..... 21028: 06600188 05000707 095001a1 02010808 ..`.......P..... 21038: 03a001c1 fe000503 062001c9 03000306 .......... ..... 21048: 03a001d2 00000303 05a001d7 feff1008 ................ 21058: 0ab00217 00000c0a 05f00253 00000c05 ........S....... 21068: 09300271 00000c09 092002a7 00000c09 q.0....... ..... 21078: 0ab002dd 00000c0b 0930031f 00000c09 ..........0..... 21088: 09e00355 00000c0a 09900391 00000c09 U............... 21098: 0a5003c7 00000c0a 09e00403 00000c0a ..P............. 210a8: 03a0043f 00000903 03a0044d fd000c03 ?.......M....... 210b8: 0950045f 02010808 0950047f 03010608 _.P.......P..... 210c8: 09500497 02010808 093004b7 00000c09 ..P.......0..... 210d8: 109004ed fd000f10 0bb00565 00ff0c0d ........e....... 210e8: 0c2005b3 00010c0b 0b9005f5 00000c0b .. ............. 210f8: 0d300637 00010c0c 0ac0067f 00010c09 7.0............. 21108: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`..... 21118: 0d000733 00010c0b 04f00775 00010c03 3.......u....... 21128: 08300787 00ff0c08 0b8007b7 00010c0b ..0............. 21138: 098007f9 00010c09 0f40082f 00010c0d ......../.@..... 21148: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p..... 21158: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p..... 21168: 0ba009b2 00010c0a 09f009ee 00000c0a ................ 21178: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f....... 21188: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`............. 21198: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`..... 211a8: 0a800bec 00000c0b 05500c2e fd010f05 ..........P..... 211b8: 05a00c54 feff1008 05500c94 fd000f04 T.........P..... 211c8: 09500cb2 02010708 08000cce fe000208 ..P............. 211d8: 09a00cd6 0a010205 09900cdb 00000909 ................ 211e8: 0af00d04 00010c0a 09200d40 00000909 ........@. ..... 211f8: 0af00d69 00000c0a 09d00da5 0000090a i............... 21208: 05a00dd2 00000c07 0b100dfc fd000c0a ................ 21218: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p..... 21228: 04900e80 fdfe0f06 09e00ead 00010c09 ................ 21238: 04700ee3 00010c02 10f00eef 0001090f ..p............. 21248: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0..... 21258: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................ 21268: 06901001 00010906 0800101c 00000908 ................ 21278: 06a01040 00000b07 0ad01067 00010909 @.......g....... 21288: 08f01090 00ff090a 0e6010bd 0000090f ..........`..... 21298: 08d01101 00000909 08f0112a fdff0c0a ........*....... 212a8: 08501166 00000908 05a0118a fd000f06 f.P............. 212b8: 04d011b7 fd010f03 05a011ce fd000f05 ................ 212c8: 095011f4 04000509 06b0120b 06000606 ..P............. 212d8: 0500121d 03010403 10001223 fe001110 ........#....... 212e8: 100012ab 00000c10 1000130b ff000e10 ................ 212f8: 1000137b 00000c10 0b0013db 00000c0b {............... 21308: 1000141d fe001010 1000149d fe001010 ................ 21318: 1200151d ff000e12 1000159b fe001010 ................ 21328: 1200161b 00000c12 10001687 fe001010 ................ 21338: 08001707 ff000e08 0c00173f ff000e0c ........?....... 21348: 12001793 fe001012 10001823 00000c10 ........#....... 21358: 0e001883 fe02100a 0e0018d3 fd00120e ................ 21368: 0e001951 ff000f0e 0e0019ba ff000e0e Q............... 21378: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l....... 21388: 0a001adc ff000e0a 0a001b22 ff000e0a ........"....... 21398: 0e001b68 ff000e0e 0e001bca 0400040e h............... 213a8: 12001be6 00000c12 14001c52 fe001014 ........R....... 213b8: 12001cf2 feff1014 10001d92 fe001010 ................ 213c8: 0e001e12 01000a0e 0e001e58 01000a0e ........X....... 213d8: 14001e9e ff000e14 10001f2a 00000c10 ........*....... 213e8: 10001f8a fe001010 1000200a feff1111 ......... ...... 213f8: 0e00209b ff000e0f 0e002104 fe00100e . .......!...... 21408: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!...... 21418: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."...... 21428: 12002316 00000c12 10002382 fdff1212 .#.......#...... 21438: 0c002424 fe00100c 14002484 ff000f14 $$.......$...... 21448: 1400251a 01000a14 1400257e 01000a14 .%......~%...... 21458: 140025e2 01000a14 14002646 01000a14 .%......F&...... 21468: 140026aa 01000a14 1400270e ff000e15 .&.......'...... 21478: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(...... 21488: 10002871 fdff1111 14002902 00000c14 q(.......)...... 21498: 0c00297a fe00100c 102029da 01000b11 z).......) ..... 000214a8 : 214a8: aff00bbf 089ee00a c0078cd0 bf100000 ................ 214b8: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r... 214c8: e003c005 007a0000 0900005c 01a00780 ......z.\....... 214d8: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0..... 214e8: 0e100f00 f0020030 9f00f200 ffffffff ....0........... 214f8: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p.. 21508: 79000000 00000000 00000079 20e9ff5c ...y....y...\.. 21518: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y... 21528: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@.. 21538: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../.. 21548: ae03a0af 0000d7ff 00007900 00790000 .........y....y. 21558: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L. 21568: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P 21578: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<... 21588: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... < 21598: 0b003d00 09e20070 00d00680 00a0dd04 .=..p........... 215a8: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}.. 215b8: a01cc00c ae3f0000 010000c1 0000c0df ......?......... 215c8: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@... 215d8: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0 215e8: 000000a5 f5000000 72e4e4f5 f205da00 ...........r.... 215f8: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._ 21608: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0.... 21618: e900f601 ad00bc00 ad00ae00 e900bc00 ................ 21628: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+ 21638: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........ 21648: 10050000 500f0000 500f0000 511f0100 .......P...P...Q 21658: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P 21668: fd520900 0fc5a00b 10110100 04f3ff1f ..R............. 21678: 12034044 00901efc 00f10500 00b00a00 D@.............. 21688: 00600f00 00105f00 0000ab00 0000f600 ..`.._.......... 21698: 0000f105 0000b00a 0000600f 0000104f .........`..O... 216a8: 000000ac 040000f6 0a0000f1 0e0000c0 ................ 216b8: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............ 216c8: 00f50770 c00df20a 1ff80100 dc000080 p............... 216d8: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`......... 216e8: f80100c0 0a00f507 a8cf00f2 080070cf .............p.. 216f8: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0 21708: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0. 21718: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(..... 21728: 00f20700 00af0000 804f0000 c03f0000 ..........O...?. 21738: c13e0000 c12e0000 d12e0000 f82e0000 ..>............. 21748: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww.. 21758: e10c0000 f3090000 f6050000 df000000 ................ 21768: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d 21778: f3080040 fb8cc9bf d7ff7c00 01000000 @........|...... 21788: 000000eb 0010be00 506f0000 2f000000 ..........oP.../ 21798: 00000090 0000d00c 01f30800 f80300d5 ................ 217a8: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U 217b8: 52f95655 2f000000 00000060 0500f602 UV.R.../`....... 217c8: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........ 217d8: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. . 217e8: 00f80400 920f0000 f6050050 fd8ad98f ........P....... 217f8: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p. 21808: 000000f8 0000d00c 00801f00 682f0000 ............../h 21818: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../....... 21828: f109f602 01f30600 b09f86de d8ef1900 ................ 21838: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU. 21848: 00e00b00 00f80200 109f0000 b00f0000 ................ 21858: f4060000 dd000000 3f000000 0a000070 ...........?p... 21868: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v. 21878: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^. 21888: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O 21898: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l 218a8: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P. 218b8: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0....... 218c8: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1....... 218d8: 9f000000 8da70930 df0700f7 1e0040eb ....0........@.. 218e8: 1003fc92 00000000 1efc1203 fc921e90 ................ 218f8: 00001003 01000000 a8d01fe9 00a0300e .............0.. 21908: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}.......... 21918: 17000081 0000b4df 00d2af04 ef820100 ................ 21928: 45f3ffff 00515555 01000000 ef101111 ...EUUQ......... 21938: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........ 21948: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... . 21958: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w.. 21968: cf000027 09000000 010000f0 010000ea '............... 21978: 000010dd 000010ce 0000603f 00003001 ........?`...0.. 21988: 00000100 00f50600 405f0000 17000000 .........._@.... 21998: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@ 219a8: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I.... 219b8: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@.... 219c8: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\... 219d8: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@.... 219e8: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@ 219f8: 00000000 fb060000 00752353 17000000 ........S#u..... 21a08: 00a3fdce 02000000 000000fd f49f0000 ................ 21a18: 00000000 00b09e0f f2060000 0000207f ............. .. 21a28: f801dc00 4f000000 00e00b60 00f00b00 .......O`....... 21a38: 0100604f ed1111fa ff8f0000 00f3ffff O`.............. 21a48: 4444c40e f406a04f af000000 0000cd10 ..DDO........... 21a58: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@ 21a68: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:... 21a78: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._ 21a88: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj.. 21a98: d7ffffff 8d020000 0400b4fe f99db8ff ................ 21aa8: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........ 21ab8: 0000f602 602f0000 00000000 000000fa ....../`........ 21ac8: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._.. 21ad8: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w 21ae8: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._ 21af8: 06000040 00405ff4 5ff60300 03000040 @...._@...._@... 21b08: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@. 21b18: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._ 21b28: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@...... 21b38: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD.. 21b48: 5f000000 05000040 000000f4 7777975f ..._@......._.ww 21b58: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@ 21b68: f4050000 5f000000 05000040 102222f5 ......._@...."". 21b78: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@..... 21b88: 405f0000 f4050000 00000000 b5fe8d01 .._@............ 21b98: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`... 21ba8: 0f000000 000000a0 00602f00 2f000000 ........./`..../ 21bb8: 09000060 00a00ff0 0bf00900 090000f2 `............... 21bc8: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O....... 21bd8: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@ 21be8: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U. 21bf8: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._ 21c08: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU 21c18: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E 21c28: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww.. 21c38: 00fa0000 00fa0000 00fa0000 00fa0000 ................ 21c48: 00fa0000 00fa0000 07f90000 0df60320 ............ ... 21c58: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@....... 21c68: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@. 21c78: f4050030 0000909f 40efcf5f 91ff0500 0......._..@.... 21c88: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@ 21c98: 05f50900 0c0000f4 00405ff2 00f40500 ........._@..... 21ca8: 405f0000 f4050000 5f000000 05000040 .._@......._@... 21cb8: 000000f4 0000405f 0000f405 00405f00 ...._@......._@. 21cc8: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._ 21cd8: 00000040 00fc951e f9080000 0000f55f @..........._... 21ce8: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_. 21cf8: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........ 21d08: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._... 21d18: 7100305f f3950f00 00000000 00505ff9 _0.q........._P. 21d28: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU.. 21d38: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@ 21d48: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U. 21d58: f5df0000 0200405f 00f455ff 00f50600 ...._@...U...... 21d68: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. . 21d78: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r 21d88: 000000f6 602ff900 0f000000 0000fa90 ....../`........ 21d98: 0bf70300 000000f2 d22f20af 908f0000 ......... /..... 21da8: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._.. 21db8: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@.. 21dc8: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n. 21dd8: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._ 21de8: 00000040 0000405f 8d010000 0000b5fe @..._@.......... 21df8: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ...... 21e08: af000000 00a00f20 703f0000 0000602f .... .....?p/`.. 21e18: 2f900f00 00000060 901f900f 2f000000 .../`........../ 21e28: 00f10b70 20af0000 0010fc03 0000f907 p...... ........ 21e38: df78fa6f 030000b0 00c5ffae 00000000 o.x............. 21e48: b015d43e 02000000 0080ffbf 01000000 >............... 21e58: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@.. 21e68: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@... 21e78: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._ 21e88: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\ 21e98: 0720d9ef 90af87fc 0100c00e 00800f10 .. ............. 21ea8: f50d0000 03000000 0050eaef feae0500 ..........P..... 21eb8: 00000040 0000f14e 08f30500 f2080000 @...N........... 21ec8: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g 21ed8: 7277fb78 00f70100 f7010000 01000000 x.wr............ 21ee8: 000000f7 0000f701 00f70100 f7010000 ................ 21ef8: 01000000 000000f7 0000f701 00f70100 ................ 21f08: f7010000 306f0000 168f0000 080000f3 ......o0........ 21f18: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0.. 21f28: 00f3168f 6ff10800 8f000030 0000f405 .......o0....... 21f38: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._.... 21f48: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o 21f58: 0c000050 00fb00c0 00f60300 0000f209 P............... 21f68: 2f0000ae 901f0080 00ce0000 0000f207 .../............ 21f78: db00f605 0e000000 00504fc0 3b8f0000 .........OP....; 21f88: 000000e0 00f8fb02 0b000000 000010ff ................ 21f98: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........ 21fa8: ff020090 f0070040 0700e00b 0c0090fe ....@........... 21fb8: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T. 21fc8: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ . 21fd8: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&.... 21fe8: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{........... 21ff8: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ... 22008: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0... 22018: 0300802f 00d00cfa f3fb0700 0c000000 /............... 22028: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o 22038: 0020af60 ed01b02f 00f10c00 f607f804 `. ./........... 22048: f3090000 0000e00c f703f207 901f0000 ................ 22058: 0010af00 1f00109e 00f602a0 0bf30800 ................ 22068: 000000d0 00404fec fb5f0000 00000000 .....O@..._..... 22078: 0000f20c f0090000 00000000 0000f009 ................ 22088: f0090000 00000000 0000f009 ffffff3f ............?... 22098: 777701fd 0090bf77 c01e0000 0c000000 ..www........... 220a8: 000000f2 0000f508 00f90400 ec010000 ................ 220b8: 00000000 000020cf 00508f00 904f0000 ..... ....P...O. 220c8: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_. 220d8: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0. 220e8: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0.. 220f8: 00ff5f50 0000007e 0000401f 0000900c P_..~....@...... 22108: 0000e007 0000f402 0000c900 00007e00 .............~.. 22118: 00402f00 00900c00 00e00700 00f30200 ./@............. 22128: 00d90000 007e0000 302f0000 900d0000 ......~.../0.... 22138: e0070000 ea35fabf ea00ea00 ea00ea00 ......5......... 22148: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5. 22158: 2f00fabf 9d000080 f30000e0 d00600d5 .../............ 22168: 600c007b 103f201f 009a800b ffffe004 {..`. ?......... 22178: 1111ffff f6071111 01e70300 0080fd9e ................ 22188: 90af87ce af000002 06000000 ffbe02f2 ................ 22198: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B... 221a8: 206ffbbf 0000008f 00008f00 008f0000 ..o ............ 221b8: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0... 221c8: 208fc01e 8ff10700 f3050000 0700208f ... ......... .. 221d8: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+... 221e8: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........ 221f8: 304f0000 f6030000 0d000000 100600d0 ..O0............ 22208: f47cd74f c4ef3a00 00000000 0000f701 O.|..:.......... 22218: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;...... 22228: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0.. 22238: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e.. 22248: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. . 22258: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r 22268: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:. 22278: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p....... 22288: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0... 22298: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;.. 222a8: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`... 222b8: 0000404f 00603ff9 d00ef901 04f90900 O@...?`......... 222c8: f8cf87fd b3ff3b00 000000f7 e909f405 .....;.......... 222d8: 01b0af77 00d8ff7c 0000008f 0000f008 w...|........... 222e8: 00008f00 bff20800 fb8f10ea f808fd89 ................ 222f8: 8ff40600 781f0010 f80000f0 0f00008f .......x........ 22308: 0000f088 00008ff8 00f0880f 1a9ef800 ................ 22318: f00800f2 8ff0088f 088ff008 f0088ff0 ................ 22328: 00e20700 0000f309 f1070000 00f10700 ................ 22338: 0700f107 f10700f1 00f10700 0700f107 ................ 22348: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ... 22358: 00f00800 008f0000 f0080000 8fd11d00 ................ 22368: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p 22378: bfe28f00 01f20830 008f10ee f008fb03 ....0........... 22388: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................ 22398: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p 223a8: 00c09f00 00f1585f 0100f605 00008ff7 ...._X.......... 223b8: 0f00404f 0400f088 f80000f4 4f00008f O@.............O 223c8: 880f0040 f40400f0 8ff80000 404f0000 @.............O@ 223d8: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o 223e8: 0100f148 00008ff7 00f0880f 008ff800 H............... 223f8: f0880f00 8ff80000 800f0000 c4ef3b00 .............;.. 22408: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`... 22418: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`......... 22428: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;..... 22438: 8f30df57 c00d0090 0700108f 00008ff1 W.0............. 22448: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x. 22458: fe2b8f30 008f00b3 8f000000 00000000 0.+............. 22468: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;......... 22478: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?` 22488: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;. 22498: 0000f7a3 00f70100 f7010000 01000000 ................ 224a8: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ .... 224b8: 8f00008f 008f0000 00008f00 91fdae02 ................ 224c8: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......` 224d8: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@ 224e8: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0.. 224f8: 305f0000 00f30500 00305f00 0000f404 .._0....._0..... 22508: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z.... 22518: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y.. 22528: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P 22538: 0000c00d 00f206cb f900f502 00e00900 ................ 22548: 800f009e 6f602f00 c00c0010 050000cb ...../`o........ 22558: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p.... 22568: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`.. 22578: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P. 22588: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O. 22598: ff040000 a0ef0040 e00e0000 00f40800 ....@........... 225a8: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P...... 225b8: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................ 225c8: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@...... 225d8: f40200f3 0900ea00 108f00d0 1f00701f .............p.. 225e8: 00107f70 00d9e00a f2f90300 cf000000 p............... 225f8: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y.. 22608: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[... 22618: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@... 22628: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a 22638: 0000cc00 db0000db 00db0000 1f00ea02 ................ 22648: fa0500f4 00db0000 0000db00 cc0000db ................ 22658: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._.. 22668: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._... 22678: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p... 22688: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p.... 22698: 0090be40 00000000 00e43d00 f5860cb5 @........=...... 226a8: 03f0201e 000290ef 02001000 400d90ce . .............@ 226b8: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@....... 226c8: 00f7e7ef 00000000 00000000 00000000 ................ 226d8: 00dc4900 16000000 00ffffbf ff8d0300 .I.............. 226e8: 00ffffff ffffcf00 00ffffff ffffff00 ................ 226f8: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q....... 22708: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 22718: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 22728: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+.... 22738: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+....... 22748: 2b000000 0000b2ff d0000000 ffffff0f ...+............ 22758: ff0df0ff 8888c8ff f0ffff8c 0000800f ................ 22768: f00ff008 0000800f ff0ff008 000080ff ................ 22778: f0ffff08 ccccec0f f00ff0ce ccccec0f ................ 22788: ff0ff0ce 000080ff f0ffff08 0000800f ................ 22798: f00ff008 0000800f ff0ff008 8888c8ff ................ 227a8: d0ffff8c ffffff0f df0df0ff ffff73ff .............s.. 227b8: fffdffff ffffa5ff ffffffff ffffa5ff ................ 227c8: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 227d8: df000000 ffff73ff fffdffff ffffa5ff .....s.......... 227e8: ffffffff ffffa5ff dfffffff ffff73ff .............s.. 227f8: 00fdffff 00000000 df000000 ffff73ff .............s.. 22808: fffdffff ffffa5ff ffffffff ffffa5ff ................ 22818: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 22828: 00b10a00 00000000 00fcbf00 00000000 ................ 22838: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................ 22848: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................ 22858: 0c0000fc ffbffbff 000000c0 fbffffcf ................ 22868: 00000000 b0ffff0c 00000000 00fbbf00 ................ 22878: 00000000 00b00b00 03000000 03000000 ................ 22888: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,. 22898: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................ 228a8: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................ 228b8: f5dffcff d1ff0500 040000a4 000000a1 ................ 228c8: 0000e04f 10020000 1003f16f d05f0000 O.......o....._. 228d8: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@ 228e8: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o....... 228f8: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../.... 22908: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o.. 22918: af000000 10fe0ff0 ff050000 d3ff06a0 ................ 22928: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ........... 22938: 30fdffff 17000000 0050cabd 00000000 ...0......P..... 22948: 0000b88b 00000000 0000ffff 06300000 ..............0. 22958: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@... 22968: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O.......... 22978: ffff0220 f9ff0080 ff9f0000 f9ff0000 ............... 22988: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O.. 22998: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................ 229a8: dffdffff 06300040 0360ffff 00000000 ....@.0...`..... 229b8: 0000ffff 00000000 0000b88b 00000000 ................ 229c8: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O... 229d8: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o.. 229e8: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S......... 229f8: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@............. 22a08: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A.. 22a18: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................ 22a28: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................ 22a38: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........ 22a48: 00000000 ffff0000 00000000 ffff0000 ................ 22a58: 00000000 ffff0000 00000000 ffff0000 ................ 22a68: 00000000 ffff0000 00000000 ffffff4f ............O... 22a78: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................ 22a88: 000000fb ffff0b00 000000b0 fbbf0000 ................ 22a98: df000000 b11bfcff fffdffcf 2cc2ffff ..............., 22aa8: ffffffff ffffffff ffffffff ffffffff ................ 22ab8: dfffe0f0 ffffffff 00fdffff ffffef04 ................ 22ac8: 0040feff ffff1e00 e1ffffff b0af0000 ..@............. 22ad8: 0b000000 ff0500fa 00000010 1e50ff01 ..............P. 22ae8: 000000f6 e16f0000 0000b0af 0b000000 ......o......... 22af8: fffffffa ff080080 ffffffff 1f00f1ff ................ 22b08: ffffffff ffffffff ffffffff ffffffff ................ 22b18: ffffffff ffffffff ffffffff ff8fffff ................ 22b28: ffffffff 00f8ffff dabd0600 00ff0250 ............P... 22b38: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{.... 22b48: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._ 22b58: 0f0000f2 8fffffff 0f0000b0 00ffffff ................ ... 22b74: ff000000 00f0ffff fff80b00 00f0ffff ................ 22b84: fff42f00 002022fd ffe0cf00 0000c2ff ./..." ......... 22b94: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$... 22ba4: ff0050fe dbac0520 00000060 00000000 .P.. ...`....... 22bb4: 008d0000 00ff0800 dfff8f00 ffffffff ................ 22bc4: ffffffff ffffffff ffffffff dfffffff ................ 22bd4: 00ffffff 00ff8f00 00ff0800 008d0000 ................ ... 22bf0: 0000008d 00ff0800 8f000000 cf0000ff ................ 22c00: 01ffffff ffffff50 fff706ff 00ffffff ....P........... 22c10: ffffffbe ffae00ff 05ffffff ffffdff8 ................ 22c20: 006002ff 00ff9f00 09000000 000000ff ..`............. 22c30: 009e0000 00000000 00000000 00000000 ................ 22c40: 00100600 00000000 d21f0000 00000000 ................ 22c50: 0300008d 000010ee 0a00ff08 00b02fb1 ............./.. 22c60: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_` 22c70: fffffff9 0df706ff ffffbdc0 ae00ffff ................ 22c80: ff9ff009 00ffffff 8ff009ae ffffffff ................ 22c90: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`... 22ca0: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../. 22cb0: 8d000000 ee020000 00000010 1f000000 ................ 22cc0: 000000d2 00000000 8f001006 ffffffff ................ 22cd0: fff8ffff fffffffc ffffffff ffff2f20 ............ /.. 22ce0: fcffffff ffff0c00 ffffffee feff2f20 ............ /.. 22cf0: ffffef22 e2fffffc ffff2e00 20fe4efe "............N. 22d00: ffff0200 00c202e2 ffff0000 00000020 ............ ... 22d10: ffff0000 00000000 ffff0000 ffffffff ................ 22d20: 8fffffff ffffffff 00f8ffff 00000000 ................ 22d30: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@.... 22d40: ffff3f40 ffff44ff ff9fffff ffffffff @?...D.......... 22d50: ffffffff ffffffff ffffafff ff45ffff ..............E. 22d60: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@.. 22d70: 0030ffff 0000cc01 00000000 00000000 ..0............. 22d80: 918f0000 00000000 70ffff00 00000000 ...........p.... 22d90: 40fdffff ff000000 10faffff ffff0000 ...@............ 22da0: 00f7ffff ffffff00 00d5ffff ffffffff ................ 22db0: ffb2ffff ffffffff fffffdff ffffffff ................ 22dc0: fffffffd b2ffffff ffffffff ff00d5ff ................ 22dd0: f7ffffff ffff0000 0010faff fdffff00 ................ 22de0: 00000040 0070ffff 8e000000 000000a1 @.....p......... ... 22e00: 00f8ff8f fff8ff8f ff00ffff ffffffff ................ 22e10: ffff00ff ffffffff ffffff00 00ffffff ................ 22e20: ffffffff ff00ffff ffffffff ffff00ff ................ 22e30: ffffffff ffffff00 00ffffff ffffffff ................ 22e40: ff00ffff ffffffff ffff00ff ffffffff ................ 22e50: ffffff00 00ffffff 7fffffff 7f00f7ff ................ 22e60: ff8ff7ff ffffffff fffffff8 ffffffff ................ 22e70: ffffffff ffffffff ffffffff ffffffff ................ 22e80: ffffffff ffffffff ffffffff ffffffff ................ 22e90: ffffffff ffffffff ffffffff ffffffff ................ 22ea0: ffffffff ffffffff ffffffff ffffffff ................ 22eb0: ffffffff ffffffff ffffffff ffff8fff ................ 22ec0: f8ffffff 00000000 0010cc00 d2ffff03 ................ 22ed0: ffff0400 ff0430fe 04f4ffff ffffffff .....0.......... 22ee0: ffffff54 fffff9ff ffffffff ffffffff T............... 22ef0: ffffffff fffffff9 ffff44ff ff04f3ff .........D...... 22f00: 0430feff 00d2ffff 10ccff04 00ff0300 ..0............. 22f10: 00000000 2d000000 000000d2 ef010000 .......-........ 22f20: 000010fe ff1d0000 0000d1ff ffcf0000 ................ 22f30: 0000fcff ffff0b00 00b0ffff ffffaf00 ................ 22f40: 00faffff ffffff09 90ffffff ffffff0f ................ 22f50: f0ffffff ffffff08 80ffffff 00000000 ................ 22f60: 00000000 ffffff0c c0ffffff ffffff0f ................ 22f70: f0ffffff ffffff0f f0ffffff ffffff0c ................ 22f80: c0ffffff 1a000000 01000040 0000f0df ........@....... 22f90: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................ 22fa0: ff0c0000 0d0000a0 000080ff 00f8df01 ................ 22fb0: ff1d0000 01000080 0000f8df 80ff1d00 ................ 22fc0: df010000 000000f0 a104501b 0f000000 .........P...... 22fd0: 000010fd 00d1ff0a fdaf0000 0a000010 ................ 22fe0: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................ 22ff0: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................ 23000: d1ff0800 fd0f0000 05000010 000000b1 ................ 23010: ff040000 00000040 80ff0800 00000000 ....@........... 23020: 0080ff08 08000000 000080ff ff080000 ................ 23030: 48000080 c8ff8c88 ffff8488 ffffffff ...H............ 23040: ffffffff ffffffff ff8c8848 008488c8 ........H....... 23050: 80ff0800 00000000 0080ff08 08000000 ................ 23060: 000080ff ff080000 00000080 40ff0400 ...............@ 23070: 44140000 44444444 ffffef41 feffffff ...DDDDDA....... 23080: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........ 23090: daffad05 00000050 88fcdf04 0040fdcf ....P.........@. 230a0: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O 230b0: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO............. 230c0: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O.. 230d0: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p. 230e0: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@ 230f0: 05000000 50daffad 208c0000 00000000 .......P... .... 23100: 00000000 0000e4df 00000000 ff1b0000 ................ 23110: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I.............. 23120: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p..... 23130: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@ 23140: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-. 23150: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0.. 23160: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>. 23170: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z 23180: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N. ... 23198: 0000c802 d22d0000 00000000 00000000 ......-......... 231a8: 0000fbbf 00000000 ffff0500 00000050 ............P... 231b8: 0d000000 00d0ffff 00000000 ffff7f00 ................ 231c8: 000000f7 ff010000 10ff8dd8 00000000 ................ 231d8: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?..... 231e8: 00000000 0cc0ffcf 0000fcff ffff0500 ................ 231f8: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P........... 23208: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................ 23218: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>...... 23228: ffffffff f0ffffff ffffff08 ffffffff ................ 23238: 000080ff 00000000 00000000 00000000 ................ 23248: 000000d8 00000000 ffff80ff ff070070 ............p... 23258: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x..... 23268: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ...... 23278: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^ 23288: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o. 23298: fffffdff ff070070 0000f8ff 00000000 ....p........... 232a8: 000080ff 00000000 000000d8 00000000 ................ ... 232c0: 01000000 000010dd ff1d0000 000000d1 ................ 232d0: fdffdf01 1d000010 d1ff99ff f9df0100 ................ 232e0: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................ 232f0: 905ffb9f 09000000 000000f5 00000000 .._............. 23300: 00000000 5f000000 00000090 f9bff509 ......._........ 23310: 9f000000 90ff1dfb d1ff0900 00f9df01 ................ 23320: 0010fd9f ff99ff1d 010000d1 10fdffdf ................ 23330: 1d000000 0000d1ff dd010000 00000010 ................ ... 23350: 00d11d00 00000000 df010000 ffef10fd ................ 23360: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................ 23370: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k....... 23380: 0f0000f0 000000f0 00f00f00 00f00f00 ................ 23390: 0f000000 0f0000f0 000000f0 b6f11f6b ............k... 233a0: 00f00f00 cfcf0000 0f00fcfc faffffff ................ 233b0: d1ffff1d ffff0d00 df01feff 000010fd ................ 233c0: 00000000 00d11d00 00000000 00000000 ................ 233d0: ff8f0000 0000e2ff ffff0000 0020feff .............. . 233e0: ffff0000 ffffffff fffff8ff ffffffff ................ 233f0: ffffffff ffffffff ffffffff ffffffff ................ 23400: ffffffff ffffffff ffffffff ffffffff ................ 23410: ffffffff ffffffff ffffffff ffffffff ................ 23420: ffffffff ffffffff ff8fffff ffffffff ................ 23430: 0000f8ff 00b00b00 00000000 00fbbf00 ................ 23440: 00000000 b0ffff0b 00000000 fbffffbf ................ 23450: 0b000000 ffffffff 4f0000b0 ffffffff ...........O.... 23460: 000000f4 00ffff00 00000000 00ffff00 ................ 23470: 00000000 00ffff00 00000000 00ffff00 ................ 23480: 00000000 00ffff00 ffdf0000 0ffddff0 ................ 23490: fffffdff 9f0000f9 ffffffff ffffffff ................ 234a0: ffffffff f0ffffff ffdfffe0 ffffffff ................ 234b0: 0000fdff 00000000 00000000 00000000 ................ 234c0: 0062ea0a 00000000 f0ffff02 00000000 ..b............. 234d0: ffff9f00 00000000 ffff0f00 000000d0 ................ 234e0: ffff0200 000000fb ef030000 000070ff .............p.. 234f0: 04000000 0000f2ff 00000000 0000fbbf ................ 23500: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O... 23510: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o........... 23520: ffffef00 00d1ffff ffff0a00 0090ffff ................ 23530: ff6f0000 0030fbff ff020000 000072db ..o...0......r.. 23540: 08000000 000080ee ff086106 2d0080ff .........a.....- 23550: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?.... 23560: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n........... 23570: ffef0200 000000f3 ffff2e00 08000030 ............0... 23580: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3 23590: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0... 235a0: fddf0200 00e88e00 10660000 ffdf0000 ..........f..... 235b0: 00200dff ffffff00 0000e20f 0fffffff .. ............. 235c0: fff0dffd 0020ffff fffff0ff ffffffff ...... ......... 235d0: fffffff0 f0ffffff ffffffff fff0ffff ................ 235e0: ffffffff fffff0ff ffffffff fffffff0 ................ 235f0: f0ffffff ffffffff fff0ffff ffffffff ................ 23600: ffdff0ff fffdffff 000000f9 ffff0000 ................ 23610: 00ffffff ffffdf00 0000fdff ffffff8f ................ 23620: ff00c2ff ffffffff 00ff20fe ff010000 ......... ...... 23630: 0000ffe2 fcff0000 000000ff ffffff00 ................ 23640: 00000000 ffffffff ffffffff ffffffff ................ 23650: ffffffff 11fbffff ffffffbf 1f00f1ff ................ 23660: ffffffff ff1f00f1 fbffffff ffffbf11 ................ 23670: ffffffff 8fffffff ffffffff df00f8ff ................ 23680: 0000fdff fcffff01 ff030000 0000f7ff ................ 23690: f2ffff06 ff080000 0000d0ff ffffff0a ................ 236a0: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. .. 236b0: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P. 236c0: fc2f0000 00000000 0000f35f a09f0000 ../....._....... 236d0: 00000000 000010df 00d70000 04000000 ................ 236e0: 000040ee 99ffdf00 0000fdff ff99ffff .@.............. 236f0: ff0000ff ffffffff ffff0000 00000090 ................ 23700: 0dffff00 200dffff ff0fffff ffe20fff ....... ........ 23710: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... .... 23720: ffffffff ff0fffff ffffffff ffff0fff ................ 23730: ffdfffff ffffff0f 0f0000ff ffffffff ................ 23740: ff0f0000 00ffffff ffff0d00 0000fdff ................ 23750: 0000cc00 02000000 000030ff ffbf0100 .........0...... 23760: 000020fc ffffff1e 9f0000e1 f8ffffff . .............. 23770: ffef0000 00fdffff ffffff00 0100ffff ................ 23780: ffffffff ff0300ff ffffffff ffff0830 ............0... 23790: 80ffffff ffffff1e cfe1ffff ffffffff ................ 237a0: ffcffcff ffffffff 000000fc 00000000 ................ 237b0: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@.... 237c0: ffffffff fff8ffff ffffffff ffffffff ................ 237d0: 0ff000ff 000ff000 f000ffff 0ff0000f ................ 237e0: ffffff00 ffffffff ffffffff 888008f8 ................ 237f0: ff8f8008 8008f8ff 8f800888 ffffffff ................ 23800: ffffffff 00ffffff 000000f0 ffff000f ................ 23810: 0000f000 ff000f00 ffffffff ffffffff ................ 23820: ffff8fff ffffffff 0000f8ff 00000000 ................ ... 23838: 70af0300 00000000 ffcf0400 000000f0 ...p............ 23848: ffdf0600 0000a0ff ffef1700 0030ffff ..............0. 23858: ffff1800 00fcffff ffff2a00 f4ffffff .........*...... 23868: ffff0800 ffffffff ff0f00d0 ffffffff ................ 23878: 080060ff ffffffff 0000feff 00000000 .`.............. 23888: 00f7ffff 00000000 f1ffff00 00000000 ................ 23898: ffff0000 00000080 ff000000 000010ff ................ 238a8: 00000000 0000faff 00000000 00f2ff00 ................ 238b8: 00000000 808f0000 00000000 00000000 ................ 238c8: 00000000 f0ffffdf ffff00d2 20fef0ff ............... 238d8: f0ffffff ffffe2ff fdfff0ff f2ffffff ................ 238e8: ffff0000 ffffffff ffffffff ffffffff ................ 238f8: ffffffff ffffffff ffffffff ffffffff ................ 23908: ffffffff ffffffff ffffffff ffffffff ................ 23918: ffffffff ffffffff ffffffff ffdfffff ................ 23928: fdffffff 00000000 00000000 00000000 ................ 23938: feef9c04 000040c9 ffef0700 feffffff .....@.......... 23948: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o... 23958: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o. 23968: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M... 23978: 0000d4ff feff0500 ffef8aa8 01000050 ............P... 23988: 000070df 0010fd07 00120000 21000000 .p.............! 23998: 00000000 e44e0000 00000000 00000000 ......N......... 239a8: 0000feef 00000000 feef0000 00000000 ................ 239b8: 00000000 0000e44e ff8f0000 ffffffff ....N........... 239c8: 80ffffff ffffffff ffffffff 00fff0ff ................ 239d8: 00000000 fd0f0000 ffff0fff ffffffff ................ 239e8: 0fffff0f ffffffff ff00ffff ffff0fff ................ 239f8: ffffffff 0fffff00 ffffffff ff0fffff ................ 23a08: 000000ff 00000000 fffffd0f ffffffff ................ 23a18: f0ffffff ffffff8f ffffffff ff8f80ff ................ 23a28: ffffffff 80ffffff ffffffff ffffffff ................ 23a38: 00fff0ff 00000000 fd0f0000 ffff0fff ................ 23a48: 00f0ffff 0fffff0f ffffffff ff0000f0 ................ 23a58: ffff0fff 00f0ffff 0fffff00 ffffffff ................ 23a68: ff0f00f0 000000ff 00000000 fffffd0f ................ 23a78: ffffffff f0ffffff ffffff8f ffffffff ................ 23a88: ff8f80ff ffffffff 80ffffff ffffffff ................ 23a98: ffffffff 00fff0ff 00000000 fd0f0000 ................ 23aa8: ffff0fff 000000ff 0fffff0f 00ffffff ................ 23ab8: ff000000 ffff0fff 000000ff 0fffff00 ................ 23ac8: 00ffffff ff0f0000 000000ff 00000000 ................ 23ad8: fffffd0f ffffffff f0ffffff ffffff8f ................ 23ae8: ffffffff ff8f80ff ffffffff 80ffffff ................ 23af8: ffffffff ffffffff 00fff0ff 00000000 ................ 23b08: fd0f0000 f0ff0fff 00000000 0fffff0f ................ 23b18: 0000f0ff ff000000 f0ff0fff 00000000 ................ 23b28: 0fffff00 0000f0ff ff0f0000 000000ff ................ 23b38: 00000000 fffffd0f ffffffff f0ffffff ................ 23b48: ffffff8f ffffffff ff8f80ff ffffffff ................ 23b58: 80ffffff ffffffff ffffffff 00fff0ff ................ 23b68: 00000000 fd0f0000 000000ff 00000000 ................ 23b78: 00ffff0f 00000000 ff000000 000000ff ................ 23b88: 00000000 00ffff00 00000000 ff0f0000 ................ 23b98: 000000ff 00000000 fffffd0f ffffffff ................ 23ba8: f0ffffff ffffff8f ffffffff 000080ff ................ 23bb8: 01000000 00000000 00000000 10fd0700 ................ 23bc8: 00000000 cf010000 0000f5ff 00000000 ................ 23bd8: fe29b900 00000010 3f000000 00000210 ..)........?.... 23be8: df030000 00900a80 70030000 77ffdf00 ...........p...w 23bf8: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU........... 23c08: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F.. 23c18: 3302f201 00000010 09000000 00f9cfb1 ...3............ 23c28: 00000000 ff0a0000 000090ff 00000000 ................ 23c38: f9bf0000 00000000 00000000 00002201 .............".. 23c48: df180000 020092fd ffeffbef faff0d30 ............0... 23c58: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O.. 23c68: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=............. 23c78: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y 23c88: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._...... 23c98: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P..... 23ca8: 7f000000 0000f7ff ffffffef effeffff ................ 23cb8: ffffffff 0000feff 00000000 ffff0f00 ................ 23cc8: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................ 23cd8: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................ 23ce8: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................ 23cf8: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................ 23d08: 0ff09ff9 ffffffff ff08f0ff ffffffff ................ 23d18: 00000080 7f000000 000000a0 8f000000 ................ 23d28: 0000b0ff 0d000000 00a0ffff 8a000000 ................ 23d38: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p.... 23d48: 801dfaff 8f000000 00faffff 8f000000 ................ 23d58: 80ffffff 8f000000 80ffffff 8f000000 ................ 23d68: 80ffffff 8f000000 80ffffff 6f000000 ...............o 23d78: 80ffffff 0b000000 80ffffff 00000000 ................ 23d88: 80ffffdf 00000000 80ffff0e 00000000 ................ 23d98: 60dbde00 00000000 00000000 00000000 ...`............ 23da8: 00000000 ffffff1b e4ffffff ffdf0100 ................ 23db8: ffffffff 1d00feff effaffff ffffaffe ................ 23dc8: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................ 23dd8: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ...... 23de8: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... . 23df8: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................ 23e08: affeeffa 0100ffff ffffffdf feffffff ................ 23e18: ff1b0000 ffffffff 0800e4ff e4ffffff ................ 23e28: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@..... 23e38: f8ffff40 ff400b0f ffffffff ffffffff @.....@......... 23e48: ffffffff ffffffff ffffffff ffffffff ................ 23e58: ffffffff ffffffff ffffffff ffffffff ................ 23e68: ffffffff ffffffff ffffffff ffefffff ................ 23e78: feffffff ffffff4e 0000e4ff 00000000 ....N........... 23e88: 00000100 00000000 00e00300 00001000 ................ 23e98: 10ef0200 0000bf00 f17f0000 00f1cf00 ................ 23ea8: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww..... 23eb8: ffffffff ffff17ff ffffffff ff07e0ff ................ 23ec8: 000000f1 06000000 000010ff 00000000 ................ 23ed8: 0000a005 00000000 732f2e2e 65726168 ........../share 23ee8: 68742f64 70647269 79747261 67766c2f d/thirdparty/lvg 23ef8: 72732f6c 766c2f63 6c61685f 5f766c2f l/src/lv_hal/lv_ 23f08: 5f6c6168 70736964 hal_disp.c. 00023f13 <__func__.0>: 23f13: 645f766c 5f707369 5f767264 69676572 lv_disp_drv_regi 23f23: 72657473 2f2e2e00 72616873 742f6465 ster.../shared/t 23f33: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 23f43: 6c2f6372 696d5f76 6c2f6373 6e615f76 rc/lv_misc/lv_an 23f53: 632e6d69 im.c. 00023f58 <__func__.0>: 23f58: 615f766c 5f6d696e 72617473 00000074 lv_anim_start... 00023f68 : 23f68: 0000dab1 00000000 732f2e2e 65726168 ........../share 23f78: 68742f64 70647269 79747261 67766c2f d/thirdparty/lvg 23f88: 72732f6c 766c2f63 73696d5f 766c2f63 l/src/lv_misc/lv 23f98: 2e73665f _fs.c. 00023f9e <__func__.0>: 23f9e: 665f766c 72645f73 65725f76 74736967 lv_fs_drv_regist 23fae: er. 00023fb1 <__func__.2>: 23fb1: 665f766c 706f5f73 lv_fs_open. 00023fbc <__func__.1>: 23fbc: 665f766c 69645f73 706f5f72 00006e65 lv_fs_dir_open.. 00023fcc : 23fcc: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a... 23fdc: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!! 23fec: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2 23ffc: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A 2400c: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI: 24196: 6d5f766c 615f6d65 636f6c6c lv_mem_alloc. 000241a3 <__func__.0>: 241a3: 5f766c5f 5f6d656d 5f667562 656c6572 _lv_mem_buf_rele 241b3: 00657361 ase. 000241b7 <__func__.2>: 241b7: 6d5f766c 725f6d65 6c6c6165 lv_mem_realloc. 000241c6 <__func__.1>: 241c6: 5f766c5f 5f6d656d 5f667562 00746567 _lv_mem_buf_get. 241d6: 732f2e2e 65726168 68742f64 70647269 ../shared/thirdp 241e6: 79747261 67766c2f 72732f6c 766c2f63 arty/lvgl/src/lv 241f6: 73696d5f 766c2f63 7361745f 00632e6b _misc/lv_task.c. 00024206 <__func__.1>: 24206: 745f766c 5f6b7361 61657263 625f6574 lv_task_create_b 24216: 63697361 asic. 0002421b <__func__.0>: 2421b: 745f766c 5f6b7361 61657263 20006574 lv_task_create. 2422b: 3a3b2e2c 2e005f2d 68732f2e 64657261 ,.;:-_.../shared 2423b: 6968742f 61706472 2f797472 6c67766c /thirdparty/lvgl 2424b: 6372732f 5f766c2f 6373696d 5f766c2f /src/lv_misc/lv_ 2425b: 2e747874 766c0063 7478745f 7465675f txt.c.lv_txt_get 2426b: 7a69735f 69203a65 6765746e 6f207265 _size: integer o 2427b: 66726576 20776f6c 6c696877 61632065 verflow while ca 2428b: 6c75636c 6e697461 65742067 68207478 lculating text h 2429b: 68676965 eight. 000242a1 <__func__.0>: 242a1: 5f766c5f 5f747874 5f746567 657a6973 _lv_txt_get_size 242b1: 8c80ef00 10ffff00 2ec61884 68732f2e ............./sh 242c1: 64657261 6968742f 61706472 2f797472 ared/thirdparty/ 242d1: 6c67766c 6372732f 5f766c2f 67646977 lvgl/src/lv_widg 242e1: 2f737465 695f766c 632e676d 5f766c00 ets/lv_img.c.lv_ 242f1: 5f676d69 5f746573 3a637273 6b6e7520 img_set_src: unk 24301: 6e776f6e 70797420 766c0065 676d695f nown type.lv_img 24311: 7465735f 6372735f 6e75203a 776f6e6b _set_src: unknow 24321: 6d69206e 20656761 65707974 5f766c00 n image type.lv_ 24331: 5f676d69 5f746573 3a637273 4c602020 img_set_src: `L 24341: 4d495f56 52535f47 41565f43 42414952 V_IMG_SRC_VARIAB 24351: 2060454c 65707974 756f6620 6900646e LE` type found.i 24361: 6567616d 65726320 64657461 5f766c00 mage created.lv_ 24371: 00676d69 img. 00024375 <__func__.13>: 24375: 695f766c 645f676d 67697365 lv_img_design. 00024383 <__func__.11>: 24383: 695f766c 735f676d 615f7465 5f6f7475 lv_img_set_auto_ 24393: 657a6973 size. 00024398 <__func__.10>: 24398: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 243a8: 00785f74 t_x. 000243ac <__func__.9>: 243ac: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 243bc: 00795f74 t_y. 000243c0 <__func__.8>: 243c0: 695f766c 675f676d 735f7465 lv_img_get_src. 000243cf <__func__.7>: 243cf: 695f766c 675f676d 665f7465 5f656c69 lv_img_get_file_ 243df: 656d616e name. 000243e4 <__func__.6>: 243e4: 695f766c 675f676d 615f7465 5f6f7475 lv_img_get_auto_ 243f4: 657a6973 size. 000243f9 <__func__.12>: 243f9: 695f766c 735f676d 735f7465 lv_img_set_src. 00024408 <__func__.14>: 24408: 695f766c 635f676d 74616572 lv_img_create. 00024416 <__func__.5>: 24416: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 24426: 00785f74 t_x. 0002442a <__func__.4>: 2442a: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 2443a: 00795f74 t_y. 0002443e <__func__.3>: 2443e: 695f766c 675f676d 705f7465 746f7669 lv_img_get_pivot ... 0002444f <__func__.2>: 2444f: 695f766c 675f676d 615f7465 656c676e lv_img_get_angle ... 00024460 <__func__.1>: 24460: 695f766c 675f676d 7a5f7465 006d6f6f lv_img_get_zoom. 00024470 <__func__.0>: 24470: 695f766c 675f676d 615f7465 6169746e lv_img_get_antia 24480: 7361696c 2f2e2e00 72616873 742f6465 lias.../shared/t 24490: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 244a0: 6c2f6372 69775f76 74656764 766c2f73 rc/lv_widgets/lv 244b0: 62616c5f 632e6c65 69614600 2064656c _label.c.Failed 244c0: 61206f74 636f6c6c 20657461 6f6d656d to allocate memo 244d0: 66207972 6420726f 745f746f 705f706d ry for dot_tmp_p 244e0: 54007274 00747865 6562616c 7263206c tr.Text.label cr 244f0: 65746165 766c0064 62616c5f eated.lv_label. 000244ff <__func__.21>: 244ff: 6c5f766c 6c656261 7465735f 746f645f lv_label_set_dot 2450f: 706d745f _tmp. 00024514 <__func__.16>: 24514: 6c5f766c 6c656261 7465735f 696c615f lv_label_set_ali 24524: gn. 00024527 <__func__.13>: 24527: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 24537: 65735f74 74735f6c 00747261 t_sel_start. 00024543 <__func__.12>: 24543: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 24553: 65735f74 6e655f6c t_sel_end. 0002455d <__func__.11>: 2455d: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 2456d: t. 0002456f <__func__.10>: 2456f: 6c5f766c 6c656261 7465675f 6e6f6c5f lv_label_get_lon 2457f: 6f6d5f67 g_mode. 00024586 <__func__.9>: 24586: 6c5f766c 6c656261 7465675f 696c615f lv_label_get_ali 24596: gn. 00024599 <__func__.8>: 24599: 6c5f766c 6c656261 7465675f 6365725f lv_label_get_rec 245a9: 726f6c6f olor. 000245ae <__func__.7>: 245ae: 6c5f766c 6c656261 7465675f 696e615f lv_label_get_ani 245be: 70735f6d 00646565 m_speed. 000245c6 <__func__.6>: 245c6: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 245d6: 5f726574 00736f70 ter_pos. 000245de <__func__.5>: 245de: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 245ee: 5f726574 ter_on. 000245f5 <__func__.20>: 245f5: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 24605: t. 00024607 <__func__.19>: 24607: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 24617: 6d665f74 t_fmt. 0002461d <__func__.18>: 2461d: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 2462d: 74735f74 63697461 t_static. 00024636 <__func__.17>: 24636: 6c5f766c 6c656261 7465735f 6e6f6c5f lv_label_set_lon 24646: 6f6d5f67 g_mode. 0002464d <__func__.15>: 2464d: 6c5f766c 6c656261 7465735f 6365725f lv_label_set_rec 2465d: 726f6c6f olor. 00024662 <__func__.22>: 24662: 6c5f766c 6c656261 6572635f 00657461 lv_label_create. 00024672 <__func__.14>: 24672: 6c5f766c 6c656261 7465735f 696e615f lv_label_set_ani 24682: 70735f6d 00646565 m_speed. 0002468a <__func__.4>: 2468a: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 2469a: 65735f74 74735f6c 00747261 t_sel_start. 000246a6 <__func__.3>: 246a6: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 246b6: 65735f74 6e655f6c t_sel_end. 000246c0 <__func__.2>: 246c0: 6c5f766c 6c656261 5f73695f 72616863 lv_label_is_char 246d0: 646e755f 705f7265 _under_pos. 000246db <__func__.1>: 246db: 6c5f766c 6c656261 736e695f 7865745f lv_label_ins_tex 246eb: t. 000246ed <__func__.0>: 246ed: 6c5f766c 6c656261 7475635f 7865745f lv_label_cut_tex 246fd: t.. 00024700 <_init>: 24700: b5f8 push {r3, r4, r5, r6, r7, lr} 24702: bf00 nop 24704: bcf8 pop {r3, r4, r5, r6, r7} 24706: bc08 pop {r3} 24708: 469e mov lr, r3 2470a: 4770 bx lr 0002470c <__frame_dummy_init_array_entry>: 2470c: 0289 0000 .... 00024710 <_fini>: 24710: b5f8 push {r3, r4, r5, r6, r7, lr} 24712: bf00 nop 24714: bcf8 pop {r3, r4, r5, r6, r7} 24716: bc08 pop {r3} 24718: 469e mov lr, r3 2471a: 4770 bx lr 0002471c <__do_global_dtors_aux_fini_array_entry>: 2471c: 0265 0000 e...