AtmelStart.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .text 000246dc 00000000 00000000 00010000 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .ARM.exidx 00000008 000246dc 000246dc 000346dc 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .relocate 00000074 20000000 000246e4 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 00024760 00040078 2**3 ALLOC 6 .stack 0000c000 2000c800 00030ee8 00040078 2**0 ALLOC 7 .ARM.attributes 0000002e 00000000 00000000 00040074 2**0 CONTENTS, READONLY 8 .comment 00000064 00000000 00000000 000400a2 2**0 CONTENTS, READONLY 9 .debug_info 000761b4 00000000 00000000 00040106 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 10 .debug_abbrev 0000d478 00000000 00000000 000b62ba 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 11 .debug_loclists 00029747 00000000 00000000 000c3732 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 12 .debug_aranges 00002158 00000000 00000000 000ece80 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS 13 .debug_rnglists 0000488d 00000000 00000000 000eefd8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 14 .debug_macro 0003fc44 00000000 00000000 000f3865 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 15 .debug_line 00055a74 00000000 00000000 001334a9 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 16 .debug_str 00128539 00000000 00000000 00188f1d 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 17 .debug_frame 00006948 00000000 00000000 002b1458 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS 18 .debug_line_str 00000075 00000000 00000000 002b7da0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: 00000000 : /** * \brief I/O read interface */ int32_t io_read(struct io_descriptor *const io_descr, uint8_t *const buf, const uint16_t length) { 0: 00 88 01 20 59 09 00 00 55 09 00 00 55 09 00 00 ... Y...U...U... ASSERT(io_descr && buf); 10: 55 09 00 00 55 09 00 00 55 09 00 00 00 00 00 00 U...U...U....... ... return io_descr->read(io_descr, buf, length); 2c: 55 09 00 00 55 09 00 00 00 00 00 00 55 09 00 00 U...U.......U... descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; if (!is_list_element(&descr->tasks, task)) { descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; ASSERT(false); return ERR_NOT_FOUND; 3c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... } list_delete_element(&descr->tasks, task); descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 4c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... if (descr->flags & TIMER_FLAG_INTERRUPT_TRIGERRED) { CRITICAL_SECTION_ENTER() 5c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... descr->flags &= ~TIMER_FLAG_INTERRUPT_TRIGERRED; _timer_set_irq(&descr->device); 6c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... CRITICAL_SECTION_LEAVE() } return ERR_NONE; 7c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 8c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... } else { /* error baudrate */ return ERR_INVALID_ARG; } return ERR_NONE; 9c: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... static inline void hri_sercomi2cm_write_BAUD_BAUD_bf(const void *const hw, hri_sercomi2cm_baud_reg_t data) { uint32_t tmp; SERCOM_CRITICAL_SECTION_ENTER(); tmp = ((Sercom *)hw)->I2CM.BAUD.reg; ac: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... tmp = (uint32_t)((clkrate - 10 * baudrate - baudrate * clkrate * (i2c_dev->service.trise * 0.000000001)) bc: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... cc: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... dc: 55 09 00 00 55 09 00 00 55 09 00 00 00 00 00 00 U...U...U....... ... f4: cd 05 00 00 b1 08 00 00 1d 09 00 00 25 09 00 00 ............%... / (2 * baudrate)); 104: 2d 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 -...U...U...U... tmp &= ~SERCOM_I2CM_BAUD_BAUD_Msk; tmp |= SERCOM_I2CM_BAUD_BAUD(data); 114: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... tmp = (clkrate - 2 * baudrate) / (2 * baudrate); 124: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... static inline void hri_sercomi2cm_write_BAUD_HSBAUD_bf(const void *const hw, hri_sercomi2cm_baud_reg_t data) { uint32_t tmp; SERCOM_CRITICAL_SECTION_ENTER(); tmp = ((Sercom *)hw)->I2CM.BAUD.reg; tmp &= ~SERCOM_I2CM_BAUD_HSBAUD_Msk; 134: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... return ERR_DENIED; 144: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... return ERR_INVALID_ARG; 154: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 164: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 174: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... ver_en = true; } } /*If a move is greater then LV_DRAG_LIMIT then begin the drag*/ if((hor_en && LV_MATH_ABS(proc->types.pointer.drag_sum.x) >= indev_act->driver.drag_limit) || 184: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 194: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... (ver_en && LV_MATH_ABS(proc->types.pointer.drag_sum.y) >= indev_act->driver.drag_limit)) { 1a4: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... drag_just_started = true; } } /*If the drag limit is exceeded handle the dragging*/ if(proc->types.pointer.drag_limit_out != 0) { 1b4: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... /*Set new position if the vector is not zero*/ if(proc->types.pointer.vect.x != 0 || proc->types.pointer.vect.y != 0) { 1c4: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... lv_coord_t prev_x = drag_obj->coords.x1; lv_coord_t prev_y = drag_obj->coords.y1; 1d4: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... lv_coord_t prev_par_w = lv_obj_get_width(lv_obj_get_parent(drag_obj)); lv_coord_t prev_par_h = lv_obj_get_height(lv_obj_get_parent(drag_obj)); 1e4: 55 09 00 00 55 09 00 00 2d 0f 00 00 55 09 00 00 U...U...-...U... /*Get the coordinates of the object and modify them*/ lv_coord_t act_x = lv_obj_get_x(drag_obj); lv_coord_t act_y = lv_obj_get_y(drag_obj); 1f4: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... if(allowed_dirs == LV_DRAG_DIR_BOTH) { if(drag_just_started) { proc->types.pointer.drag_dir = LV_DRAG_DIR_BOTH; 204: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... act_x += proc->types.pointer.drag_sum.x; 214: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... /*Move the object*/ if(allowed_dirs == LV_DRAG_DIR_HOR || allowed_dirs == LV_DRAG_DIR_BOTH || (allowed_dirs == LV_DRAG_DIR_ONE && LV_MATH_ABS(proc->types.pointer.drag_sum.x) > LV_MATH_ABS(proc->types.pointer.drag_sum.y))) { act_x += proc->types.pointer.vect.x; 224: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 234: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 244: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 254: 55 09 00 00 55 09 00 00 55 09 00 00 55 09 00 00 U...U...U...U... 00000264 : 264: 4803 ldr r0, [pc, #12] ; (274 ) 266: 4b04 ldr r3, [pc, #16] ; (278 ) 268: 4283 cmp r3, r0 26a: d002 beq.n 272 26c: 4b03 ldr r3, [pc, #12] ; (27c ) 26e: b103 cbz r3, 272 proc->types.pointer.last_point.x = proc->types.pointer.act_point.x; 270: 4718 bx r3 if(proc->types.pointer.act_obj != NULL) { 272: 4770 bx lr 274: 000246e4 .word 0x000246e4 proc->types.pointer.last_obj = indev_obj_act; 278: 000246e4 .word 0x000246e4 if(indev_obj_act != NULL) { 27c: 00000000 .word 0x00000000 00000280 : 280: 4805 ldr r0, [pc, #20] ; (298 ) proc->pr_timestamp = lv_tick_get(); 282: 4b06 ldr r3, [pc, #24] ; (29c ) i = lv_obj_get_parent(i); 284: 1a1b subs r3, r3, r0 proc->pr_timestamp = lv_tick_get(); 286: 0fd9 lsrs r1, r3, #31 proc->types.pointer.drag_limit_out = 0; 288: eb01 01a3 add.w r1, r1, r3, asr #2 proc->long_pr_sent = 0; 28c: 1049 asrs r1, r1, #1 28e: d002 beq.n 296 proc->pr_timestamp = lv_tick_get(); 290: 4b03 ldr r3, [pc, #12] ; (2a0 ) proc->types.pointer.gesture_sum.x = 0; 292: b103 cbz r3, 296 proc->types.pointer.drag_limit_out = 0; 294: 4718 bx r3 296: 4770 bx lr proc->types.pointer.drag_sum.x = 0; 298: 000246e4 .word 0x000246e4 proc->long_pr_sent = 0; 29c: 000246e4 .word 0x000246e4 proc->types.pointer.drag_limit_out = 0; 2a0: 00000000 .word 0x00000000 000002a4 <__do_global_dtors_aux>: lv_obj_t * i = indev_obj_act; 2a4: b510 push {r4, lr} proc->long_pr_sent = 0; 2a6: 4c06 ldr r4, [pc, #24] ; (2c0 <__do_global_dtors_aux+0x1c>) 2a8: 7823 ldrb r3, [r4, #0] proc->types.pointer.gesture_sum.x = 0; 2aa: b943 cbnz r3, 2be <__do_global_dtors_aux+0x1a> proc->types.pointer.gesture_sum.y = 0; 2ac: f7ff ffda bl 264 proc->types.pointer.drag_limit_out = 0; 2b0: 4b04 ldr r3, [pc, #16] ; (2c4 <__do_global_dtors_aux+0x20>) while(i != NULL) { 2b2: b113 cbz r3, 2ba <__do_global_dtors_aux+0x16> 2b4: 4804 ldr r0, [pc, #16] ; (2c8 <__do_global_dtors_aux+0x24>) if(last_top != NULL) { 2b6: f3af 8000 nop.w lv_obj_move_foreground(last_top); 2ba: 2301 movs r3, #1 2bc: 7023 strb r3, [r4, #0] indev_obj_act->signal_cb(indev_obj_act, LV_SIGNAL_PRESSED, indev_act); 2be: bd10 pop {r4, pc} 2c0: 20000078 .word 0x20000078 if(indev_reset_check(proc)) return; 2c4: 00000000 .word 0x00000000 indev_obj_act->signal_cb(indev_obj_act, LV_SIGNAL_PRESSED, indev_act); 2c8: 000246e4 .word 0x000246e4 000002cc : if(indev_reset_check(proc)) return; 2cc: b508 push {r3, lr} 2ce: 4b04 ldr r3, [pc, #16] ; (2e0 ) 2d0: b11b cbz r3, 2da 2d2: 4904 ldr r1, [pc, #16] ; (2e4 ) lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL); 2d4: 4804 ldr r0, [pc, #16] ; (2e8 ) 2d6: f3af 8000 nop.w 2da: e8bd 4008 ldmia.w sp!, {r3, lr} if(indev_reset_check(proc)) return; 2de: e7cf b.n 280 2e0: 00000000 .word 0x00000000 2e4: 2000007c .word 0x2000007c if(indev_act->proc.wait_until_release) return; 2e8: 000246e4 .word 0x000246e4 000002ec : { 2ec: b570 push {r4, r5, r6, lr} 2ee: 460d mov r5, r1 2f0: 4616 mov r6, r2 ASSERT(io_descr && buf); 2f2: 4604 mov r4, r0 2f4: b110 cbz r0, 2fc 2f6: 1e08 subs r0, r1, #0 2f8: bf18 it ne 2fa: 2001 movne r0, #1 2fc: 4905 ldr r1, [pc, #20] ; (314 ) 2fe: 4b06 ldr r3, [pc, #24] ; (318 ) 300: 2234 movs r2, #52 ; 0x34 302: 4798 blx r3 return io_descr->write(io_descr, buf, length); 304: 6823 ldr r3, [r4, #0] 306: 4632 mov r2, r6 308: 4629 mov r1, r5 30a: 4620 mov r0, r4 } 30c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} return io_descr->write(io_descr, buf, length); 310: 4718 bx r3 312: bf00 nop 314: 00016348 .word 0x00016348 318: 00000655 .word 0x00000655 0000031c <_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)); 31c: 0943 lsrs r3, r0, #5 31e: 4904 ldr r1, [pc, #16] ; (330 <_irq_set+0x14>) 320: f000 001f and.w r0, r0, #31 324: 2201 movs r2, #1 326: 3340 adds r3, #64 ; 0x40 328: 4082 lsls r2, r0 32a: f841 2023 str.w r2, [r1, r3, lsl #2] * \brief Set the given IRQ */ void _irq_set(uint8_t n) { NVIC_SetPendingIRQ((IRQn_Type)n); } 32e: 4770 bx lr 330: e000e100 .word 0xe000e100 00000334 <_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; 334: 2377 movs r3, #119 ; 0x77 336: 4358 muls r0, r3 338: 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); } 33a: 2303 movs r3, #3 33c: fbb0 f0f3 udiv r0, r0, r3 340: 4770 bx lr 00000342 <_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; 342: 2377 movs r3, #119 ; 0x77 344: 4358 muls r0, r3 346: 3002 adds r0, #2 348: 2303 movs r3, #3 34a: 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); } 34e: f44f 737a mov.w r3, #1000 ; 0x3e8 352: 4358 muls r0, r3 354: 4770 bx lr 00000356 <_delay_init>: * \brief Initialize delay functionality */ void _delay_init(void *const hw) { (void)hw; } 356: 4770 bx lr 00000358 <_delay_cycles>: __asm(".align 3 \n" "__delay:\n" "subs r1, r1, #1\n" "bhi __delay\n"); #elif defined __GNUC__ __asm(".syntax unified\n" 358: 3901 subs r1, #1 35a: d8fd bhi.n 358 <_delay_cycles> __asm("__delay:\n" "subs r1, r1, #1\n" "bhi.n __delay\n"); #endif #endif } 35c: 4770 bx lr if(indev_reset_check(proc)) return; 35e: bf00 nop 00000360 : * \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) { 360: 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; 362: 6805 ldr r5, [r0, #0] struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list); if (!head) { 364: b91d cbnz r5, 36e list_insert_as_head(list, new_task); 366: 4b0f ldr r3, [pc, #60] ; (3a4 ) if (it == head) { list_insert_as_head(list, new_task); } else { list_insert_after(prev, new_task); } } 368: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} list_insert_after(prev, new_task); 36c: 4718 bx r3 if (time_left >= new_task->interval) 36e: f8d1 c008 ldr.w ip, [r1, #8] 372: 462c mov r4, r5 struct timer_task *it, *prev = NULL, *head = (struct timer_task *)list_get_head(list); 374: 2600 movs r6, #0 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 376: f1c2 0e01 rsb lr, r2, #1 time_left = it->interval - (time - it->time_label); 37a: e9d4 3701 ldrd r3, r7, [r4, #4] if (it->time_label <= time) { 37e: 4293 cmp r3, r2 time_left = it->interval - (time - it->time_label); 380: bf95 itete ls 382: 19db addls r3, r3, r7 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 384: 4473 addhi r3, lr time_left = it->interval - (time - it->time_label); 386: 1a9b subls r3, r3, r2 time_left = it->interval - (0xFFFFFFFF - it->time_label) - time; 388: 19db addhi r3, r3, r7 if (time_left >= new_task->interval) 38a: 459c cmp ip, r3 38c: d907 bls.n 39e * \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; 38e: 6823 ldr r3, [r4, #0] for (it = head; it; it = (struct timer_task *)list_get_next_element(it)) { 390: 4626 mov r6, r4 392: b913 cbnz r3, 39a list_insert_after(prev, new_task); 394: 4b04 ldr r3, [pc, #16] ; (3a8 ) 396: 4630 mov r0, r6 398: e7e6 b.n 368 39a: 461c mov r4, r3 39c: e7ed b.n 37a if (it == head) { 39e: 42a5 cmp r5, r4 3a0: d0e1 beq.n 366 3a2: e7f7 b.n 394 3a4: 00000615 .word 0x00000615 3a8: 00000641 .word 0x00000641 000003ac : /** * \internal Process interrupts */ static void timer_process_counted(struct _timer_device *device) { 3ac: 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; 3b0: e9d0 6504 ldrd r6, r5, [r0, #16] if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 3b4: 7e03 ldrb r3, [r0, #24] uint32_t time = ++timer->time; 3b6: 3601 adds r6, #1 if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 3b8: 07da lsls r2, r3, #31 { 3ba: 4604 mov r4, r0 uint32_t time = ++timer->time; 3bc: 6106 str r6, [r0, #16] if ((timer->flags & TIMER_FLAG_QUEUE_IS_TAKEN) || (timer->flags & TIMER_FLAG_INTERRUPT_TRIGERRED)) { 3be: d41f bmi.n 400 3c0: 7e03 ldrb r3, [r0, #24] 3c2: 079b lsls r3, r3, #30 3c4: d41c bmi.n 400 } while (it && ((time - it->time_label) >= it->interval)) { struct timer_task *tmp = it; list_remove_head(&timer->tasks); 3c6: f8df 8044 ldr.w r8, [pc, #68] ; 40c if (TIMER_TASK_REPEAT == tmp->mode) { tmp->time_label = time; timer_add_timer_task(&timer->tasks, tmp, time); 3ca: f8df 9044 ldr.w r9, [pc, #68] ; 410 list_remove_head(&timer->tasks); 3ce: f100 0714 add.w r7, r0, #20 while (it && ((time - it->time_label) >= it->interval)) { 3d2: b1cd cbz r5, 408 3d4: 686b ldr r3, [r5, #4] 3d6: 68aa ldr r2, [r5, #8] 3d8: 1af3 subs r3, r6, r3 3da: 4293 cmp r3, r2 3dc: d314 bcc.n 408 list_remove_head(&timer->tasks); 3de: 4638 mov r0, r7 3e0: 47c0 blx r8 if (TIMER_TASK_REPEAT == tmp->mode) { 3e2: 7c2b ldrb r3, [r5, #16] 3e4: 2b01 cmp r3, #1 3e6: d104 bne.n 3f2 tmp->time_label = time; 3e8: 606e str r6, [r5, #4] timer_add_timer_task(&timer->tasks, tmp, time); 3ea: 4632 mov r2, r6 3ec: 4629 mov r1, r5 3ee: 4638 mov r0, r7 3f0: 47c8 blx r9 return (void *)list->head; 3f2: f8d4 a014 ldr.w sl, [r4, #20] } it = (struct timer_task *)list_get_head(&timer->tasks); tmp->cb(tmp); 3f6: 68eb ldr r3, [r5, #12] 3f8: 4628 mov r0, r5 3fa: 4798 blx r3 it = (struct timer_task *)list_get_head(&timer->tasks); 3fc: 4655 mov r5, sl 3fe: e7e8 b.n 3d2 timer->flags |= TIMER_FLAG_INTERRUPT_TRIGERRED; 400: 7e23 ldrb r3, [r4, #24] 402: f043 0302 orr.w r3, r3, #2 406: 7623 strb r3, [r4, #24] } } 408: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 40c: 00000649 .word 0x00000649 410: 00000361 .word 0x00000361 00000414 : { 414: b538 push {r3, r4, r5, lr} 416: 460d mov r5, r1 ASSERT(descr && hw); 418: 4604 mov r4, r0 41a: b110 cbz r0, 422 41c: 1e08 subs r0, r1, #0 41e: bf18 it ne 420: 2001 movne r0, #1 422: 223b movs r2, #59 ; 0x3b 424: 4905 ldr r1, [pc, #20] ; (43c ) 426: 4b06 ldr r3, [pc, #24] ; (440 ) 428: 4798 blx r3 _timer_init(&descr->device, hw); 42a: 4b06 ldr r3, [pc, #24] ; (444 ) 42c: 4629 mov r1, r5 42e: 4620 mov r0, r4 430: 4798 blx r3 descr->device.timer_cb.period_expired = timer_process_counted; 432: 4b05 ldr r3, [pc, #20] ; (448 ) 434: 6023 str r3, [r4, #0] descr->time = 0; 436: 2000 movs r0, #0 438: 6120 str r0, [r4, #16] } 43a: bd38 pop {r3, r4, r5, pc} 43c: 0001635c .word 0x0001635c 440: 00000655 .word 0x00000655 444: 00000d81 .word 0x00000d81 448: 000003ad .word 0x000003ad 0000044c : { 44c: b538 push {r3, r4, r5, lr} ASSERT(descr); 44e: 4605 mov r5, r0 450: 3800 subs r0, #0 452: bf18 it ne 454: 2001 movne r0, #1 456: 4908 ldr r1, [pc, #32] ; (478 ) 458: 4b08 ldr r3, [pc, #32] ; (47c ) 45a: 2253 movs r2, #83 ; 0x53 45c: 4798 blx r3 if (_timer_is_started(&descr->device)) { 45e: 4b08 ldr r3, [pc, #32] ; (480 ) 460: 4628 mov r0, r5 462: 4798 blx r3 464: 4604 mov r4, r0 466: b920 cbnz r0, 472 _timer_start(&descr->device); 468: 4628 mov r0, r5 46a: 4b06 ldr r3, [pc, #24] ; (484 ) 46c: 4798 blx r3 return ERR_NONE; 46e: 4620 mov r0, r4 } 470: bd38 pop {r3, r4, r5, pc} return ERR_DENIED; 472: f06f 0010 mvn.w r0, #16 476: e7fb b.n 470 478: 0001635c .word 0x0001635c 47c: 00000655 .word 0x00000655 480: 00000ed1 .word 0x00000ed1 484: 00000ebd .word 0x00000ebd 00000488 : { 488: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 48c: 460d mov r5, r1 ASSERT(descr && task); 48e: 4604 mov r4, r0 490: b110 cbz r0, 498 492: 1e08 subs r0, r1, #0 494: bf18 it ne 496: 2001 movne r0, #1 498: 491e ldr r1, [pc, #120] ; (514 ) 49a: f8df 8090 ldr.w r8, [pc, #144] ; 52c 49e: 227a movs r2, #122 ; 0x7a 4a0: 47c0 blx r8 descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; 4a2: 7e23 ldrb r3, [r4, #24] if (is_list_element(&descr->tasks, task)) { 4a4: f104 0714 add.w r7, r4, #20 descr->flags |= TIMER_FLAG_QUEUE_IS_TAKEN; 4a8: f043 0301 orr.w r3, r3, #1 4ac: 7623 strb r3, [r4, #24] if (is_list_element(&descr->tasks, task)) { 4ae: 4629 mov r1, r5 4b0: 4b19 ldr r3, [pc, #100] ; (518 ) 4b2: 4638 mov r0, r7 4b4: 4798 blx r3 4b6: 4606 mov r6, r0 4b8: b160 cbz r0, 4d4 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 4ba: 7e23 ldrb r3, [r4, #24] ASSERT(false); 4bc: 4915 ldr r1, [pc, #84] ; (514 ) descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 4be: f003 03fe and.w r3, r3, #254 ; 0xfe ASSERT(false); 4c2: 2000 movs r0, #0 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 4c4: 7623 strb r3, [r4, #24] ASSERT(false); 4c6: 227f movs r2, #127 ; 0x7f 4c8: 47c0 blx r8 return ERR_ALREADY_INITIALIZED; 4ca: f06f 0011 mvn.w r0, #17 } 4ce: b002 add sp, #8 4d0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} task->time_label = descr->time; 4d4: 6922 ldr r2, [r4, #16] timer_add_timer_task(&descr->tasks, task, descr->time); 4d6: 4b11 ldr r3, [pc, #68] ; (51c ) task->time_label = descr->time; 4d8: 606a str r2, [r5, #4] timer_add_timer_task(&descr->tasks, task, descr->time); 4da: 4629 mov r1, r5 4dc: 4638 mov r0, r7 4de: 4798 blx r3 descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN; 4e0: 7e23 ldrb r3, [r4, #24] 4e2: f003 03fe and.w r3, r3, #254 ; 0xfe 4e6: 7623 strb r3, [r4, #24] if (descr->flags & TIMER_FLAG_INTERRUPT_TRIGERRED) { 4e8: 7e23 ldrb r3, [r4, #24] 4ea: f013 0302 ands.w r3, r3, #2 4ee: d00e beq.n 50e CRITICAL_SECTION_ENTER() 4f0: 4b0b ldr r3, [pc, #44] ; (520 ) 4f2: a801 add r0, sp, #4 4f4: 4798 blx r3 descr->flags &= ~TIMER_FLAG_INTERRUPT_TRIGERRED; 4f6: 7e23 ldrb r3, [r4, #24] 4f8: f003 03fd and.w r3, r3, #253 ; 0xfd 4fc: 7623 strb r3, [r4, #24] _timer_set_irq(&descr->device); 4fe: 4620 mov r0, r4 500: 4b08 ldr r3, [pc, #32] ; (524 ) 502: 4798 blx r3 CRITICAL_SECTION_LEAVE() 504: a801 add r0, sp, #4 506: 4b08 ldr r3, [pc, #32] ; (528 ) 508: 4798 blx r3 return ERR_NONE; 50a: 4630 mov r0, r6 50c: e7df b.n 4ce 50e: 4618 mov r0, r3 510: e7dd b.n 4ce 512: bf00 nop 514: 0001635c .word 0x0001635c 518: 00000605 .word 0x00000605 51c: 00000361 .word 0x00000361 520: 00000f49 .word 0x00000f49 524: 00000eed .word 0x00000eed 528: 00000f57 .word 0x00000f57 52c: 00000655 .word 0x00000655 00000530 : /** * \brief Initialize Delay driver */ void delay_init(void *const hw) { _delay_init(hardware = hw); 530: 4b01 ldr r3, [pc, #4] ; (538 ) 532: 6018 str r0, [r3, #0] 534: 4b01 ldr r3, [pc, #4] ; (53c ) 536: 4718 bx r3 538: 20000094 .word 0x20000094 53c: 00000357 .word 0x00000357 00000540 : /** * \brief Perform delay in us */ void delay_us(const uint16_t us) { _delay_cycles(hardware, _get_cycles_for_us(us)); 540: 4b05 ldr r3, [pc, #20] ; (558 ) { 542: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_us(us)); 544: 681c ldr r4, [r3, #0] 546: 4b05 ldr r3, [pc, #20] ; (55c ) 548: 4798 blx r3 54a: 4b05 ldr r3, [pc, #20] ; (560 ) 54c: 4601 mov r1, r0 54e: 4620 mov r0, r4 } 550: e8bd 4010 ldmia.w sp!, {r4, lr} _delay_cycles(hardware, _get_cycles_for_us(us)); 554: 4718 bx r3 556: bf00 nop 558: 20000094 .word 0x20000094 55c: 00000335 .word 0x00000335 560: 00000359 .word 0x00000359 00000564 : /** * \brief Perform delay in ms */ void delay_ms(const uint16_t ms) { _delay_cycles(hardware, _get_cycles_for_ms(ms)); 564: 4b05 ldr r3, [pc, #20] ; (57c ) { 566: b510 push {r4, lr} _delay_cycles(hardware, _get_cycles_for_ms(ms)); 568: 681c ldr r4, [r3, #0] 56a: 4b05 ldr r3, [pc, #20] ; (580 ) 56c: 4798 blx r3 56e: 4b05 ldr r3, [pc, #20] ; (584 ) 570: 4601 mov r1, r0 572: 4620 mov r0, r4 } 574: e8bd 4010 ldmia.w sp!, {r4, lr} _delay_cycles(hardware, _get_cycles_for_ms(ms)); 578: 4718 bx r3 57a: bf00 nop 57c: 20000094 .word 0x20000094 580: 00000343 .word 0x00000343 584: 00000359 .word 0x00000359 00000588 <_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); 588: 4a0a ldr r2, [pc, #40] ; (5b4 <_init_chip+0x2c>) 58a: 8813 ldrh r3, [r2, #0] 58c: b29b uxth r3, r3 /** * \brief Initialize the hardware abstraction layer */ void _init_chip(void) { 58e: b510 push {r4, lr} 590: f443 63a0 orr.w r3, r3, #1280 ; 0x500 594: 8013 strh r3, [r2, #0] hri_nvmctrl_set_CTRLA_RWS_bf(NVMCTRL, CONF_NVM_WAIT_STATE); _osc32kctrl_init_sources(); 596: 4b08 ldr r3, [pc, #32] ; (5b8 <_init_chip+0x30>) 598: 4798 blx r3 _oscctrl_init_sources(); 59a: 4b08 ldr r3, [pc, #32] ; (5bc <_init_chip+0x34>) 59c: 4798 blx r3 _mclk_init(); 59e: 4b08 ldr r3, [pc, #32] ; (5c0 <_init_chip+0x38>) 5a0: 4798 blx r3 #if _GCLK_INIT_1ST _gclk_init_generators_by_fref(_GCLK_INIT_1ST); #endif _oscctrl_init_referenced_generators(); 5a2: 4b08 ldr r3, [pc, #32] ; (5c4 <_init_chip+0x3c>) 5a4: 4798 blx r3 #endif #if CONF_CMCC_ENABLE cache_init(); #endif } 5a6: e8bd 4010 ldmia.w sp!, {r4, lr} _gclk_init_generators_by_fref(_GCLK_INIT_LAST); 5aa: 4b07 ldr r3, [pc, #28] ; (5c8 <_init_chip+0x40>) 5ac: f640 70ff movw r0, #4095 ; 0xfff 5b0: 4718 bx r3 5b2: bf00 nop 5b4: 41004000 .word 0x41004000 5b8: 00000a3d .word 0x00000a3d 5bc: 0000065b .word 0x0000065b 5c0: 00000699 .word 0x00000699 5c4: 0000065d .word 0x0000065d 5c8: 00000935 .word 0x00000935 000005cc : return tmp; } static inline hri_ramecc_intflag_reg_t hri_ramecc_read_INTFLAG_reg(const void *const hw) { return ((Ramecc *)hw)->INTFLAG.reg; 5cc: 4a0b ldr r2, [pc, #44] ; (5fc ) 5ce: 7893 ldrb r3, [r2, #2] /** * \internal RAMECC interrupt handler */ void RAMECC_Handler(void) { 5d0: b082 sub sp, #8 5d2: b2db uxtb r3, r3 struct _ramecc_device *dev = (struct _ramecc_device *)&device; volatile uint32_t int_mask = hri_ramecc_read_INTFLAG_reg(RAMECC); 5d4: 9301 str r3, [sp, #4] if (int_mask & RAMECC_INTFLAG_DUALE && dev->ramecc_cb.dual_bit_err) { 5d6: 9b01 ldr r3, [sp, #4] 5d8: 0799 lsls r1, r3, #30 5da: d505 bpl.n 5e8 5dc: 4b08 ldr r3, [pc, #32] ; (600 ) 5de: 681b ldr r3, [r3, #0] 5e0: b113 cbz r3, 5e8 return tmp; } static inline hri_ramecc_erraddr_reg_t hri_ramecc_read_ERRADDR_reg(const void *const hw) { return ((Ramecc *)hw)->ERRADDR.reg; 5e2: 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; } } 5e4: b002 add sp, #8 dev->ramecc_cb.single_bit_err((uint32_t)hri_ramecc_read_ERRADDR_reg(RAMECC)); 5e6: 4718 bx r3 } else if (int_mask & RAMECC_INTFLAG_SINGLEE && dev->ramecc_cb.single_bit_err) { 5e8: 9b01 ldr r3, [sp, #4] 5ea: 07db lsls r3, r3, #31 5ec: d504 bpl.n 5f8 5ee: 4b04 ldr r3, [pc, #16] ; (600 ) 5f0: 685b ldr r3, [r3, #4] 5f2: b10b cbz r3, 5f8 5f4: 4a01 ldr r2, [pc, #4] ; (5fc ) 5f6: e7f4 b.n 5e2 } 5f8: b002 add sp, #8 5fa: 4770 bx lr 5fc: 41020000 .word 0x41020000 600: 20000098 .word 0x20000098 00000604 : * \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) { 604: 6800 ldr r0, [r0, #0] 606: b900 cbnz r0, 60a 608: 4770 bx lr if (it == element) { 60a: 4288 cmp r0, r1 60c: d1fa bne.n 604 return true; 60e: 2001 movs r0, #1 } } return false; } 610: 4770 bx lr ... 00000614 : /** * \brief Insert an element as list head */ void list_insert_as_head(struct list_descriptor *const list, void *const element) { 614: b538 push {r3, r4, r5, lr} ASSERT(!is_list_element(list, element)); 616: 4b07 ldr r3, [pc, #28] ; (634 ) { 618: 4604 mov r4, r0 ASSERT(!is_list_element(list, element)); 61a: 4798 blx r3 61c: f080 0001 eor.w r0, r0, #1 { 620: 460d mov r5, r1 ASSERT(!is_list_element(list, element)); 622: 4b05 ldr r3, [pc, #20] ; (638 ) 624: 4905 ldr r1, [pc, #20] ; (63c ) 626: 2239 movs r2, #57 ; 0x39 628: b2c0 uxtb r0, r0 62a: 4798 blx r3 ((struct list_element *)element)->next = list->head; 62c: 6823 ldr r3, [r4, #0] 62e: 602b str r3, [r5, #0] list->head = (struct list_element *)element; 630: 6025 str r5, [r4, #0] } 632: bd38 pop {r3, r4, r5, pc} 634: 00000605 .word 0x00000605 638: 00000655 .word 0x00000655 63c: 00016373 .word 0x00016373 00000640 : /** * \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; 640: 6803 ldr r3, [r0, #0] 642: 600b str r3, [r1, #0] ((struct list_element *)after)->next = (struct list_element *)element; 644: 6001 str r1, [r0, #0] } 646: 4770 bx lr 00000648 : /** * \brief Removes list head */ void *list_remove_head(struct list_descriptor *const list) { if (list->head) { 648: 6803 ldr r3, [r0, #0] 64a: b10b cbz r3, 650 struct list_element *tmp = list->head; list->head = list->head->next; 64c: 681a ldr r2, [r3, #0] 64e: 6002 str r2, [r0, #0] return (void *)tmp; } return NULL; } 650: 4618 mov r0, r3 652: 4770 bx lr 00000654 : /** * \brief Assert function */ void assert(const bool condition, const char *const file, const int line) { if (!(condition)) { 654: b900 cbnz r0, 658 __asm("BKPT #0"); 656: be00 bkpt 0x0000 } (void)file; (void)line; } 658: 4770 bx lr 0000065a <_oscctrl_init_sources>: hri_oscctrl_set_XOSCCTRL_ONDEMAND_bit(hw, 1); #endif #endif (void)hw; } 65a: 4770 bx lr 0000065c <_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; 65c: 4b0c ldr r3, [pc, #48] ; (690 <_oscctrl_init_referenced_generators+0x34>) 65e: 4a0d ldr r2, [pc, #52] ; (694 <_oscctrl_init_referenced_generators+0x38>) 660: 635a str r2, [r3, #52] ; 0x34 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 662: 6bda ldr r2, [r3, #60] ; 0x3c 664: f012 0f06 tst.w r2, #6 668: d1fb bne.n 662 <_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; 66a: f44f 6202 mov.w r2, #2080 ; 0x820 66e: 639a str r2, [r3, #56] ; 0x38 ((Oscctrl *)hw)->Dpll[submodule_index].DPLLCTRLA.reg = data; 670: 2202 movs r2, #2 672: f883 2030 strb.w r2, [r3, #48] ; 0x30 while (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSYNCBUSY.reg & reg) { 676: 4a06 ldr r2, [pc, #24] ; (690 <_oscctrl_init_referenced_generators+0x34>) 678: 6bd3 ldr r3, [r2, #60] ; 0x3c 67a: 0798 lsls r0, r3, #30 67c: d4fc bmi.n 678 <_oscctrl_init_referenced_generators+0x1c> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_LOCK) 67e: 4b04 ldr r3, [pc, #16] ; (690 <_oscctrl_init_referenced_generators+0x34>) 680: 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))) 682: 07d1 lsls r1, r2, #31 684: d402 bmi.n 68c <_oscctrl_init_referenced_generators+0x30> return (((Oscctrl *)hw)->Dpll[submodule_index].DPLLSTATUS.reg & OSCCTRL_DPLLSTATUS_CLKRDY) 686: 6c1a ldr r2, [r3, #64] ; 0x40 688: 0792 lsls r2, r2, #30 68a: d5f9 bpl.n 680 <_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; } 68c: 4770 bx lr 68e: bf00 nop 690: 40001000 .word 0x40001000 694: 00010e4d .word 0x00010e4d 00000698 <_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; 698: 4b01 ldr r3, [pc, #4] ; (6a0 <_mclk_init+0x8>) 69a: 2201 movs r2, #1 69c: 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)); } 69e: 4770 bx lr 6a0: 40000800 .word 0x40000800 000006a4 : while (((Sercom *)hw)->I2CM.SYNCBUSY.reg & reg) { 6a4: 69c3 ldr r3, [r0, #28] 6a6: 420b tst r3, r1 6a8: d1fc bne.n 6a4 } 6aa: 4770 bx lr 000006ac : ((Sercom *)hw)->I2CM.CTRLA.reg |= SERCOM_I2CM_CTRLA_ENABLE; 6ac: 6802 ldr r2, [r0, #0] hri_sercomi2cm_wait_for_sync(hw, SERCOM_I2CM_SYNCBUSY_SWRST | SERCOM_I2CM_SYNCBUSY_ENABLE); 6ae: 4b03 ldr r3, [pc, #12] ; (6bc ) ((Sercom *)hw)->I2CM.CTRLA.reg |= SERCOM_I2CM_CTRLA_ENABLE; 6b0: f042 0202 orr.w r2, r2, #2 6b4: 6002 str r2, [r0, #0] hri_sercomi2cm_wait_for_sync(hw, SERCOM_I2CM_SYNCBUSY_SWRST | SERCOM_I2CM_SYNCBUSY_ENABLE); 6b6: 2103 movs r1, #3 6b8: 4718 bx r3 6ba: bf00 nop 6bc: 000006a5 .word 0x000006a5 000006c0 : ((Sercom *)hw)->I2CM.CTRLA.reg &= ~SERCOM_I2CM_CTRLA_ENABLE; 6c0: 6802 ldr r2, [r0, #0] hri_sercomi2cm_wait_for_sync(hw, SERCOM_I2CM_SYNCBUSY_SWRST | SERCOM_I2CM_SYNCBUSY_ENABLE); 6c2: 4b03 ldr r3, [pc, #12] ; (6d0 ) ((Sercom *)hw)->I2CM.CTRLA.reg &= ~SERCOM_I2CM_CTRLA_ENABLE; 6c4: f022 0202 bic.w r2, r2, #2 6c8: 6002 str r2, [r0, #0] hri_sercomi2cm_wait_for_sync(hw, SERCOM_I2CM_SYNCBUSY_SWRST | SERCOM_I2CM_SYNCBUSY_ENABLE); 6ca: 2103 movs r1, #3 6cc: 4718 bx r3 6ce: bf00 nop 6d0: 000006a5 .word 0x000006a5 000006d4 : ((Sercom *)hw)->I2CM.CTRLA.reg = data; 6d4: 6001 str r1, [r0, #0] hri_sercomi2cm_wait_for_sync(hw, SERCOM_I2CM_SYNCBUSY_SWRST | SERCOM_I2CM_SYNCBUSY_ENABLE); 6d6: 4b01 ldr r3, [pc, #4] ; (6dc ) 6d8: 2103 movs r1, #3 6da: 4718 bx r3 6dc: 000006a5 .word 0x000006a5 000006e0 <_sercom_get_hardware_index>: { 6e0: b570 push {r4, r5, r6, lr} Sercom *const sercom_modules[] = SERCOM_INSTS; 6e2: 4d0c ldr r5, [pc, #48] ; (714 <_sercom_get_hardware_index+0x34>) { 6e4: 4606 mov r6, r0 Sercom *const sercom_modules[] = SERCOM_INSTS; 6e6: cd0f ldmia r5!, {r0, r1, r2, r3} { 6e8: b088 sub sp, #32 Sercom *const sercom_modules[] = SERCOM_INSTS; 6ea: 466c mov r4, sp 6ec: c40f stmia r4!, {r0, r1, r2, r3} 6ee: e895 000f ldmia.w r5, {r0, r1, r2, r3} 6f2: e884 000f stmia.w r4, {r0, r1, r2, r3} for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 6f6: 466a mov r2, sp 6f8: 2300 movs r3, #0 if ((uint32_t)hw == (uint32_t)sercom_modules[i]) { 6fa: f852 1b04 ldr.w r1, [r2], #4 6fe: 42b1 cmp r1, r6 700: d102 bne.n 708 <_sercom_get_hardware_index+0x28> return i; 702: b2d8 uxtb r0, r3 } 704: b008 add sp, #32 706: bd70 pop {r4, r5, r6, pc} for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 708: 3301 adds r3, #1 70a: 2b08 cmp r3, #8 70c: d1f5 bne.n 6fa <_sercom_get_hardware_index+0x1a> return 0; 70e: 2000 movs r0, #0 710: e7f8 b.n 704 <_sercom_get_hardware_index+0x24> 712: bf00 nop 714: 000163ac .word 0x000163ac 00000718 <_sercom_get_irq_num>: { 718: b508 push {r3, lr} return SERCOM0_0_IRQn + (_sercom_get_hardware_index(hw) << 2); 71a: 4b03 ldr r3, [pc, #12] ; (728 <_sercom_get_irq_num+0x10>) 71c: 4798 blx r3 71e: 0080 lsls r0, r0, #2 720: 302e adds r0, #46 ; 0x2e } 722: f000 00fe and.w r0, r0, #254 ; 0xfe 726: bd08 pop {r3, pc} 728: 000006e1 .word 0x000006e1 0000072c <__NVIC_EnableIRQ>: NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 72c: 0941 lsrs r1, r0, #5 72e: 4a04 ldr r2, [pc, #16] ; (740 <__NVIC_EnableIRQ+0x14>) 730: f000 001f and.w r0, r0, #31 734: 2301 movs r3, #1 736: 4083 lsls r3, r0 738: f842 3021 str.w r3, [r2, r1, lsl #2] } 73c: 4770 bx lr 73e: bf00 nop 740: e000e100 .word 0xe000e100 00000744 <__NVIC_DisableIRQ>: NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); 744: 0943 lsrs r3, r0, #5 746: 4906 ldr r1, [pc, #24] ; (760 <__NVIC_DisableIRQ+0x1c>) 748: f000 001f and.w r0, r0, #31 74c: 3320 adds r3, #32 74e: 2201 movs r2, #1 750: 4082 lsls r2, r0 752: f841 2023 str.w r2, [r1, 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"); 756: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 75a: f3bf 8f6f isb sy } 75e: 4770 bx lr 760: e000e100 .word 0xe000e100 00000764 <__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)); 764: 0943 lsrs r3, r0, #5 766: 4904 ldr r1, [pc, #16] ; (778 <__NVIC_ClearPendingIRQ+0x14>) 768: f000 001f and.w r0, r0, #31 76c: 2201 movs r2, #1 76e: 3360 adds r3, #96 ; 0x60 770: 4082 lsls r2, r0 772: f841 2023 str.w r2, [r1, r3, lsl #2] } } 776: 4770 bx lr 778: e000e100 .word 0xe000e100 0000077c <_usart_init>: { 77c: b570 push {r4, r5, r6, lr} uint8_t sercom_offset = _sercom_get_hardware_index(hw); 77e: 4b19 ldr r3, [pc, #100] ; (7e4 <_usart_init+0x68>) { 780: 4604 mov r4, r0 uint8_t sercom_offset = _sercom_get_hardware_index(hw); 782: 4798 blx r3 if (_usarts[i].number == sercom_offset) { 784: b128 cbz r0, 792 <_usart_init+0x16> ASSERT(false); 786: 4918 ldr r1, [pc, #96] ; (7e8 <_usart_init+0x6c>) 788: 4b18 ldr r3, [pc, #96] ; (7ec <_usart_init+0x70>) 78a: f240 226b movw r2, #619 ; 0x26b 78e: 2000 movs r0, #0 790: 4798 blx r3 return ((Sercom *)hw)->USART.SYNCBUSY.reg & reg; 792: 69e3 ldr r3, [r4, #28] 794: 4d16 ldr r5, [pc, #88] ; (7f0 <_usart_init+0x74>) 796: 4e17 ldr r6, [pc, #92] ; (7f4 <_usart_init+0x78>) if (!hri_sercomusart_is_syncing(hw, SERCOM_USART_SYNCBUSY_SWRST)) { 798: f013 0f01 tst.w r3, #1 79c: d10d bne.n 7ba <_usart_init+0x3e> hri_sercomi2cm_wait_for_sync(hw, SERCOM_I2CM_SYNCBUSY_SWRST | SERCOM_I2CM_SYNCBUSY_ENABLE); 79e: 4b16 ldr r3, [pc, #88] ; (7f8 <_usart_init+0x7c>) 7a0: 2103 movs r1, #3 7a2: 4620 mov r0, r4 7a4: 4798 blx r3 tmp = ((Sercom *)hw)->I2CM.CTRLA.reg; 7a6: 6823 ldr r3, [r4, #0] if (hri_sercomusart_get_CTRLA_reg(hw, SERCOM_USART_CTRLA_ENABLE)) { 7a8: 079b lsls r3, r3, #30 7aa: d503 bpl.n 7b4 <_usart_init+0x38> hri_sercomusart_clear_CTRLA_ENABLE_bit(hw); 7ac: 4b13 ldr r3, [pc, #76] ; (7fc <_usart_init+0x80>) 7ae: 4798 blx r3 hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_ENABLE); 7b0: 2102 movs r1, #2 7b2: 47a8 blx r5 hri_sercomusart_write_CTRLA_reg(hw, SERCOM_USART_CTRLA_SWRST | mode); 7b4: 2105 movs r1, #5 7b6: 4620 mov r0, r4 7b8: 47b0 blx r6 hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_SWRST); 7ba: 4620 mov r0, r4 7bc: 2101 movs r1, #1 7be: 47a8 blx r5 hri_sercomusart_write_CTRLA_reg(hw, _usarts[i].ctrl_a); 7c0: 490f ldr r1, [pc, #60] ; (800 <_usart_init+0x84>) 7c2: 47b0 blx r6 ((Sercom *)hw)->USART.CTRLB.reg = data; 7c4: f44f 3340 mov.w r3, #196608 ; 0x30000 7c8: 6063 str r3, [r4, #4] hri_sercomusart_wait_for_sync(hw, SERCOM_USART_SYNCBUSY_MASK); 7ca: 211f movs r1, #31 7cc: 47a8 blx r5 ((Sercom *)hw)->USART.CTRLC.reg = data; 7ce: 4b0d ldr r3, [pc, #52] ; (804 <_usart_init+0x88>) 7d0: 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; 7d2: f64f 4311 movw r3, #64529 ; 0xfc11 7d6: 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; 7d8: 2300 movs r3, #0 7da: 73a3 strb r3, [r4, #14] } 7dc: 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; 7de: f884 3030 strb.w r3, [r4, #48] ; 0x30 7e2: bd70 pop {r4, r5, r6, pc} 7e4: 000006e1 .word 0x000006e1 7e8: 00016391 .word 0x00016391 7ec: 00000655 .word 0x00000655 7f0: 000006a5 .word 0x000006a5 7f4: 000006d5 .word 0x000006d5 7f8: 000006a5 .word 0x000006a5 7fc: 000006c1 .word 0x000006c1 800: 40100004 .word 0x40100004 804: 00700002 .word 0x00700002 00000808 <_usart_async_init>: { 808: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} ASSERT(device); 80c: 4605 mov r5, r0 80e: 3800 subs r0, #0 810: bf18 it ne 812: 2001 movne r0, #1 814: 4b14 ldr r3, [pc, #80] ; (868 <_usart_async_init+0x60>) { 816: 460c mov r4, r1 ASSERT(device); 818: 22cb movs r2, #203 ; 0xcb 81a: 4914 ldr r1, [pc, #80] ; (86c <_usart_async_init+0x64>) 81c: 4798 blx r3 init_status = _usart_init(hw); 81e: 4b14 ldr r3, [pc, #80] ; (870 <_usart_async_init+0x68>) 820: 4620 mov r0, r4 822: 4798 blx r3 if (init_status) { 824: 4606 mov r6, r0 826: b9d8 cbnz r0, 860 <_usart_async_init+0x58> if (hw == SERCOM0) { 828: 4b12 ldr r3, [pc, #72] ; (874 <_usart_async_init+0x6c>) device->hw = hw; 82a: 61ac str r4, [r5, #24] if (hw == SERCOM0) { 82c: 429c cmp r4, r3 _sercom0_dev = (struct _usart_async_device *)dev; 82e: bf08 it eq 830: 4b11 ldreq r3, [pc, #68] ; (878 <_usart_async_init+0x70>) NVIC_DisableIRQ((IRQn_Type)irq); 832: f8df 9050 ldr.w r9, [pc, #80] ; 884 <_usart_async_init+0x7c> _sercom0_dev = (struct _usart_async_device *)dev; 836: bf08 it eq 838: 601d streq r5, [r3, #0] uint8_t irq = _sercom_get_irq_num(hw); 83a: 4620 mov r0, r4 83c: 4b0f ldr r3, [pc, #60] ; (87c <_usart_async_init+0x74>) NVIC_ClearPendingIRQ((IRQn_Type)irq); 83e: f8df 8048 ldr.w r8, [pc, #72] ; 888 <_usart_async_init+0x80> NVIC_EnableIRQ((IRQn_Type)irq); 842: 4f0f ldr r7, [pc, #60] ; (880 <_usart_async_init+0x78>) uint8_t irq = _sercom_get_irq_num(hw); 844: 4798 blx r3 for (uint32_t i = 0; i < 4; i++) { 846: 2400 movs r4, #0 uint8_t irq = _sercom_get_irq_num(hw); 848: 4605 mov r5, r0 NVIC_DisableIRQ((IRQn_Type)irq); 84a: 192b adds r3, r5, r4 84c: b2d8 uxtb r0, r3 84e: 9001 str r0, [sp, #4] 850: 47c8 blx r9 NVIC_ClearPendingIRQ((IRQn_Type)irq); 852: 9801 ldr r0, [sp, #4] 854: 47c0 blx r8 for (uint32_t i = 0; i < 4; i++) { 856: 3401 adds r4, #1 NVIC_EnableIRQ((IRQn_Type)irq); 858: 9801 ldr r0, [sp, #4] 85a: 47b8 blx r7 for (uint32_t i = 0; i < 4; i++) { 85c: 2c04 cmp r4, #4 85e: d1f4 bne.n 84a <_usart_async_init+0x42> } 860: 4630 mov r0, r6 862: b003 add sp, #12 864: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 868: 00000655 .word 0x00000655 86c: 00016391 .word 0x00016391 870: 0000077d .word 0x0000077d 874: 40003000 .word 0x40003000 878: 200000a8 .word 0x200000a8 87c: 00000719 .word 0x00000719 880: 0000072d .word 0x0000072d 884: 00000745 .word 0x00000745 888: 00000765 .word 0x00000765 0000088c <_usart_async_enable>: hri_sercomusart_set_CTRLA_ENABLE_bit(device->hw); 88c: 6980 ldr r0, [r0, #24] 88e: 4b01 ldr r3, [pc, #4] ; (894 <_usart_async_enable+0x8>) 890: 4718 bx r3 892: bf00 nop 894: 000006ad .word 0x000006ad 00000898 <_usart_async_write_byte>: hri_sercomusart_write_DATA_reg(device->hw, data); 898: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.DATA.reg = data; 89a: 6299 str r1, [r3, #40] ; 0x28 } 89c: 4770 bx lr 0000089e <_usart_async_enable_byte_sent_irq>: hri_sercomusart_set_INTEN_DRE_bit(device->hw); 89e: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_DRE; 8a0: 2201 movs r2, #1 8a2: 759a strb r2, [r3, #22] } 8a4: 4770 bx lr 000008a6 <_usart_async_enable_tx_done_irq>: hri_sercomusart_set_INTEN_TXC_bit(device->hw); 8a6: 6983 ldr r3, [r0, #24] ((Sercom *)hw)->USART.INTENSET.reg = SERCOM_USART_INTENSET_TXC; 8a8: 2202 movs r2, #2 8aa: 759a strb r2, [r3, #22] } 8ac: 4770 bx lr ... 000008b0 : /** * \internal Sercom interrupt handler */ void SERCOM0_0_Handler(void) { _sercom_usart_interrupt_handler(_sercom0_dev); 8b0: 4b19 ldr r3, [pc, #100] ; (918 ) 8b2: 6818 ldr r0, [r3, #0] { 8b4: b510 push {r4, lr} void *hw = device->hw; 8b6: 6984 ldr r4, [r0, #24] return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) >> SERCOM_USART_INTFLAG_DRE_Pos; 8b8: 7e23 ldrb r3, [r4, #24] if (hri_sercomusart_get_interrupt_DRE_bit(hw) && hri_sercomusart_get_INTEN_DRE_bit(hw)) { 8ba: 07da lsls r2, r3, #31 8bc: d508 bpl.n 8d0 return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_DRE) >> SERCOM_USART_INTENSET_DRE_Pos; 8be: 7da3 ldrb r3, [r4, #22] 8c0: 07db lsls r3, r3, #31 8c2: d505 bpl.n 8d0 ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_DRE; 8c4: 2301 movs r3, #1 8c6: 7523 strb r3, [r4, #20] device->usart_cb.tx_byte_sent(device); 8c8: 6803 ldr r3, [r0, #0] } 8ca: e8bd 4010 ldmia.w sp!, {r4, lr} device->usart_cb.tx_done_cb(device); 8ce: 4718 bx r3 return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) >> SERCOM_USART_INTFLAG_TXC_Pos; 8d0: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_TXC_bit(hw) && hri_sercomusart_get_INTEN_TXC_bit(hw)) { 8d2: 0799 lsls r1, r3, #30 8d4: d506 bpl.n 8e4 return (((Sercom *)hw)->USART.INTENSET.reg & SERCOM_USART_INTENSET_TXC) >> SERCOM_USART_INTENSET_TXC_Pos; 8d6: 7da3 ldrb r3, [r4, #22] 8d8: 079a lsls r2, r3, #30 8da: d503 bpl.n 8e4 ((Sercom *)hw)->USART.INTENCLR.reg = SERCOM_USART_INTENSET_TXC; 8dc: 2302 movs r3, #2 8de: 7523 strb r3, [r4, #20] device->usart_cb.tx_done_cb(device); 8e0: 6883 ldr r3, [r0, #8] 8e2: e7f2 b.n 8ca return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC) >> SERCOM_USART_INTFLAG_RXC_Pos; 8e4: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_RXC_bit(hw)) { 8e6: 075b lsls r3, r3, #29 8e8: d50c bpl.n 904 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; 8ea: 8b63 ldrh r3, [r4, #26] if (hri_sercomusart_read_STATUS_reg(hw) 8ec: f003 0337 and.w r3, r3, #55 ; 0x37 8f0: b113 cbz r3, 8f8 ((Sercom *)hw)->USART.STATUS.reg = mask; 8f2: 23ff movs r3, #255 ; 0xff 8f4: 8363 strh r3, [r4, #26] } 8f6: bd10 pop {r4, pc} return ((Sercom *)hw)->USART.DATA.reg; 8f8: 6aa1 ldr r1, [r4, #40] ; 0x28 device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw)); 8fa: 6843 ldr r3, [r0, #4] } 8fc: e8bd 4010 ldmia.w sp!, {r4, lr} device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw)); 900: b2c9 uxtb r1, r1 902: 4718 bx r3 return (((Sercom *)hw)->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_ERROR) >> SERCOM_USART_INTFLAG_ERROR_Pos; 904: 7e23 ldrb r3, [r4, #24] } else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) { 906: 09db lsrs r3, r3, #7 908: d0f5 beq.n 8f6 ((Sercom *)hw)->USART.INTFLAG.reg = SERCOM_USART_INTFLAG_ERROR; 90a: 2380 movs r3, #128 ; 0x80 90c: 7623 strb r3, [r4, #24] device->usart_cb.error_cb(device); 90e: 68c3 ldr r3, [r0, #12] 910: 4798 blx r3 return ((Sercom *)hw)->USART.STATUS.reg; 912: 8b63 ldrh r3, [r4, #26] 914: b29b uxth r3, r3 916: e7ed b.n 8f4 918: 200000a8 .word 0x200000a8 0000091c : 91c: 4b00 ldr r3, [pc, #0] ; (920 ) 91e: 4718 bx r3 920: 000008b1 .word 0x000008b1 00000924 : 924: 4b00 ldr r3, [pc, #0] ; (928 ) 926: 4718 bx r3 928: 000008b1 .word 0x000008b1 0000092c : 92c: 4b00 ldr r3, [pc, #0] ; (930 ) 92e: 4718 bx r3 930: 000008b1 .word 0x000008b1 00000934 <_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)) { 934: 07c3 lsls r3, r0, #31 936: d507 bpl.n 948 <_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; 938: 4b04 ldr r3, [pc, #16] ; (94c <_gclk_init_generators_by_fref+0x18>) 93a: 4a05 ldr r2, [pc, #20] ; (950 <_gclk_init_generators_by_fref+0x1c>) 93c: 621a str r2, [r3, #32] while (((Gclk *)hw)->SYNCBUSY.reg & reg) { 93e: f643 72fd movw r2, #16381 ; 0x3ffd 942: 6859 ldr r1, [r3, #4] 944: 4211 tst r1, r2 946: d1fc bne.n 942 <_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 } 948: 4770 bx lr 94a: bf00 nop 94c: 40001c00 .word 0x40001c00 950: 00010107 .word 0x00010107 00000954 : /** * \brief Default interrupt handler for unused IRQs. */ void Dummy_Handler(void) { while (1) { 954: e7fe b.n 954 ... 00000958 : if (pSrc != pDest) { 958: 4918 ldr r1, [pc, #96] ; (9bc ) 95a: 4819 ldr r0, [pc, #100] ; (9c0 ) 95c: 4281 cmp r1, r0 { 95e: b510 push {r4, lr} if (pSrc != pDest) { 960: d00a beq.n 978 *pDest++ = *pSrc++; 962: 4b18 ldr r3, [pc, #96] ; (9c4 ) 964: 1cda adds r2, r3, #3 966: 1a12 subs r2, r2, r0 968: f022 0203 bic.w r2, r2, #3 96c: 1ec4 subs r4, r0, #3 96e: 42a3 cmp r3, r4 970: bf38 it cc 972: 2200 movcc r2, #0 974: 4b14 ldr r3, [pc, #80] ; (9c8 ) 976: 4798 blx r3 *pDest++ = 0; 978: 4b14 ldr r3, [pc, #80] ; (9cc ) 97a: 4815 ldr r0, [pc, #84] ; (9d0 ) 97c: 1cda adds r2, r3, #3 97e: 1a12 subs r2, r2, r0 980: 1ec1 subs r1, r0, #3 982: f022 0203 bic.w r2, r2, #3 986: 4299 cmp r1, r3 988: bf88 it hi 98a: 2200 movhi r2, #0 98c: 4b11 ldr r3, [pc, #68] ; (9d4 ) 98e: 2100 movs r1, #0 990: 4798 blx r3 SCB->VTOR = ((uint32_t)pSrc & SCB_VTOR_TBLOFF_Msk); 992: 4a11 ldr r2, [pc, #68] ; (9d8 ) 994: 4b11 ldr r3, [pc, #68] ; (9dc ) 996: f022 027f bic.w r2, r2, #127 ; 0x7f 99a: 609a str r2, [r3, #8] SCB->CPACR |= (0xFu << 20); 99c: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 9a0: f442 0270 orr.w r2, r2, #15728640 ; 0xf00000 9a4: f8c3 2088 str.w r2, [r3, #136] ; 0x88 __ASM volatile ("dsb 0xF":::"memory"); 9a8: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); 9ac: f3bf 8f6f isb sy __libc_init_array(); 9b0: 4b0b ldr r3, [pc, #44] ; (9e0 ) 9b2: 4798 blx r3 main(); 9b4: 4b0b ldr r3, [pc, #44] ; (9e4 ) 9b6: 4798 blx r3 while (1) 9b8: e7fe b.n 9b8 9ba: bf00 nop 9bc: 000246e4 .word 0x000246e4 9c0: 20000000 .word 0x20000000 9c4: 20000074 .word 0x20000074 9c8: 000162b5 .word 0x000162b5 9cc: 2000c800 .word 0x2000c800 9d0: 20000078 .word 0x20000078 9d4: 00016305 .word 0x00016305 9d8: 00000000 .word 0x00000000 9dc: e000ed00 .word 0xe000ed00 9e0: 0001624d .word 0x0001624d 9e4: 000009e9 .word 0x000009e9 000009e8
: #include "oracle.h" int main(void) { 9e8: b508 push {r3, lr} oracle_init(); 9ea: 4b02 ldr r3, [pc, #8] ; (9f4 ) for(;;) { oracle_service(); 9ec: 4c02 ldr r4, [pc, #8] ; (9f8 ) oracle_init(); 9ee: 4798 blx r3 oracle_service(); 9f0: 47a0 blx r4 for(;;) 9f2: e7fd b.n 9f0 9f4: 000009fd .word 0x000009fd 9f8: 00000a35 .word 0x00000a35 000009fc : #include "p_ssd1963.h" #include "p_screen.h" void oracle_init(void) { 9fc: b510 push {r4, lr} * Currently the following initialization functions are supported: * - System clock initialization */ static inline void init_mcu(void) { _init_chip(); 9fe: 4b07 ldr r3, [pc, #28] ; (a1c ) a00: 4798 blx r3 // init mcu init_mcu(); // uart init p_usart_init(); a02: 4b07 ldr r3, [pc, #28] ; (a20 ) a04: 4798 blx r3 // i2c init p_i2c_init(); a06: 4b07 ldr r3, [pc, #28] ; (a24 ) a08: 4798 blx r3 // gpio init p_gpio_init(); a0a: 4b07 ldr r3, [pc, #28] ; (a28 ) a0c: 4798 blx r3 // time init p_tcc_init(); a0e: 4b07 ldr r3, [pc, #28] ; (a2c ) a10: 4798 blx r3 p_screen_init(); } a12: e8bd 4010 ldmia.w sp!, {r4, lr} p_screen_init(); a16: 4b06 ldr r3, [pc, #24] ; (a30 ) a18: 4718 bx r3 a1a: bf00 nop a1c: 00000589 .word 0x00000589 a20: 0000130d .word 0x0000130d a24: 0000126d .word 0x0000126d a28: 000011a5 .word 0x000011a5 a2c: 00001295 .word 0x00001295 a30: 000013b9 .word 0x000013b9 00000a34 : void oracle_service(void) { p_screen_service(); a34: 4b00 ldr r3, [pc, #0] ; (a38 ) a36: 4718 bx r3 a38: 00001465 .word 0x00001465 00000a3c <_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; a3c: 4b06 ldr r3, [pc, #24] ; (a58 <_osc32kctrl_init_sources+0x1c>) a3e: f242 328e movw r2, #9102 ; 0x238e a42: 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; a44: 2200 movs r2, #0 a46: 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; a48: 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; a4a: 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) a4c: 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; a50: 61da str r2, [r3, #28] ((Osc32kctrl *)hw)->RTCCTRL.reg = data; a52: 2201 movs r2, #1 a54: 741a strb r2, [r3, #16] #endif #endif hri_osc32kctrl_write_RTCCTRL_reg(hw, OSC32KCTRL_RTCCTRL_RTCSEL(CONF_RTCCTRL)); (void)calib; } a56: 4770 bx lr a58: 40001400 .word 0x40001400 00000a5c : */ 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; a5c: 2300 movs r3, #0 a5e: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.tx_done) { a60: 69c3 ldr r3, [r0, #28] a62: b10b cbz r3, a68 descr->usart_cb.tx_done(descr); a64: 3808 subs r0, #8 a66: 4718 bx r3 } } a68: 4770 bx lr 00000a6a : */ 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; a6a: 2300 movs r3, #0 a6c: 6283 str r3, [r0, #40] ; 0x28 if (descr->usart_cb.error) { a6e: 6a43 ldr r3, [r0, #36] ; 0x24 a70: b10b cbz r3, a76 descr->usart_cb.error(descr); a72: 3808 subs r0, #8 a74: 4718 bx r3 } } a76: 4770 bx lr 00000a78 : { a78: b570 push {r4, r5, r6, lr} a7a: 4604 mov r4, r0 ringbuffer_put(&descr->rx, data); a7c: 4b05 ldr r3, [pc, #20] ; (a94 ) a7e: f1a0 0508 sub.w r5, r0, #8 a82: 302c adds r0, #44 ; 0x2c a84: 4798 blx r3 if (descr->usart_cb.rx_done) { a86: 6a23 ldr r3, [r4, #32] a88: b11b cbz r3, a92 descr->usart_cb.rx_done(descr); a8a: 4628 mov r0, r5 } a8c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} descr->usart_cb.rx_done(descr); a90: 4718 bx r3 } a92: bd70 pop {r4, r5, r6, pc} a94: 00000cc9 .word 0x00000cc9 00000a98 : { a98: b570 push {r4, r5, r6, lr} a9a: 460e mov r6, r1 a9c: 4615 mov r5, r2 ASSERT(descr && buf && length); a9e: 4604 mov r4, r0 aa0: b118 cbz r0, aaa aa2: b1d9 cbz r1, adc aa4: 1e10 subs r0, r2, #0 aa6: bf18 it ne aa8: 2001 movne r0, #1 aaa: 4b0f ldr r3, [pc, #60] ; (ae8 ) aac: 490f ldr r1, [pc, #60] ; (aec ) aae: f240 123b movw r2, #315 ; 0x13b ab2: 4798 blx r3 if (descr->tx_por != descr->tx_buffer_length) { ab4: f8b4 2044 ldrh.w r2, [r4, #68] ; 0x44 ab8: f8b4 304c ldrh.w r3, [r4, #76] ; 0x4c abc: 429a cmp r2, r3 abe: d10f bne.n ae0 descr->tx_por = 0; ac0: 2300 movs r3, #0 ac2: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 descr->stat = USART_ASYNC_STATUS_BUSY; ac6: 2301 movs r3, #1 ac8: 6323 str r3, [r4, #48] ; 0x30 _usart_async_enable_byte_sent_irq(&descr->device); aca: f104 0008 add.w r0, r4, #8 ace: 4b08 ldr r3, [pc, #32] ; (af0 ) descr->tx_buffer = (uint8_t *)buf; ad0: 64a6 str r6, [r4, #72] ; 0x48 descr->tx_buffer_length = length; ad2: f8a4 504c strh.w r5, [r4, #76] ; 0x4c _usart_async_enable_byte_sent_irq(&descr->device); ad6: 4798 blx r3 return (int32_t)length; ad8: 4628 mov r0, r5 } ada: bd70 pop {r4, r5, r6, pc} ASSERT(descr && buf && length); adc: 4608 mov r0, r1 ade: e7e4 b.n aaa return ERR_NO_RESOURCE; ae0: f06f 001b mvn.w r0, #27 ae4: e7f9 b.n ada ae6: bf00 nop ae8: 00000655 .word 0x00000655 aec: 000163f5 .word 0x000163f5 af0: 0000089f .word 0x0000089f 00000af4 : if (descr->tx_por != descr->tx_buffer_length) { af4: 8f83 ldrh r3, [r0, #60] ; 0x3c af6: f8b0 2044 ldrh.w r2, [r0, #68] ; 0x44 afa: 429a cmp r2, r3 { afc: b510 push {r4, lr} afe: 4604 mov r4, r0 if (descr->tx_por != descr->tx_buffer_length) { b00: d00a beq.n b18 _usart_async_write_byte(&descr->device, descr->tx_buffer[descr->tx_por++]); b02: 6c02 ldr r2, [r0, #64] ; 0x40 b04: 1c59 adds r1, r3, #1 b06: 8781 strh r1, [r0, #60] ; 0x3c b08: 5cd1 ldrb r1, [r2, r3] b0a: 4b04 ldr r3, [pc, #16] ; (b1c ) b0c: 4798 blx r3 _usart_async_enable_byte_sent_irq(&descr->device); b0e: 4b04 ldr r3, [pc, #16] ; (b20 ) b10: 4620 mov r0, r4 } b12: e8bd 4010 ldmia.w sp!, {r4, lr} _usart_async_enable_tx_done_irq(&descr->device); b16: 4718 bx r3 b18: 4b02 ldr r3, [pc, #8] ; (b24 ) b1a: e7fa b.n b12 b1c: 00000899 .word 0x00000899 b20: 0000089f .word 0x0000089f b24: 000008a7 .word 0x000008a7 00000b28 : { b28: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} b2c: 460e mov r6, r1 b2e: 4617 mov r7, r2 ASSERT(descr && buf && length); b30: 4604 mov r4, r0 b32: b118 cbz r0, b3c b34: b1e9 cbz r1, b72 b36: 1e10 subs r0, r2, #0 b38: bf18 it ne b3a: 2001 movne r0, #1 b3c: 4910 ldr r1, [pc, #64] ; (b80 ) b3e: 4b11 ldr r3, [pc, #68] ; (b84 ) ringbuffer_get(&descr->rx, &buf[was_read++]); b40: f8df 9050 ldr.w r9, [pc, #80] ; b94 ASSERT(descr && buf && length); b44: f44f 72ac mov.w r2, #344 ; 0x158 b48: 4798 blx r3 num = ringbuffer_num(&descr->rx); b4a: 3434 adds r4, #52 ; 0x34 CRITICAL_SECTION_ENTER() b4c: 4b0e ldr r3, [pc, #56] ; (b88 ) b4e: a801 add r0, sp, #4 b50: 4798 blx r3 num = ringbuffer_num(&descr->rx); b52: 4b0e ldr r3, [pc, #56] ; (b8c ) b54: 4620 mov r0, r4 b56: 4798 blx r3 CRITICAL_SECTION_LEAVE() b58: 4b0d ldr r3, [pc, #52] ; (b90 ) num = ringbuffer_num(&descr->rx); b5a: 4680 mov r8, r0 CRITICAL_SECTION_LEAVE() b5c: a801 add r0, sp, #4 b5e: 4798 blx r3 while ((was_read < num) && (was_read < length)) { b60: 2500 movs r5, #0 b62: 45a8 cmp r8, r5 b64: d001 beq.n b6a b66: 42bd cmp r5, r7 b68: d105 bne.n b76 } b6a: 4628 mov r0, r5 b6c: b003 add sp, #12 b6e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} ASSERT(descr && buf && length); b72: 4608 mov r0, r1 b74: e7e2 b.n b3c ringbuffer_get(&descr->rx, &buf[was_read++]); b76: 1971 adds r1, r6, r5 b78: 4620 mov r0, r4 b7a: 47c8 blx r9 b7c: 3501 adds r5, #1 b7e: e7f0 b.n b62 b80: 000163f5 .word 0x000163f5 b84: 00000655 .word 0x00000655 b88: 00000f49 .word 0x00000f49 b8c: 00000d09 .word 0x00000d09 b90: 00000f57 .word 0x00000f57 b94: 00000c89 .word 0x00000c89 00000b98 : { b98: b5f8 push {r3, r4, r5, r6, r7, lr} b9a: 460d mov r5, r1 b9c: 4616 mov r6, r2 b9e: 461f mov r7, r3 ASSERT(descr && hw && rx_buffer && rx_buffer_length); ba0: 4604 mov r4, r0 ba2: b120 cbz r0, bae ba4: b309 cbz r1, bea ba6: b312 cbz r2, bee ba8: 1e18 subs r0, r3, #0 baa: bf18 it ne bac: 2001 movne r0, #1 bae: 4912 ldr r1, [pc, #72] ; (bf8 ) bb0: 4b12 ldr r3, [pc, #72] ; (bfc ) bb2: 223a movs r2, #58 ; 0x3a bb4: 4798 blx r3 if (ERR_NONE != ringbuffer_init(&descr->rx, rx_buffer, rx_buffer_length)) { bb6: 4b12 ldr r3, [pc, #72] ; (c00 ) bb8: 463a mov r2, r7 bba: 4631 mov r1, r6 bbc: f104 0034 add.w r0, r4, #52 ; 0x34 bc0: 4798 blx r3 bc2: b9b0 cbnz r0, bf2 init_status = _usart_async_init(&descr->device, hw); bc4: 4b0f ldr r3, [pc, #60] ; (c04 ) bc6: 4629 mov r1, r5 bc8: f104 0008 add.w r0, r4, #8 bcc: 4798 blx r3 if (init_status) { bce: b958 cbnz r0, be8 descr->io.read = usart_async_read; bd0: 4b0d ldr r3, [pc, #52] ; (c08 ) bd2: 6063 str r3, [r4, #4] descr->io.write = usart_async_write; bd4: 4b0d ldr r3, [pc, #52] ; (c0c ) bd6: 6023 str r3, [r4, #0] descr->device.usart_cb.tx_byte_sent = usart_process_byte_sent; bd8: 4b0d ldr r3, [pc, #52] ; (c10 ) bda: 60a3 str r3, [r4, #8] descr->device.usart_cb.rx_done_cb = usart_fill_rx_buffer; bdc: 4b0d ldr r3, [pc, #52] ; (c14 ) bde: 60e3 str r3, [r4, #12] descr->device.usart_cb.tx_done_cb = usart_transmission_complete; be0: 4b0d ldr r3, [pc, #52] ; (c18 ) be2: 6123 str r3, [r4, #16] descr->device.usart_cb.error_cb = usart_error; be4: 4b0d ldr r3, [pc, #52] ; (c1c ) be6: 6163 str r3, [r4, #20] } be8: bdf8 pop {r3, r4, r5, r6, r7, pc} ASSERT(descr && hw && rx_buffer && rx_buffer_length); bea: 4608 mov r0, r1 bec: e7df b.n bae bee: 4610 mov r0, r2 bf0: e7dd b.n bae return ERR_INVALID_ARG; bf2: f06f 000c mvn.w r0, #12 bf6: e7f7 b.n be8 bf8: 000163f5 .word 0x000163f5 bfc: 00000655 .word 0x00000655 c00: 00000c4d .word 0x00000c4d c04: 00000809 .word 0x00000809 c08: 00000b29 .word 0x00000b29 c0c: 00000a99 .word 0x00000a99 c10: 00000af5 .word 0x00000af5 c14: 00000a79 .word 0x00000a79 c18: 00000a5d .word 0x00000a5d c1c: 00000a6b .word 0x00000a6b 00000c20 : { c20: b510 push {r4, lr} ASSERT(descr); c22: 4604 mov r4, r0 c24: 3800 subs r0, #0 c26: bf18 it ne c28: 2001 movne r0, #1 c2a: 4905 ldr r1, [pc, #20] ; (c40 ) c2c: 4b05 ldr r3, [pc, #20] ; (c44 ) c2e: 2261 movs r2, #97 ; 0x61 c30: 4798 blx r3 _usart_async_enable(&descr->device); c32: f104 0008 add.w r0, r4, #8 c36: 4b04 ldr r3, [pc, #16] ; (c48 ) c38: 4798 blx r3 } c3a: 2000 movs r0, #0 c3c: bd10 pop {r4, pc} c3e: bf00 nop c40: 000163f5 .word 0x000163f5 c44: 00000655 .word 0x00000655 c48: 0000088d .word 0x0000088d 00000c4c : /** * \brief Ringbuffer init */ int32_t ringbuffer_init(struct ringbuffer *const rb, void *buf, uint32_t size) { c4c: b570 push {r4, r5, r6, lr} c4e: 460e mov r6, r1 c50: 4614 mov r4, r2 ASSERT(rb && buf && size); c52: 4605 mov r5, r0 c54: b118 cbz r0, c5e c56: b189 cbz r1, c7c c58: 1e10 subs r0, r2, #0 c5a: bf18 it ne c5c: 2001 movne r0, #1 c5e: 4908 ldr r1, [pc, #32] ; (c80 ) c60: 4b08 ldr r3, [pc, #32] ; (c84 ) c62: 2228 movs r2, #40 ; 0x28 c64: 4798 blx r3 /* * buf size must be aligned to power of 2 */ if ((size & (size - 1)) != 0) { c66: 1e63 subs r3, r4, #1 c68: 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; c6c: bf03 ittte eq c6e: e9c5 3001 strdeq r3, r0, [r5, #4] rb->write_index = rb->read_index; c72: 60e8 streq r0, [r5, #12] rb->buf = (uint8_t *)buf; c74: 602e streq r6, [r5, #0] return ERR_INVALID_ARG; c76: f06f 000c mvnne.w r0, #12 return ERR_NONE; } c7a: bd70 pop {r4, r5, r6, pc} ASSERT(rb && buf && size); c7c: 4608 mov r0, r1 c7e: e7ee b.n c5e c80: 00016412 .word 0x00016412 c84: 00000655 .word 0x00000655 00000c88 : /** * \brief Get one byte from ringbuffer * */ int32_t ringbuffer_get(struct ringbuffer *const rb, uint8_t *data) { c88: b538 push {r3, r4, r5, lr} c8a: 460d mov r5, r1 ASSERT(rb && data); c8c: 4604 mov r4, r0 c8e: b110 cbz r0, c96 c90: 1e08 subs r0, r1, #0 c92: bf18 it ne c94: 2001 movne r0, #1 c96: 4b0a ldr r3, [pc, #40] ; (cc0 ) c98: 490a ldr r1, [pc, #40] ; (cc4 ) c9a: 2240 movs r2, #64 ; 0x40 c9c: 4798 blx r3 if (rb->write_index != rb->read_index) { c9e: e9d4 3202 ldrd r3, r2, [r4, #8] ca2: 429a cmp r2, r3 ca4: d009 beq.n cba *data = rb->buf[rb->read_index & rb->size]; ca6: 6862 ldr r2, [r4, #4] ca8: 4013 ands r3, r2 caa: 6822 ldr r2, [r4, #0] cac: 5cd3 ldrb r3, [r2, r3] cae: 702b strb r3, [r5, #0] rb->read_index++; cb0: 68a3 ldr r3, [r4, #8] cb2: 3301 adds r3, #1 cb4: 60a3 str r3, [r4, #8] return ERR_NONE; cb6: 2000 movs r0, #0 } return ERR_NOT_FOUND; } cb8: bd38 pop {r3, r4, r5, pc} return ERR_NOT_FOUND; cba: f06f 0009 mvn.w r0, #9 cbe: e7fb b.n cb8 cc0: 00000655 .word 0x00000655 cc4: 00016412 .word 0x00016412 00000cc8 : /** * \brief Put one byte to ringbuffer * */ int32_t ringbuffer_put(struct ringbuffer *const rb, uint8_t data) { cc8: b538 push {r3, r4, r5, lr} cca: 4604 mov r4, r0 ccc: 460d mov r5, r1 ASSERT(rb); cce: 4b0c ldr r3, [pc, #48] ; (d00 ) cd0: 490c ldr r1, [pc, #48] ; (d04 ) cd2: 2251 movs r2, #81 ; 0x51 cd4: 2001 movs r0, #1 cd6: 4798 blx r3 rb->buf[rb->write_index & rb->size] = data; cd8: 68e3 ldr r3, [r4, #12] cda: 6862 ldr r2, [r4, #4] cdc: 4013 ands r3, r2 cde: 6822 ldr r2, [r4, #0] ce0: 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) { ce2: e9d4 2101 ldrd r2, r1, [r4, #4] ce6: 68e3 ldr r3, [r4, #12] ce8: 1a59 subs r1, r3, r1 cea: 4291 cmp r1, r2 rb->read_index = rb->write_index - rb->size; cec: bf88 it hi cee: 1a9a subhi r2, r3, r2 } rb->write_index++; cf0: f103 0301 add.w r3, r3, #1 rb->read_index = rb->write_index - rb->size; cf4: bf88 it hi cf6: 60a2 strhi r2, [r4, #8] rb->write_index++; cf8: 60e3 str r3, [r4, #12] return ERR_NONE; } cfa: 2000 movs r0, #0 cfc: bd38 pop {r3, r4, r5, pc} cfe: bf00 nop d00: 00000655 .word 0x00000655 d04: 00016412 .word 0x00016412 00000d08 : /** * \brief Return the element number of ringbuffer */ uint32_t ringbuffer_num(const struct ringbuffer *const rb) { d08: b510 push {r4, lr} ASSERT(rb); d0a: 4905 ldr r1, [pc, #20] ; (d20 ) d0c: 4b05 ldr r3, [pc, #20] ; (d24 ) { d0e: 4604 mov r4, r0 ASSERT(rb); d10: 2267 movs r2, #103 ; 0x67 d12: 2001 movs r0, #1 d14: 4798 blx r3 return rb->write_index - rb->read_index; d16: e9d4 3002 ldrd r3, r0, [r4, #8] } d1a: 1ac0 subs r0, r0, r3 d1c: bd10 pop {r4, pc} d1e: bf00 nop d20: 00016412 .word 0x00016412 d24: 00000655 .word 0x00000655 00000d28 : 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) { d28: 6903 ldr r3, [r0, #16] d2a: 420b tst r3, r1 d2c: d1fc bne.n d28 }; } d2e: 4770 bx lr 00000d30 : * \param[in] hw The pointer to hardware instance * * \return The index of TC configuration */ static int8_t get_tc_index(const void *const hw) { d30: 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; d32: 4d10 ldr r5, [pc, #64] ; (d74 ) { d34: 4606 mov r6, r0 Tc *const tc_modules[TC_INST_NUM] = TC_INSTS; d36: cd0f ldmia r5!, {r0, r1, r2, r3} { d38: b088 sub sp, #32 Tc *const tc_modules[TC_INST_NUM] = TC_INSTS; d3a: 466c mov r4, sp d3c: c40f stmia r4!, {r0, r1, r2, r3} d3e: e895 000f ldmia.w r5, {r0, r1, r2, r3} d42: e884 000f stmia.w r4, {r0, r1, r2, r3} /* Find index for TC instance. */ for (uint32_t i = 0; i < TC_INST_NUM; i++) { d46: 466a mov r2, sp d48: 2000 movs r0, #0 if ((uint32_t)hw == (uint32_t)tc_modules[i]) { d4a: f852 1b04 ldr.w r1, [r2], #4 d4e: 42b1 cmp r1, r6 d50: d102 bne.n d58 if (_tcs[i].number == index) { d52: b930 cbnz r0, d62 } d54: b008 add sp, #32 d56: bd70 pop {r4, r5, r6, pc} for (uint32_t i = 0; i < TC_INST_NUM; i++) { d58: 3001 adds r0, #1 d5a: 2808 cmp r0, #8 d5c: d1f5 bne.n d4a return i; d5e: 2000 movs r0, #0 d60: e7f8 b.n d54 ASSERT(false); d62: 2000 movs r0, #0 d64: 4904 ldr r1, [pc, #16] ; (d78 ) d66: 4b05 ldr r3, [pc, #20] ; (d7c ) d68: f44f 729e mov.w r2, #316 ; 0x13c d6c: 4798 blx r3 d6e: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff d72: e7ef b.n d54 d74: 0001644c .word 0x0001644c d78: 00016436 .word 0x00016436 d7c: 00000655 .word 0x00000655 00000d80 <_timer_init>: { d80: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} int8_t i = get_tc_index(hw); d84: 4b45 ldr r3, [pc, #276] ; (e9c <_timer_init+0x11c>) { d86: 4681 mov r9, r0 int8_t i = get_tc_index(hw); d88: 4608 mov r0, r1 { d8a: 460c mov r4, r1 int8_t i = get_tc_index(hw); d8c: 4798 blx r3 ASSERT(ARRAY_SIZE(_tcs)); d8e: 4b44 ldr r3, [pc, #272] ; (ea0 <_timer_init+0x120>) d90: 4944 ldr r1, [pc, #272] ; (ea4 <_timer_init+0x124>) device->hw = hw; d92: f8c9 400c str.w r4, [r9, #12] ASSERT(ARRAY_SIZE(_tcs)); d96: 228d movs r2, #141 ; 0x8d int8_t i = get_tc_index(hw); d98: 4680 mov r8, r0 ASSERT(ARRAY_SIZE(_tcs)); d9a: 2001 movs r0, #1 d9c: 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; d9e: 6923 ldr r3, [r4, #16] da0: 4a41 ldr r2, [pc, #260] ; (ea8 <_timer_init+0x128>) if (!hri_tc_is_syncing(hw, TC_SYNCBUSY_SWRST)) { da2: f013 0f01 tst.w r3, #1 da6: d111 bne.n dcc <_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); da8: 2103 movs r1, #3 daa: 4620 mov r0, r4 dac: 4790 blx r2 tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; dae: 6823 ldr r3, [r4, #0] if (hri_tc_get_CTRLA_reg(hw, TC_CTRLA_ENABLE)) { db0: 079b lsls r3, r3, #30 db2: d506 bpl.n dc2 <_timer_init+0x42> ((Tc *)hw)->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE; db4: 6823 ldr r3, [r4, #0] db6: f023 0302 bic.w r3, r3, #2 dba: 6023 str r3, [r4, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); dbc: 4790 blx r2 hri_tc_wait_for_sync(hw, TC_SYNCBUSY_ENABLE); dbe: 2102 movs r1, #2 dc0: 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; dc2: 2301 movs r3, #1 dc4: 6023 str r3, [r4, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); dc6: 2103 movs r1, #3 dc8: 4620 mov r0, r4 dca: 4790 blx r2 hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a); dcc: 4f37 ldr r7, [pc, #220] ; (eac <_timer_init+0x12c>) dce: 2514 movs r5, #20 dd0: fb05 7508 mla r5, r5, r8, r7 hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST); dd4: 2101 movs r1, #1 dd6: 4620 mov r0, r4 dd8: 4790 blx r2 hri_tc_write_CTRLA_reg(hw, _tcs[i].ctrl_a); dda: 6a6e ldr r6, [r5, #36] ; 0x24 ((Tc *)hw)->COUNT16.CTRLA.reg = data; ddc: 6026 str r6, [r4, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); dde: 2103 movs r1, #3 de0: 4790 blx r2 hri_tc_write_DBGCTRL_reg(hw, _tcs[i].dbg_ctrl); de2: 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; de6: 73e3 strb r3, [r4, #15] if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) { de8: f006 060c and.w r6, r6, #12 hri_tc_write_EVCTRL_reg(hw, _tcs[i].event_ctrl); dec: 8d2b ldrh r3, [r5, #40] ; 0x28 ((Tc *)hw)->COUNT16.EVCTRL.reg = data; dee: 80e3 strh r3, [r4, #6] if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT32) { df0: 2e08 cmp r6, #8 ((Tc *)hw)->COUNT16.WAVE.reg = data; df2: f04f 0301 mov.w r3, #1 df6: 7323 strb r3, [r4, #12] df8: d13a bne.n e70 <_timer_init+0xf0> hri_tccount32_write_CC_reg(hw, 0, _tcs[i].cc0); dfa: 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; dfc: 61e3 str r3, [r4, #28] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); dfe: 21c0 movs r1, #192 ; 0xc0 e00: 4790 blx r2 ((Tc *)hw)->COUNT32.CC[index].reg = data; e02: 2300 movs r3, #0 e04: 6223 str r3, [r4, #32] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_PER); e06: 4790 blx r2 ((Tc *)hw)->COUNT16.INTENSET.reg = TC_INTENSET_OVF; e08: 2301 movs r3, #1 e0a: 7263 strb r3, [r4, #9] if (hw == TC0) { e0c: 4b28 ldr r3, [pc, #160] ; (eb0 <_timer_init+0x130>) e0e: 429c cmp r4, r3 _tc0_dev = (struct _timer_device *)dev; e10: bf04 itt eq e12: 4b28 ldreq r3, [pc, #160] ; (eb4 <_timer_init+0x134>) e14: f8c3 9000 streq.w r9, [r3] NVIC_DisableIRQ(_tcs[i].irq); e18: 2314 movs r3, #20 e1a: fb03 7308 mla r3, r3, r8, r7 e1e: f9b3 3022 ldrsh.w r3, [r3, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) e22: 2b00 cmp r3, #0 e24: db0d blt.n e42 <_timer_init+0xc2> NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); e26: 095a lsrs r2, r3, #5 e28: 2101 movs r1, #1 e2a: f003 031f and.w r3, r3, #31 e2e: 4099 lsls r1, r3 e30: f102 0320 add.w r3, r2, #32 e34: 4a20 ldr r2, [pc, #128] ; (eb8 <_timer_init+0x138>) e36: f842 1023 str.w r1, [r2, r3, lsl #2] __ASM volatile ("dsb 0xF":::"memory"); e3a: f3bf 8f4f dsb sy __ASM volatile ("isb 0xF":::"memory"); e3e: f3bf 8f6f isb sy NVIC_ClearPendingIRQ(_tcs[i].irq); e42: 2314 movs r3, #20 e44: fb03 7008 mla r0, r3, r8, r7 e48: f9b0 3022 ldrsh.w r3, [r0, #34] ; 0x22 if ((int32_t)(IRQn) >= 0) e4c: 2b00 cmp r3, #0 e4e: db0c blt.n e6a <_timer_init+0xea> NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); e50: f003 011f and.w r1, r3, #31 e54: 095b lsrs r3, r3, #5 e56: 009b lsls r3, r3, #2 e58: f103 4360 add.w r3, r3, #3758096384 ; 0xe0000000 e5c: f503 4361 add.w r3, r3, #57600 ; 0xe100 e60: 2201 movs r2, #1 e62: 408a lsls r2, r1 e64: f8c3 2180 str.w r2, [r3, #384] ; 0x180 NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); e68: 601a str r2, [r3, #0] } e6a: 2000 movs r0, #0 e6c: 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) { e70: b92e cbnz r6, e7e <_timer_init+0xfe> hri_tccount16_write_CC_reg(hw, 0, (uint16_t)_tcs[i].cc0); e72: 8dab ldrh r3, [r5, #44] ; 0x2c ((Tc *)hw)->COUNT16.CC[index].reg = data; e74: 83a3 strh r3, [r4, #28] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e76: 21c0 movs r1, #192 ; 0xc0 e78: 4790 blx r2 ((Tc *)hw)->COUNT16.CC[index].reg = data; e7a: 83e6 strh r6, [r4, #30] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e7c: e7c3 b.n e06 <_timer_init+0x86> } else if ((_tcs[i].ctrl_a & TC_CTRLA_MODE_Msk) == TC_CTRLA_MODE_COUNT8) { e7e: 2e04 cmp r6, #4 e80: d1c2 bne.n e08 <_timer_init+0x88> hri_tccount8_write_CC_reg(hw, 0, (uint8_t)_tcs[i].cc0); e82: f895 302c ldrb.w r3, [r5, #44] ; 0x2c ((Tc *)hw)->COUNT8.CC[index].reg = data; e86: 7723 strb r3, [r4, #28] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e88: 21c0 movs r1, #192 ; 0xc0 e8a: 4790 blx r2 ((Tc *)hw)->COUNT8.CC[index].reg = data; e8c: 2300 movs r3, #0 e8e: 7763 strb r3, [r4, #29] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_CC0 | TC_SYNCBUSY_CC1); e90: 4790 blx r2 hri_tccount8_write_PER_reg(hw, _tcs[i].per); e92: f895 302b ldrb.w r3, [r5, #43] ; 0x2b ((Tc *)hw)->COUNT8.PER.reg = data; e96: 76e3 strb r3, [r4, #27] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_PER); e98: 2120 movs r1, #32 e9a: e7b4 b.n e06 <_timer_init+0x86> e9c: 00000d31 .word 0x00000d31 ea0: 00000655 .word 0x00000655 ea4: 00016436 .word 0x00016436 ea8: 00000d29 .word 0x00000d29 eac: 0001644c .word 0x0001644c eb0: 40003800 .word 0x40003800 eb4: 200000ac .word 0x200000ac eb8: e000e100 .word 0xe000e100 00000ebc <_timer_start>: hri_tc_set_CTRLA_ENABLE_bit(device->hw); ebc: 68c0 ldr r0, [r0, #12] ((Tc *)hw)->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; ebe: 6803 ldr r3, [r0, #0] ec0: f043 0302 orr.w r3, r3, #2 ec4: 6003 str r3, [r0, #0] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); ec6: 2103 movs r1, #3 ec8: 4b00 ldr r3, [pc, #0] ; (ecc <_timer_start+0x10>) eca: 4718 bx r3 ecc: 00000d29 .word 0x00000d29 00000ed0 <_timer_is_started>: { ed0: b508 push {r3, lr} return hri_tc_get_CTRLA_ENABLE_bit(device->hw); ed2: 68c0 ldr r0, [r0, #12] hri_tc_wait_for_sync(hw, TC_SYNCBUSY_SWRST | TC_SYNCBUSY_ENABLE); ed4: 4b03 ldr r3, [pc, #12] ; (ee4 <_timer_is_started+0x14>) ed6: 2103 movs r1, #3 ed8: 4798 blx r3 tmp = ((Tc *)hw)->COUNT16.CTRLA.reg; eda: 6800 ldr r0, [r0, #0] } edc: f3c0 0040 ubfx r0, r0, #1, #1 ee0: bd08 pop {r3, pc} ee2: bf00 nop ee4: 00000d29 .word 0x00000d29 00000ee8 <_tc_get_timer>: } ee8: 2000 movs r0, #0 eea: 4770 bx lr 00000eec <_timer_set_irq>: { eec: b510 push {r4, lr} int8_t i = get_tc_index(hw); eee: 4b0a ldr r3, [pc, #40] ; (f18 <_timer_set_irq+0x2c>) ef0: 68c0 ldr r0, [r0, #12] ef2: 4798 blx r3 ASSERT(ARRAY_SIZE(_tcs)); ef4: 4b09 ldr r3, [pc, #36] ; (f1c <_timer_set_irq+0x30>) ef6: 490a ldr r1, [pc, #40] ; (f20 <_timer_set_irq+0x34>) int8_t i = get_tc_index(hw); ef8: 4604 mov r4, r0 ASSERT(ARRAY_SIZE(_tcs)); efa: f240 120f movw r2, #271 ; 0x10f efe: 2001 movs r0, #1 f00: 4798 blx r3 _irq_set(_tcs[i].irq); f02: 4808 ldr r0, [pc, #32] ; (f24 <_timer_set_irq+0x38>) f04: 4b08 ldr r3, [pc, #32] ; (f28 <_timer_set_irq+0x3c>) f06: 2214 movs r2, #20 f08: fb02 0004 mla r0, r2, r4, r0 } f0c: e8bd 4010 ldmia.w sp!, {r4, lr} _irq_set(_tcs[i].irq); f10: f890 0022 ldrb.w r0, [r0, #34] ; 0x22 f14: 4718 bx r3 f16: bf00 nop f18: 00000d31 .word 0x00000d31 f1c: 00000655 .word 0x00000655 f20: 00016436 .word 0x00016436 f24: 0001644c .word 0x0001644c f28: 0000031d .word 0x0000031d 00000f2c : tc_interrupt_handler(_tc0_dev); f2c: 4b05 ldr r3, [pc, #20] ; (f44 ) f2e: 6818 ldr r0, [r3, #0] void *const hw = device->hw; f30: 68c3 ldr r3, [r0, #12] return (((Tc *)hw)->COUNT16.INTFLAG.reg & TC_INTFLAG_OVF) >> TC_INTFLAG_OVF_Pos; f32: 7a9a ldrb r2, [r3, #10] if (hri_tc_get_interrupt_OVF_bit(hw)) { f34: 07d2 lsls r2, r2, #31 f36: d503 bpl.n f40 ((Tc *)hw)->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF; f38: 2201 movs r2, #1 f3a: 729a strb r2, [r3, #10] device->timer_cb.period_expired(device); f3c: 6803 ldr r3, [r0, #0] f3e: 4718 bx r3 } f40: 4770 bx lr f42: bf00 nop f44: 200000ac .word 0x200000ac 00000f48 : __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); f48: f3ef 8310 mrs r3, PRIMASK /** * \brief Disable interrupts, enter critical section */ void atomic_enter_critical(hal_atomic_t volatile *atomic) { *atomic = __get_PRIMASK(); f4c: 6003 str r3, [r0, #0] __ASM volatile ("cpsid i" : : : "memory"); f4e: 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"); f50: f3bf 8f5f dmb sy __disable_irq(); __DMB(); } f54: 4770 bx lr 00000f56 : f56: f3bf 8f5f dmb sy * \brief Exit atomic section */ void atomic_leave_critical(hal_atomic_t volatile *atomic) { __DMB(); __set_PRIMASK(*atomic); f5a: 6803 ldr r3, [r0, #0] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); f5c: f383 8810 msr PRIMASK, r3 } f60: 4770 bx lr ... 00000f64 : * 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); f64: 0943 lsrs r3, r0, #5 f66: 2201 movs r2, #1 f68: f000 001f and.w r0, r0, #31 * \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) { f6c: 2901 cmp r1, #1 f6e: fa02 f200 lsl.w r2, r2, r0 f72: d010 beq.n f96 f74: 2902 cmp r1, #2 f76: d01f beq.n fb8 f78: bb29 cbnz r1, fc6 ((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; f7a: 01db lsls r3, r3, #7 f7c: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 f80: f503 4300 add.w r3, r3, #32768 ; 0x8000 f84: 605a str r2, [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)); f86: b291 uxth r1, r2 f88: f041 4180 orr.w r1, r1, #1073741824 ; 0x40000000 hri_port_write_WRCONFIG_reg( PORT, port, PORT_WRCONFIG_HWSEL | PORT_WRCONFIG_WRPINCFG | ((mask & 0xffff0000) >> 16)); f8c: 0c12 lsrs r2, r2, #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; f8e: 6299 str r1, [r3, #40] ; 0x28 hri_port_write_WRCONFIG_reg( f90: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 f94: e00e b.n fb4 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; f96: 01db lsls r3, r3, #7 hri_port_write_WRCONFIG_reg(PORT, port, PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_INEN | (mask & 0xffff)); f98: b291 uxth r1, r2 f9a: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 f9e: f503 4300 add.w r3, r3, #32768 ; 0x8000 fa2: f041 4180 orr.w r1, r1, #1073741824 ; 0x40000000 fa6: f441 3100 orr.w r1, r1, #131072 ; 0x20000 faa: 605a str r2, [r3, #4] ((Port *)hw)->Group[submodule_index].WRCONFIG.reg = data; fac: 6299 str r1, [r3, #40] ; 0x28 hri_port_write_WRCONFIG_reg(PORT, fae: 4908 ldr r1, [pc, #32] ; (fd0 ) fb0: ea41 4212 orr.w r2, r1, r2, lsr #16 fb4: 629a str r2, [r3, #40] ; 0x28 } fb6: 4770 bx lr ((Port *)hw)->Group[submodule_index].DIRSET.reg = mask; fb8: 01db lsls r3, r3, #7 fba: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 fbe: f503 4300 add.w r3, r3, #32768 ; 0x8000 fc2: 609a str r2, [r3, #8] fc4: e7df b.n f86 break; default: ASSERT(false); fc6: 4903 ldr r1, [pc, #12] ; (fd4 ) fc8: 4b03 ldr r3, [pc, #12] ; (fd8 ) fca: 2246 movs r2, #70 ; 0x46 fcc: 2000 movs r0, #0 fce: 4718 bx r3 fd0: c0020000 .word 0xc0020000 fd4: 00016480 .word 0x00016480 fd8: 00000655 .word 0x00000655 00000fdc <_gpio_set_pin_function>: /** * \brief Set gpio pin function */ static inline void _gpio_set_pin_function(const uint32_t gpio, const uint32_t function) { fdc: b530 push {r4, r5, lr} uint8_t port = GPIO_PORT(gpio); uint8_t pin = GPIO_PIN(gpio); if (function == GPIO_PIN_FUNCTION_OFF) { fde: 1c4b adds r3, r1, #1 uint8_t pin = GPIO_PIN(gpio); fe0: b2c5 uxtb r5, r0 fe2: 4b18 ldr r3, [pc, #96] ; (1044 <_gpio_set_pin_function+0x68>) fe4: f000 041f and.w r4, r0, #31 uint8_t port = GPIO_PORT(gpio); fe8: ea4f 1050 mov.w r0, r0, lsr #5 fec: ea4f 10c0 mov.w r0, r0, lsl #7 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; ff0: 4403 add r3, r0 if (function == GPIO_PIN_FUNCTION_OFF) { ff2: d107 bne.n 1004 <_gpio_set_pin_function+0x28> ff4: 4423 add r3, r4 ff6: f893 2040 ldrb.w r2, [r3, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; ffa: f002 02fe and.w r2, r2, #254 ; 0xfe ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; ffe: f883 2040 strb.w r2, [r3, #64] ; 0x40 } else { // Even numbered pin hri_port_write_PMUX_PMUXE_bf(PORT, port, pin >> 1, function & 0xffff); } } } 1002: bd30 pop {r4, r5, pc} tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 1004: 1918 adds r0, r3, r4 1006: eb03 0354 add.w r3, r3, r4, lsr #1 100a: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 tmp &= ~PORT_PINCFG_PMUXEN; 100e: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 1012: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1016: f880 2040 strb.w r2, [r0, #64] ; 0x40 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 101a: f893 2030 ldrb.w r2, [r3, #48] ; 0x30 if (pin & 1) { 101e: f015 0f01 tst.w r5, #1 hri_port_write_PMUX_PMUXO_bf(PORT, port, pin >> 1, function & 0xffff); 1022: b2c9 uxtb r1, r1 tmp &= ~PORT_PMUX_PMUXO_Msk; 1024: bf19 ittee ne 1026: f002 020f andne.w r2, r2, #15 tmp |= PORT_PMUX_PMUXO(data); 102a: ea42 1201 orrne.w r2, r2, r1, lsl #4 tmp &= ~PORT_PMUX_PMUXE_Msk; 102e: f002 02f0 andeq.w r2, r2, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 1032: f001 010f andeq.w r1, r1, #15 tmp |= PORT_PMUX_PMUXO(data); 1036: bf14 ite ne 1038: b2d2 uxtbne r2, r2 tmp |= PORT_PMUX_PMUXE(data); 103a: 430a orreq r2, r1 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 103c: f883 2030 strb.w r2, [r3, #48] ; 0x30 } 1040: e7df b.n 1002 <_gpio_set_pin_function+0x26> 1042: bf00 nop 1044: 41008000 .word 0x41008000 00001048 : switch (pull_mode) { 1048: 2901 cmp r1, #1 _gpio_set_pin_pull_mode((enum gpio_port)GPIO_PORT(pin), pin & 0x1F, pull_mode); 104a: ea4f 1350 mov.w r3, r0, lsr #5 104e: f000 001f and.w r0, r0, #31 1052: d00f beq.n 1074 1054: 2902 cmp r1, #2 1056: d01d beq.n 1094 1058: bb69 cbnz r1, 10b6 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg &= ~PORT_PINCFG_PULLEN; 105a: eb00 10c3 add.w r0, r0, r3, lsl #7 105e: f100 4082 add.w r0, r0, #1090519040 ; 0x41000000 1062: f500 4000 add.w r0, r0, #32768 ; 0x8000 1066: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 106a: f003 03fb and.w r3, r3, #251 ; 0xfb 106e: f880 3040 strb.w r3, [r0, #64] ; 0x40 } 1072: 4770 bx lr ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1074: 01db lsls r3, r3, #7 1076: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 107a: f503 4300 add.w r3, r3, #32768 ; 0x8000 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 107e: 4081 lsls r1, r0 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 1080: 4418 add r0, r3 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1082: 6059 str r1, [r3, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 1084: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 1088: f042 0204 orr.w r2, r2, #4 108c: f880 2040 strb.w r2, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1090: 6199 str r1, [r3, #24] } 1092: 4770 bx lr ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 1094: 01db lsls r3, r3, #7 1096: f103 4382 add.w r3, r3, #1090519040 ; 0x41000000 109a: f503 4300 add.w r3, r3, #32768 ; 0x8000 hri_port_clear_DIR_reg(PORT, port, 1U << pin); 109e: 2201 movs r2, #1 10a0: 4082 lsls r2, r0 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 10a2: 4418 add r0, r3 ((Port *)hw)->Group[submodule_index].DIRCLR.reg = mask; 10a4: 605a str r2, [r3, #4] ((Port *)hw)->Group[submodule_index].PINCFG[index].reg |= PORT_PINCFG_PULLEN; 10a6: f890 1040 ldrb.w r1, [r0, #64] ; 0x40 10aa: f041 0104 orr.w r1, r1, #4 10ae: f880 1040 strb.w r1, [r0, #64] ; 0x40 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 10b2: 615a str r2, [r3, #20] } 10b4: 4770 bx lr ASSERT(false); 10b6: 4902 ldr r1, [pc, #8] ; (10c0 ) 10b8: 4b02 ldr r3, [pc, #8] ; (10c4 ) 10ba: 2289 movs r2, #137 ; 0x89 10bc: 2000 movs r0, #0 10be: 4718 bx r3 10c0: 00016480 .word 0x00016480 10c4: 00000655 .word 0x00000655 000010c8 : } } 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)); 10c8: 0053 lsls r3, r2, #1 { 10ca: b510 push {r4, lr} uint32_t dword = (uint32_t)(SSD1963_TFT_DATA_FIX(data)); 10cc: 0154 lsls r4, r2, #5 10ce: f404 3470 and.w r4, r4, #245760 ; 0x3c000 10d2: f403 737c and.w r3, r3, #1008 ; 0x3f0 10d6: 4323 orrs r3, r4 10d8: f002 0407 and.w r4, r2, #7 10dc: 0352 lsls r2, r2, #13 10de: f002 52e0 and.w r2, r2, #469762048 ; 0x1c000000 10e2: 4323 orrs r3, r4 10e4: 4313 orrs r3, r2 port->OUTSET.reg = (mask & dword); 10e6: ea03 0201 and.w r2, r3, r1 port->OUTCLR.reg = (mask & ~dword); 10ea: ea21 0103 bic.w r1, r1, r3 port->OUTSET.reg = (mask & dword); 10ee: 6182 str r2, [r0, #24] port->OUTCLR.reg = (mask & ~dword); 10f0: 6141 str r1, [r0, #20] } 10f2: bd10 pop {r4, pc} 000010f4 : { 10f4: b538 push {r3, r4, r5, lr} 10f6: 4c05 ldr r4, [pc, #20] ; (110c ) p_gpio_set_port_data(group, mask, (uint32_t)data); 10f8: 4b05 ldr r3, [pc, #20] ; (1110 ) 10fa: 2540 movs r5, #64 ; 0x40 10fc: 6165 str r5, [r4, #20] 10fe: 4798 blx r3 1100: 2380 movs r3, #128 ; 0x80 1102: 6163 str r3, [r4, #20] ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1104: 61a3 str r3, [r4, #24] 1106: 61a5 str r5, [r4, #24] } 1108: bd38 pop {r3, r4, r5, pc} 110a: bf00 nop 110c: 41008000 .word 0x41008000 1110: 000010c9 .word 0x000010c9 00001114 : { 1114: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} p_gpio_parallel_write(group, mask, data[ind]); 1118: 4f07 ldr r7, [pc, #28] ; (1138 ) { 111a: 4688 mov r8, r1 111c: 4616 mov r6, r2 111e: 461d mov r5, r3 for(int ind = 0; ind < len; ind++) 1120: 2400 movs r4, #0 1122: 42a5 cmp r5, r4 1124: dc01 bgt.n 112a } 1126: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} p_gpio_parallel_write(group, mask, data[ind]); 112a: f836 2014 ldrh.w r2, [r6, r4, lsl #1] 112e: 4641 mov r1, r8 1130: 47b8 blx r7 for(int ind = 0; ind < len; ind++) 1132: 3401 adds r4, #1 1134: e7f5 b.n 1122 1136: bf00 nop 1138: 000010f5 .word 0x000010f5 0000113c : void p_gpio_set_port_group_config(enum gpio_port port, const uint32_t mask, p_port_config* config) { 113c: 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); 1140: 0147 lsls r7, r0, #5 gpio_set_pin_direction(_gpio_pin, config->direction); 1142: 4b15 ldr r3, [pc, #84] ; (1198 ) _gpio_set_pin_function(pin, function); 1144: f8df a058 ldr.w sl, [pc, #88] ; 11a0 { 1148: 4688 mov r8, r1 114a: 4616 mov r6, r2 uint32_t _gpio_pin = GPIO(port, i); 114c: fa5f fb87 uxtb.w fp, r7 1150: 2500 movs r5, #0 if(mask & (1UL << i)) 1152: fa28 f205 lsr.w r2, r8, r5 1156: 07d2 lsls r2, r2, #31 1158: d519 bpl.n 118e uint32_t _gpio_pin = GPIO(port, i); 115a: 19ec adds r4, r5, r7 115c: b2e4 uxtb r4, r4 gpio_set_pin_direction(_gpio_pin, config->direction); 115e: 4620 mov r0, r4 1160: 7871 ldrb r1, [r6, #1] 1162: 4798 blx r3 1164: eb0b 0905 add.w r9, fp, r5 gpio_set_pin_pull_mode(_gpio_pin, config->pull_mode); 1168: 4b0c ldr r3, [pc, #48] ; (119c ) 116a: 7831 ldrb r1, [r6, #0] 116c: 4620 mov r0, r4 116e: 4798 blx r3 1170: 6871 ldr r1, [r6, #4] 1172: 4648 mov r0, r9 1174: 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); 1176: f004 011f and.w r1, r4, #31 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 117a: 0964 lsrs r4, r4, #5 117c: 01e4 lsls r4, r4, #7 117e: f104 4482 add.w r4, r4, #1090519040 ; 0x41000000 1182: 2201 movs r2, #1 1184: f504 4400 add.w r4, r4, #32768 ; 0x8000 1188: 408a lsls r2, r1 118a: 4b03 ldr r3, [pc, #12] ; (1198 ) 118c: 6162 str r2, [r4, #20] for(uint8_t i = 0; i < 32; i++) 118e: 3501 adds r5, #1 1190: 2d20 cmp r5, #32 1192: d1de bne.n 1152 gpio_set_pin_function(_gpio_pin, config->function); gpio_set_pin_level(_gpio_pin, 0); } } } 1194: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 1198: 00000f65 .word 0x00000f65 119c: 00001049 .word 0x00001049 11a0: 00000fdd .word 0x00000fdd 000011a4 : { 11a4: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} memset(&data_config, 0, sizeof(data_config)); 11a8: f04f 0900 mov.w r9, #0 p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 11ac: 466a mov r2, sp 11ae: 4b29 ldr r3, [pc, #164] ; (1254 ) memset(&data_config, 0, sizeof(data_config)); 11b0: f8cd 9000 str.w r9, [sp] data_config.direction = GPIO_DIRECTION_OUT; 11b4: 2502 movs r5, #2 data_config.function = GPIO_PIN_FUNCTION_OFF; 11b6: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 11ba: 4927 ldr r1, [pc, #156] ; (1258 ) gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT); 11bc: f8df 80a8 ldr.w r8, [pc, #168] ; 1268 data_config.direction = GPIO_DIRECTION_OUT; 11c0: f88d 5001 strb.w r5, [sp, #1] p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 11c4: 2001 movs r0, #1 data_config.function = GPIO_PIN_FUNCTION_OFF; 11c6: 9401 str r4, [sp, #4] p_gpio_set_port_group_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_config); 11c8: 4798 blx r3 gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT); 11ca: 4629 mov r1, r5 11cc: 2006 movs r0, #6 gpio_set_pin_pull_mode(SSD1963_TFT_CS, GPIO_PULL_OFF); 11ce: 4f23 ldr r7, [pc, #140] ; (125c ) _gpio_set_pin_function(pin, function); 11d0: 4e23 ldr r6, [pc, #140] ; (1260 ) gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT); 11d2: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_CS, GPIO_PULL_OFF); 11d4: 4649 mov r1, r9 11d6: 2006 movs r0, #6 11d8: 47b8 blx r7 11da: 4621 mov r1, r4 11dc: 2006 movs r0, #6 11de: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_nRST, GPIO_DIRECTION_OUT); 11e0: 4629 mov r1, r5 11e2: 2004 movs r0, #4 11e4: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_nRST, GPIO_PULL_OFF); 11e6: 4649 mov r1, r9 11e8: 2004 movs r0, #4 11ea: 47b8 blx r7 11ec: 4621 mov r1, r4 11ee: 2004 movs r0, #4 11f0: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_RD, GPIO_DIRECTION_OUT); 11f2: 4629 mov r1, r5 11f4: 2003 movs r0, #3 11f6: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_RD, GPIO_PULL_OFF); 11f8: 4649 mov r1, r9 11fa: 2003 movs r0, #3 11fc: 47b8 blx r7 11fe: 4621 mov r1, r4 1200: 2003 movs r0, #3 1202: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_RSDC, GPIO_DIRECTION_OUT); 1204: 4629 mov r1, r5 1206: 2005 movs r0, #5 1208: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_RSDC, GPIO_PULL_OFF); 120a: 4649 mov r1, r9 120c: 2005 movs r0, #5 120e: 47b8 blx r7 1210: 4621 mov r1, r4 1212: 2005 movs r0, #5 1214: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_WR, GPIO_DIRECTION_OUT); 1216: 4629 mov r1, r5 1218: 2007 movs r0, #7 121a: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_WR, GPIO_PULL_OFF); 121c: 4649 mov r1, r9 121e: 2007 movs r0, #7 1220: 47b8 blx r7 1222: 4621 mov r1, r4 1224: 2007 movs r0, #7 1226: 47b0 blx r6 gpio_set_pin_direction(SSD1963_TFT_TE, GPIO_DIRECTION_IN); 1228: 2101 movs r1, #1 122a: 2068 movs r0, #104 ; 0x68 122c: 47c0 blx r8 gpio_set_pin_pull_mode(SSD1963_TFT_TE, GPIO_PULL_DOWN); 122e: 4629 mov r1, r5 1230: 2068 movs r0, #104 ; 0x68 1232: 47b8 blx r7 1234: 4621 mov r1, r4 1236: 2068 movs r0, #104 ; 0x68 1238: 47b0 blx r6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 123a: 4b0a ldr r3, [pc, #40] ; (1264 ) 123c: 2240 movs r2, #64 ; 0x40 123e: 619a str r2, [r3, #24] 1240: 2210 movs r2, #16 1242: 619a str r2, [r3, #24] 1244: 2208 movs r2, #8 1246: 619a str r2, [r3, #24] 1248: 2280 movs r2, #128 ; 0x80 124a: 619a str r2, [r3, #24] } 124c: b003 add sp, #12 124e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} 1252: bf00 nop 1254: 0000113d .word 0x0000113d 1258: 1c03c3f7 .word 0x1c03c3f7 125c: 00001049 .word 0x00001049 1260: 00000fdd .word 0x00000fdd 1264: 41008000 .word 0x41008000 1268: 00000f65 .word 0x00000f65 0000126c : //// 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); } 126c: 4770 bx lr ... 00001270 : 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) { 1270: b410 push {r4} sys_time++; 1272: 4c06 ldr r4, [pc, #24] ; (128c ) 1274: e9d4 2300 ldrd r2, r3, [r4] 1278: 1c50 adds r0, r2, #1 127a: f143 0100 adc.w r1, r3, #0 127e: e9c4 0100 strd r0, r1, [r4] lv_tick_inc(1); 1282: 4b03 ldr r3, [pc, #12] ; (1290 ) } 1284: f85d 4b04 ldr.w r4, [sp], #4 lv_tick_inc(1); 1288: 2001 movs r0, #1 128a: 4718 bx r3 128c: 200000b0 .word 0x200000b0 1290: 0000da35 .word 0x0000da35 00001294 : //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); } void p_tcc_init(void) { 1294: b570 push {r4, r5, r6, lr} delay_init(SysTick); 1296: 4812 ldr r0, [pc, #72] ; (12e0 ) 1298: 4b12 ldr r3, [pc, #72] ; (12e4 ) 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()); 129a: 4c13 ldr r4, [pc, #76] ; (12e8 ) delay_init(SysTick); 129c: 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; 129e: 4a13 ldr r2, [pc, #76] ; (12ec ) 12a0: 6953 ldr r3, [r2, #20] 12a2: f443 4380 orr.w r3, r3, #16384 ; 0x4000 12a6: 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; 12a8: 4b11 ldr r3, [pc, #68] ; (12f0 ) 12aa: 2240 movs r2, #64 ; 0x40 12ac: f8c3 20a4 str.w r2, [r3, #164] ; 0xa4 timer_init(&p_tcc_inst, TC0, _tc_get_timer()); 12b0: 4b10 ldr r3, [pc, #64] ; (12f4 ) 12b2: 4798 blx r3 12b4: f104 051c add.w r5, r4, #28 12b8: 4602 mov r2, r0 12ba: 490f ldr r1, [pc, #60] ; (12f8 ) 12bc: 4b0f ldr r3, [pc, #60] ; (12fc ) 12be: 4628 mov r0, r5 12c0: 4798 blx r3 TIMER_0_task1.interval = 1; 12c2: 2301 movs r3, #1 12c4: 6123 str r3, [r4, #16] TIMER_0_task1.cb = TIMER_0_task1_cb; TIMER_0_task1.mode = TIMER_TASK_REPEAT; 12c6: 7623 strb r3, [r4, #24] TIMER_0_task1.cb = TIMER_0_task1_cb; 12c8: 4a0d ldr r2, [pc, #52] ; (1300 ) //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); 12ca: 4b0e ldr r3, [pc, #56] ; (1304 ) TIMER_0_task1.cb = TIMER_0_task1_cb; 12cc: 6162 str r2, [r4, #20] timer_add_task(&p_tcc_inst, &TIMER_0_task1); 12ce: f104 0108 add.w r1, r4, #8 12d2: 4628 mov r0, r5 12d4: 4798 blx r3 //timer_add_task(&p_tcc_inst, &TIMER_0_task2); timer_start(&p_tcc_inst); 12d6: 4628 mov r0, r5 12d8: 4b0b ldr r3, [pc, #44] ; (1308 ) } 12da: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} timer_start(&p_tcc_inst); 12de: 4718 bx r3 12e0: e000e010 .word 0xe000e010 12e4: 00000531 .word 0x00000531 12e8: 200000b0 .word 0x200000b0 12ec: 40000800 .word 0x40000800 12f0: 40001c00 .word 0x40001c00 12f4: 00000ee9 .word 0x00000ee9 12f8: 40003800 .word 0x40003800 12fc: 00000415 .word 0x00000415 1300: 00001271 .word 0x00001271 1304: 00000489 .word 0x00000489 1308: 0000044d .word 0x0000044d 0000130c : 130c: 4b21 ldr r3, [pc, #132] ; (1394 ) 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) { 130e: b537 push {r0, r1, r2, r4, r5, lr} 1310: 2240 movs r2, #64 ; 0x40 1312: f8c3 209c str.w r2, [r3, #156] ; 0x9c 1316: 2243 movs r2, #67 ; 0x43 1318: f8c3 208c str.w r2, [r3, #140] ; 0x8c ((Mclk *)hw)->APBAMASK.reg |= MCLK_APBAMASK_SERCOM0; 131c: 4a1e ldr r2, [pc, #120] ; (1398 ) hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM0_GCLK_ID_CORE, CONF_GCLK_SERCOM0_CORE_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); hri_gclk_write_PCHCTRL_reg(GCLK, SERCOM0_GCLK_ID_SLOW, CONF_GCLK_SERCOM0_SLOW_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); hri_mclk_set_APBAMASK_SERCOM0_bit(MCLK); usart_async_init(&p_usart_debug_inst, USART_DEBUG_SERCOM, debug_rx_buff, DEBUG_USART_EX_BUFF_SIZE, (void*)NULL); 131e: 491f ldr r1, [pc, #124] ; (139c ) 1320: 6953 ldr r3, [r2, #20] 1322: 4d1f ldr r5, [pc, #124] ; (13a0 ) 1324: f443 5380 orr.w r3, r3, #4096 ; 0x1000 1328: 6153 str r3, [r2, #20] 132a: 4a1e ldr r2, [pc, #120] ; (13a4 ) 132c: 2300 movs r3, #0 132e: f102 0410 add.w r4, r2, #16 1332: 9300 str r3, [sp, #0] 1334: 4620 mov r0, r4 1336: 2310 movs r3, #16 1338: 47a8 blx r5 tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 133a: 4b1b ldr r3, [pc, #108] ; (13a8 ) 133c: f893 20d8 ldrb.w r2, [r3, #216] ; 0xd8 tmp &= ~PORT_PINCFG_PMUXEN; 1340: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 1344: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1348: f883 20d8 strb.w r2, [r3, #216] ; 0xd8 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 134c: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXE_Msk; 1350: f002 02f0 and.w r2, r2, #240 ; 0xf0 tmp |= PORT_PMUX_PMUXE(data); 1354: f042 0203 orr.w r2, r2, #3 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1358: f883 20bc strb.w r2, [r3, #188] ; 0xbc tmp = ((Port *)hw)->Group[submodule_index].PINCFG[index].reg; 135c: f893 20d9 ldrb.w r2, [r3, #217] ; 0xd9 tmp &= ~PORT_PINCFG_PMUXEN; 1360: f002 02fe and.w r2, r2, #254 ; 0xfe tmp |= value << PORT_PINCFG_PMUXEN_Pos; 1364: f042 0201 orr.w r2, r2, #1 ((Port *)hw)->Group[submodule_index].PINCFG[index].reg = tmp; 1368: f883 20d9 strb.w r2, [r3, #217] ; 0xd9 tmp = ((Port *)hw)->Group[submodule_index].PMUX[index].reg; 136c: f893 20bc ldrb.w r2, [r3, #188] ; 0xbc tmp &= ~PORT_PMUX_PMUXO_Msk; 1370: f002 020f and.w r2, r2, #15 tmp |= PORT_PMUX_PMUXO(data); 1374: f042 0230 orr.w r2, r2, #48 ; 0x30 ((Port *)hw)->Group[submodule_index].PMUX[index].reg = tmp; 1378: 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); 137c: 4620 mov r0, r4 137e: 4b0b ldr r3, [pc, #44] ; (13ac ) 1380: 4798 blx r3 io_write(&p_usart_debug_inst.io, example_USART_0, 12); 1382: 490b ldr r1, [pc, #44] ; (13b0 ) 1384: 4b0b ldr r3, [pc, #44] ; (13b4 ) 1386: 220c movs r2, #12 1388: 4620 mov r0, r4 } 138a: b003 add sp, #12 138c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} io_write(&p_usart_debug_inst.io, example_USART_0, 12); 1390: 4718 bx r3 1392: bf00 nop 1394: 40001c00 .word 0x40001c00 1398: 40000800 .word 0x40000800 139c: 41012000 .word 0x41012000 13a0: 00000b99 .word 0x00000b99 13a4: 200000e8 .word 0x200000e8 13a8: 41008000 .word 0x41008000 13ac: 00000c21 .word 0x00000c21 13b0: 20000000 .word 0x20000000 13b4: 000002ed .word 0x000002ed 000013b8 : 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) { 13b8: b530 push {r4, r5, lr} // devices init lv_init(); 13ba: 4b1a ldr r3, [pc, #104] ; (1424 ) ssd1963_init(); lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 34); /*Initialize the display buffer*/ 13bc: 4c1a ldr r4, [pc, #104] ; (1428 ) 13be: 4d1b ldr r5, [pc, #108] ; (142c ) { 13c0: b08d sub sp, #52 ; 0x34 lv_init(); 13c2: 4798 blx r3 ssd1963_init(); 13c4: 4b1a ldr r3, [pc, #104] ; (1430 ) 13c6: 4798 blx r3 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 34); /*Initialize the display buffer*/ 13c8: 2200 movs r2, #0 13ca: 491a ldr r1, [pc, #104] ; (1434 ) 13cc: 4620 mov r0, r4 13ce: f44f 537f mov.w r3, #16320 ; 0x3fc0 13d2: 47a8 blx r5 lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ 13d4: a801 add r0, sp, #4 13d6: 4b18 ldr r3, [pc, #96] ; (1438 ) 13d8: 4798 blx r3 disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/ 13da: 4b18 ldr r3, [pc, #96] ; (143c ) 13dc: 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*/ 13de: a801 add r0, sp, #4 13e0: 4b17 ldr r3, [pc, #92] ; (1440 ) disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ 13e2: 9402 str r4, [sp, #8] lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 13e4: 4798 blx r3 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 13e6: 4b17 ldr r3, [pc, #92] ; (1444 ) 13e8: 2000 movs r0, #0 13ea: 4798 blx r3 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 13ec: 4b16 ldr r3, [pc, #88] ; (1448 ) 13ee: 2100 movs r1, #0 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 13f0: 4604 mov r4, r0 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 13f2: 4798 blx r3 lv_img_set_src(hornet_image, &hornet); 13f4: 4b15 ldr r3, [pc, #84] ; (144c ) 13f6: 4916 ldr r1, [pc, #88] ; (1450 ) lv_obj_t* hornet_image = lv_img_create(scr, NULL); 13f8: 4605 mov r5, r0 lv_img_set_src(hornet_image, &hornet); 13fa: 4798 blx r3 lv_obj_set_pos(hornet_image, 0, 0); 13fc: 2200 movs r2, #0 13fe: 4611 mov r1, r2 1400: 4628 mov r0, r5 1402: 4d14 ldr r5, [pc, #80] ; (1454 ) 1404: 47a8 blx r5 lv_obj_t* random_text = lv_label_create(scr, NULL); 1406: 4b14 ldr r3, [pc, #80] ; (1458 ) 1408: 2100 movs r1, #0 140a: 4620 mov r0, r4 140c: 4798 blx r3 lv_obj_set_pos(random_text, 90, 35); 140e: 2223 movs r2, #35 ; 0x23 lv_obj_t* random_text = lv_label_create(scr, NULL); 1410: 4604 mov r4, r0 lv_obj_set_pos(random_text, 90, 35); 1412: 215a movs r1, #90 ; 0x5a 1414: 47a8 blx r5 lv_label_set_text(random_text, "Hello World"); 1416: 4911 ldr r1, [pc, #68] ; (145c ) 1418: 4b11 ldr r3, [pc, #68] ; (1460 ) 141a: 4620 mov r0, r4 141c: 4798 blx r3 } 141e: b00d add sp, #52 ; 0x34 1420: bd30 pop {r4, r5, pc} 1422: bf00 nop 1424: 00001d2d .word 0x00001d2d 1428: 20000148 .word 0x20000148 142c: 0000d79d .word 0x0000d79d 1430: 000014e5 .word 0x000014e5 1434: 2000016c .word 0x2000016c 1438: 0000d75d .word 0x0000d75d 143c: 00001689 .word 0x00001689 1440: 0000d7bd .word 0x0000d7bd 1444: 00001871 .word 0x00001871 1448: 00014719 .word 0x00014719 144c: 000144c5 .word 0x000144c5 1450: 000164a8 .word 0x000164a8 1454: 000028a1 .word 0x000028a1 1458: 00015931 .word 0x00015931 145c: 0001649c .word 0x0001649c 1460: 00015635 .word 0x00015635 00001464 : void p_screen_service(void) { lv_task_handler(); 1464: 4b00 ldr r3, [pc, #0] ; (1468 ) 1466: 4718 bx r3 1468: 0000f9fd .word 0x0000f9fd 0000146c : ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 146c: 4909 ldr r1, [pc, #36] ; (1494 ) /** * Write command * @param cmd the command */ static inline void ssd1963_cmd(uint8_t cmd) { 146e: b508 push {r3, lr} 1470: 2340 movs r3, #64 ; 0x40 1472: 614b str r3, [r1, #20] if(cmd_mode == false) { 1474: 4b08 ldr r3, [pc, #32] ; (1498 ) { 1476: 4602 mov r2, r0 if(cmd_mode == false) { 1478: 7818 ldrb r0, [r3, #0] 147a: b918 cbnz r0, 1484 147c: 2020 movs r0, #32 147e: 6148 str r0, [r1, #20] cmd_mode = true; 1480: 2101 movs r1, #1 1482: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_CS(0); ssd1963_cmd_mode(); LV_DRV_DISP_PAR_WR_WORD(cmd); 1484: 4b05 ldr r3, [pc, #20] ; (149c ) 1486: 4906 ldr r1, [pc, #24] ; (14a0 ) 1488: 4806 ldr r0, [pc, #24] ; (14a4 ) 148a: 4798 blx r3 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 148c: 4b01 ldr r3, [pc, #4] ; (1494 ) 148e: 2240 movs r2, #64 ; 0x40 1490: 619a str r2, [r3, #24] LV_DRV_DISP_PAR_CS(1); } 1492: bd08 pop {r3, pc} 1494: 41008000 .word 0x41008000 1498: 2000000c .word 0x2000000c 149c: 000010f5 .word 0x000010f5 14a0: 1c03c3f7 .word 0x1c03c3f7 14a4: 41008080 .word 0x41008080 000014a8 : ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 14a8: 4909 ldr r1, [pc, #36] ; (14d0 ) /** * Write data * @param data the data */ static inline void ssd1963_data(uint8_t data) { 14aa: b508 push {r3, lr} 14ac: 2340 movs r3, #64 ; 0x40 14ae: 614b str r3, [r1, #20] if(cmd_mode != false) { 14b0: 4b08 ldr r3, [pc, #32] ; (14d4 ) { 14b2: 4602 mov r2, r0 if(cmd_mode != false) { 14b4: 7818 ldrb r0, [r3, #0] 14b6: b118 cbz r0, 14c0 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 14b8: 2020 movs r0, #32 14ba: 6188 str r0, [r1, #24] cmd_mode = false; 14bc: 2100 movs r1, #0 14be: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_CS(0); ssd1963_data_mode(); LV_DRV_DISP_PAR_WR_WORD(data); 14c0: 4b05 ldr r3, [pc, #20] ; (14d8 ) 14c2: 4906 ldr r1, [pc, #24] ; (14dc ) 14c4: 4806 ldr r0, [pc, #24] ; (14e0 ) 14c6: 4798 blx r3 14c8: 4b01 ldr r3, [pc, #4] ; (14d0 ) 14ca: 2240 movs r2, #64 ; 0x40 14cc: 619a str r2, [r3, #24] LV_DRV_DISP_PAR_CS(1); } 14ce: bd08 pop {r3, pc} 14d0: 41008000 .word 0x41008000 14d4: 2000000c .word 0x2000000c 14d8: 000010f5 .word 0x000010f5 14dc: 1c03c3f7 .word 0x1c03c3f7 14e0: 41008080 .word 0x41008080 000014e4 : { 14e4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} asm volatile("nop"); 14e8: bf00 nop 14ea: 4f5f ldr r7, [pc, #380] ; (1668 ) LV_DRV_DELAY_MS(50); 14ec: 4e5f ldr r6, [pc, #380] ; (166c ) 14ee: 2410 movs r4, #16 14f0: 61bc str r4, [r7, #24] 14f2: 2032 movs r0, #50 ; 0x32 14f4: 47b0 blx r6 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 14f6: 617c str r4, [r7, #20] asm volatile("nop"); 14f8: bf00 nop LV_DRV_DELAY_MS(50); 14fa: 2032 movs r0, #50 ; 0x32 14fc: 47b0 blx r6 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 14fe: 61bc str r4, [r7, #24] LV_DRV_DELAY_MS(50); 1500: 2032 movs r0, #50 ; 0x32 1502: 47b0 blx r6 asm volatile("nop"); 1504: bf00 nop ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 1506: f04f 0840 mov.w r8, #64 ; 0x40 LV_DRV_DELAY_MS(10); 150a: 200a movs r0, #10 150c: f8c7 8014 str.w r8, [r7, #20] 1510: 47b0 blx r6 LV_DRV_DELAY_MS(5); 1512: 2005 movs r0, #5 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1514: f8c7 8018 str.w r8, [r7, #24] ssd1963_cmd(0x01); 1518: 4d55 ldr r5, [pc, #340] ; (1670 ) ssd1963_data(0x2F); //N=0x36 for 6.5M, 0x23 for 10M crystal 151a: 4c56 ldr r4, [pc, #344] ; (1674 ) ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 151c: f8df 9160 ldr.w r9, [pc, #352] ; 1680 LV_DRV_DELAY_MS(5); 1520: 47b0 blx r6 ssd1963_cmd(0x01); 1522: 2001 movs r0, #1 1524: 47a8 blx r5 LV_DRV_DELAY_MS(20); 1526: 2014 movs r0, #20 1528: 47b0 blx r6 ssd1963_cmd(0x01); 152a: 2001 movs r0, #1 152c: 47a8 blx r5 LV_DRV_DELAY_MS(20); 152e: 2014 movs r0, #20 1530: 47b0 blx r6 ssd1963_cmd(0x01); 1532: 2001 movs r0, #1 1534: 47a8 blx r5 LV_DRV_DELAY_MS(20); 1536: 2014 movs r0, #20 1538: 47b0 blx r6 ssd1963_cmd(0xE2); //PLL multiplier, set PLL clock to 120M 153a: 20e2 movs r0, #226 ; 0xe2 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 153c: f8c7 8014 str.w r8, [r7, #20] 1540: 47a8 blx r5 ssd1963_data(0x2F); //N=0x36 for 6.5M, 0x23 for 10M crystal 1542: 202f movs r0, #47 ; 0x2f 1544: 47a0 blx r4 ssd1963_data(0x03); 1546: 2003 movs r0, #3 1548: 47a0 blx r4 ssd1963_data(0x54); 154a: 2054 movs r0, #84 ; 0x54 154c: 47a0 blx r4 ssd1963_cmd(0xE0); // PLL enable 154e: 20e0 movs r0, #224 ; 0xe0 1550: 47a8 blx r5 ssd1963_data(0x01); 1552: 2001 movs r0, #1 1554: 47a0 blx r4 delay_us(100); 1556: 4b48 ldr r3, [pc, #288] ; (1678 ) 1558: 2064 movs r0, #100 ; 0x64 155a: 4798 blx r3 ssd1963_cmd(0xE0); 155c: 20e0 movs r0, #224 ; 0xe0 155e: 47a8 blx r5 ssd1963_data(0x03); // now, use PLL output as system clock 1560: 2003 movs r0, #3 1562: 47a0 blx r4 delay_ms(1); 1564: 2001 movs r0, #1 1566: 47b0 blx r6 ssd1963_cmd(0x01); 1568: 2001 movs r0, #1 156a: 47a8 blx r5 delay_ms(1); 156c: 2001 movs r0, #1 156e: 47b0 blx r6 ssd1963_cmd(0xE6); //PLL setting for PCLK, depends on resolution 1570: 20e6 movs r0, #230 ; 0xe6 1572: 47a8 blx r5 ssd1963_data(0x01); 1574: 2001 movs r0, #1 1576: 47a0 blx r4 ssd1963_data(0xCC); 1578: 20cc movs r0, #204 ; 0xcc 157a: 47a0 blx r4 ssd1963_data(0xCC); 157c: 20cc movs r0, #204 ; 0xcc 157e: 47a0 blx r4 ssd1963_cmd(0xB0); 1580: 20b0 movs r0, #176 ; 0xb0 1582: 47a8 blx r5 ssd1963_data(0x28); // set 18-bit for 7" panel TY700TFT800480 1584: 2028 movs r0, #40 ; 0x28 1586: 47a0 blx r4 ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 1588: 4e3c ldr r6, [pc, #240] ; (167c ) ssd1963_data(0x80); // set TTL mode 158a: 2080 movs r0, #128 ; 0x80 158c: 47a0 blx r4 ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 158e: 47b0 blx r6 1590: 47c8 blx r9 1592: 3801 subs r0, #1 1594: f3c0 2007 ubfx r0, r0, #8, #8 1598: 47a0 blx r4 ssd1963_data(SSD1963_HOR_RES-1); 159a: 47b0 blx r6 159c: 47c8 blx r9 159e: 3801 subs r0, #1 15a0: b2c0 uxtb r0, r0 15a2: 47a0 blx r4 ssd1963_data((SSD1963_VER_RES-1)>>8); 15a4: f8df 90dc ldr.w r9, [pc, #220] ; 1684 15a8: 47b0 blx r6 15aa: 47c8 blx r9 15ac: 3801 subs r0, #1 15ae: f3c0 2007 ubfx r0, r0, #8, #8 15b2: 47a0 blx r4 ssd1963_data(SSD1963_VER_RES-1); 15b4: 47b0 blx r6 15b6: 47c8 blx r9 15b8: 3801 subs r0, #1 15ba: b2c0 uxtb r0, r0 15bc: 47a0 blx r4 ssd1963_data(0x00); 15be: 2000 movs r0, #0 15c0: 47a0 blx r4 ssd1963_cmd(0xF0); //Pixel Data Interface Format 15c2: 20f0 movs r0, #240 ; 0xf0 15c4: 47a8 blx r5 ssd1963_data(0x03); //16-bit(565 format) data 15c6: 2003 movs r0, #3 15c8: 47a0 blx r4 ssd1963_cmd(0x3A); //Set the current pixel format for RGB image data 15ca: 203a movs r0, #58 ; 0x3a 15cc: 47a8 blx r5 ssd1963_data(0x55); //16-bit/pixel 15ce: 2055 movs r0, #85 ; 0x55 15d0: 47a0 blx r4 ssd1963_cmd(0xb4); //SET HBP, 15d2: 20b4 movs r0, #180 ; 0xb4 15d4: 47a8 blx r5 ssd1963_data(0x02); //SET HSYNC Tatol 525 15d6: 2002 movs r0, #2 15d8: 47a0 blx r4 ssd1963_data(0x0d); 15da: 200d movs r0, #13 15dc: 47a0 blx r4 ssd1963_data(0x00); //SET HBP 43 15de: 2000 movs r0, #0 15e0: 47a0 blx r4 ssd1963_data(0x2b); 15e2: 202b movs r0, #43 ; 0x2b 15e4: 47a0 blx r4 ssd1963_data(0x28); //SET VBP 41=40+1 15e6: 2028 movs r0, #40 ; 0x28 15e8: 47a0 blx r4 ssd1963_data(0x00); //SET Hsync pulse start position 15ea: 2000 movs r0, #0 15ec: 47a0 blx r4 ssd1963_data(0x00); 15ee: 2000 movs r0, #0 15f0: 47a0 blx r4 ssd1963_data(0x00); //SET Hsync pulse subpixel start position 15f2: 2000 movs r0, #0 15f4: 47a0 blx r4 ssd1963_cmd(0xb6); //SET VBP, 15f6: 20b6 movs r0, #182 ; 0xb6 15f8: 47a8 blx r5 ssd1963_data(0x01); //SET Vsync total 286=285+1 15fa: 2001 movs r0, #1 15fc: 47a0 blx r4 ssd1963_data(0x1d); 15fe: 201d movs r0, #29 1600: 47a0 blx r4 ssd1963_data(0x00); //SET VBP=12 1602: 2000 movs r0, #0 1604: 47a0 blx r4 ssd1963_data(0x0c); 1606: 200c movs r0, #12 1608: 47a0 blx r4 ssd1963_data(0x09); //SET Vsync pulse 10=9+1 160a: 2009 movs r0, #9 160c: 47a0 blx r4 ssd1963_data(0x00); //SET Vsync pulse start position 160e: 2000 movs r0, #0 1610: 47a0 blx r4 ssd1963_data(0x00); 1612: 2000 movs r0, #0 1614: 47a0 blx r4 ssd1963_cmd(0x2a); //SET column address 1616: 202a movs r0, #42 ; 0x2a 1618: 47a8 blx r5 ssd1963_data(0x00); //SET start column address=0 161a: 2000 movs r0, #0 161c: 47a0 blx r4 ssd1963_data(0x00); 161e: 2000 movs r0, #0 1620: 47a0 blx r4 ssd1963_data(0x01); //SET end column address=479 1622: 2001 movs r0, #1 1624: 47a0 blx r4 ssd1963_data(0xDF); 1626: 20df movs r0, #223 ; 0xdf 1628: 47a0 blx r4 ssd1963_cmd(0x2b); //SET page address 162a: 202b movs r0, #43 ; 0x2b 162c: 47a8 blx r5 ssd1963_data(0x00); //SET start page address=0 162e: 2000 movs r0, #0 1630: 47a0 blx r4 ssd1963_data(0x00); 1632: 2000 movs r0, #0 1634: 47a0 blx r4 ssd1963_data(0x01); //SET end page address=271 1636: 2001 movs r0, #1 1638: 47a0 blx r4 ssd1963_data(0x0F); 163a: 200f movs r0, #15 163c: 47a0 blx r4 ssd1963_cmd(0x29); //display on 163e: 2029 movs r0, #41 ; 0x29 1640: 47a8 blx r5 ssd1963_cmd(0xBE); 1642: 20be movs r0, #190 ; 0xbe 1644: 47a8 blx r5 ssd1963_data(0x06); 1646: 2006 movs r0, #6 1648: 47a0 blx r4 ssd1963_data(0xFF); 164a: 20ff movs r0, #255 ; 0xff 164c: 47a0 blx r4 ssd1963_data(0x01); 164e: 2001 movs r0, #1 1650: 47a0 blx r4 ssd1963_data(0xFF); 1652: 20ff movs r0, #255 ; 0xff 1654: 47a0 blx r4 ssd1963_data(0x00); 1656: 2000 movs r0, #0 1658: 47a0 blx r4 ssd1963_data(0x01); 165a: 2001 movs r0, #1 165c: 47a0 blx r4 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 165e: f8c7 8018 str.w r8, [r7, #24] } 1662: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 1666: bf00 nop 1668: 41008000 .word 0x41008000 166c: 00000565 .word 0x00000565 1670: 0000146d .word 0x0000146d 1674: 000014a9 .word 0x000014a9 1678: 00000541 .word 0x00000541 167c: 0000d8fd .word 0x0000d8fd 1680: 0000d909 .word 0x0000d909 1684: 0000d92d .word 0x0000d92d 00001688 : { 1688: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(area->x2 < 0) return; 168c: f9b1 3004 ldrsh.w r3, [r1, #4] { 1690: ed2d 8b02 vpush {d8} if(area->x2 < 0) return; 1694: 2b00 cmp r3, #0 { 1696: ee08 0a10 vmov s16, r0 169a: b081 sub sp, #4 169c: 460d mov r5, r1 169e: 4690 mov r8, r2 if(area->x2 < 0) return; 16a0: f2c0 8082 blt.w 17a8 if(area->y2 < 0) return; 16a4: f9b1 3006 ldrsh.w r3, [r1, #6] 16a8: 2b00 cmp r3, #0 16aa: db7d blt.n 17a8 if(area->x1 > SSD1963_HOR_RES - 1) return; 16ac: 4f41 ldr r7, [pc, #260] ; (17b4 ) 16ae: f8df a118 ldr.w sl, [pc, #280] ; 17c8 16b2: 47b8 blx r7 16b4: 47d0 blx sl 16b6: f9b5 3000 ldrsh.w r3, [r5] 16ba: 4283 cmp r3, r0 16bc: da74 bge.n 17a8 if(area->y1 > SSD1963_VER_RES - 1) return; 16be: 47b8 blx r7 16c0: f8df b108 ldr.w fp, [pc, #264] ; 17cc 16c4: 47d8 blx fp 16c6: f9b5 6002 ldrsh.w r6, [r5, #2] 16ca: 42b0 cmp r0, r6 16cc: dd6c ble.n 17a8 int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 16ce: f9b5 4000 ldrsh.w r4, [r5] int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 16d2: 47b8 blx r7 16d4: 47d0 blx sl 16d6: f9b5 3004 ldrsh.w r3, [r5, #4] 16da: 4298 cmp r0, r3 int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 16dc: ea24 74e4 bic.w r4, r4, r4, asr #31 int32_t act_y1 = area->y1 < 0 ? 0 : area->y1; 16e0: 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; 16e4: dc53 bgt.n 178e 16e6: 47b8 blx r7 16e8: 47d0 blx sl 16ea: f100 3aff add.w sl, r0, #4294967295 ; 0xffffffff int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 16ee: 47b8 blx r7 16f0: 47d8 blx fp 16f2: f9b5 3006 ldrsh.w r3, [r5, #6] 16f6: 4298 cmp r0, r3 16f8: dc4b bgt.n 1792 16fa: 47b8 blx r7 16fc: 47d8 blx fp 16fe: 1e47 subs r7, r0, #1 ssd1963_cmd(0x002A); 1700: f8df 90cc ldr.w r9, [pc, #204] ; 17d0 ssd1963_data(act_x1 >> 8); 1704: f8df b0cc ldr.w fp, [pc, #204] ; 17d4 ssd1963_cmd(0x002A); 1708: 202a movs r0, #42 ; 0x2a 170a: 47c8 blx r9 ssd1963_data(act_x1 >> 8); 170c: f3c4 2007 ubfx r0, r4, #8, #8 1710: 47d8 blx fp ssd1963_data(0x00FF & act_x1); 1712: b2e0 uxtb r0, r4 1714: 47d8 blx fp ssd1963_data(act_x2 >> 8); 1716: f3ca 2007 ubfx r0, sl, #8, #8 171a: 47d8 blx fp ssd1963_data(0x00FF & act_x2); 171c: fa5f f08a uxtb.w r0, sl 1720: 47d8 blx fp ssd1963_cmd(0x002B); 1722: 202b movs r0, #43 ; 0x2b 1724: 47c8 blx r9 ssd1963_data(act_y1 >> 8); 1726: f3c6 2007 ubfx r0, r6, #8, #8 172a: 47d8 blx fp ssd1963_data(0x00FF & act_y1); 172c: b2f0 uxtb r0, r6 172e: 47d8 blx fp ssd1963_data(act_y2 >> 8); 1730: f3c7 2007 ubfx r0, r7, #8, #8 1734: 47d8 blx fp ssd1963_data(0x00FF & act_y2); 1736: b2f8 uxtb r0, r7 1738: 47d8 blx fp ssd1963_cmd(0x2c); 173a: 202c movs r0, #44 ; 0x2c 173c: 47c8 blx r9 uint16_t full_w = area->x2 - area->x1 + 1; 173e: 88ab ldrh r3, [r5, #4] 1740: 882a ldrh r2, [r5, #0] 1742: 3301 adds r3, #1 1744: 1a9d subs r5, r3, r2 if(cmd_mode != false) { 1746: 4a1c ldr r2, [pc, #112] ; (17b8 ) 1748: 4b1c ldr r3, [pc, #112] ; (17bc ) 174a: 7811 ldrb r1, [r2, #0] uint16_t full_w = area->x2 - area->x1 + 1; 174c: b2ad uxth r5, r5 if(cmd_mode != false) { 174e: b119 cbz r1, 1758 1750: 2120 movs r1, #32 1752: 6199 str r1, [r3, #24] cmd_mode = false; 1754: 2100 movs r1, #0 1756: 7011 strb r1, [r2, #0] uint16_t act_w = act_x2 - act_x1 + 1; 1758: f1c4 0401 rsb r4, r4, #1 ((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask; 175c: 2240 movs r2, #64 ; 0x40 175e: 615a str r2, [r3, #20] LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 1760: 4817 ldr r0, [pc, #92] ; (17c0 ) 1762: f8df b074 ldr.w fp, [pc, #116] ; 17d8 uint16_t act_w = act_x2 - act_x1 + 1; 1766: eb04 030a add.w r3, r4, sl LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 176a: f8df a070 ldr.w sl, [pc, #112] ; 17dc uint16_t act_w = act_x2 - act_x1 + 1; 176e: b29c uxth r4, r3 color_p += full_w; 1770: 006d lsls r5, r5, #1 for(i = act_y1; i <= act_y2; i++) { 1772: 42be cmp r6, r7 1774: dd0f ble.n 1796 ((Port *)hw)->Group[submodule_index].OUTSET.reg = mask; 1776: 4b11 ldr r3, [pc, #68] ; (17bc ) 1778: 2240 movs r2, #64 ; 0x40 177a: 619a str r2, [r3, #24] lv_disp_flush_ready(disp_drv); 177c: ee18 0a10 vmov r0, s16 1780: 4b10 ldr r3, [pc, #64] ; (17c4 ) } 1782: b001 add sp, #4 1784: ecbd 8b02 vpop {d8} 1788: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_disp_flush_ready(disp_drv); 178c: 4718 bx r3 int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 178e: 469a mov sl, r3 1790: e7ad b.n 16ee int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 1792: 461f mov r7, r3 1794: e7b4 b.n 1700 LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 1796: 4642 mov r2, r8 1798: 4623 mov r3, r4 179a: 4651 mov r1, sl 179c: 3601 adds r6, #1 179e: 47d8 blx fp color_p += full_w; 17a0: 44a8 add r8, r5 for(i = act_y1; i <= act_y2; i++) { 17a2: 4807 ldr r0, [pc, #28] ; (17c0 ) 17a4: b236 sxth r6, r6 17a6: e7e4 b.n 1772 } 17a8: b001 add sp, #4 17aa: ecbd 8b02 vpop {d8} 17ae: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 17b2: bf00 nop 17b4: 0000d8fd .word 0x0000d8fd 17b8: 2000000c .word 0x2000000c 17bc: 41008000 .word 0x41008000 17c0: 41008080 .word 0x41008080 17c4: 0000d9b9 .word 0x0000d9b9 17c8: 0000d909 .word 0x0000d909 17cc: 0000d92d .word 0x0000d92d 17d0: 0000146d .word 0x0000146d 17d4: 000014a9 .word 0x000014a9 17d8: 00001115 .word 0x00001115 17dc: 1c03c3f7 .word 0x1c03c3f7 000017e0 : bool lv_debug_check_null(const void * p) { if(p) return true; return false; } 17e0: 3800 subs r0, #0 17e2: bf18 it ne 17e4: 2001 movne r0, #1 17e6: 4770 bx lr 000017e8 : 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) { 17e8: b5f0 push {r4, r5, r6, r7, lr} static const char hex[] = "0123456789ABCDEF"; size_t msg_len = strlen(msg); 17ea: 4b1b ldr r3, [pc, #108] ; (1858 ) { 17ec: b0c3 sub sp, #268 ; 0x10c 17ee: 4607 mov r7, r0 17f0: 4616 mov r6, r2 size_t msg_len = strlen(msg); 17f2: 4798 blx r3 uint32_t value_len = sizeof(unsigned long int); if(msg_len < 230) { 17f4: 28e5 cmp r0, #229 ; 0xe5 size_t msg_len = strlen(msg); 17f6: 4604 mov r4, r0 if(msg_len < 230) { 17f8: d829 bhi.n 184e char buf[255]; char * bufp = buf; /*Add the function name*/ _lv_memcpy(bufp, msg, msg_len); 17fa: ad02 add r5, sp, #8 17fc: 4602 mov r2, r0 17fe: 4b17 ldr r3, [pc, #92] ; (185c ) 1800: 4639 mov r1, r7 1802: 4628 mov r0, r5 1804: 4798 blx r3 bufp += msg_len; 1806: 192b adds r3, r5, r4 /*Add value in hey*/ *bufp = ' '; 1808: 2220 movs r2, #32 180a: 552a strb r2, [r5, r4] bufp ++; *bufp = '('; 180c: 2228 movs r2, #40 ; 0x28 180e: 705a strb r2, [r3, #1] bufp ++; *bufp = '0'; 1810: 2230 movs r2, #48 ; 0x30 1812: 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]; 1814: 4c12 ldr r4, [pc, #72] ; (1860 ) *bufp = 'x'; 1816: 2278 movs r2, #120 ; 0x78 1818: 70da strb r2, [r3, #3] bufp ++; 181a: 1d18 adds r0, r3, #4 181c: 221c movs r2, #28 uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; 181e: fa26 f102 lsr.w r1, r6, r2 *bufp = hex[x]; 1822: f001 010f and.w r1, r1, #15 1826: 4421 add r1, r4 for(i = value_len * 2 - 1; i >= 0; i--) { 1828: 3a04 subs r2, #4 *bufp = hex[x]; 182a: 7cc9 ldrb r1, [r1, #19] 182c: f800 1b01 strb.w r1, [r0], #1 for(i = value_len * 2 - 1; i >= 0; i--) { 1830: 1d11 adds r1, r2, #4 1832: d1f4 bne.n 181e bufp++; } *bufp = ')'; 1834: 2229 movs r2, #41 ; 0x29 1836: 731a strb r2, [r3, #12] bufp ++; *bufp = '\0'; 1838: 2200 movs r2, #0 183a: 735a strb r2, [r3, #13] LV_LOG_ERROR(buf); 183c: 4b09 ldr r3, [pc, #36] ; (1864 ) 183e: 9500 str r5, [sp, #0] 1840: 22bc movs r2, #188 ; 0xbc } else { LV_LOG_ERROR(msg); 1842: 4909 ldr r1, [pc, #36] ; (1868 ) 1844: 4c09 ldr r4, [pc, #36] ; (186c ) 1846: 2003 movs r0, #3 1848: 47a0 blx r4 } } 184a: b043 add sp, #268 ; 0x10c 184c: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_ERROR(msg); 184e: 4b05 ldr r3, [pc, #20] ; (1864 ) 1850: 9700 str r7, [sp, #0] 1852: 22bf movs r2, #191 ; 0xbf 1854: e7f5 b.n 1842 1856: bf00 nop 1858: 00016339 .word 0x00016339 185c: 0000ec31 .word 0x0000ec31 1860: 0001eb19 .word 0x0001eb19 1864: 0001eb3d .word 0x0001eb3d 1868: 0001ea0f .word 0x0001ea0f 186c: 0000e8e9 .word 0x0000e8e9 00001870 : * @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) { 1870: b537 push {r0, r1, r2, r4, r5, lr} if(!disp) disp = lv_disp_get_default(); 1872: 4604 mov r4, r0 1874: b970 cbnz r0, 1894 1876: 4b08 ldr r3, [pc, #32] ; (1898 ) 1878: 4798 blx r3 if(!disp) { 187a: 4604 mov r4, r0 187c: b950 cbnz r0, 1894 LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); 187e: 4b07 ldr r3, [pc, #28] ; (189c ) 1880: 9300 str r3, [sp, #0] 1882: 4907 ldr r1, [pc, #28] ; (18a0 ) 1884: 4b07 ldr r3, [pc, #28] ; (18a4 ) 1886: 4d08 ldr r5, [pc, #32] ; (18a8 ) 1888: 222e movs r2, #46 ; 0x2e 188a: 2002 movs r0, #2 188c: 47a8 blx r5 return NULL; } return disp->act_scr; } 188e: 4620 mov r0, r4 1890: b003 add sp, #12 1892: bd30 pop {r4, r5, pc} return disp->act_scr; 1894: 6be4 ldr r4, [r4, #60] ; 0x3c 1896: e7fa b.n 188e 1898: 0000d8fd .word 0x0000d8fd 189c: 0001eb80 .word 0x0001eb80 18a0: 0001eb50 .word 0x0001eb50 18a4: 0001ecf0 .word 0x0001ecf0 18a8: 0000e8e9 .word 0x0000e8e9 000018ac : * 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) { 18ac: b537 push {r0, r1, r2, r4, r5, lr} if(!disp) disp = lv_disp_get_default(); 18ae: 4604 mov r4, r0 18b0: b970 cbnz r0, 18d0 18b2: 4b08 ldr r3, [pc, #32] ; (18d4 ) 18b4: 4798 blx r3 if(!disp) { 18b6: 4604 mov r4, r0 18b8: b950 cbnz r0, 18d0 LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); 18ba: 4b07 ldr r3, [pc, #28] ; (18d8 ) 18bc: 9300 str r3, [sp, #0] 18be: 4907 ldr r1, [pc, #28] ; (18dc ) 18c0: 4b07 ldr r3, [pc, #28] ; (18e0 ) 18c2: 4d08 ldr r5, [pc, #32] ; (18e4 ) 18c4: 224b movs r2, #75 ; 0x4b 18c6: 2002 movs r0, #2 18c8: 47a8 blx r5 return NULL; } return disp->top_layer; } 18ca: 4620 mov r0, r4 18cc: b003 add sp, #12 18ce: bd30 pop {r4, r5, pc} return disp->top_layer; 18d0: 6c24 ldr r4, [r4, #64] ; 0x40 18d2: e7fa b.n 18ca 18d4: 0000d8fd .word 0x0000d8fd 18d8: 0001ebb9 .word 0x0001ebb9 18dc: 0001eb50 .word 0x0001eb50 18e0: 0001ed04 .word 0x0001ed04 18e4: 0000e8e9 .word 0x0000e8e9 000018e8 : * 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) { 18e8: b537 push {r0, r1, r2, r4, r5, lr} if(!disp) disp = lv_disp_get_default(); 18ea: 4604 mov r4, r0 18ec: b970 cbnz r0, 190c 18ee: 4b08 ldr r3, [pc, #32] ; (1910 ) 18f0: 4798 blx r3 if(!disp) { 18f2: 4604 mov r4, r0 18f4: b950 cbnz r0, 190c LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); 18f6: 4b07 ldr r3, [pc, #28] ; (1914 ) 18f8: 9300 str r3, [sp, #0] 18fa: 4907 ldr r1, [pc, #28] ; (1918 ) 18fc: 4b07 ldr r3, [pc, #28] ; (191c ) 18fe: 4d08 ldr r5, [pc, #32] ; (1920 ) 1900: 225c movs r2, #92 ; 0x5c 1902: 2002 movs r0, #2 1904: 47a8 blx r5 return NULL; } return disp->sys_layer; } 1906: 4620 mov r0, r4 1908: b003 add sp, #12 190a: bd30 pop {r4, r5, pc} return disp->sys_layer; 190c: 6c64 ldr r4, [r4, #68] ; 0x44 190e: e7fa b.n 1906 1910: 0000d8fd .word 0x0000d8fd 1914: 0001ebf2 .word 0x0001ebf2 1918: 0001eb50 .word 0x0001eb50 191c: 0001ed1a .word 0x0001ed1a 1920: 0000e8e9 .word 0x0000e8e9 00001924 : if(group->focus_cb) group->focus_cb(group); } static void obj_to_foreground(lv_obj_t * obj) { 1924: 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); 1926: 4d09 ldr r5, [pc, #36] ; (194c ) lv_obj_t * last_top = NULL; 1928: 2400 movs r4, #0 while(i != NULL) { 192a: b928 cbnz r0, 1938 } if(last_top != NULL) { 192c: b164 cbz r4, 1948 /*Move the last_top object to the foreground*/ lv_obj_move_foreground(last_top); 192e: 4620 mov r0, r4 1930: 4b07 ldr r3, [pc, #28] ; (1950 ) } } 1932: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_move_foreground(last_top); 1936: 4718 bx r3 if(i->top != 0) last_top = i; 1938: f890 3034 ldrb.w r3, [r0, #52] ; 0x34 193c: f013 0f20 tst.w r3, #32 1940: bf18 it ne 1942: 4604 movne r4, r0 i = lv_obj_get_parent(i); 1944: 47a8 blx r5 1946: e7f0 b.n 192a } 1948: bd70 pop {r4, r5, r6, pc} 194a: bf00 nop 194c: 00002125 .word 0x00002125 1950: 00002811 .word 0x00002811 00001954 : { 1954: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} if(group->frozen) return; 1958: 7d06 ldrb r6, [r0, #20] 195a: f016 0601 ands.w r6, r6, #1 { 195e: 4605 mov r5, r0 1960: 4688 mov r8, r1 1962: 4617 mov r7, r2 if(group->frozen) return; 1964: d15c bne.n 1a20 lv_obj_t ** obj_next = group->obj_focus; 1966: 68c4 ldr r4, [r0, #12] if(!lv_obj_get_hidden(*obj_next)) break; 1968: f8df a0c8 ldr.w sl, [pc, #200] ; 1a34 bool can_begin = true; 196c: f04f 0901 mov.w r9, #1 if(obj_next == NULL) { 1970: 2c00 cmp r4, #0 1972: d14c bne.n 1a0e if(group->wrap || obj_sentinel == NULL) { 1974: 7d2b ldrb r3, [r5, #20] 1976: 06db lsls r3, r3, #27 1978: d401 bmi.n 197e 197a: 2e00 cmp r6, #0 197c: d150 bne.n 1a20 if(!can_begin) return; 197e: f1b9 0f00 cmp.w r9, #0 1982: d04d beq.n 1a20 obj_next = begin(&group->obj_ll); 1984: 4628 mov r0, r5 1986: 47c0 blx r8 1988: 4604 mov r4, r0 if(obj_sentinel == NULL) { 198a: 2e00 cmp r6, #0 198c: d13a bne.n 1a04 if(obj_sentinel == NULL) return; /*Group is empty*/ 198e: 2800 cmp r0, #0 1990: d046 beq.n 1a20 1992: 4606 mov r6, r0 can_begin = false; 1994: f04f 0900 mov.w r9, #0 if(!lv_obj_get_hidden(*obj_next)) break; 1998: 6820 ldr r0, [r4, #0] 199a: 47d0 blx sl 199c: 4602 mov r2, r0 199e: 2800 cmp r0, #0 19a0: d1e6 bne.n 1970 if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ 19a2: 68eb ldr r3, [r5, #12] 19a4: 42a3 cmp r3, r4 19a6: d03b beq.n 1a20 if(group->obj_focus) { 19a8: 4e1f ldr r6, [pc, #124] ; (1a28 ) 19aa: b17b cbz r3, 19cc (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 19ac: 6818 ldr r0, [r3, #0] 19ae: 9201 str r2, [sp, #4] 19b0: 69c3 ldr r3, [r0, #28] 19b2: 2117 movs r1, #23 19b4: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); 19b6: 68eb ldr r3, [r5, #12] 19b8: 9a01 ldr r2, [sp, #4] 19ba: 6818 ldr r0, [r3, #0] 19bc: 210e movs r1, #14 19be: 47b0 blx r6 if(res != LV_RES_OK) return; 19c0: 2801 cmp r0, #1 19c2: d12d bne.n 1a20 lv_obj_invalidate(*group->obj_focus); 19c4: 68eb ldr r3, [r5, #12] 19c6: 6818 ldr r0, [r3, #0] 19c8: 4b18 ldr r3, [pc, #96] ; (1a2c ) 19ca: 4798 blx r3 (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 19cc: 6820 ldr r0, [r4, #0] group->obj_focus = obj_next; 19ce: 60ec str r4, [r5, #12] (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 19d0: 69c3 ldr r3, [r0, #28] 19d2: 2200 movs r2, #0 19d4: 2116 movs r1, #22 19d6: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); 19d8: 68eb ldr r3, [r5, #12] 19da: 2200 movs r2, #0 19dc: 6818 ldr r0, [r3, #0] 19de: 210d movs r1, #13 19e0: 47b0 blx r6 if(res != LV_RES_OK) return; 19e2: 2801 cmp r0, #1 19e4: d11c bne.n 1a20 obj_to_foreground(*group->obj_focus); 19e6: 68eb ldr r3, [r5, #12] 19e8: 6818 ldr r0, [r3, #0] 19ea: 4b11 ldr r3, [pc, #68] ; (1a30 ) 19ec: 4798 blx r3 lv_obj_invalidate(*group->obj_focus); 19ee: 68eb ldr r3, [r5, #12] 19f0: 6818 ldr r0, [r3, #0] 19f2: 4b0e ldr r3, [pc, #56] ; (1a2c ) 19f4: 4798 blx r3 if(group->focus_cb) group->focus_cb(group); 19f6: 692b ldr r3, [r5, #16] 19f8: b193 cbz r3, 1a20 19fa: 4628 mov r0, r5 } 19fc: b002 add sp, #8 19fe: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} if(group->focus_cb) group->focus_cb(group); 1a02: 4718 bx r3 can_begin = false; 1a04: f04f 0900 mov.w r9, #0 if(obj_next == NULL) continue; 1a08: 2c00 cmp r4, #0 1a0a: d1c5 bne.n 1998 1a0c: e7b2 b.n 1974 obj_next = move(&group->obj_ll, obj_next); 1a0e: 4621 mov r1, r4 1a10: 4628 mov r0, r5 1a12: 47b8 blx r7 if(obj_sentinel == NULL) { 1a14: 2e00 cmp r6, #0 1a16: bf08 it eq 1a18: 4626 moveq r6, r4 if(obj_next == obj_sentinel) return; 1a1a: 42b0 cmp r0, r6 obj_next = move(&group->obj_ll, obj_next); 1a1c: 4604 mov r4, r0 if(obj_next == obj_sentinel) return; 1a1e: d1f3 bne.n 1a08 } 1a20: b002 add sp, #8 1a22: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1a26: bf00 nop 1a28: 00001f79 .word 0x00001f79 1a2c: 00002785 .word 0x00002785 1a30: 00001925 .word 0x00001925 1a34: 0000261d .word 0x0000261d 00001a38 <_lv_group_init>: _lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t)); 1a38: 4801 ldr r0, [pc, #4] ; (1a40 <_lv_group_init+0x8>) 1a3a: 4b02 ldr r3, [pc, #8] ; (1a44 <_lv_group_init+0xc>) 1a3c: 2118 movs r1, #24 1a3e: 4718 bx r3 1a40: 20008648 .word 0x20008648 1a44: 0000e605 .word 0x0000e605 00001a48 : focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next); 1a48: 4a01 ldr r2, [pc, #4] ; (1a50 ) 1a4a: 4902 ldr r1, [pc, #8] ; (1a54 ) 1a4c: 4b02 ldr r3, [pc, #8] ; (1a58 ) 1a4e: 4718 bx r3 1a50: 0000e6b5 .word 0x0000e6b5 1a54: 0000e6a9 .word 0x0000e6a9 1a58: 00001955 .word 0x00001955 00001a5c : focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev); 1a5c: 4a01 ldr r2, [pc, #4] ; (1a64 ) 1a5e: 4902 ldr r1, [pc, #8] ; (1a68 ) 1a60: 4b02 ldr r3, [pc, #8] ; (1a6c ) 1a62: 4718 bx r3 1a64: 0000e6d5 .word 0x0000e6d5 1a68: 0000e6af .word 0x0000e6af 1a6c: 00001955 .word 0x00001955 00001a70 : { 1a70: b538 push {r3, r4, r5, lr} uint8_t temp_wrap = g->wrap; 1a72: 7d03 ldrb r3, [r0, #20] 1a74: f3c3 1500 ubfx r5, r3, #4, #1 g->wrap = 1; 1a78: f043 0310 orr.w r3, r3, #16 1a7c: 7503 strb r3, [r0, #20] { 1a7e: 4604 mov r4, r0 if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT) 1a80: 071b lsls r3, r3, #28 lv_group_focus_next(g); 1a82: bf54 ite pl 1a84: 4b03 ldrpl r3, [pc, #12] ; (1a94 ) lv_group_focus_prev(g); 1a86: 4b04 ldrmi r3, [pc, #16] ; (1a98 ) 1a88: 4798 blx r3 g->wrap = temp_wrap; 1a8a: 7d23 ldrb r3, [r4, #20] 1a8c: f365 1304 bfi r3, r5, #4, #1 1a90: 7523 strb r3, [r4, #20] } 1a92: bd38 pop {r3, r4, r5, pc} 1a94: 00001a49 .word 0x00001a49 1a98: 00001a5d .word 0x00001a5d 00001a9c : { 1a9c: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 1aa0: 460d mov r5, r1 if(group == NULL) return; 1aa2: 4604 mov r4, r0 1aa4: 2800 cmp r0, #0 1aa6: d036 beq.n 1b16 _LV_LL_READ(group->obj_ll, obj_i) { 1aa8: f8df 80c4 ldr.w r8, [pc, #196] ; 1b70 1aac: 4e24 ldr r6, [pc, #144] ; (1b40 ) 1aae: 47c0 blx r8 1ab0: bb30 cbnz r0, 1b00 if(obj->group_p) { 1ab2: 6bab ldr r3, [r5, #56] ; 0x38 1ab4: b173 cbz r3, 1ad4 if(lv_obj_is_focused(obj)) { 1ab6: 4b23 ldr r3, [pc, #140] ; (1b44 ) 1ab8: 4628 mov r0, r5 1aba: 4798 blx r3 1abc: b150 cbz r0, 1ad4 lv_group_refocus(obj->group_p); 1abe: 6ba8 ldr r0, [r5, #56] ; 0x38 1ac0: 4b21 ldr r3, [pc, #132] ; (1b48 ) LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 1ac2: 4e22 ldr r6, [pc, #136] ; (1b4c ) lv_group_refocus(obj->group_p); 1ac4: 4798 blx r3 LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 1ac6: 4b22 ldr r3, [pc, #136] ; (1b50 ) 1ac8: 9300 str r3, [sp, #0] 1aca: 4922 ldr r1, [pc, #136] ; (1b54 ) 1acc: 4b22 ldr r3, [pc, #136] ; (1b58 ) 1ace: 227f movs r2, #127 ; 0x7f 1ad0: 2001 movs r0, #1 1ad2: 47b0 blx r6 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1ad4: 4b21 ldr r3, [pc, #132] ; (1b5c ) obj->group_p = group; 1ad6: 63ac str r4, [r5, #56] ; 0x38 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1ad8: 4620 mov r0, r4 1ada: 4798 blx r3 LV_ASSERT_MEM(next); 1adc: 4b20 ldr r3, [pc, #128] ; (1b60 ) lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1ade: 4606 mov r6, r0 LV_ASSERT_MEM(next); 1ae0: 4798 blx r3 1ae2: 4607 mov r7, r0 1ae4: b9f0 cbnz r0, 1b24 1ae6: 4b1c ldr r3, [pc, #112] ; (1b58 ) 1ae8: 491a ldr r1, [pc, #104] ; (1b54 ) 1aea: 9300 str r3, [sp, #0] 1aec: 2285 movs r2, #133 ; 0x85 1aee: 2003 movs r0, #3 1af0: 4c16 ldr r4, [pc, #88] ; (1b4c ) 1af2: 47a0 blx r4 1af4: 481b ldr r0, [pc, #108] ; (1b64 ) 1af6: 491c ldr r1, [pc, #112] ; (1b68 ) 1af8: 4632 mov r2, r6 1afa: 463b mov r3, r7 1afc: 4788 blx r1 1afe: e7fe b.n 1afe if((*obj_i) == obj) { 1b00: 6803 ldr r3, [r0, #0] 1b02: 42ab cmp r3, r5 1b04: d10a bne.n 1b1c LV_LOG_INFO("lv_group_add_obj: the object is already added to this group"); 1b06: 4b19 ldr r3, [pc, #100] ; (1b6c ) 1b08: 9300 str r3, [sp, #0] 1b0a: 4912 ldr r1, [pc, #72] ; (1b54 ) 1b0c: 4b12 ldr r3, [pc, #72] ; (1b58 ) 1b0e: 4c0f ldr r4, [pc, #60] ; (1b4c ) 1b10: 2275 movs r2, #117 ; 0x75 1b12: 2001 movs r0, #1 1b14: 47a0 blx r4 } 1b16: b002 add sp, #8 1b18: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} _LV_LL_READ(group->obj_ll, obj_i) { 1b1c: 4601 mov r1, r0 1b1e: 4620 mov r0, r4 1b20: 47b0 blx r6 1b22: e7c5 b.n 1ab0 if(next == NULL) return; 1b24: 2e00 cmp r6, #0 1b26: d0f6 beq.n 1b16 *next = obj; 1b28: 6035 str r5, [r6, #0] if(_lv_ll_get_head(&group->obj_ll) == next) { 1b2a: 4620 mov r0, r4 1b2c: 47c0 blx r8 1b2e: 4286 cmp r6, r0 1b30: d1f1 bne.n 1b16 lv_group_refocus(group); 1b32: 4b05 ldr r3, [pc, #20] ; (1b48 ) 1b34: 4620 mov r0, r4 } 1b36: b002 add sp, #8 1b38: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} lv_group_refocus(group); 1b3c: 4718 bx r3 1b3e: bf00 nop 1b40: 0000e6b5 .word 0x0000e6b5 1b44: 000041f9 .word 0x000041f9 1b48: 00001a71 .word 0x00001a71 1b4c: 0000e8e9 .word 0x0000e8e9 1b50: 0001ee08 .word 0x0001ee08 1b54: 0001ed8d .word 0x0001ed8d 1b58: 0001ee4a .word 0x0001ee4a 1b5c: 0000e661 .word 0x0000e661 1b60: 000017e1 .word 0x000017e1 1b64: 0001edbe .word 0x0001edbe 1b68: 000017e9 .word 0x000017e9 1b6c: 0001edcc .word 0x0001edcc 1b70: 0000e6a9 .word 0x0000e6a9 00001b74 : { 1b74: b5f8 push {r3, r4, r5, r6, r7, lr} lv_group_t * g = obj->group_p; 1b76: 6b84 ldr r4, [r0, #56] ; 0x38 { 1b78: 4606 mov r6, r0 if(g == NULL) return; 1b7a: 2c00 cmp r4, #0 1b7c: d033 beq.n 1be6 if(g->obj_focus == NULL) return; /*Just to be sure (Not possible if there is at least one object in the group)*/ 1b7e: 68e3 ldr r3, [r4, #12] 1b80: 2b00 cmp r3, #0 1b82: d030 beq.n 1be6 if(*g->obj_focus == obj) { 1b84: 681b ldr r3, [r3, #0] 1b86: 4d1c ldr r5, [pc, #112] ; (1bf8 ) 1b88: 4283 cmp r3, r0 1b8a: d11b bne.n 1bc4 if(g->frozen) g->frozen = 0; 1b8c: 7d23 ldrb r3, [r4, #20] 1b8e: 07da lsls r2, r3, #31 1b90: bf44 itt mi 1b92: f36f 0300 bfcmi r3, #0, #1 1b96: 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) { 1b98: 4620 mov r0, r4 1b9a: 47a8 blx r5 1b9c: 68e3 ldr r3, [r4, #12] 1b9e: 4283 cmp r3, r0 1ba0: d122 bne.n 1be8 1ba2: 4b16 ldr r3, [pc, #88] ; (1bfc ) 1ba4: 4620 mov r0, r4 1ba6: 4798 blx r3 1ba8: 68e3 ldr r3, [r4, #12] 1baa: 4298 cmp r0, r3 1bac: d11c bne.n 1be8 (*g->obj_focus)->signal_cb(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 1bae: 6800 ldr r0, [r0, #0] 1bb0: 2200 movs r2, #0 1bb2: 69c3 ldr r3, [r0, #28] 1bb4: 2117 movs r1, #23 1bb6: 4798 blx r3 if(*g->obj_focus == obj) { 1bb8: 68e3 ldr r3, [r4, #12] 1bba: 681b ldr r3, [r3, #0] 1bbc: 42b3 cmp r3, r6 g->obj_focus = NULL; 1bbe: bf04 itt eq 1bc0: 2300 moveq r3, #0 1bc2: 60e3 streq r3, [r4, #12] _LV_LL_READ(g->obj_ll, i) { 1bc4: 4620 mov r0, r4 1bc6: 47a8 blx r5 1bc8: 4f0d ldr r7, [pc, #52] ; (1c00 ) 1bca: 4605 mov r5, r0 1bcc: b15d cbz r5, 1be6 if(*i == obj) { 1bce: 682b ldr r3, [r5, #0] 1bd0: 42b3 cmp r3, r6 _lv_ll_remove(&g->obj_ll, i); 1bd2: 4629 mov r1, r5 1bd4: 4620 mov r0, r4 if(*i == obj) { 1bd6: d10b bne.n 1bf0 _lv_ll_remove(&g->obj_ll, i); 1bd8: 4b0a ldr r3, [pc, #40] ; (1c04 ) 1bda: 4798 blx r3 lv_mem_free(i); 1bdc: 4b0a ldr r3, [pc, #40] ; (1c08 ) 1bde: 4628 mov r0, r5 1be0: 4798 blx r3 obj->group_p = NULL; 1be2: 2300 movs r3, #0 1be4: 63b3 str r3, [r6, #56] ; 0x38 } 1be6: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_group_refocus(g); 1be8: 4b08 ldr r3, [pc, #32] ; (1c0c ) 1bea: 4620 mov r0, r4 1bec: 4798 blx r3 1bee: e7e3 b.n 1bb8 _LV_LL_READ(g->obj_ll, i) { 1bf0: 47b8 blx r7 1bf2: 4605 mov r5, r0 1bf4: e7ea b.n 1bcc 1bf6: bf00 nop 1bf8: 0000e6a9 .word 0x0000e6a9 1bfc: 0000e6af .word 0x0000e6af 1c00: 0000e6b5 .word 0x0000e6b5 1c04: 0000e76d .word 0x0000e76d 1c08: 0000eae5 .word 0x0000eae5 1c0c: 00001a71 .word 0x00001a71 00001c10 : if(!group) return NULL; 1c10: b110 cbz r0, 1c18 if(group->obj_focus == NULL) return NULL; 1c12: 68c0 ldr r0, [r0, #12] 1c14: b100 cbz r0, 1c18 return *group->obj_focus; 1c16: 6800 ldr r0, [r0, #0] } 1c18: 4770 bx lr 00001c1a : if(!group) return false; 1c1a: b110 cbz r0, 1c22 return group->editing ? true : false; 1c1c: 7d00 ldrb r0, [r0, #20] 1c1e: f3c0 0040 ubfx r0, r0, #1, #1 } 1c22: 4770 bx lr 00001c24 : void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj) 1c24: b5f8 push {r3, r4, r5, r6, r7, lr} lv_indev_t * i = lv_indev_get_next(NULL); 1c26: 4d0c ldr r5, [pc, #48] ; (1c58 ) if(indev_act == i) indev_obj_act = NULL; 1c28: 4e0c ldr r6, [pc, #48] ; (1c5c ) void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj) 1c2a: 4604 mov r4, r0 lv_indev_t * i = lv_indev_get_next(NULL); 1c2c: 2000 movs r0, #0 1c2e: 47a8 blx r5 if(indev_act == i) indev_obj_act = NULL; 1c30: 2700 movs r7, #0 while(i) { 1c32: b900 cbnz r0, 1c36 } 1c34: bdf8 pop {r3, r4, r5, r6, r7, pc} i->proc.reset_query = 1; 1c36: f890 3050 ldrb.w r3, [r0, #80] ; 0x50 1c3a: f043 0302 orr.w r3, r3, #2 1c3e: f880 3050 strb.w r3, [r0, #80] ; 0x50 if(indev_act == i) indev_obj_act = NULL; 1c42: 6873 ldr r3, [r6, #4] 1c44: 4298 cmp r0, r3 1c46: bf08 it eq 1c48: 6037 streq r7, [r6, #0] if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { 1c4a: b114 cbz r4, 1c52 1c4c: 6bc3 ldr r3, [r0, #60] ; 0x3c 1c4e: 429c cmp r4, r3 1c50: d100 bne.n 1c54 i->proc.types.pointer.last_pressed = NULL; 1c52: 63c7 str r7, [r0, #60] ; 0x3c i = lv_indev_get_next(i); 1c54: 47a8 blx r5 1c56: e7ec b.n 1c32 1c58: 0000da19 .word 0x0000da19 1c5c: 200080ec .word 0x200080ec 00001c60 <_lv_indev_init>: if(indev) { 1c60: 4b01 ldr r3, [pc, #4] ; (1c68 <_lv_indev_init+0x8>) 1c62: 2000 movs r0, #0 1c64: 4718 bx r3 1c66: bf00 nop 1c68: 00001c25 .word 0x00001c25 00001c6c : } 1c6c: 4b01 ldr r3, [pc, #4] ; (1c74 ) 1c6e: 6858 ldr r0, [r3, #4] 1c70: 4770 bx lr 1c72: bf00 nop 1c74: 200080ec .word 0x200080ec 00001c78 : if(indev) { 1c78: 4603 mov r3, r0 1c7a: b190 cbz r0, 1ca2 indev->proc.reset_query = 1; 1c7c: f890 2050 ldrb.w r2, [r0, #80] ; 0x50 1c80: f042 0202 orr.w r2, r2, #2 1c84: f880 2050 strb.w r2, [r0, #80] ; 0x50 if(indev_act == indev) indev_obj_act = NULL; 1c88: 4a08 ldr r2, [pc, #32] ; (1cac ) 1c8a: 6850 ldr r0, [r2, #4] 1c8c: 4298 cmp r0, r3 1c8e: bf04 itt eq 1c90: 2000 moveq r0, #0 1c92: 6010 streq r0, [r2, #0] if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { 1c94: b111 cbz r1, 1c9c 1c96: 6bda ldr r2, [r3, #60] ; 0x3c 1c98: 428a cmp r2, r1 1c9a: d105 bne.n 1ca8 indev->proc.types.pointer.last_pressed = NULL; 1c9c: 2200 movs r2, #0 1c9e: 63da str r2, [r3, #60] ; 0x3c 1ca0: 4770 bx lr 1ca2: 4b03 ldr r3, [pc, #12] ; (1cb0 ) 1ca4: 4608 mov r0, r1 1ca6: 4718 bx r3 } 1ca8: 4770 bx lr 1caa: bf00 nop 1cac: 200080ec .word 0x200080ec 1cb0: 00001c25 .word 0x00001c25 00001cb4 : } 1cb4: 4b01 ldr r3, [pc, #4] ; (1cbc ) 1cb6: 6818 ldr r0, [r3, #0] 1cb8: 4770 bx lr 1cba: bf00 nop 1cbc: 200080ec .word 0x200080ec 00001cc0 : * @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) { 1cc0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 1cc4: 1d05 adds r5, r0, #4 1cc6: 4b12 ldr r3, [pc, #72] ; (1d10 ) 1cc8: f8df 9048 ldr.w r9, [pc, #72] ; 1d14 1ccc: 4628 mov r0, r5 { 1cce: 460e mov r6, r1 1cd0: 4617 mov r7, r2 _LV_LL_READ(obj->child_ll, i) { 1cd2: 4798 blx r3 i->coords.x1 += x_diff; 1cd4: fa1f f886 uxth.w r8, r6 _LV_LL_READ(obj->child_ll, i) { 1cd8: 4604 mov r4, r0 i->coords.y1 += y_diff; 1cda: fa1f fa87 uxth.w sl, r7 _LV_LL_READ(obj->child_ll, i) { 1cde: b90c cbnz r4, 1ce4 i->coords.x2 += x_diff; i->coords.y2 += y_diff; refresh_children_position(i, x_diff, y_diff); } } 1ce0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} i->coords.x1 += x_diff; 1ce4: 8a23 ldrh r3, [r4, #16] 1ce6: 4443 add r3, r8 1ce8: 8223 strh r3, [r4, #16] i->coords.y1 += y_diff; 1cea: 8a63 ldrh r3, [r4, #18] 1cec: 4453 add r3, sl 1cee: 8263 strh r3, [r4, #18] i->coords.x2 += x_diff; 1cf0: 8aa3 ldrh r3, [r4, #20] 1cf2: 4443 add r3, r8 1cf4: 82a3 strh r3, [r4, #20] i->coords.y2 += y_diff; 1cf6: 8ae3 ldrh r3, [r4, #22] 1cf8: 4453 add r3, sl 1cfa: 82e3 strh r3, [r4, #22] refresh_children_position(i, x_diff, y_diff); 1cfc: 4620 mov r0, r4 1cfe: 463a mov r2, r7 1d00: 4631 mov r1, r6 1d02: f7ff ffdd bl 1cc0 _LV_LL_READ(obj->child_ll, i) { 1d06: 4621 mov r1, r4 1d08: 4628 mov r0, r5 1d0a: 47c8 blx r9 1d0c: 4604 mov r4, r0 1d0e: e7e6 b.n 1cde 1d10: 0000e6a9 .word 0x0000e6a9 1d14: 0000e6b5 .word 0x0000e6b5 00001d18 : 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) { 1d18: 3901 subs r1, #1 1d1a: f100 0308 add.w r3, r0, #8 *d8 = *s8; 1d1e: f811 2f01 ldrb.w r2, [r1, #1]! 1d22: f800 2b01 strb.w r2, [r0], #1 while(len) { 1d26: 4298 cmp r0, r3 1d28: d1f9 bne.n 1d1e * @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)); } 1d2a: 4770 bx lr 00001d2c : { 1d2c: b5f0 push {r4, r5, r6, r7, lr} if(lv_initialized) { 1d2e: 4e20 ldr r6, [pc, #128] ; (1db0 ) 1d30: 4d20 ldr r5, [pc, #128] ; (1db4 ) 1d32: 7833 ldrb r3, [r6, #0] { 1d34: b085 sub sp, #20 if(lv_initialized) { 1d36: b143 cbz r3, 1d4a LV_LOG_WARN("lv_init: already inited"); 1d38: 4b1f ldr r3, [pc, #124] ; (1db8 ) 1d3a: 9300 str r3, [sp, #0] 1d3c: 491f ldr r1, [pc, #124] ; (1dbc ) 1d3e: 4b20 ldr r3, [pc, #128] ; (1dc0 ) 1d40: 2278 movs r2, #120 ; 0x78 1d42: 2002 movs r0, #2 LV_LOG_INFO("lv_init ready"); 1d44: 47a8 blx r5 } 1d46: b005 add sp, #20 1d48: bdf0 pop {r4, r5, r6, r7, pc} _lv_mem_init(); 1d4a: 4b1e ldr r3, [pc, #120] ; (1dc4 ) _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 1d4c: 4c1e ldr r4, [pc, #120] ; (1dc8 ) lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 1d4e: 4f1f ldr r7, [pc, #124] ; (1dcc ) _lv_mem_init(); 1d50: 4798 blx r3 _lv_task_core_init(); 1d52: 4b1f ldr r3, [pc, #124] ; (1dd0 ) 1d54: 4798 blx r3 _lv_fs_init(); 1d56: 4b1f ldr r3, [pc, #124] ; (1dd4 ) 1d58: 4798 blx r3 _lv_anim_core_init(); 1d5a: 4b1f ldr r3, [pc, #124] ; (1dd8 ) 1d5c: 4798 blx r3 _lv_group_init(); 1d5e: 4b1f ldr r3, [pc, #124] ; (1ddc ) 1d60: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 1d62: 481f ldr r0, [pc, #124] ; (1de0 ) 1d64: 2110 movs r1, #16 1d66: 47a0 blx r4 lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 1d68: 4b1e ldr r3, [pc, #120] ; (1de4 ) 1d6a: 9300 str r3, [sp, #0] 1d6c: 2202 movs r2, #2 1d6e: f04f 011f mov.w r1, #31 1d72: e9cd 3301 strd r3, r3, [sp, #4] 1d76: f64f 0000 movw r0, #63488 ; 0xf800 1d7a: 47b8 blx r7 lv_theme_set_act(th); 1d7c: 4b1a ldr r3, [pc, #104] ; (1de8 ) 1d7e: 4798 blx r3 _lv_refr_init(); 1d80: 4b1a ldr r3, [pc, #104] ; (1dec ) 1d82: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t)); 1d84: 481a ldr r0, [pc, #104] ; (1df0 ) 1d86: f44f 71b8 mov.w r1, #368 ; 0x170 1d8a: 47a0 blx r4 _lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t)); 1d8c: 2160 movs r1, #96 ; 0x60 1d8e: 4819 ldr r0, [pc, #100] ; (1df4 ) 1d90: 47a0 blx r4 _lv_indev_init(); 1d92: 4b19 ldr r3, [pc, #100] ; (1df8 ) 1d94: 4798 blx r3 _lv_img_decoder_init(); 1d96: 4b19 ldr r3, [pc, #100] ; (1dfc ) 1d98: 4798 blx r3 lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE); 1d9a: 4b19 ldr r3, [pc, #100] ; (1e00 ) 1d9c: 2001 movs r0, #1 1d9e: 4798 blx r3 LV_LOG_INFO("lv_init ready"); 1da0: 4b18 ldr r3, [pc, #96] ; (1e04 ) 1da2: 9300 str r3, [sp, #0] lv_initialized = true; 1da4: 2001 movs r0, #1 LV_LOG_INFO("lv_init ready"); 1da6: 4b06 ldr r3, [pc, #24] ; (1dc0 ) 1da8: 4904 ldr r1, [pc, #16] ; (1dbc ) lv_initialized = true; 1daa: 7030 strb r0, [r6, #0] LV_LOG_INFO("lv_init ready"); 1dac: 22a2 movs r2, #162 ; 0xa2 1dae: e7c9 b.n 1d44 1db0: 200080f4 .word 0x200080f4 1db4: 0000e8e9 .word 0x0000e8e9 1db8: 0001ee8a .word 0x0001ee8a 1dbc: 0001ee5b .word 0x0001ee5b 1dc0: 0001f062 .word 0x0001f062 1dc4: 0000ea15 .word 0x0000ea15 1dc8: 0000e605 .word 0x0000e605 1dcc: 00012509 .word 0x00012509 1dd0: 0000f831 .word 0x0000f831 1dd4: 0000e3d9 .word 0x0000e3d9 1dd8: 0000dc31 .word 0x0000dc31 1ddc: 00001a39 .word 0x00001a39 1de0: 20008660 .word 0x20008660 1de4: 20000010 .word 0x20000010 1de8: 000102cd .word 0x000102cd 1dec: 00004f09 .word 0x00004f09 1df0: 2000860c .word 0x2000860c 1df4: 20008618 .word 0x20008618 1df8: 00001c61 .word 0x00001c61 1dfc: 0000d0d5 .word 0x0000d0d5 1e00: 0000c6a9 .word 0x0000c6a9 1e04: 0001eea2 .word 0x0001eea2 00001e08 : { 1e08: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e0a: 4b0e ldr r3, [pc, #56] ; (1e44 ) { 1e0c: 4604 mov r4, r0 1e0e: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e10: 4798 blx r3 1e12: 4605 mov r5, r0 1e14: b968 cbnz r0, 1e32 1e16: 4b0c ldr r3, [pc, #48] ; (1e48 ) 1e18: 490c ldr r1, [pc, #48] ; (1e4c ) 1e1a: 9300 str r3, [sp, #0] 1e1c: f240 5294 movw r2, #1428 ; 0x594 1e20: 2003 movs r0, #3 1e22: 4e0b ldr r6, [pc, #44] ; (1e50 ) 1e24: 47b0 blx r6 1e26: 480b ldr r0, [pc, #44] ; (1e54 ) 1e28: 490b ldr r1, [pc, #44] ; (1e58 ) 1e2a: 4622 mov r2, r4 1e2c: 462b mov r3, r5 1e2e: 4788 blx r1 1e30: e7fe b.n 1e30 obj->adv_hittest = en == false ? 0 : 1; 1e32: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 1e36: f366 13c7 bfi r3, r6, #7, #1 1e3a: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 1e3e: b002 add sp, #8 1e40: bd70 pop {r4, r5, r6, pc} 1e42: bf00 nop 1e44: 000017e1 .word 0x000017e1 1e48: 0001f0b7 .word 0x0001f0b7 1e4c: 0001ee5b .word 0x0001ee5b 1e50: 0000e8e9 .word 0x0000e8e9 1e54: 0001eebf .word 0x0001eebf 1e58: 000017e9 .word 0x000017e9 00001e5c : { 1e5c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e5e: 4b0e ldr r3, [pc, #56] ; (1e98 ) { 1e60: 4604 mov r4, r0 1e62: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e64: 4798 blx r3 1e66: 4605 mov r5, r0 1e68: b968 cbnz r0, 1e86 1e6a: 4b0c ldr r3, [pc, #48] ; (1e9c ) 1e6c: 490c ldr r1, [pc, #48] ; (1ea0 ) 1e6e: 9300 str r3, [sp, #0] 1e70: f44f 62b4 mov.w r2, #1440 ; 0x5a0 1e74: 2003 movs r0, #3 1e76: 4e0b ldr r6, [pc, #44] ; (1ea4 ) 1e78: 47b0 blx r6 1e7a: 480b ldr r0, [pc, #44] ; (1ea8 ) 1e7c: 490b ldr r1, [pc, #44] ; (1eac ) 1e7e: 4622 mov r2, r4 1e80: 462b mov r3, r5 1e82: 4788 blx r1 1e84: e7fe b.n 1e84 obj->click = (en == true ? 1 : 0); 1e86: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 1e8a: f366 0300 bfi r3, r6, #0, #1 1e8e: f884 3034 strb.w r3, [r4, #52] ; 0x34 } 1e92: b002 add sp, #8 1e94: bd70 pop {r4, r5, r6, pc} 1e96: bf00 nop 1e98: 000017e1 .word 0x000017e1 1e9c: 0001f0ce .word 0x0001f0ce 1ea0: 0001ee5b .word 0x0001ee5b 1ea4: 0000e8e9 .word 0x0000e8e9 1ea8: 0001eebf .word 0x0001eebf 1eac: 000017e9 .word 0x000017e9 00001eb0 : { 1eb0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} 1eb4: 4680 mov r8, r0 1eb6: b087 sub sp, #28 1eb8: 4616 mov r6, r2 1eba: 461f mov r7, r3 if(obj != NULL) { 1ebc: 460c mov r4, r1 1ebe: b191 cbz r1, 1ee6 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ec0: 4b24 ldr r3, [pc, #144] ; (1f54 ) 1ec2: 4608 mov r0, r1 1ec4: 4798 blx r3 1ec6: 4605 mov r5, r0 1ec8: b968 cbnz r0, 1ee6 1eca: 4b23 ldr r3, [pc, #140] ; (1f58 ) 1ecc: 4923 ldr r1, [pc, #140] ; (1f5c ) 1ece: 9300 str r3, [sp, #0] 1ed0: f44f 62db mov.w r2, #1752 ; 0x6d8 1ed4: 2003 movs r0, #3 1ed6: 4e22 ldr r6, [pc, #136] ; (1f60 ) 1ed8: 47b0 blx r6 1eda: 4822 ldr r0, [pc, #136] ; (1f64 ) 1edc: 4922 ldr r1, [pc, #136] ; (1f68 ) 1ede: 4622 mov r2, r4 1ee0: 462b mov r3, r5 1ee2: 4788 blx r1 1ee4: e7fe b.n 1ee4 if(event_temp_data_head) { 1ee6: 4d21 ldr r5, [pc, #132] ; (1f6c ) event_temp_data.obj = obj; 1ee8: 9403 str r4, [sp, #12] event_temp_data.deleted = false; 1eea: 2300 movs r3, #0 1eec: f88d 3010 strb.w r3, [sp, #16] if(event_temp_data_head) { 1ef0: 686b ldr r3, [r5, #4] 1ef2: 9305 str r3, [sp, #20] event_temp_data_head = &event_temp_data; 1ef4: ab03 add r3, sp, #12 1ef6: 606b str r3, [r5, #4] lv_indev_t * indev_act = lv_indev_get_act(); 1ef8: 4b1d ldr r3, [pc, #116] ; (1f70 ) const void * event_act_data_save = event_act_data; 1efa: f8d5 9008 ldr.w r9, [r5, #8] event_act_data = data; 1efe: 60af str r7, [r5, #8] lv_indev_t * indev_act = lv_indev_get_act(); 1f00: 4798 blx r3 if(indev_act) { 1f02: b118 cbz r0, 1f0c if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event); 1f04: 6883 ldr r3, [r0, #8] 1f06: b10b cbz r3, 1f0c 1f08: 4631 mov r1, r6 1f0a: 4798 blx r3 if(event_xcb) event_xcb(obj, event); 1f0c: f1b8 0f00 cmp.w r8, #0 1f10: d002 beq.n 1f18 1f12: 4631 mov r1, r6 1f14: 4620 mov r0, r4 1f16: 47c0 blx r8 event_temp_data_head = event_temp_data_head->prev; 1f18: 686b ldr r3, [r5, #4] event_act_data = event_act_data_save; 1f1a: f8c5 9008 str.w r9, [r5, #8] event_temp_data_head = event_temp_data_head->prev; 1f1e: 689b ldr r3, [r3, #8] 1f20: 606b str r3, [r5, #4] if(event_temp_data.deleted) { 1f22: f89d 3010 ldrb.w r3, [sp, #16] 1f26: b983 cbnz r3, 1f4a if(obj) { 1f28: b18c cbz r4, 1f4e if(obj->parent_event && obj->parent) { 1f2a: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 1f2e: 065a lsls r2, r3, #25 1f30: d50d bpl.n 1f4e 1f32: 6820 ldr r0, [r4, #0] 1f34: b158 cbz r0, 1f4e lv_res_t res = lv_event_send(obj->parent, event, data); 1f36: 4b0f ldr r3, [pc, #60] ; (1f74 ) 1f38: 463a mov r2, r7 1f3a: 4631 mov r1, r6 1f3c: 4798 blx r3 return LV_RES_INV; 1f3e: 1e43 subs r3, r0, #1 1f40: 4258 negs r0, r3 1f42: 4158 adcs r0, r3 } 1f44: b007 add sp, #28 1f46: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return LV_RES_INV; 1f4a: 2000 movs r0, #0 1f4c: e7fa b.n 1f44 return LV_RES_OK; 1f4e: 2001 movs r0, #1 1f50: e7f8 b.n 1f44 1f52: bf00 nop 1f54: 000017e1 .word 0x000017e1 1f58: 0001f193 .word 0x0001f193 1f5c: 0001ee5b .word 0x0001ee5b 1f60: 0000e8e9 .word 0x0000e8e9 1f64: 0001eebf .word 0x0001eebf 1f68: 000017e9 .word 0x000017e9 1f6c: 200080f4 .word 0x200080f4 1f70: 00001c6d .word 0x00001c6d 1f74: 00001f79 .word 0x00001f79 00001f78 : { 1f78: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} 1f7a: 460e mov r6, r1 1f7c: 9203 str r2, [sp, #12] if(obj == NULL) return LV_RES_OK; 1f7e: 4604 mov r4, r0 1f80: b1d8 cbz r0, 1fba LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1f82: 4a0f ldr r2, [pc, #60] ; (1fc0 ) 1f84: 4790 blx r2 1f86: 9b03 ldr r3, [sp, #12] 1f88: 4605 mov r5, r0 1f8a: b968 cbnz r0, 1fa8 1f8c: 4b0d ldr r3, [pc, #52] ; (1fc4 ) 1f8e: 490e ldr r1, [pc, #56] ; (1fc8 ) 1f90: 9300 str r3, [sp, #0] 1f92: f240 62c4 movw r2, #1732 ; 0x6c4 1f96: 2003 movs r0, #3 1f98: 4e0c ldr r6, [pc, #48] ; (1fcc ) 1f9a: 47b0 blx r6 1f9c: 480c ldr r0, [pc, #48] ; (1fd0 ) 1f9e: 490d ldr r1, [pc, #52] ; (1fd4 ) 1fa0: 4622 mov r2, r4 1fa2: 462b mov r3, r5 1fa4: 4788 blx r1 1fa6: e7fe b.n 1fa6 res = lv_event_send_func(obj->event_cb, obj, event, data); 1fa8: 69a0 ldr r0, [r4, #24] 1faa: 4621 mov r1, r4 1fac: 4c0a ldr r4, [pc, #40] ; (1fd8 ) 1fae: 4632 mov r2, r6 1fb0: 46a4 mov ip, r4 } 1fb2: b004 add sp, #16 1fb4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} res = lv_event_send_func(obj->event_cb, obj, event, data); 1fb8: 4760 bx ip } 1fba: 2001 movs r0, #1 1fbc: b004 add sp, #16 1fbe: bd70 pop {r4, r5, r6, pc} 1fc0: 000017e1 .word 0x000017e1 1fc4: 0001f1a6 .word 0x0001f1a6 1fc8: 0001ee5b .word 0x0001ee5b 1fcc: 0000e8e9 .word 0x0000e8e9 1fd0: 0001eebf .word 0x0001eebf 1fd4: 000017e9 .word 0x000017e9 1fd8: 00001eb1 .word 0x00001eb1 00001fdc : { 1fdc: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1fde: 4b0b ldr r3, [pc, #44] ; (200c ) { 1fe0: 4604 mov r4, r0 1fe2: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1fe4: 4798 blx r3 1fe6: 4605 mov r5, r0 1fe8: b968 cbnz r0, 2006 1fea: 4b09 ldr r3, [pc, #36] ; (2010 ) 1fec: 4909 ldr r1, [pc, #36] ; (2014 ) 1fee: 9300 str r3, [sp, #0] 1ff0: f240 721b movw r2, #1819 ; 0x71b 1ff4: 2003 movs r0, #3 1ff6: 4e08 ldr r6, [pc, #32] ; (2018 ) 1ff8: 47b0 blx r6 1ffa: 4808 ldr r0, [pc, #32] ; (201c ) 1ffc: 4908 ldr r1, [pc, #32] ; (2020 ) 1ffe: 4622 mov r2, r4 2000: 462b mov r3, r5 2002: 4788 blx r1 2004: e7fe b.n 2004 obj->signal_cb = signal_cb; 2006: 61e6 str r6, [r4, #28] } 2008: b002 add sp, #8 200a: bd70 pop {r4, r5, r6, pc} 200c: 000017e1 .word 0x000017e1 2010: 0001f1b4 .word 0x0001f1b4 2014: 0001ee5b .word 0x0001ee5b 2018: 0000e8e9 .word 0x0000e8e9 201c: 0001eebf .word 0x0001eebf 2020: 000017e9 .word 0x000017e9 00002024 : if(obj == NULL) return LV_RES_OK; 2024: b110 cbz r0, 202c if(obj->signal_cb) res = obj->signal_cb(obj, signal, param); 2026: 69c3 ldr r3, [r0, #28] 2028: b103 cbz r3, 202c 202a: 4718 bx r3 } 202c: 2001 movs r0, #1 202e: 4770 bx lr 00002030 : { 2030: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2032: 4b0b ldr r3, [pc, #44] ; (2060 ) { 2034: 4604 mov r4, r0 2036: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2038: 4798 blx r3 203a: 4605 mov r5, r0 203c: b968 cbnz r0, 205a 203e: 4b09 ldr r3, [pc, #36] ; (2064 ) 2040: 4909 ldr r1, [pc, #36] ; (2068 ) 2042: 9300 str r3, [sp, #0] 2044: f240 7237 movw r2, #1847 ; 0x737 2048: 2003 movs r0, #3 204a: 4e08 ldr r6, [pc, #32] ; (206c ) 204c: 47b0 blx r6 204e: 4808 ldr r0, [pc, #32] ; (2070 ) 2050: 4908 ldr r1, [pc, #32] ; (2074 ) 2052: 4622 mov r2, r4 2054: 462b mov r3, r5 2056: 4788 blx r1 2058: e7fe b.n 2058 obj->design_cb = design_cb; 205a: 6226 str r6, [r4, #32] } 205c: b002 add sp, #8 205e: bd70 pop {r4, r5, r6, pc} 2060: 000017e1 .word 0x000017e1 2064: 0001f1c9 .word 0x0001f1c9 2068: 0001ee5b .word 0x0001ee5b 206c: 0000e8e9 .word 0x0000e8e9 2070: 0001eebf .word 0x0001eebf 2074: 000017e9 .word 0x000017e9 00002078 : { 2078: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 207a: 4b0e ldr r3, [pc, #56] ; (20b4 ) { 207c: 9103 str r1, [sp, #12] 207e: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2080: 4798 blx r3 2082: 9903 ldr r1, [sp, #12] 2084: 4605 mov r5, r0 2086: b968 cbnz r0, 20a4 2088: 4b0b ldr r3, [pc, #44] ; (20b8 ) 208a: 490c ldr r1, [pc, #48] ; (20bc ) 208c: 9300 str r3, [sp, #0] 208e: f240 7249 movw r2, #1865 ; 0x749 2092: 2003 movs r0, #3 2094: 4e0a ldr r6, [pc, #40] ; (20c0 ) 2096: 47b0 blx r6 2098: 480a ldr r0, [pc, #40] ; (20c4 ) 209a: 490b ldr r1, [pc, #44] ; (20c8 ) 209c: 4622 mov r2, r4 209e: 462b mov r3, r5 20a0: 4788 blx r1 20a2: e7fe b.n 20a2 void * new_ext = lv_mem_realloc(obj->ext_attr, ext_size); 20a4: 6a60 ldr r0, [r4, #36] ; 0x24 20a6: 4b09 ldr r3, [pc, #36] ; (20cc ) 20a8: 4798 blx r3 if(new_ext == NULL) return NULL; 20aa: b100 cbz r0, 20ae obj->ext_attr = new_ext; 20ac: 6260 str r0, [r4, #36] ; 0x24 } 20ae: b004 add sp, #16 20b0: bd70 pop {r4, r5, r6, pc} 20b2: bf00 nop 20b4: 000017e1 .word 0x000017e1 20b8: 0001f1de .word 0x0001f1de 20bc: 0001ee5b .word 0x0001ee5b 20c0: 0000e8e9 .word 0x0000e8e9 20c4: 0001eebf .word 0x0001eebf 20c8: 000017e9 .word 0x000017e9 20cc: 0000ee15 .word 0x0000ee15 000020d0 : { 20d0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20d2: 4b0e ldr r3, [pc, #56] ; (210c ) { 20d4: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20d6: 4798 blx r3 20d8: 4605 mov r5, r0 20da: b968 cbnz r0, 20f8 20dc: 4b0c ldr r3, [pc, #48] ; (2110 ) 20de: 490d ldr r1, [pc, #52] ; (2114 ) 20e0: 9300 str r3, [sp, #0] 20e2: f240 7259 movw r2, #1881 ; 0x759 20e6: 2003 movs r0, #3 20e8: 4e0b ldr r6, [pc, #44] ; (2118 ) 20ea: 47b0 blx r6 20ec: 480b ldr r0, [pc, #44] ; (211c ) 20ee: 490c ldr r1, [pc, #48] ; (2120 ) 20f0: 4622 mov r2, r4 20f2: 462b mov r3, r5 20f4: 4788 blx r1 20f6: e7fe b.n 20f6 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 20f8: 69e3 ldr r3, [r4, #28] obj->ext_draw_pad = 0; 20fa: 2200 movs r2, #0 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 20fc: 2106 movs r1, #6 20fe: 4620 mov r0, r4 obj->ext_draw_pad = 0; 2100: 8662 strh r2, [r4, #50] ; 0x32 } 2102: b002 add sp, #8 2104: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 2108: 4718 bx r3 210a: bf00 nop 210c: 000017e1 .word 0x000017e1 2110: 0001f1f7 .word 0x0001f1f7 2114: 0001ee5b .word 0x0001ee5b 2118: 0000e8e9 .word 0x0000e8e9 211c: 0001eebf .word 0x0001eebf 2120: 000017e9 .word 0x000017e9 00002124 : { 2124: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2126: 4b0b ldr r3, [pc, #44] ; (2154 ) { 2128: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 212a: 4798 blx r3 212c: 4605 mov r5, r0 212e: b968 cbnz r0, 214c 2130: 4b09 ldr r3, [pc, #36] ; (2158 ) 2132: 490a ldr r1, [pc, #40] ; (215c ) 2134: 9300 str r3, [sp, #0] 2136: f240 729f movw r2, #1951 ; 0x79f 213a: 2003 movs r0, #3 213c: 4e08 ldr r6, [pc, #32] ; (2160 ) 213e: 47b0 blx r6 2140: 4808 ldr r0, [pc, #32] ; (2164 ) 2142: 4909 ldr r1, [pc, #36] ; (2168 ) 2144: 4622 mov r2, r4 2146: 462b mov r3, r5 2148: 4788 blx r1 214a: e7fe b.n 214a } 214c: 6820 ldr r0, [r4, #0] 214e: b002 add sp, #8 2150: bd70 pop {r4, r5, r6, pc} 2152: bf00 nop 2154: 000017e1 .word 0x000017e1 2158: 0001f213 .word 0x0001f213 215c: 0001ee5b .word 0x0001ee5b 2160: 0000e8e9 .word 0x0000e8e9 2164: 0001eebf .word 0x0001eebf 2168: 000017e9 .word 0x000017e9 0000216c : { 216c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 216e: 4b0e ldr r3, [pc, #56] ; (21a8 ) { 2170: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2172: 4798 blx r3 2174: 4605 mov r5, r0 2176: b148 cbz r0, 218c par = lv_obj_get_parent(act_p); 2178: 4e0c ldr r6, [pc, #48] ; (21ac ) 217a: 4620 mov r0, r4 217c: 47b0 blx r6 } while(par != NULL); 217e: 4625 mov r5, r4 2180: 4604 mov r4, r0 2182: 2800 cmp r0, #0 2184: d1f9 bne.n 217a } 2186: 4628 mov r0, r5 2188: b002 add sp, #8 218a: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 218c: 4b08 ldr r3, [pc, #32] ; (21b0 ) 218e: 4909 ldr r1, [pc, #36] ; (21b4 ) 2190: 9300 str r3, [sp, #0] 2192: f240 726b movw r2, #1899 ; 0x76b 2196: 2003 movs r0, #3 2198: 4e07 ldr r6, [pc, #28] ; (21b8 ) 219a: 47b0 blx r6 219c: 4807 ldr r0, [pc, #28] ; (21bc ) 219e: 4908 ldr r1, [pc, #32] ; (21c0 ) 21a0: 4622 mov r2, r4 21a2: 462b mov r3, r5 21a4: 4788 blx r1 21a6: e7fe b.n 21a6 21a8: 000017e1 .word 0x000017e1 21ac: 00002125 .word 0x00002125 21b0: 0001f225 .word 0x0001f225 21b4: 0001ee5b .word 0x0001ee5b 21b8: 0000e8e9 .word 0x0000e8e9 21bc: 0001eebf .word 0x0001eebf 21c0: 000017e9 .word 0x000017e9 000021c4 : { 21c4: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 21c8: 4b1e ldr r3, [pc, #120] ; (2244 ) { 21ca: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 21cc: 4798 blx r3 21ce: 4604 mov r4, r0 21d0: b968 cbnz r0, 21ee 21d2: 4b1d ldr r3, [pc, #116] ; (2248 ) 21d4: 491d ldr r1, [pc, #116] ; (224c ) 21d6: 9300 str r3, [sp, #0] 21d8: f240 727f movw r2, #1919 ; 0x77f 21dc: 2003 movs r0, #3 21de: 4e1c ldr r6, [pc, #112] ; (2250 ) 21e0: 47b0 blx r6 21e2: 481c ldr r0, [pc, #112] ; (2254 ) 21e4: 491c ldr r1, [pc, #112] ; (2258 ) 21e6: 462a mov r2, r5 21e8: 4623 mov r3, r4 21ea: 4788 blx r1 21ec: e7fe b.n 21ec if(obj->parent == NULL) 21ee: 682b ldr r3, [r5, #0] 21f0: b11b cbz r3, 21fa scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/ 21f2: 4628 mov r0, r5 21f4: 4b19 ldr r3, [pc, #100] ; (225c ) 21f6: 4798 blx r3 21f8: 4605 mov r5, r0 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 21fa: 4819 ldr r0, [pc, #100] ; (2260 ) 21fc: 4e19 ldr r6, [pc, #100] ; (2264 ) _LV_LL_READ(d->scr_ll, s) { 21fe: 4f1a ldr r7, [pc, #104] ; (2268 ) _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2200: f8df 805c ldr.w r8, [pc, #92] ; 2260 2204: 47b0 blx r6 2206: 4604 mov r4, r0 2208: b964 cbnz r4, 2224 LV_LOG_WARN("lv_scr_get_disp: screen not found") 220a: 4b18 ldr r3, [pc, #96] ; (226c ) 220c: 9300 str r3, [sp, #0] 220e: 490f ldr r1, [pc, #60] ; (224c ) 2210: 4b0d ldr r3, [pc, #52] ; (2248 ) 2212: 4d0f ldr r5, [pc, #60] ; (2250 ) 2214: f44f 62f2 mov.w r2, #1936 ; 0x790 2218: 2002 movs r0, #2 221a: 47a8 blx r5 } 221c: 4620 mov r0, r4 221e: b003 add sp, #12 2220: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} _LV_LL_READ(d->scr_ll, s) { 2224: f104 0930 add.w r9, r4, #48 ; 0x30 2228: 4648 mov r0, r9 222a: 47b0 blx r6 222c: b920 cbnz r0, 2238 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 222e: 4621 mov r1, r4 2230: 4640 mov r0, r8 2232: 47b8 blx r7 2234: 4604 mov r4, r0 2236: e7e7 b.n 2208 if(s == scr) return d; 2238: 4285 cmp r5, r0 223a: d0ef beq.n 221c _LV_LL_READ(d->scr_ll, s) { 223c: 4601 mov r1, r0 223e: 4648 mov r0, r9 2240: 47b8 blx r7 2242: e7f3 b.n 222c 2244: 000017e1 .word 0x000017e1 2248: 0001f237 .word 0x0001f237 224c: 0001ee5b .word 0x0001ee5b 2250: 0000e8e9 .word 0x0000e8e9 2254: 0001eebf .word 0x0001eebf 2258: 000017e9 .word 0x000017e9 225c: 0000216d .word 0x0000216d 2260: 2000860c .word 0x2000860c 2264: 0000e6a9 .word 0x0000e6a9 2268: 0000e6b5 .word 0x0000e6b5 226c: 0001eecc .word 0x0001eecc 00002270 : { 2270: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2272: 4b10 ldr r3, [pc, #64] ; (22b4 ) { 2274: 4604 mov r4, r0 2276: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2278: 4798 blx r3 227a: 4606 mov r6, r0 227c: b968 cbnz r0, 229a 227e: 4b0e ldr r3, [pc, #56] ; (22b8 ) 2280: 490e ldr r1, [pc, #56] ; (22bc ) 2282: 9300 str r3, [sp, #0] 2284: f240 72ad movw r2, #1965 ; 0x7ad 2288: 2003 movs r0, #3 228a: 4d0d ldr r5, [pc, #52] ; (22c0 ) 228c: 47a8 blx r5 228e: 480d ldr r0, [pc, #52] ; (22c4 ) 2290: 490d ldr r1, [pc, #52] ; (22c8 ) 2292: 4622 mov r2, r4 2294: 4633 mov r3, r6 2296: 4788 blx r1 2298: e7fe b.n 2298 result = _lv_ll_get_head(&obj->child_ll); 229a: 1d20 adds r0, r4, #4 if(child == NULL) { 229c: b925 cbnz r5, 22a8 result = _lv_ll_get_head(&obj->child_ll); 229e: 4b0b ldr r3, [pc, #44] ; (22cc ) } 22a0: b002 add sp, #8 22a2: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} result = _lv_ll_get_head(&obj->child_ll); 22a6: 4718 bx r3 result = _lv_ll_get_next(&obj->child_ll, child); 22a8: 4b09 ldr r3, [pc, #36] ; (22d0 ) 22aa: 4629 mov r1, r5 } 22ac: b002 add sp, #8 22ae: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} result = _lv_ll_get_next(&obj->child_ll, child); 22b2: 4718 bx r3 22b4: 000017e1 .word 0x000017e1 22b8: 0001f247 .word 0x0001f247 22bc: 0001ee5b .word 0x0001ee5b 22c0: 0000e8e9 .word 0x0000e8e9 22c4: 0001eebf .word 0x0001eebf 22c8: 000017e9 .word 0x000017e9 22cc: 0000e6a9 .word 0x0000e6a9 22d0: 0000e6b5 .word 0x0000e6b5 000022d4 : { 22d4: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 22d6: 4b0e ldr r3, [pc, #56] ; (2310 ) { 22d8: 4604 mov r4, r0 22da: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 22dc: 4798 blx r3 22de: 4605 mov r5, r0 22e0: b968 cbnz r0, 22fe 22e2: 4b0c ldr r3, [pc, #48] ; (2314 ) 22e4: 490c ldr r1, [pc, #48] ; (2318 ) 22e6: 9300 str r3, [sp, #0] 22e8: f640 0201 movw r2, #2049 ; 0x801 22ec: 2003 movs r0, #3 22ee: 4e0b ldr r6, [pc, #44] ; (231c ) 22f0: 47b0 blx r6 22f2: 480b ldr r0, [pc, #44] ; (2320 ) 22f4: 490b ldr r1, [pc, #44] ; (2324 ) 22f6: 4622 mov r2, r4 22f8: 462b mov r3, r5 22fa: 4788 blx r1 22fc: e7fe b.n 22fc lv_area_copy(cords_p, &obj->coords); 22fe: 4b0a ldr r3, [pc, #40] ; (2328 ) 2300: f104 0110 add.w r1, r4, #16 2304: 4630 mov r0, r6 } 2306: b002 add sp, #8 2308: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_area_copy(cords_p, &obj->coords); 230c: 4718 bx r3 230e: bf00 nop 2310: 000017e1 .word 0x000017e1 2314: 0001f2b8 .word 0x0001f2b8 2318: 0001ee5b .word 0x0001ee5b 231c: 0000e8e9 .word 0x0000e8e9 2320: 0001eebf .word 0x0001eebf 2324: 000017e9 .word 0x000017e9 2328: 00001d19 .word 0x00001d19 0000232c : { 232c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 232e: 4b10 ldr r3, [pc, #64] ; (2370 ) { 2330: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2332: 4798 blx r3 2334: 4605 mov r5, r0 2336: b968 cbnz r0, 2354 2338: 4b0e ldr r3, [pc, #56] ; (2374 ) 233a: 490f ldr r1, [pc, #60] ; (2378 ) 233c: 9300 str r3, [sp, #0] 233e: f640 0222 movw r2, #2082 ; 0x822 2342: 2003 movs r0, #3 2344: 4e0d ldr r6, [pc, #52] ; (237c ) 2346: 47b0 blx r6 2348: 480d ldr r0, [pc, #52] ; (2380 ) 234a: 490e ldr r1, [pc, #56] ; (2384 ) 234c: 4622 mov r2, r4 234e: 462b mov r3, r5 2350: 4788 blx r1 2352: e7fe b.n 2352 lv_obj_t * parent = lv_obj_get_parent(obj); 2354: 4b0c ldr r3, [pc, #48] ; (2388 ) 2356: 4620 mov r0, r4 2358: 4798 blx r3 if(parent) { 235a: b128 cbz r0, 2368 rel_x = obj->coords.x1 - parent->coords.x1; 235c: 8a23 ldrh r3, [r4, #16] 235e: 8a02 ldrh r2, [r0, #16] 2360: 1a98 subs r0, r3, r2 2362: b200 sxth r0, r0 } 2364: b002 add sp, #8 2366: bd70 pop {r4, r5, r6, pc} rel_x = obj->coords.x1; 2368: f9b4 0010 ldrsh.w r0, [r4, #16] 236c: e7fa b.n 2364 236e: bf00 nop 2370: 000017e1 .word 0x000017e1 2374: 0001f2ca .word 0x0001f2ca 2378: 0001ee5b .word 0x0001ee5b 237c: 0000e8e9 .word 0x0000e8e9 2380: 0001eebf .word 0x0001eebf 2384: 000017e9 .word 0x000017e9 2388: 00002125 .word 0x00002125 0000238c : { 238c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 238e: 4b10 ldr r3, [pc, #64] ; (23d0 ) { 2390: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2392: 4798 blx r3 2394: 4605 mov r5, r0 2396: b968 cbnz r0, 23b4 2398: 4b0e ldr r3, [pc, #56] ; (23d4 ) 239a: 490f ldr r1, [pc, #60] ; (23d8 ) 239c: 9300 str r3, [sp, #0] 239e: f640 0236 movw r2, #2102 ; 0x836 23a2: 2003 movs r0, #3 23a4: 4e0d ldr r6, [pc, #52] ; (23dc ) 23a6: 47b0 blx r6 23a8: 480d ldr r0, [pc, #52] ; (23e0 ) 23aa: 490e ldr r1, [pc, #56] ; (23e4 ) 23ac: 4622 mov r2, r4 23ae: 462b mov r3, r5 23b0: 4788 blx r1 23b2: e7fe b.n 23b2 lv_obj_t * parent = lv_obj_get_parent(obj); 23b4: 4b0c ldr r3, [pc, #48] ; (23e8 ) 23b6: 4620 mov r0, r4 23b8: 4798 blx r3 if(parent) { 23ba: b128 cbz r0, 23c8 rel_y = obj->coords.y1 - parent->coords.y1; 23bc: 8a63 ldrh r3, [r4, #18] 23be: 8a42 ldrh r2, [r0, #18] 23c0: 1a98 subs r0, r3, r2 23c2: b200 sxth r0, r0 } 23c4: b002 add sp, #8 23c6: bd70 pop {r4, r5, r6, pc} rel_y = obj->coords.y1; 23c8: f9b4 0012 ldrsh.w r0, [r4, #18] 23cc: e7fa b.n 23c4 23ce: bf00 nop 23d0: 000017e1 .word 0x000017e1 23d4: 0001f2d7 .word 0x0001f2d7 23d8: 0001ee5b .word 0x0001ee5b 23dc: 0000e8e9 .word 0x0000e8e9 23e0: 0001eebf .word 0x0001eebf 23e4: 000017e9 .word 0x000017e9 23e8: 00002125 .word 0x00002125 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 024a movw r2, #2122 ; 0x84a 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 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); 2414: 8aa3 ldrh r3, [r4, #20] 2416: 8a22 ldrh r2, [r4, #16] 2418: 3301 adds r3, #1 241a: 1a98 subs r0, r3, r2 } 241c: b200 sxth r0, r0 241e: b002 add sp, #8 2420: bd70 pop {r4, r5, r6, pc} 2422: bf00 nop 2424: 000017e1 .word 0x000017e1 2428: 0001f2e4 .word 0x0001f2e4 242c: 0001ee5b .word 0x0001ee5b 2430: 0000e8e9 .word 0x0000e8e9 2434: 0001eebf .word 0x0001eebf 2438: 000017e9 .word 0x000017e9 0000243c : { 243c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 243e: 4b0d ldr r3, [pc, #52] ; (2474 ) { 2440: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2442: 4798 blx r3 2444: 4605 mov r5, r0 2446: b968 cbnz r0, 2464 2448: 4b0b ldr r3, [pc, #44] ; (2478 ) 244a: 490c ldr r1, [pc, #48] ; (247c ) 244c: 9300 str r3, [sp, #0] 244e: f640 0256 movw r2, #2134 ; 0x856 2452: 2003 movs r0, #3 2454: 4e0a ldr r6, [pc, #40] ; (2480 ) 2456: 47b0 blx r6 2458: 480a ldr r0, [pc, #40] ; (2484 ) 245a: 490b ldr r1, [pc, #44] ; (2488 ) 245c: 4622 mov r2, r4 245e: 462b mov r3, r5 2460: 4788 blx r1 2462: e7fe b.n 2462 * @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); 2464: 8ae3 ldrh r3, [r4, #22] 2466: 8a62 ldrh r2, [r4, #18] 2468: 3301 adds r3, #1 246a: 1a98 subs r0, r3, r2 } 246c: b200 sxth r0, r0 246e: b002 add sp, #8 2470: bd70 pop {r4, r5, r6, pc} 2472: bf00 nop 2474: 000017e1 .word 0x000017e1 2478: 0001f2f5 .word 0x0001f2f5 247c: 0001ee5b .word 0x0001ee5b 2480: 0000e8e9 .word 0x0000e8e9 2484: 0001eebf .word 0x0001eebf 2488: 000017e9 .word 0x000017e9 0000248c : { 248c: b513 push {r0, r1, r4, lr} if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list; 248e: b911 cbnz r1, 2496 2490: 3028 adds r0, #40 ; 0x28 } 2492: b002 add sp, #8 2494: bd10 pop {r4, pc} info.part = part; 2496: f88d 1000 strb.w r1, [sp] info.result = NULL; 249a: 2400 movs r4, #0 res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 249c: 4b04 ldr r3, [pc, #16] ; (24b0 ) info.result = NULL; 249e: 9401 str r4, [sp, #4] res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 24a0: 466a mov r2, sp 24a2: 2108 movs r1, #8 24a4: 4798 blx r3 if(res != LV_RES_OK) return NULL; 24a6: 2801 cmp r0, #1 return info.result; 24a8: bf0c ite eq 24aa: 9801 ldreq r0, [sp, #4] if(res != LV_RES_OK) return NULL; 24ac: 4620 movne r0, r4 24ae: e7f0 b.n 2492 24b0: 00002025 .word 0x00002025 000024b4 : * @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) { 24b4: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 24b8: 4607 mov r7, r0 24ba: 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)); 24bc: 4819 ldr r0, [pc, #100] ; (2524 ) 24be: 4b1a ldr r3, [pc, #104] ; (2528 ) 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); 24c0: f8df 9060 ldr.w r9, [pc, #96] ; 2524 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); 24c4: f8df b07c ldr.w fp, [pc, #124] ; 2544 { 24c8: 460d mov r5, r1 24ca: 4616 mov r6, r2 tr = _lv_ll_get_tail(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 24cc: 4798 blx r3 24ce: 4604 mov r4, r0 while(tr != NULL) { 24d0: b90c cbnz r4, 24d6 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); lv_mem_free(tr); } tr = tr_prev; } } 24d2: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if(tr == tr_limit) break; 24d6: 4544 cmp r4, r8 24d8: d0fb beq.n 24d2 tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 24da: 4b14 ldr r3, [pc, #80] ; (252c ) 24dc: 4621 mov r1, r4 24de: 4648 mov r0, r9 24e0: 4798 blx r3 24e2: 4682 mov sl, r0 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 24e4: 6820 ldr r0, [r4, #0] 24e6: 42b8 cmp r0, r7 24e8: d11a bne.n 2520 24ea: 79a1 ldrb r1, [r4, #6] 24ec: 42a9 cmp r1, r5 24ee: d001 beq.n 24f4 24f0: 2dff cmp r5, #255 ; 0xff 24f2: d115 bne.n 2520 24f4: 88a2 ldrh r2, [r4, #4] 24f6: 42b2 cmp r2, r6 24f8: d001 beq.n 24fe 24fa: 2eff cmp r6, #255 ; 0xff 24fc: d110 bne.n 2520 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 24fe: 47d8 blx fp lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 2500: 4a0b ldr r2, [pc, #44] ; (2530 ) 2502: 4790 blx r2 lv_style_remove_prop(style_trans, tr->prop); 2504: 88a1 ldrh r1, [r4, #4] 2506: 4a0b ldr r2, [pc, #44] ; (2534 ) 2508: 4790 blx r2 lv_anim_del(tr, NULL); 250a: 4a0b ldr r2, [pc, #44] ; (2538 ) 250c: 2100 movs r1, #0 250e: 4620 mov r0, r4 2510: 4790 blx r2 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 2512: 4a0a ldr r2, [pc, #40] ; (253c ) 2514: 4648 mov r0, r9 2516: 4621 mov r1, r4 2518: 4790 blx r2 lv_mem_free(tr); 251a: 4a09 ldr r2, [pc, #36] ; (2540 ) 251c: 4620 mov r0, r4 251e: 4790 blx r2 { 2520: 4654 mov r4, sl 2522: e7d5 b.n 24d0 2524: 20008660 .word 0x20008660 2528: 0000e6af .word 0x0000e6af 252c: 0000e6d5 .word 0x0000e6d5 2530: 00005cb9 .word 0x00005cb9 2534: 00005811 .word 0x00005811 2538: 0000dcb1 .word 0x0000dcb1 253c: 0000e76d .word 0x0000e76d 2540: 0000eae5 .word 0x0000eae5 2544: 0000248d .word 0x0000248d 00002548 : { 2548: b537 push {r0, r1, r2, r4, r5, lr} lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 254a: 4b0e ldr r3, [pc, #56] ; (2584 ) { 254c: 4604 mov r4, r0 254e: 460d mov r5, r1 lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 2550: 4798 blx r3 if(style_dsc == NULL) { 2552: b950 cbnz r0, 256a LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`"); 2554: 4b0c ldr r3, [pc, #48] ; (2588 ) 2556: 9300 str r3, [sp, #0] 2558: 490c ldr r1, [pc, #48] ; (258c ) 255a: 4b0d ldr r3, [pc, #52] ; (2590 ) 255c: 4c0d ldr r4, [pc, #52] ; (2594 ) 255e: f240 4292 movw r2, #1170 ; 0x492 2562: 2002 movs r0, #2 2564: 47a0 blx r4 } 2566: b003 add sp, #12 2568: bd30 pop {r4, r5, pc} _lv_style_list_reset(style_dsc); 256a: 4b0b ldr r3, [pc, #44] ; (2598 ) 256c: 4798 blx r3 trans_del(obj, part, 0xFF, NULL); 256e: 4620 mov r0, r4 2570: 4c0a ldr r4, [pc, #40] ; (259c ) 2572: 2300 movs r3, #0 2574: 22ff movs r2, #255 ; 0xff 2576: 4629 mov r1, r5 2578: 46a4 mov ip, r4 } 257a: b003 add sp, #12 257c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} trans_del(obj, part, 0xFF, NULL); 2580: 4760 bx ip 2582: bf00 nop 2584: 0000248d .word 0x0000248d 2588: 0001ef14 .word 0x0001ef14 258c: 0001ee5b .word 0x0001ee5b 2590: 0001f3b1 .word 0x0001f3b1 2594: 0000e8e9 .word 0x0000e8e9 2598: 00005cc9 .word 0x00005cc9 259c: 000024b5 .word 0x000024b5 000025a0 : tr->prop = prop_tmp; } static void trans_anim_ready_cb(lv_anim_t * a) { 25a0: 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) { 25a4: 4b15 ldr r3, [pc, #84] ; (25fc ) lv_style_trans_t * tr = a->var; 25a6: 6804 ldr r4, [r0, #0] _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 25a8: 4815 ldr r0, [pc, #84] ; (2600 ) 25aa: 4e15 ldr r6, [pc, #84] ; (2600 ) 25ac: 4f15 ldr r7, [pc, #84] ; (2604 ) 25ae: 4798 blx r3 bool running = false; 25b0: 2500 movs r5, #0 _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 25b2: b990 cbnz r0, 25da if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { running = true; } } if(!running) { 25b4: b945 cbnz r5, 25c8 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 25b6: 79a1 ldrb r1, [r4, #6] 25b8: 4b13 ldr r3, [pc, #76] ; (2608 ) 25ba: 6820 ldr r0, [r4, #0] 25bc: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 25be: 4b13 ldr r3, [pc, #76] ; (260c ) 25c0: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 25c2: 88a1 ldrh r1, [r4, #4] 25c4: 4b12 ldr r3, [pc, #72] ; (2610 ) 25c6: 4798 blx r3 } _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 25c8: 480d ldr r0, [pc, #52] ; (2600 ) 25ca: 4b12 ldr r3, [pc, #72] ; (2614 ) 25cc: 4621 mov r1, r4 25ce: 4798 blx r3 lv_mem_free(tr); 25d0: 4620 mov r0, r4 25d2: 4b11 ldr r3, [pc, #68] ; (2618 ) } 25d4: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} lv_mem_free(tr); 25d8: 4718 bx r3 if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { 25da: 42a0 cmp r0, r4 25dc: d00a beq.n 25f4 25de: 6802 ldr r2, [r0, #0] 25e0: 6823 ldr r3, [r4, #0] 25e2: 429a cmp r2, r3 25e4: d106 bne.n 25f4 25e6: 6843 ldr r3, [r0, #4] 25e8: 6862 ldr r2, [r4, #4] 25ea: 4053 eors r3, r2 running = true; 25ec: f033 437f bics.w r3, r3, #4278190080 ; 0xff000000 25f0: bf08 it eq 25f2: 2501 moveq r5, #1 _LV_LL_READ(LV_GC_ROOT(_lv_obj_style_trans_ll), tr_i) { 25f4: 4601 mov r1, r0 25f6: 4630 mov r0, r6 25f8: 47b8 blx r7 25fa: e7da b.n 25b2 25fc: 0000e6a9 .word 0x0000e6a9 2600: 20008660 .word 0x20008660 2604: 0000e6b5 .word 0x0000e6b5 2608: 0000248d .word 0x0000248d 260c: 00005cb9 .word 0x00005cb9 2610: 00005811 .word 0x00005811 2614: 0000e76d .word 0x0000e76d 2618: 0000eae5 .word 0x0000eae5 0000261c : { 261c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 261e: 4b0c ldr r3, [pc, #48] ; (2650 ) { 2620: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2622: 4798 blx r3 2624: 4605 mov r5, r0 2626: b968 cbnz r0, 2644 2628: 4b0a ldr r3, [pc, #40] ; (2654 ) 262a: 490b ldr r1, [pc, #44] ; (2658 ) 262c: 9300 str r3, [sp, #0] 262e: f640 2241 movw r2, #2625 ; 0xa41 2632: 2003 movs r0, #3 2634: 4e09 ldr r6, [pc, #36] ; (265c ) 2636: 47b0 blx r6 2638: 4809 ldr r0, [pc, #36] ; (2660 ) 263a: 490a ldr r1, [pc, #40] ; (2664 ) 263c: 4622 mov r2, r4 263e: 462b mov r3, r5 2640: 4788 blx r1 2642: e7fe b.n 2642 return obj->hidden == 0 ? false : true; 2644: f894 0034 ldrb.w r0, [r4, #52] ; 0x34 } 2648: f3c0 1000 ubfx r0, r0, #4, #1 264c: b002 add sp, #8 264e: bd70 pop {r4, r5, r6, pc} 2650: 000017e1 .word 0x000017e1 2654: 0001f3ff .word 0x0001f3ff 2658: 0001ee5b .word 0x0001ee5b 265c: 0000e8e9 .word 0x0000e8e9 2660: 0001eebf .word 0x0001eebf 2664: 000017e9 .word 0x000017e9 00002668 : { 2668: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 266c: 4b35 ldr r3, [pc, #212] ; (2744 ) { 266e: b086 sub sp, #24 2670: 4604 mov r4, r0 2672: 4688 mov r8, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2674: 4798 blx r3 2676: 4605 mov r5, r0 2678: b968 cbnz r0, 2696 267a: 4b33 ldr r3, [pc, #204] ; (2748 ) 267c: 4933 ldr r1, [pc, #204] ; (274c ) 267e: 9300 str r3, [sp, #0] 2680: f44f 72f0 mov.w r2, #480 ; 0x1e0 2684: 2003 movs r0, #3 2686: 4e32 ldr r6, [pc, #200] ; (2750 ) 2688: 47b0 blx r6 268a: 4832 ldr r0, [pc, #200] ; (2754 ) 268c: 4932 ldr r1, [pc, #200] ; (2758 ) 268e: 4622 mov r2, r4 2690: 462b mov r3, r5 2692: 4788 blx r1 2694: e7fe b.n 2694 if(lv_obj_get_hidden(obj)) return; 2696: 4f31 ldr r7, [pc, #196] ; (275c ) 2698: 4620 mov r0, r4 269a: 47b8 blx r7 269c: 2800 cmp r0, #0 269e: d141 bne.n 2724 lv_obj_t * obj_scr = lv_obj_get_screen(obj); 26a0: 4b2f ldr r3, [pc, #188] ; (2760 ) 26a2: 4620 mov r0, r4 26a4: 4798 blx r3 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 26a6: 4b2f ldr r3, [pc, #188] ; (2764 ) lv_obj_t * obj_scr = lv_obj_get_screen(obj); 26a8: 4605 mov r5, r0 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 26aa: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 26ac: 4b2e ldr r3, [pc, #184] ; (2768 ) lv_disp_t * disp = lv_obj_get_disp(obj_scr); 26ae: 4606 mov r6, r0 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 26b0: 4798 blx r3 26b2: 4285 cmp r5, r0 26b4: d12c bne.n 2710 lv_coord_t ext_size = obj->ext_draw_pad; 26b6: f9b4 5032 ldrsh.w r5, [r4, #50] ; 0x32 lv_area_copy(&obj_coords, &obj->coords); 26ba: 4b2c ldr r3, [pc, #176] ; (276c ) 26bc: f104 0110 add.w r1, r4, #16 26c0: a802 add r0, sp, #8 26c2: 4798 blx r3 obj_coords.x1 -= ext_size; 26c4: f8bd 2008 ldrh.w r2, [sp, #8] 26c8: b2ab uxth r3, r5 26ca: 1ad2 subs r2, r2, r3 26cc: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 26d0: f8bd 200a ldrh.w r2, [sp, #10] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 26d4: 4d26 ldr r5, [pc, #152] ; (2770 ) obj_coords.y1 -= ext_size; 26d6: 1ad2 subs r2, r2, r3 26d8: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 26dc: f8bd 200c ldrh.w r2, [sp, #12] 26e0: 441a add r2, r3 26e2: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 26e6: f8bd 200e ldrh.w r2, [sp, #14] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 26ea: 4641 mov r1, r8 obj_coords.y2 += ext_size; 26ec: 4413 add r3, r2 is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 26ee: a804 add r0, sp, #16 26f0: aa02 add r2, sp, #8 obj_coords.y2 += ext_size; 26f2: f8ad 300e strh.w r3, [sp, #14] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 26f6: 47a8 blx r5 if(is_common == false) return; /*The area is not on the object*/ 26f8: b1a0 cbz r0, 2724 lv_obj_t * par = lv_obj_get_parent(obj); 26fa: f8df 8084 ldr.w r8, [pc, #132] ; 2780 26fe: 4620 mov r0, r4 par = lv_obj_get_parent(par); 2700: 47c0 blx r8 2702: 4604 mov r4, r0 while(par != NULL) { 2704: b988 cbnz r0, 272a if(is_common) _lv_inv_area(disp, &area_trunc); 2706: 4b1b ldr r3, [pc, #108] ; (2774 ) 2708: a904 add r1, sp, #16 270a: 4630 mov r0, r6 270c: 4798 blx r3 270e: e009 b.n 2724 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 2710: 4b19 ldr r3, [pc, #100] ; (2778 ) 2712: 4630 mov r0, r6 2714: 4798 blx r3 2716: 4285 cmp r5, r0 2718: d0cd beq.n 26b6 obj_scr == lv_disp_get_layer_sys(disp)) { 271a: 4b18 ldr r3, [pc, #96] ; (277c ) 271c: 4630 mov r0, r6 271e: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 2720: 4285 cmp r5, r0 2722: d0c8 beq.n 26b6 } 2724: b006 add sp, #24 2726: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 272a: a904 add r1, sp, #16 272c: f104 0210 add.w r2, r4, #16 2730: 4608 mov r0, r1 2732: 47a8 blx r5 if(is_common == false) break; /*If no common parts with parent break;*/ 2734: 2800 cmp r0, #0 2736: d0f5 beq.n 2724 if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 2738: 4620 mov r0, r4 273a: 47b8 blx r7 273c: 2800 cmp r0, #0 273e: d1f1 bne.n 2724 par = lv_obj_get_parent(par); 2740: 4620 mov r0, r4 2742: e7dd b.n 2700 2744: 000017e1 .word 0x000017e1 2748: 0001f411 .word 0x0001f411 274c: 0001ee5b .word 0x0001ee5b 2750: 0000e8e9 .word 0x0000e8e9 2754: 0001eebf .word 0x0001eebf 2758: 000017e9 .word 0x000017e9 275c: 0000261d .word 0x0000261d 2760: 0000216d .word 0x0000216d 2764: 000021c5 .word 0x000021c5 2768: 00001871 .word 0x00001871 276c: 00001d19 .word 0x00001d19 2770: 0000de8d .word 0x0000de8d 2774: 00004f0d .word 0x00004f0d 2778: 000018ad .word 0x000018ad 277c: 000018e9 .word 0x000018e9 2780: 00002125 .word 0x00002125 00002784 : { 2784: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2786: 4b1a ldr r3, [pc, #104] ; (27f0 ) { 2788: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 278a: 4798 blx r3 278c: 4604 mov r4, r0 278e: b968 cbnz r0, 27ac 2790: 4b18 ldr r3, [pc, #96] ; (27f4 ) 2792: 4919 ldr r1, [pc, #100] ; (27f8 ) 2794: 9300 str r3, [sp, #0] 2796: f240 220d movw r2, #525 ; 0x20d 279a: 2003 movs r0, #3 279c: 4e17 ldr r6, [pc, #92] ; (27fc ) 279e: 47b0 blx r6 27a0: 4817 ldr r0, [pc, #92] ; (2800 ) 27a2: 4918 ldr r1, [pc, #96] ; (2804 ) 27a4: 462a mov r2, r5 27a6: 4623 mov r3, r4 27a8: 4788 blx r1 27aa: e7fe b.n 27aa lv_coord_t ext_size = obj->ext_draw_pad; 27ac: f9b5 4032 ldrsh.w r4, [r5, #50] ; 0x32 lv_area_copy(&obj_coords, &obj->coords); 27b0: 4b15 ldr r3, [pc, #84] ; (2808 ) 27b2: f105 0110 add.w r1, r5, #16 27b6: a802 add r0, sp, #8 27b8: 4798 blx r3 obj_coords.x1 -= ext_size; 27ba: f8bd 2008 ldrh.w r2, [sp, #8] 27be: b2a3 uxth r3, r4 27c0: 1ad2 subs r2, r2, r3 27c2: f8ad 2008 strh.w r2, [sp, #8] obj_coords.y1 -= ext_size; 27c6: f8bd 200a ldrh.w r2, [sp, #10] 27ca: 1ad2 subs r2, r2, r3 27cc: f8ad 200a strh.w r2, [sp, #10] obj_coords.x2 += ext_size; 27d0: f8bd 200c ldrh.w r2, [sp, #12] 27d4: 441a add r2, r3 27d6: f8ad 200c strh.w r2, [sp, #12] obj_coords.y2 += ext_size; 27da: f8bd 200e ldrh.w r2, [sp, #14] 27de: 4413 add r3, r2 27e0: f8ad 300e strh.w r3, [sp, #14] lv_obj_invalidate_area(obj, &obj_coords); 27e4: a902 add r1, sp, #8 27e6: 4b09 ldr r3, [pc, #36] ; (280c ) 27e8: 4628 mov r0, r5 27ea: 4798 blx r3 } 27ec: b004 add sp, #16 27ee: bd70 pop {r4, r5, r6, pc} 27f0: 000017e1 .word 0x000017e1 27f4: 0001f428 .word 0x0001f428 27f8: 0001ee5b .word 0x0001ee5b 27fc: 0000e8e9 .word 0x0000e8e9 2800: 0001eebf .word 0x0001eebf 2804: 000017e9 .word 0x000017e9 2808: 00001d19 .word 0x00001d19 280c: 00002669 .word 0x00002669 00002810 : { 2810: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2812: 4b19 ldr r3, [pc, #100] ; (2878 ) { 2814: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2816: 4798 blx r3 2818: 4604 mov r4, r0 281a: b968 cbnz r0, 2838 281c: 4b17 ldr r3, [pc, #92] ; (287c ) 281e: 4918 ldr r1, [pc, #96] ; (2880 ) 2820: 9300 str r3, [sp, #0] 2822: f240 2262 movw r2, #610 ; 0x262 2826: 2003 movs r0, #3 2828: 4e16 ldr r6, [pc, #88] ; (2884 ) 282a: 47b0 blx r6 282c: 4816 ldr r0, [pc, #88] ; (2888 ) 282e: 4917 ldr r1, [pc, #92] ; (288c ) 2830: 462a mov r2, r5 2832: 4623 mov r3, r4 2834: 4788 blx r1 2836: e7fe b.n 2836 lv_obj_t * parent = lv_obj_get_parent(obj); 2838: 4b15 ldr r3, [pc, #84] ; (2890 ) 283a: 4628 mov r0, r5 283c: 4798 blx r3 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 283e: 1d07 adds r7, r0, #4 2840: 4b14 ldr r3, [pc, #80] ; (2894 ) lv_obj_t * parent = lv_obj_get_parent(obj); 2842: 4604 mov r4, r0 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 2844: 4638 mov r0, r7 2846: 4798 blx r3 2848: 4285 cmp r5, r0 284a: d013 beq.n 2874 lv_obj_invalidate(parent); 284c: 4e12 ldr r6, [pc, #72] ; (2898 ) 284e: 4620 mov r0, r4 2850: 47b0 blx r6 _lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true); 2852: 462a mov r2, r5 2854: 4639 mov r1, r7 2856: 4638 mov r0, r7 2858: 2301 movs r3, #1 285a: 4f10 ldr r7, [pc, #64] ; (289c ) 285c: 47b8 blx r7 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj); 285e: 69e3 ldr r3, [r4, #28] 2860: 462a mov r2, r5 2862: 2101 movs r1, #1 2864: 4620 mov r0, r4 2866: 4798 blx r3 lv_obj_invalidate(parent); 2868: 4620 mov r0, r4 286a: 4633 mov r3, r6 } 286c: b003 add sp, #12 286e: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} lv_obj_invalidate(parent); 2872: 4718 bx r3 } 2874: b003 add sp, #12 2876: bdf0 pop {r4, r5, r6, r7, pc} 2878: 000017e1 .word 0x000017e1 287c: 0001f43a .word 0x0001f43a 2880: 0001ee5b .word 0x0001ee5b 2884: 0000e8e9 .word 0x0000e8e9 2888: 0001eebf .word 0x0001eebf 288c: 000017e9 .word 0x000017e9 2890: 00002125 .word 0x00002125 2894: 0000e6a9 .word 0x0000e6a9 2898: 00002785 .word 0x00002785 289c: 0000e7ed .word 0x0000e7ed 000028a0 : { 28a0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 28a4: 4b2e ldr r3, [pc, #184] ; (2960 ) { 28a6: b087 sub sp, #28 28a8: 4604 mov r4, r0 28aa: 4688 mov r8, r1 28ac: 4617 mov r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 28ae: 4798 blx r3 28b0: 4605 mov r5, r0 28b2: b968 cbnz r0, 28d0 28b4: 4b2b ldr r3, [pc, #172] ; (2964 ) 28b6: 492c ldr r1, [pc, #176] ; (2968 ) 28b8: 9300 str r3, [sp, #0] 28ba: f240 2296 movw r2, #662 ; 0x296 28be: 2003 movs r0, #3 28c0: 4e2a ldr r6, [pc, #168] ; (296c ) 28c2: 47b0 blx r6 28c4: 482a ldr r0, [pc, #168] ; (2970 ) 28c6: 492b ldr r1, [pc, #172] ; (2974 ) 28c8: 4622 mov r2, r4 28ca: 462b mov r3, r5 28cc: 4788 blx r1 28ce: e7fe b.n 28ce lv_obj_t * par = obj->parent; 28d0: 6826 ldr r6, [r4, #0] if(par == NULL) { 28d2: b95e cbnz r6, 28ec LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object"); 28d4: 4b28 ldr r3, [pc, #160] ; (2978 ) 28d6: 9300 str r3, [sp, #0] 28d8: 4923 ldr r1, [pc, #140] ; (2968 ) 28da: 4b22 ldr r3, [pc, #136] ; (2964 ) 28dc: 4c23 ldr r4, [pc, #140] ; (296c ) 28de: f44f 7227 mov.w r2, #668 ; 0x29c 28e2: 2002 movs r0, #2 28e4: 47a0 blx r4 } 28e6: b007 add sp, #28 28e8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} diff.x = x - obj->coords.x1; 28ec: 8a22 ldrh r2, [r4, #16] 28ee: 8a33 ldrh r3, [r6, #16] 28f0: 1a9b subs r3, r3, r2 28f2: eb03 0108 add.w r1, r3, r8 diff.y = y - obj->coords.y1; 28f6: 8a62 ldrh r2, [r4, #18] 28f8: 8a73 ldrh r3, [r6, #18] 28fa: 1a9b subs r3, r3, r2 28fc: 19da adds r2, r3, r7 28fe: b297 uxth r7, r2 diff.x = x - obj->coords.x1; 2900: fa1f f881 uxth.w r8, r1 diff.y = y - obj->coords.y1; 2904: b212 sxth r2, r2 if(diff.x == 0 && diff.y == 0) return; 2906: ea58 0307 orrs.w r3, r8, r7 diff.x = x - obj->coords.x1; 290a: b20d sxth r5, r1 diff.y = y - obj->coords.y1; 290c: 9203 str r2, [sp, #12] if(diff.x == 0 && diff.y == 0) return; 290e: d0ea beq.n 28e6 lv_obj_invalidate(obj); 2910: 4620 mov r0, r4 2912: f8df 9070 ldr.w r9, [pc, #112] ; 2984 2916: 47c8 blx r9 lv_obj_get_coords(obj, &ori); 2918: a904 add r1, sp, #16 291a: 4620 mov r0, r4 291c: 4b17 ldr r3, [pc, #92] ; (297c ) 291e: 4798 blx r3 obj->coords.x1 += diff.x; 2920: 8a23 ldrh r3, [r4, #16] refresh_children_position(obj, diff.x, diff.y); 2922: 9a03 ldr r2, [sp, #12] obj->coords.x1 += diff.x; 2924: 4443 add r3, r8 2926: 8223 strh r3, [r4, #16] obj->coords.y1 += diff.y; 2928: 8a63 ldrh r3, [r4, #18] 292a: 443b add r3, r7 292c: 8263 strh r3, [r4, #18] obj->coords.x2 += diff.x; 292e: 8aa3 ldrh r3, [r4, #20] 2930: 4498 add r8, r3 obj->coords.y2 += diff.y; 2932: 8ae3 ldrh r3, [r4, #22] obj->coords.x2 += diff.x; 2934: f8a4 8014 strh.w r8, [r4, #20] obj->coords.y2 += diff.y; 2938: 441f add r7, r3 refresh_children_position(obj, diff.x, diff.y); 293a: 4629 mov r1, r5 293c: 4620 mov r0, r4 293e: 4b10 ldr r3, [pc, #64] ; (2980 ) obj->coords.y2 += diff.y; 2940: 82e7 strh r7, [r4, #22] refresh_children_position(obj, diff.x, diff.y); 2942: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 2944: 69e3 ldr r3, [r4, #28] 2946: aa04 add r2, sp, #16 2948: 2102 movs r1, #2 294a: 4620 mov r0, r4 294c: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 294e: 69f3 ldr r3, [r6, #28] 2950: 4622 mov r2, r4 2952: 2101 movs r1, #1 2954: 4630 mov r0, r6 2956: 4798 blx r3 lv_obj_invalidate(obj); 2958: 4620 mov r0, r4 295a: 47c8 blx r9 295c: e7c3 b.n 28e6 295e: bf00 nop 2960: 000017e1 .word 0x000017e1 2964: 0001f468 .word 0x0001f468 2968: 0001ee5b .word 0x0001ee5b 296c: 0000e8e9 .word 0x0000e8e9 2970: 0001eebf .word 0x0001eebf 2974: 000017e9 .word 0x000017e9 2978: 0001ef4a .word 0x0001ef4a 297c: 000022d5 .word 0x000022d5 2980: 00001cc1 .word 0x00001cc1 2984: 00002785 .word 0x00002785 00002988 : { 2988: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 298a: 4b0f ldr r3, [pc, #60] ; (29c8 ) { 298c: 4604 mov r4, r0 298e: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2990: 4798 blx r3 2992: 4605 mov r5, r0 2994: b968 cbnz r0, 29b2 2996: 4b0d ldr r3, [pc, #52] ; (29cc ) 2998: 490d ldr r1, [pc, #52] ; (29d0 ) 299a: 9300 str r3, [sp, #0] 299c: f44f 7233 mov.w r2, #716 ; 0x2cc 29a0: 2003 movs r0, #3 29a2: 4e0c ldr r6, [pc, #48] ; (29d4 ) 29a4: 47b0 blx r6 29a6: 480c ldr r0, [pc, #48] ; (29d8 ) 29a8: 490c ldr r1, [pc, #48] ; (29dc ) 29aa: 4622 mov r2, r4 29ac: 462b mov r3, r5 29ae: 4788 blx r1 29b0: e7fe b.n 29b0 lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 29b2: 4b0b ldr r3, [pc, #44] ; (29e0 ) 29b4: 4620 mov r0, r4 29b6: 4798 blx r3 29b8: 4b0a ldr r3, [pc, #40] ; (29e4 ) 29ba: 4602 mov r2, r0 29bc: 4631 mov r1, r6 29be: 4620 mov r0, r4 } 29c0: b002 add sp, #8 29c2: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 29c6: 4718 bx r3 29c8: 000017e1 .word 0x000017e1 29cc: 0001f477 .word 0x0001f477 29d0: 0001ee5b .word 0x0001ee5b 29d4: 0000e8e9 .word 0x0000e8e9 29d8: 0001eebf .word 0x0001eebf 29dc: 000017e9 .word 0x000017e9 29e0: 0000238d .word 0x0000238d 29e4: 000028a1 .word 0x000028a1 000029e8 : { 29e8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29ea: 4b0f ldr r3, [pc, #60] ; (2a28 ) { 29ec: 4604 mov r4, r0 29ee: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 29f0: 4798 blx r3 29f2: 4605 mov r5, r0 29f4: b968 cbnz r0, 2a12 29f6: 4b0d ldr r3, [pc, #52] ; (2a2c ) 29f8: 490d ldr r1, [pc, #52] ; (2a30 ) 29fa: 9300 str r3, [sp, #0] 29fc: f44f 7236 mov.w r2, #728 ; 0x2d8 2a00: 2003 movs r0, #3 2a02: 4e0c ldr r6, [pc, #48] ; (2a34 ) 2a04: 47b0 blx r6 2a06: 480c ldr r0, [pc, #48] ; (2a38 ) 2a08: 490c ldr r1, [pc, #48] ; (2a3c ) 2a0a: 4622 mov r2, r4 2a0c: 462b mov r3, r5 2a0e: 4788 blx r1 2a10: e7fe b.n 2a10 lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 2a12: 4b0b ldr r3, [pc, #44] ; (2a40 ) 2a14: 4620 mov r0, r4 2a16: 4798 blx r3 2a18: 4b0a ldr r3, [pc, #40] ; (2a44 ) 2a1a: 4601 mov r1, r0 2a1c: 4632 mov r2, r6 2a1e: 4620 mov r0, r4 } 2a20: b002 add sp, #8 2a22: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 2a26: 4718 bx r3 2a28: 000017e1 .word 0x000017e1 2a2c: 0001f484 .word 0x0001f484 2a30: 0001ee5b .word 0x0001ee5b 2a34: 0000e8e9 .word 0x0000e8e9 2a38: 0001eebf .word 0x0001eebf 2a3c: 000017e9 .word 0x000017e9 2a40: 0000232d .word 0x0000232d 2a44: 000028a1 .word 0x000028a1 00002a48 : { 2a48: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a4c: f8df a0d8 ldr.w sl, [pc, #216] ; 2b28 { 2a50: f9bd 8030 ldrsh.w r8, [sp, #48] ; 0x30 2a54: 4604 mov r4, r0 2a56: 460d mov r5, r1 2a58: 4617 mov r7, r2 2a5a: 461e mov r6, r3 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a5c: 47d0 blx sl 2a5e: 4681 mov r9, r0 2a60: b968 cbnz r0, 2a7e 2a62: 4b2a ldr r3, [pc, #168] ; (2b0c ) 2a64: 492a ldr r1, [pc, #168] ; (2b10 ) 2a66: 9300 str r3, [sp, #0] 2a68: f240 326d movw r2, #877 ; 0x36d 2a6c: 2003 movs r0, #3 2a6e: 4d29 ldr r5, [pc, #164] ; (2b14 ) 2a70: 47a8 blx r5 2a72: 4829 ldr r0, [pc, #164] ; (2b18 ) 2a74: 4929 ldr r1, [pc, #164] ; (2b1c ) 2a76: 4622 mov r2, r4 2a78: 464b mov r3, r9 2a7a: 4788 blx r1 2a7c: e7fe b.n 2a7c if(base == NULL) base = lv_obj_get_parent(obj); 2a7e: b91d cbnz r5, 2a88 2a80: 4b27 ldr r3, [pc, #156] ; (2b20 ) 2a82: 4620 mov r0, r4 2a84: 4798 blx r3 2a86: 4605 mov r5, r0 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2a88: 4628 mov r0, r5 2a8a: 47d0 blx sl 2a8c: 4681 mov r9, r0 2a8e: b968 cbnz r0, 2aac 2a90: 4b1e ldr r3, [pc, #120] ; (2b0c ) 2a92: 491f ldr r1, [pc, #124] ; (2b10 ) 2a94: 9300 str r3, [sp, #0] 2a96: f240 3271 movw r2, #881 ; 0x371 2a9a: 2003 movs r0, #3 2a9c: 4c1d ldr r4, [pc, #116] ; (2b14 ) 2a9e: 47a0 blx r4 2aa0: 481d ldr r0, [pc, #116] ; (2b18 ) 2aa2: 491e ldr r1, [pc, #120] ; (2b1c ) 2aa4: 462a mov r2, r5 2aa6: 464b mov r3, r9 2aa8: 4788 blx r1 2aaa: e7fe b.n 2aaa _lv_area_align(&base->coords, &obj->coords, align, &new_pos); 2aac: 463a mov r2, r7 2aae: f104 0110 add.w r1, r4, #16 2ab2: ab03 add r3, sp, #12 2ab4: f105 0010 add.w r0, r5, #16 2ab8: f8df 9070 ldr.w r9, [pc, #112] ; 2b2c 2abc: 47c8 blx r9 lv_obj_t * par = lv_obj_get_parent(obj); 2abe: 4b18 ldr r3, [pc, #96] ; (2b20 ) 2ac0: 4620 mov r0, r4 2ac2: 4798 blx r3 new_pos.y += y_ofs; 2ac4: f8bd 200e ldrh.w r2, [sp, #14] new_pos.x += x_ofs; 2ac8: f8bd 100c ldrh.w r1, [sp, #12] lv_coord_t par_abs_y = par->coords.y1; 2acc: f9b0 3012 ldrsh.w r3, [r0, #18] new_pos.x -= par_abs_x; 2ad0: 8a00 ldrh r0, [r0, #16] new_pos.y += y_ofs; 2ad2: 4442 add r2, r8 new_pos.x += x_ofs; 2ad4: 4431 add r1, r6 new_pos.x -= par_abs_x; 2ad6: 1a09 subs r1, r1, r0 new_pos.y -= par_abs_y; 2ad8: 1ad2 subs r2, r2, r3 new_pos.x -= par_abs_x; 2ada: b209 sxth r1, r1 new_pos.y -= par_abs_y; 2adc: b212 sxth r2, r2 lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2ade: 4b11 ldr r3, [pc, #68] ; (2b24 ) new_pos.x -= par_abs_x; 2ae0: f8ad 100c strh.w r1, [sp, #12] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2ae4: 4620 mov r0, r4 new_pos.y -= par_abs_y; 2ae6: f8ad 200e strh.w r2, [sp, #14] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2aea: 4798 blx r3 obj->realign.origo_align = 0; 2aec: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 obj->realign.align = align; 2af0: f884 7048 strb.w r7, [r4, #72] ; 0x48 obj->realign.origo_align = 0; 2af4: f36f 0341 bfc r3, #1, #1 obj->realign.xofs = x_ofs; 2af8: f8a4 6044 strh.w r6, [r4, #68] ; 0x44 obj->realign.yofs = y_ofs; 2afc: f8a4 8046 strh.w r8, [r4, #70] ; 0x46 obj->realign.base = base; 2b00: 6425 str r5, [r4, #64] ; 0x40 obj->realign.origo_align = 0; 2b02: f884 3049 strb.w r3, [r4, #73] ; 0x49 } 2b06: b004 add sp, #16 2b08: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 2b0c: 0001f491 .word 0x0001f491 2b10: 0001ee5b .word 0x0001ee5b 2b14: 0000e8e9 .word 0x0000e8e9 2b18: 0001eebf .word 0x0001eebf 2b1c: 000017e9 .word 0x000017e9 2b20: 00002125 .word 0x00002125 2b24: 000028a1 .word 0x000028a1 2b28: 000017e1 .word 0x000017e1 2b2c: 0000e131 .word 0x0000e131 00002b30 : { 2b30: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 2b34: b087 sub sp, #28 2b36: e9cd 2303 strd r2, r3, [sp, #12] LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b3a: f8df b1a4 ldr.w fp, [pc, #420] ; 2ce0 { 2b3e: f9bd 3040 ldrsh.w r3, [sp, #64] ; 0x40 2b42: 9305 str r3, [sp, #20] 2b44: 4680 mov r8, r0 2b46: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b48: 47d8 blx fp 2b4a: 4604 mov r4, r0 2b4c: b968 cbnz r0, 2b6a 2b4e: 4b5a ldr r3, [pc, #360] ; (2cb8 ) 2b50: 495a ldr r1, [pc, #360] ; (2cbc ) 2b52: 9300 str r3, [sp, #0] 2b54: f240 3295 movw r2, #917 ; 0x395 2b58: 2003 movs r0, #3 2b5a: 4d59 ldr r5, [pc, #356] ; (2cc0 ) 2b5c: 47a8 blx r5 2b5e: 4859 ldr r0, [pc, #356] ; (2cc4 ) 2b60: 4959 ldr r1, [pc, #356] ; (2cc8 ) 2b62: 4642 mov r2, r8 2b64: 4623 mov r3, r4 2b66: 4788 blx r1 2b68: e7fe b.n 2b68 lv_coord_t new_x = lv_obj_get_x(obj); 2b6a: 4b58 ldr r3, [pc, #352] ; (2ccc ) lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2b6c: f8df 9174 ldr.w r9, [pc, #372] ; 2ce4 lv_coord_t new_x = lv_obj_get_x(obj); 2b70: 4640 mov r0, r8 2b72: 4798 blx r3 lv_coord_t new_y = lv_obj_get_y(obj); 2b74: 4b56 ldr r3, [pc, #344] ; (2cd0 ) lv_coord_t new_x = lv_obj_get_x(obj); 2b76: 4604 mov r4, r0 lv_coord_t new_y = lv_obj_get_y(obj); 2b78: 4640 mov r0, r8 2b7a: 4798 blx r3 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2b7c: 4a55 ldr r2, [pc, #340] ; (2cd4 ) lv_coord_t new_y = lv_obj_get_y(obj); 2b7e: 4682 mov sl, r0 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2b80: 4640 mov r0, r8 2b82: 4790 blx r2 2b84: 4605 mov r5, r0 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2b86: 4640 mov r0, r8 2b88: 47c8 blx r9 2b8a: 4607 mov r7, r0 if(base == NULL) { 2b8c: b91e cbnz r6, 2b96 base = lv_obj_get_parent(obj); 2b8e: 4952 ldr r1, [pc, #328] ; (2cd8 ) 2b90: 4640 mov r0, r8 2b92: 4788 blx r1 2b94: 4606 mov r6, r0 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2b96: 4630 mov r0, r6 2b98: 47d8 blx fp 2b9a: 4a4e ldr r2, [pc, #312] ; (2cd4 ) 2b9c: 4683 mov fp, r0 2b9e: b968 cbnz r0, 2bbc 2ba0: 4b45 ldr r3, [pc, #276] ; (2cb8 ) 2ba2: 4946 ldr r1, [pc, #280] ; (2cbc ) 2ba4: 9300 str r3, [sp, #0] 2ba6: f240 32a1 movw r2, #929 ; 0x3a1 2baa: 2003 movs r0, #3 2bac: 4c44 ldr r4, [pc, #272] ; (2cc0 ) 2bae: 47a0 blx r4 2bb0: 4844 ldr r0, [pc, #272] ; (2cc4 ) 2bb2: 4945 ldr r1, [pc, #276] ; (2cc8 ) 2bb4: 4632 mov r2, r6 2bb6: 465b mov r3, fp 2bb8: 4788 blx r1 2bba: e7fe b.n 2bba switch(align) { 2bbc: 9b03 ldr r3, [sp, #12] lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2bbe: eb05 75d5 add.w r5, r5, r5, lsr #31 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2bc2: eb07 77d7 add.w r7, r7, r7, lsr #31 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2bc6: f345 054f sbfx r5, r5, #1, #16 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2bca: f347 074f sbfx r7, r7, #1, #16 switch(align) { 2bce: 2b14 cmp r3, #20 2bd0: d824 bhi.n 2c1c 2bd2: e8df f003 tbb [pc, r3] 2bd6: 580b .short 0x580b 2bd8: 4b5e6119 .word 0x4b5e6119 2bdc: 58665b6b .word 0x58665b6b 2be0: 4b5e6119 .word 0x4b5e6119 2be4: 5e5b586b .word 0x5e5b586b 2be8: 6661 .short 0x6661 2bea: 6b .byte 0x6b 2beb: 00 .byte 0x00 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2bec: 4630 mov r0, r6 2bee: 4790 blx r2 2bf0: eb00 70d0 add.w r0, r0, r0, lsr #31 2bf4: ebc5 0460 rsb r4, r5, r0, asr #1 2bf8: b224 sxth r4, r4 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2bfa: 4630 mov r0, r6 2bfc: 47c8 blx r9 2bfe: eb00 70d0 add.w r0, r0, r0, lsr #31 2c02: ebc7 0360 rsb r3, r7, r0, asr #1 2c06: e007 b.n 2c18 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2c08: 4630 mov r0, r6 2c0a: 4790 blx r2 2c0c: eb00 70d0 add.w r0, r0, r0, lsr #31 2c10: ebc5 0460 rsb r4, r5, r0, asr #1 2c14: b224 sxth r4, r4 new_y = -obj_h_half; 2c16: 427b negs r3, r7 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2c18: fa0f fa83 sxth.w sl, r3 lv_obj_t * par = lv_obj_get_parent(obj); 2c1c: 4a2e ldr r2, [pc, #184] ; (2cd8 ) 2c1e: 4640 mov r0, r8 2c20: 4790 blx r2 new_x += x_ofs + base_abs_x; 2c22: 9b04 ldr r3, [sp, #16] 2c24: 8a31 ldrh r1, [r6, #16] new_x -= par_abs_x; 2c26: 8a02 ldrh r2, [r0, #16] new_x += x_ofs + base_abs_x; 2c28: 4419 add r1, r3 2c2a: 4421 add r1, r4 new_y += y_ofs + base_abs_y; 2c2c: 9b05 ldr r3, [sp, #20] new_x -= par_abs_x; 2c2e: 1a89 subs r1, r1, r2 new_y += y_ofs + base_abs_y; 2c30: 8a72 ldrh r2, [r6, #18] 2c32: 441a add r2, r3 new_y -= par_abs_y; 2c34: 8a43 ldrh r3, [r0, #18] new_y += y_ofs + base_abs_y; 2c36: 4452 add r2, sl new_y -= par_abs_y; 2c38: 1ad2 subs r2, r2, r3 lv_obj_set_pos(obj, new_x, new_y); 2c3a: b212 sxth r2, r2 2c3c: 4b27 ldr r3, [pc, #156] ; (2cdc ) 2c3e: b209 sxth r1, r1 2c40: 4640 mov r0, r8 2c42: 4798 blx r3 obj->realign.align = align; 2c44: 9b03 ldr r3, [sp, #12] 2c46: f888 3048 strb.w r3, [r8, #72] ; 0x48 obj->realign.xofs = x_ofs; 2c4a: 9b04 ldr r3, [sp, #16] 2c4c: f8a8 3044 strh.w r3, [r8, #68] ; 0x44 obj->realign.yofs = y_ofs; 2c50: 9b05 ldr r3, [sp, #20] 2c52: f8a8 3046 strh.w r3, [r8, #70] ; 0x46 obj->realign.origo_align = 1; 2c56: f898 3049 ldrb.w r3, [r8, #73] ; 0x49 obj->realign.base = base; 2c5a: f8c8 6040 str.w r6, [r8, #64] ; 0x40 obj->realign.origo_align = 1; 2c5e: f043 0302 orr.w r3, r3, #2 2c62: f888 3049 strb.w r3, [r8, #73] ; 0x49 } 2c66: b007 add sp, #28 2c68: 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; 2c6c: 4630 mov r0, r6 2c6e: 4790 blx r2 2c70: eb00 70d0 add.w r0, r0, r0, lsr #31 2c74: ebc5 0460 rsb r4, r5, r0, asr #1 2c78: b224 sxth r4, r4 new_y = lv_obj_get_height(base) - obj_h_half; 2c7a: 4630 mov r0, r6 2c7c: 47c8 blx r9 2c7e: 1bc0 subs r0, r0, r7 2c80: fa0f fa80 sxth.w sl, r0 break; 2c84: e7ca b.n 2c1c new_x = -obj_w_half; 2c86: 426d negs r5, r5 2c88: b22c sxth r4, r5 new_y = -obj_h_half; 2c8a: e7c4 b.n 2c16 new_x = -obj_w_half; 2c8c: 426d negs r5, r5 2c8e: b22c sxth r4, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2c90: e7b3 b.n 2bfa new_x = -obj_w_half; 2c92: 426d negs r5, r5 2c94: b22c sxth r4, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2c96: e7f0 b.n 2c7a new_x = lv_obj_get_width(base) - obj_w_half; 2c98: 4630 mov r0, r6 2c9a: 4790 blx r2 2c9c: 1b40 subs r0, r0, r5 2c9e: b204 sxth r4, r0 2ca0: e7b9 b.n 2c16 new_x = lv_obj_get_width(base) - obj_w_half; 2ca2: 4630 mov r0, r6 2ca4: 4790 blx r2 2ca6: 1b40 subs r0, r0, r5 2ca8: b204 sxth r4, r0 2caa: e7a6 b.n 2bfa new_x = lv_obj_get_width(base) - obj_w_half; 2cac: 4630 mov r0, r6 2cae: 4790 blx r2 2cb0: 1b40 subs r0, r0, r5 2cb2: b204 sxth r4, r0 2cb4: e7e1 b.n 2c7a 2cb6: bf00 nop 2cb8: 0001f49e .word 0x0001f49e 2cbc: 0001ee5b .word 0x0001ee5b 2cc0: 0000e8e9 .word 0x0000e8e9 2cc4: 0001eebf .word 0x0001eebf 2cc8: 000017e9 .word 0x000017e9 2ccc: 0000232d .word 0x0000232d 2cd0: 0000238d .word 0x0000238d 2cd4: 000023ed .word 0x000023ed 2cd8: 00002125 .word 0x00002125 2cdc: 000028a1 .word 0x000028a1 2ce0: 000017e1 .word 0x000017e1 2ce4: 0000243d .word 0x0000243d 00002ce8 : { 2ce8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2cea: 4b12 ldr r3, [pc, #72] ; (2d34 ) { 2cec: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2cee: 4798 blx r3 2cf0: 4605 mov r5, r0 2cf2: b968 cbnz r0, 2d10 2cf4: 4b10 ldr r3, [pc, #64] ; (2d38 ) 2cf6: 4911 ldr r1, [pc, #68] ; (2d3c ) 2cf8: 9300 str r3, [sp, #0] 2cfa: f240 422a movw r2, #1066 ; 0x42a 2cfe: 2003 movs r0, #3 2d00: 4e0f ldr r6, [pc, #60] ; (2d40 ) 2d02: 47b0 blx r6 2d04: 480f ldr r0, [pc, #60] ; (2d44 ) 2d06: 4910 ldr r1, [pc, #64] ; (2d48 ) 2d08: 4622 mov r2, r4 2d0a: 462b mov r3, r5 2d0c: 4788 blx r1 2d0e: e7fe b.n 2d0e if(obj->realign.origo_align) 2d10: 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); 2d14: f9b4 0046 ldrsh.w r0, [r4, #70] ; 0x46 2d18: 6c21 ldr r1, [r4, #64] ; 0x40 2d1a: f894 2048 ldrb.w r2, [r4, #72] ; 0x48 2d1e: f9b4 3044 ldrsh.w r3, [r4, #68] ; 0x44 2d22: 9000 str r0, [sp, #0] 2d24: 4620 mov r0, r4 if(obj->realign.origo_align) 2d26: 07ac lsls r4, r5, #30 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2d28: bf4c ite mi 2d2a: 4c08 ldrmi r4, [pc, #32] ; (2d4c ) lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2d2c: 4c08 ldrpl r4, [pc, #32] ; (2d50 ) 2d2e: 47a0 blx r4 } 2d30: b002 add sp, #8 2d32: bd70 pop {r4, r5, r6, pc} 2d34: 000017e1 .word 0x000017e1 2d38: 0001f4b1 .word 0x0001f4b1 2d3c: 0001ee5b .word 0x0001ee5b 2d40: 0000e8e9 .word 0x0000e8e9 2d44: 0001eebf .word 0x0001eebf 2d48: 000017e9 .word 0x000017e9 2d4c: 00002b31 .word 0x00002b31 2d50: 00002a49 .word 0x00002a49 00002d54 : { 2d54: b5f8 push {r3, r4, r5, r6, r7, lr} lv_obj_t * child = lv_obj_get_child(obj, NULL); 2d56: 2100 movs r1, #0 2d58: 4e0b ldr r6, [pc, #44] ; (2d88 ) lv_obj_invalidate(child); 2d5a: 4f0c ldr r7, [pc, #48] ; (2d8c ) { 2d5c: 4605 mov r5, r0 lv_obj_t * child = lv_obj_get_child(obj, NULL); 2d5e: 47b0 blx r6 2d60: 4604 mov r4, r0 while(child != NULL) { 2d62: b904 cbnz r4, 2d66 } 2d64: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_obj_invalidate(child); 2d66: 4620 mov r0, r4 2d68: 47b8 blx r7 child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 2d6a: 69e3 ldr r3, [r4, #28] 2d6c: 2200 movs r2, #0 2d6e: 2104 movs r1, #4 2d70: 4620 mov r0, r4 2d72: 4798 blx r3 lv_obj_invalidate(child); 2d74: 4620 mov r0, r4 2d76: 47b8 blx r7 refresh_children_style(child); /*Check children too*/ 2d78: 4620 mov r0, r4 2d7a: f7ff ffeb bl 2d54 child = lv_obj_get_child(obj, child); 2d7e: 4621 mov r1, r4 2d80: 4628 mov r0, r5 2d82: 47b0 blx r6 2d84: 4604 mov r4, r0 2d86: e7ec b.n 2d62 2d88: 00002271 .word 0x00002271 2d8c: 00002785 .word 0x00002785 00002d90 : { 2d90: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d92: 4b36 ldr r3, [pc, #216] ; (2e6c ) { 2d94: 4605 mov r5, r0 2d96: 460c mov r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2d98: 4798 blx r3 2d9a: 4606 mov r6, r0 2d9c: b968 cbnz r0, 2dba 2d9e: 4b34 ldr r3, [pc, #208] ; (2e70 ) 2da0: 4934 ldr r1, [pc, #208] ; (2e74 ) 2da2: 9300 str r3, [sp, #0] 2da4: f240 521d movw r2, #1309 ; 0x51d 2da8: 2003 movs r0, #3 2daa: 4c33 ldr r4, [pc, #204] ; (2e78 ) 2dac: 47a0 blx r4 2dae: 4833 ldr r0, [pc, #204] ; (2e7c ) 2db0: 4933 ldr r1, [pc, #204] ; (2e80 ) 2db2: 462a mov r2, r5 2db4: 4633 mov r3, r6 2db6: 4788 blx r1 2db8: e7fe b.n 2db8 switch(prop) { 2dba: 2c90 cmp r4, #144 ; 0x90 2dbc: 4e31 ldr r6, [pc, #196] ; (2e84 ) 2dbe: d838 bhi.n 2e32 2dc0: 2c72 cmp r4, #114 ; 0x72 2dc2: d819 bhi.n 2df8 2dc4: 2c53 cmp r4, #83 ; 0x53 2dc6: d82e bhi.n 2e26 2dc8: 2c3f cmp r4, #63 ; 0x3f 2dca: d822 bhi.n 2e12 2dcc: 2c07 cmp r4, #7 2dce: d825 bhi.n 2e1c 2dd0: 2c01 cmp r4, #1 2dd2: d918 bls.n 2e06 lv_obj_invalidate(obj); 2dd4: 4628 mov r0, r5 2dd6: 47b0 blx r6 obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL); 2dd8: 69eb ldr r3, [r5, #28] 2dda: 2200 movs r2, #0 2ddc: 2104 movs r1, #4 2dde: 4628 mov r0, r5 2de0: 4798 blx r3 switch(prop) { 2de2: 2c18 cmp r4, #24 2de4: d834 bhi.n 2e50 2de6: 2c14 cmp r4, #20 2de8: d934 bls.n 2e54 if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL); 2dea: 6828 ldr r0, [r5, #0] 2dec: b390 cbz r0, 2e54 2dee: 69c3 ldr r3, [r0, #28] 2df0: 2200 movs r2, #0 2df2: 2101 movs r1, #1 2df4: 4798 blx r3 2df6: e02d b.n 2e54 2df8: f1a4 0273 sub.w r2, r4, #115 ; 0x73 2dfc: 4b22 ldr r3, [pc, #136] ; (2e88 ) 2dfe: b292 uxth r2, r2 2e00: 40d3 lsrs r3, r2 2e02: 07da lsls r2, r3, #31 2e04: d4e6 bmi.n 2dd4 lv_obj_invalidate(obj); 2e06: 4628 mov r0, r5 2e08: 4633 mov r3, r6 } 2e0a: b002 add sp, #8 2e0c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 2e10: 4718 bx r3 2e12: f1a4 0240 sub.w r2, r4, #64 ; 0x40 2e16: 4b1d ldr r3, [pc, #116] ; (2e8c ) 2e18: b292 uxth r2, r2 2e1a: e7f1 b.n 2e00 switch(prop) { 2e1c: f1a4 0310 sub.w r3, r4, #16 2e20: 2b08 cmp r3, #8 2e22: d8f0 bhi.n 2e06 2e24: e7d6 b.n 2dd4 2e26: 2c5c cmp r4, #92 ; 0x5c 2e28: d0d4 beq.n 2dd4 2e2a: f1a4 0370 sub.w r3, r4, #112 ; 0x70 2e2e: 2b01 cmp r3, #1 2e30: e7f7 b.n 2e22 2e32: f248 0381 movw r3, #32897 ; 0x8081 2e36: 429c cmp r4, r3 2e38: d806 bhi.n 2e48 2e3a: f248 037f movw r3, #32895 ; 0x807f 2e3e: 429c cmp r4, r3 2e40: d8c8 bhi.n 2dd4 2e42: 2cff cmp r4, #255 ; 0xff 2e44: d1df bne.n 2e06 2e46: e7c5 b.n 2dd4 2e48: f248 038e movw r3, #32910 ; 0x808e 2e4c: 429c cmp r4, r3 2e4e: e7f9 b.n 2e44 switch(prop) { 2e50: 2cff cmp r4, #255 ; 0xff 2e52: d0ca beq.n 2dea lv_obj_invalidate(obj); 2e54: 4628 mov r0, r5 2e56: 47b0 blx r6 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 2e58: 2cff cmp r4, #255 ; 0xff 2e5a: d001 beq.n 2e60 2e5c: 0423 lsls r3, r4, #16 2e5e: d502 bpl.n 2e66 2e60: 4b0b ldr r3, [pc, #44] ; (2e90 ) 2e62: 4628 mov r0, r5 2e64: e7d1 b.n 2e0a } 2e66: b002 add sp, #8 2e68: bd70 pop {r4, r5, r6, pc} 2e6a: bf00 nop 2e6c: 000017e1 .word 0x000017e1 2e70: 0001f4c0 .word 0x0001f4c0 2e74: 0001ee5b .word 0x0001ee5b 2e78: 0000e8e9 .word 0x0000e8e9 2e7c: 0001eebf .word 0x0001eebf 2e80: 000017e9 .word 0x000017e9 2e84: 00002785 .word 0x00002785 2e88: 20001a07 .word 0x20001a07 2e8c: 000f1003 .word 0x000f1003 2e90: 00002d55 .word 0x00002d55 00002e94 : { 2e94: b510 push {r4, lr} lv_obj_clean_style_list(obj, part); 2e96: 4b04 ldr r3, [pc, #16] ; (2ea8 ) { 2e98: 4604 mov r4, r0 lv_obj_clean_style_list(obj, part); 2e9a: 4798 blx r3 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2e9c: 4620 mov r0, r4 2e9e: 4b03 ldr r3, [pc, #12] ; (2eac ) } 2ea0: e8bd 4010 ldmia.w sp!, {r4, lr} lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2ea4: 21ff movs r1, #255 ; 0xff 2ea6: 4718 bx r3 2ea8: 00002549 .word 0x00002549 2eac: 00002d91 .word 0x00002d91 00002eb0 : { 2eb0: b5f8 push {r3, r4, r5, r6, r7, lr} lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 2eb2: 4c1e ldr r4, [pc, #120] ; (2f2c ) { 2eb4: 4606 mov r6, r0 2eb6: 460d mov r5, r1 2eb8: 2700 movs r7, #0 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 2eba: b2f9 uxtb r1, r7 2ebc: 4628 mov r0, r5 2ebe: 47a0 blx r4 if(dsc == NULL) break; 2ec0: 4602 mov r2, r0 2ec2: b1f8 cbz r0, 2f04 for(ci = 0; ci < dsc->style_cnt; ci++) { 2ec4: 7901 ldrb r1, [r0, #4] 2ec6: f04f 0c00 mov.w ip, #0 2eca: fa5f f38c uxtb.w r3, ip 2ece: 4299 cmp r1, r3 2ed0: d915 bls.n 2efe */ 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++; 2ed2: 7950 ldrb r0, [r2, #5] 2ed4: f000 0006 and.w r0, r0, #6 2ed8: 2806 cmp r0, #6 2eda: d123 bne.n 2f24 2edc: 3301 adds r3, #1 2ede: b2db uxtb r3, r3 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 2ee0: 4299 cmp r1, r3 2ee2: d916 bls.n 2f12 return list->style_list[id]; 2ee4: 6810 ldr r0, [r2, #0] 2ee6: f850 3023 ldr.w r3, [r0, r3, lsl #2] if(class == style || style == NULL) { 2eea: 429e cmp r6, r3 2eec: d003 beq.n 2ef6 2eee: f10c 0c01 add.w ip, ip, #1 2ef2: 2e00 cmp r6, #0 2ef4: d1e9 bne.n 2eca lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 2ef6: 4b0e ldr r3, [pc, #56] ; (2f30 ) 2ef8: 21ff movs r1, #255 ; 0xff 2efa: 4628 mov r0, r5 2efc: 4798 blx r3 for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 2efe: 3701 adds r7, #1 2f00: 2f40 cmp r7, #64 ; 0x40 2f02: d1da bne.n 2eba lv_obj_t * child = lv_obj_get_child(obj, NULL); 2f04: 4f0b ldr r7, [pc, #44] ; (2f34 ) 2f06: 2100 movs r1, #0 2f08: 4628 mov r0, r5 child = lv_obj_get_child(obj, child); 2f0a: 47b8 blx r7 2f0c: 4604 mov r4, r0 while(child) { 2f0e: b910 cbnz r0, 2f16 } 2f10: bdf8 pop {r3, r4, r5, r6, r7, pc} if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 2f12: 2300 movs r3, #0 2f14: e7e9 b.n 2eea report_style_mod_core(style, child); 2f16: 4621 mov r1, r4 2f18: 4630 mov r0, r6 2f1a: f7ff ffc9 bl 2eb0 child = lv_obj_get_child(obj, child); 2f1e: 4621 mov r1, r4 2f20: 4628 mov r0, r5 2f22: e7f2 b.n 2f0a 2f24: 2900 cmp r1, #0 2f26: d1dd bne.n 2ee4 2f28: 460b mov r3, r1 2f2a: e7de b.n 2eea 2f2c: 0000248d .word 0x0000248d 2f30: 00002d91 .word 0x00002d91 2f34: 00002271 .word 0x00002271 00002f38 : { 2f38: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_disp_t * d = lv_disp_get_next(NULL); 2f3c: 4f0f ldr r7, [pc, #60] ; (2f7c ) _LV_LL_READ(d->scr_ll, i) { 2f3e: f8df 9040 ldr.w r9, [pc, #64] ; 2f80 report_style_mod_core(style, i); 2f42: f8df a040 ldr.w sl, [pc, #64] ; 2f84 { 2f46: 4606 mov r6, r0 lv_disp_t * d = lv_disp_get_next(NULL); 2f48: 2000 movs r0, #0 2f4a: 47b8 blx r7 2f4c: 4604 mov r4, r0 while(d) { 2f4e: b90c cbnz r4, 2f54 } 2f50: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} _LV_LL_READ(d->scr_ll, i) { 2f54: f104 0830 add.w r8, r4, #48 ; 0x30 2f58: 4640 mov r0, r8 2f5a: 47c8 blx r9 2f5c: f8df b028 ldr.w fp, [pc, #40] ; 2f88 2f60: 4605 mov r5, r0 2f62: b91d cbnz r5, 2f6c d = lv_disp_get_next(d); 2f64: 4620 mov r0, r4 2f66: 47b8 blx r7 2f68: 4604 mov r4, r0 2f6a: e7f0 b.n 2f4e report_style_mod_core(style, i); 2f6c: 4629 mov r1, r5 2f6e: 4630 mov r0, r6 2f70: 47d0 blx sl _LV_LL_READ(d->scr_ll, i) { 2f72: 4629 mov r1, r5 2f74: 4640 mov r0, r8 2f76: 47d8 blx fp 2f78: 4605 mov r5, r0 2f7a: e7f2 b.n 2f62 2f7c: 0000d9c5 .word 0x0000d9c5 2f80: 0000e6a9 .word 0x0000e6a9 2f84: 00002eb1 .word 0x00002eb1 2f88: 0000e6b5 .word 0x0000e6b5 00002f8c : { 2f8c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 2f90: 4b3b ldr r3, [pc, #236] ; (3080 ) { 2f92: 4604 mov r4, r0 2f94: 460d mov r5, r1 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 2f96: 7981 ldrb r1, [r0, #6] 2f98: 6800 ldr r0, [r0, #0] 2f9a: 4798 blx r3 lv_style_t * style = _lv_style_list_get_transition_style(list); 2f9c: 4b39 ldr r3, [pc, #228] ; (3084 ) 2f9e: 4798 blx r3 if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/ 2fa0: 88a1 ldrh r1, [r4, #4] 2fa2: f001 030f and.w r3, r1, #15 2fa6: 2b08 cmp r3, #8 2fa8: d816 bhi.n 2fd8 if(v == 0) x = tr->start_value._int; 2faa: b94d cbnz r5, 2fc0 2fac: f9b4 2008 ldrsh.w r2, [r4, #8] _lv_style_set_int(style, tr->prop, x); 2fb0: 4b35 ldr r3, [pc, #212] ; (3088 ) 2fb2: 4798 blx r3 lv_obj_refresh_style(tr->obj, tr->prop); 2fb4: 88a1 ldrh r1, [r4, #4] 2fb6: 6820 ldr r0, [r4, #0] 2fb8: 4b34 ldr r3, [pc, #208] ; (308c ) } 2fba: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} lv_obj_refresh_style(tr->obj, tr->prop); 2fbe: 4718 bx r3 else if(v == 255) x = tr->end_value._int; 2fc0: 2dff cmp r5, #255 ; 0xff 2fc2: f9b4 200c ldrsh.w r2, [r4, #12] 2fc6: d0f3 beq.n 2fb0 else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8); 2fc8: f9b4 3008 ldrsh.w r3, [r4, #8] 2fcc: 1ad2 subs r2, r2, r3 2fce: 436a muls r2, r5 2fd0: eb03 2322 add.w r3, r3, r2, asr #8 2fd4: b21a sxth r2, r3 2fd6: e7eb b.n 2fb0 else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 2fd8: 2b0b cmp r3, #11 2fda: d838 bhi.n 304e if(v <= 0) x = tr->start_value._color; 2fdc: 2d00 cmp r5, #0 2fde: dc03 bgt.n 2fe8 2fe0: 8922 ldrh r2, [r4, #8] _lv_style_set_color(style, tr->prop, x); 2fe2: 4b2b ldr r3, [pc, #172] ; (3090 ) 2fe4: 4798 blx r3 2fe6: e7e5 b.n 2fb4 else if(v >= 255) x = tr->end_value._color; 2fe8: 2dfe cmp r5, #254 ; 0xfe 2fea: dd01 ble.n 2ff0 2fec: 89a2 ldrh r2, [r4, #12] 2fee: e7f8 b.n 2fe2 { 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))); 2ff0: 8923 ldrh r3, [r4, #8] 2ff2: 89a2 ldrh r2, [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))); 2ff4: f894 c008 ldrb.w ip, [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))); 2ff8: f1c5 07ff rsb r7, 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))); 2ffc: f3c3 1345 ubfx r3, r3, #5, #6 3000: 437b muls r3, r7 3002: f3c2 1245 ubfx r2, r2, #5, #6 3006: fb15 3202 smlabb r2, r5, 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))); 300a: 7b23 ldrb r3, [r4, #12] 300c: f00c 0c1f and.w ip, ip, #31 3010: fb07 fc0c mul.w ip, r7, ip 3014: 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))); 3018: f248 0681 movw r6, #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))); 301c: fb15 c303 smlabb r3, r5, r3, ip LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 3020: 4372 muls r2, r6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 3022: 4373 muls r3, r6 3024: f3c3 53c4 ubfx r3, r3, #23, #5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 3028: f894 c009 ldrb.w ip, [r4, #9] 302c: f3c2 52c5 ubfx r2, r2, #23, #6 3030: ea43 1242 orr.w r2, r3, r2, lsl #5 3034: 7b63 ldrb r3, [r4, #13] 3036: ea4f 0cdc mov.w ip, ip, lsr #3 303a: 08db lsrs r3, r3, #3 303c: fb07 f70c mul.w r7, r7, ip 3040: fb15 7303 smlabb r3, r5, r3, r7 3044: 4373 muls r3, r6 3046: 0ddb lsrs r3, r3, #23 3048: ea42 22c3 orr.w r2, r2, r3, lsl #11 304c: e7c9 b.n 2fe2 else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 304e: 2b0d cmp r3, #13 3050: d80f bhi.n 3072 if(v <= 0) x = tr->start_value._opa; 3052: 2d00 cmp r5, #0 3054: dc03 bgt.n 305e 3056: 7a22 ldrb r2, [r4, #8] _lv_style_set_opa(style, tr->prop, x); 3058: 4b0e ldr r3, [pc, #56] ; (3094 ) 305a: 4798 blx r3 305c: e7aa b.n 2fb4 else if(v >= 255) x = tr->end_value._opa; 305e: 2dfe cmp r5, #254 ; 0xfe 3060: 7b22 ldrb r2, [r4, #12] 3062: dcf9 bgt.n 3058 else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8); 3064: 7a23 ldrb r3, [r4, #8] 3066: 1ad2 subs r2, r2, r3 3068: 436a muls r2, r5 306a: eb03 2322 add.w r3, r3, r2, asr #8 306e: b2da uxtb r2, r3 3070: e7f2 b.n 3058 if(v < 128) x = tr->start_value._ptr; 3072: 2d7f cmp r5, #127 ; 0x7f 3074: bfd4 ite le 3076: 68a2 ldrle r2, [r4, #8] else x = tr->end_value._ptr; 3078: 68e2 ldrgt r2, [r4, #12] _lv_style_set_ptr(style, tr->prop, x); 307a: 4b07 ldr r3, [pc, #28] ; (3098 ) 307c: 4798 blx r3 307e: e799 b.n 2fb4 3080: 0000248d .word 0x0000248d 3084: 00005cb9 .word 0x00005cb9 3088: 00005879 .word 0x00005879 308c: 00002d91 .word 0x00002d91 3090: 00005949 .word 0x00005949 3094: 00005a19 .word 0x00005a19 3098: 00005aed .word 0x00005aed 0000309c : { 309c: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 309e: 4b0b ldr r3, [pc, #44] ; (30cc ) { 30a0: 4605 mov r5, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 30a2: 4798 blx r3 30a4: 4604 mov r4, r0 30a6: b968 cbnz r0, 30c4 30a8: 4b09 ldr r3, [pc, #36] ; (30d0 ) 30aa: 490a ldr r1, [pc, #40] ; (30d4 ) 30ac: 9300 str r3, [sp, #0] 30ae: f640 22b1 movw r2, #2737 ; 0xab1 30b2: 2003 movs r0, #3 30b4: 4e08 ldr r6, [pc, #32] ; (30d8 ) 30b6: 47b0 blx r6 30b8: 4808 ldr r0, [pc, #32] ; (30dc ) 30ba: 4909 ldr r1, [pc, #36] ; (30e0 ) 30bc: 462a mov r2, r5 30be: 4623 mov r3, r4 30c0: 4788 blx r1 30c2: e7fe b.n 30c2 } 30c4: 2000 movs r0, #0 30c6: b002 add sp, #8 30c8: bd70 pop {r4, r5, r6, pc} 30ca: bf00 nop 30cc: 000017e1 .word 0x000017e1 30d0: 0001f581 .word 0x0001f581 30d4: 0001ee5b .word 0x0001ee5b 30d8: 0000e8e9 .word 0x0000e8e9 30dc: 0001eebf .word 0x0001eebf 30e0: 000017e9 .word 0x000017e9 000030e4 : { 30e4: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} 30e8: 460d mov r5, r1 if(parent == NULL) { 30ea: 4606 mov r6, r0 30ec: 2800 cmp r0, #0 30ee: d177 bne.n 31e0 lv_disp_t * disp = lv_disp_get_default(); 30f0: 4b89 ldr r3, [pc, #548] ; (3318 ) 30f2: 4798 blx r3 if(!disp) { 30f4: 4604 mov r4, r0 30f6: b940 cbnz r0, 310a LV_LOG_WARN("lv_obj_create: not display created to so far. No place to assign the new screen"); 30f8: 4b88 ldr r3, [pc, #544] ; (331c ) 30fa: 9300 str r3, [sp, #0] 30fc: 4988 ldr r1, [pc, #544] ; (3320 ) 30fe: 4b89 ldr r3, [pc, #548] ; (3324 ) 3100: 22cf movs r2, #207 ; 0xcf 3102: 2002 movs r0, #2 LV_LOG_INFO("Object create ready"); 3104: 4d88 ldr r5, [pc, #544] ; (3328 ) 3106: 47a8 blx r5 return new_obj; 3108: e016 b.n 3138 new_obj = _lv_ll_ins_head(&disp->scr_ll); 310a: 4b88 ldr r3, [pc, #544] ; (332c ) 310c: 3030 adds r0, #48 ; 0x30 310e: 4798 blx r3 LV_ASSERT_MEM(new_obj); 3110: 4b87 ldr r3, [pc, #540] ; (3330 ) new_obj = _lv_ll_ins_head(&disp->scr_ll); 3112: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 3114: 4798 blx r3 3116: 4607 mov r7, r0 3118: b960 cbnz r0, 3134 311a: 4b82 ldr r3, [pc, #520] ; (3324 ) 311c: 4980 ldr r1, [pc, #512] ; (3320 ) 311e: 9300 str r3, [sp, #0] 3120: 22d4 movs r2, #212 ; 0xd4 3122: 2003 movs r0, #3 3124: 4d80 ldr r5, [pc, #512] ; (3328 ) 3126: 47a8 blx r5 3128: 4882 ldr r0, [pc, #520] ; (3334 ) 312a: 4983 ldr r1, [pc, #524] ; (3338 ) 312c: 4622 mov r2, r4 312e: 463b mov r3, r7 3130: 4788 blx r1 3132: e7fe b.n 3132 if(new_obj == NULL) return NULL; 3134: b924 cbnz r4, 3140 3136: 2400 movs r4, #0 } 3138: 4620 mov r0, r4 313a: b004 add sp, #16 313c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3140: 214c movs r1, #76 ; 0x4c 3142: 4b7e ldr r3, [pc, #504] ; (333c ) 3144: 4620 mov r0, r4 3146: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 3148: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 new_obj->event_cb = NULL; 314c: 61a6 str r6, [r4, #24] new_obj->base_dir = LV_BIDI_DIR_LTR; 314e: f366 1305 bfi r3, r6, #4, #2 3152: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 3156: 4b7a ldr r3, [pc, #488] ; (3340 ) 3158: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 315a: 4b7a ldr r3, [pc, #488] ; (3344 ) 315c: 6223 str r3, [r4, #32] new_obj->coords.x1 = 0; 315e: 6126 str r6, [r4, #16] new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1; 3160: 4b79 ldr r3, [pc, #484] ; (3348 ) 3162: 4630 mov r0, r6 3164: 4798 blx r3 3166: 3801 subs r0, #1 3168: 82a0 strh r0, [r4, #20] new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1; 316a: 4b78 ldr r3, [pc, #480] ; (334c ) 316c: 4630 mov r0, r6 316e: 4798 blx r3 3170: 3801 subs r0, #1 3172: 82e0 strh r0, [r4, #22] _lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); 3174: 4b76 ldr r3, [pc, #472] ; (3350 ) 3176: 214c movs r1, #76 ; 0x4c 3178: 1d20 adds r0, r4, #4 317a: 4798 blx r3 new_obj->realign.align = LV_ALIGN_CENTER; 317c: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 3180: f423 73ff bic.w r3, r3, #510 ; 0x1fe 3184: f023 0301 bic.w r3, r3, #1 3188: f8a4 3048 strh.w r3, [r4, #72] ; 0x48 new_obj->click = 1; 318c: 8ea3 ldrh r3, [r4, #52] ; 0x34 318e: f423 637f bic.w r3, r3, #4080 ; 0xff0 3192: f023 030f bic.w r3, r3, #15 3196: f443 63e0 orr.w r3, r3, #1792 ; 0x700 new_obj->realign.base = NULL; 319a: 2200 movs r2, #0 new_obj->click = 1; 319c: f043 0301 orr.w r3, r3, #1 lv_style_list_init(&new_obj->style_list); 31a0: f104 0028 add.w r0, r4, #40 ; 0x28 new_obj->click = 1; 31a4: 86a3 strh r3, [r4, #52] ; 0x34 new_obj->realign.xofs = 0; 31a6: e9c4 2210 strd r2, r2, [r4, #64] ; 0x40 lv_style_list_init(&new_obj->style_list); 31aa: 4b6a ldr r3, [pc, #424] ; (3354 ) new_obj->ext_click_pad_hor = 0; 31ac: 6322 str r2, [r4, #48] ; 0x30 new_obj->group_p = NULL; 31ae: 63a2 str r2, [r4, #56] ; 0x38 new_obj->protect = LV_PROTECT_NONE; 31b0: 87a2 strh r2, [r4, #60] ; 0x3c new_obj->ext_attr = NULL; 31b2: 6262 str r2, [r4, #36] ; 0x24 lv_style_list_init(&new_obj->style_list); 31b4: 9003 str r0, [sp, #12] 31b6: 4798 blx r3 if(copy == NULL) { 31b8: 9803 ldr r0, [sp, #12] 31ba: 2d00 cmp r5, #0 31bc: f040 80d8 bne.w 3370 if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ); 31c0: 4b65 ldr r3, [pc, #404] ; (3358 ) 31c2: 2e00 cmp r6, #0 31c4: f000 809d beq.w 3302 31c8: 2102 movs r1, #2 31ca: 4620 mov r0, r4 31cc: 4798 blx r3 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj); 31ce: 69f3 ldr r3, [r6, #28] 31d0: 4622 mov r2, r4 31d2: 2101 movs r1, #1 31d4: 4630 mov r0, r6 31d6: 4798 blx r3 lv_obj_invalidate(new_obj); 31d8: 4b60 ldr r3, [pc, #384] ; (335c ) 31da: 4620 mov r0, r4 31dc: 4798 blx r3 31de: e093 b.n 3308 LV_ASSERT_OBJ(parent, LV_OBJX_NAME); 31e0: 4f53 ldr r7, [pc, #332] ; (3330 ) 31e2: 47b8 blx r7 31e4: 4604 mov r4, r0 31e6: b960 cbnz r0, 3202 31e8: 4b4e ldr r3, [pc, #312] ; (3324 ) 31ea: 494d ldr r1, [pc, #308] ; (3320 ) 31ec: 9300 str r3, [sp, #0] 31ee: 22ed movs r2, #237 ; 0xed 31f0: 2003 movs r0, #3 31f2: 4d4d ldr r5, [pc, #308] ; (3328 ) 31f4: 47a8 blx r5 31f6: 485a ldr r0, [pc, #360] ; (3360 ) 31f8: 494f ldr r1, [pc, #316] ; (3338 ) 31fa: 4632 mov r2, r6 31fc: 4623 mov r3, r4 31fe: 4788 blx r1 3200: e7fe b.n 3200 new_obj = _lv_ll_ins_head(&parent->child_ll); 3202: 4b4a ldr r3, [pc, #296] ; (332c ) 3204: 1d30 adds r0, r6, #4 3206: 4798 blx r3 3208: 4604 mov r4, r0 LV_ASSERT_MEM(new_obj); 320a: 47b8 blx r7 320c: 4607 mov r7, r0 320e: b960 cbnz r0, 322a 3210: 4b44 ldr r3, [pc, #272] ; (3324 ) 3212: 4943 ldr r1, [pc, #268] ; (3320 ) 3214: 9300 str r3, [sp, #0] 3216: 22f0 movs r2, #240 ; 0xf0 3218: 2003 movs r0, #3 321a: 4d43 ldr r5, [pc, #268] ; (3328 ) 321c: 47a8 blx r5 321e: 4845 ldr r0, [pc, #276] ; (3334 ) 3220: 4945 ldr r1, [pc, #276] ; (3338 ) 3222: 4622 mov r2, r4 3224: 463b mov r3, r7 3226: 4788 blx r1 3228: e7fe b.n 3228 if(new_obj == NULL) return NULL; 322a: 2c00 cmp r4, #0 322c: d083 beq.n 3136 _lv_memset_00(new_obj, sizeof(lv_obj_t)); 322e: 4b43 ldr r3, [pc, #268] ; (333c ) new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 3230: f8df 9138 ldr.w r9, [pc, #312] ; 336c _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3234: 214c movs r1, #76 ; 0x4c 3236: 4620 mov r0, r4 3238: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 323a: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 new_obj->parent = parent; 323e: 6026 str r6, [r4, #0] new_obj->base_dir = LV_BIDI_DIR_LTR; 3240: f36f 1305 bfc r3, #4, #2 3244: f884 3035 strb.w r3, [r4, #53] ; 0x35 new_obj->signal_cb = lv_obj_signal; 3248: 4b3d ldr r3, [pc, #244] ; (3340 ) 324a: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 324c: 4b3d ldr r3, [pc, #244] ; (3344 ) 324e: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 3250: f04f 0800 mov.w r8, #0 new_obj->coords.y1 = parent->coords.y1; 3254: f9b6 3012 ldrsh.w r3, [r6, #18] 3258: 8263 strh r3, [r4, #18] new_obj->event_cb = NULL; 325a: f8c4 8018 str.w r8, [r4, #24] new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 325e: 4640 mov r0, r8 3260: 8a77 ldrh r7, [r6, #18] 3262: 47c8 blx r9 3264: f04f 0a32 mov.w sl, #50 ; 0x32 3268: fb00 f00a mul.w r0, r0, sl 326c: 28ef cmp r0, #239 ; 0xef 326e: dd2c ble.n 32ca 3270: 4640 mov r0, r8 3272: 47c8 blx r9 3274: 2350 movs r3, #80 ; 0x50 3276: fb00 300a mla r0, r0, sl, r3 327a: 23a0 movs r3, #160 ; 0xa0 327c: fb90 f0f3 sdiv r0, r0, r3 3280: b280 uxth r0, r0 3282: 4407 add r7, r0 3284: 82e7 strh r7, [r4, #22] if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) { 3286: 4b37 ldr r3, [pc, #220] ; (3364 ) 3288: 4620 mov r0, r4 328a: 4798 blx r3 328c: 2801 cmp r0, #1 328e: 4607 mov r7, r0 3290: d11d bne.n 32ce new_obj->coords.x2 = parent->coords.x2; 3292: f9b6 8014 ldrsh.w r8, [r6, #20] 3296: f8a4 8014 strh.w r8, [r4, #20] new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH; 329a: 2000 movs r0, #0 329c: 47c8 blx r9 329e: f04f 0a64 mov.w sl, #100 ; 0x64 32a2: fb00 f00a mul.w r0, r0, sl 32a6: 28ef cmp r0, #239 ; 0xef 32a8: fa1f f888 uxth.w r8, r8 32ac: dd08 ble.n 32c0 32ae: 2000 movs r0, #0 32b0: 47c8 blx r9 32b2: 2750 movs r7, #80 ; 0x50 32b4: fb00 770a mla r7, r0, sl, r7 32b8: 23a0 movs r3, #160 ; 0xa0 32ba: fb97 f7f3 sdiv r7, r7, r3 32be: b2bf uxth r7, r7 32c0: eba8 0807 sub.w r8, r8, r7 32c4: f8a4 8010 strh.w r8, [r4, #16] 32c8: e754 b.n 3174 new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 32ca: 2001 movs r0, #1 32cc: e7d9 b.n 3282 new_obj->coords.x1 = parent->coords.x1; 32ce: f9b6 7010 ldrsh.w r7, [r6, #16] 32d2: 8227 strh r7, [r4, #16] new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 32d4: 2000 movs r0, #0 32d6: 47c8 blx r9 32d8: f04f 0864 mov.w r8, #100 ; 0x64 32dc: fb00 f008 mul.w r0, r0, r8 32e0: 28ef cmp r0, #239 ; 0xef 32e2: b2bf uxth r7, r7 32e4: dd0b ble.n 32fe 32e6: 2000 movs r0, #0 32e8: 47c8 blx r9 32ea: 2350 movs r3, #80 ; 0x50 32ec: fb00 3008 mla r0, r0, r8, r3 32f0: 23a0 movs r3, #160 ; 0xa0 32f2: fb90 f0f3 sdiv r0, r0, r3 32f6: b280 uxth r0, r0 32f8: 4407 add r7, r0 32fa: 82a7 strh r7, [r4, #20] 32fc: e73a b.n 3174 32fe: 2001 movs r0, #1 3300: e7fa b.n 32f8 else lv_theme_apply(new_obj, LV_THEME_SCR); 3302: 2101 movs r1, #1 3304: 4620 mov r0, r4 3306: 4798 blx r3 LV_LOG_INFO("Object create ready"); 3308: 4b17 ldr r3, [pc, #92] ; (3368 ) 330a: 9300 str r3, [sp, #0] 330c: 4904 ldr r1, [pc, #16] ; (3320 ) 330e: 4b05 ldr r3, [pc, #20] ; (3324 ) 3310: f240 1287 movw r2, #391 ; 0x187 3314: 2001 movs r0, #1 3316: e6f5 b.n 3104 3318: 0000d8fd .word 0x0000d8fd 331c: 0001efb0 .word 0x0001efb0 3320: 0001ee5b .word 0x0001ee5b 3324: 0001f595 .word 0x0001f595 3328: 0000e8e9 .word 0x0000e8e9 332c: 0000e619 .word 0x0000e619 3330: 000017e1 .word 0x000017e1 3334: 0001edbe .word 0x0001edbe 3338: 000017e9 .word 0x000017e9 333c: 0000f019 .word 0x0000f019 3340: 00004b2d .word 0x00004b2d 3344: 0000459d .word 0x0000459d 3348: 0000d909 .word 0x0000d909 334c: 0000d92d .word 0x0000d92d 3350: 0000e605 .word 0x0000e605 3354: 0000553d .word 0x0000553d 3358: 000102e5 .word 0x000102e5 335c: 00002785 .word 0x00002785 3360: 0001eebf .word 0x0001eebf 3364: 0000309d .word 0x0000309d 3368: 0001f000 .word 0x0001f000 336c: 0000d951 .word 0x0000d951 lv_style_list_copy(&new_obj->style_list, ©->style_list); 3370: 4b54 ldr r3, [pc, #336] ; (34c4 ) 3372: f105 0128 add.w r1, r5, #40 ; 0x28 3376: 4798 blx r3 lv_area_copy(&new_obj->coords, ©->coords); 3378: 4b53 ldr r3, [pc, #332] ; (34c8 ) 337a: f104 0010 add.w r0, r4, #16 337e: f105 0110 add.w r1, r5, #16 3382: 4798 blx r3 new_obj->ext_draw_pad = copy->ext_draw_pad; 3384: f9b5 3032 ldrsh.w r3, [r5, #50] ; 0x32 3388: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = copy->ext_click_pad_hor; 338a: f895 3030 ldrb.w r3, [r5, #48] ; 0x30 338e: f884 3030 strb.w r3, [r4, #48] ; 0x30 new_obj->ext_click_pad_ver = copy->ext_click_pad_ver; 3392: f895 3031 ldrb.w r3, [r5, #49] ; 0x31 3396: f884 3031 strb.w r3, [r4, #49] ; 0x31 new_obj->realign.align = copy->realign.align; 339a: f895 3048 ldrb.w r3, [r5, #72] ; 0x48 339e: f884 3048 strb.w r3, [r4, #72] ; 0x48 new_obj->realign.xofs = copy->realign.xofs; 33a2: f9b5 3044 ldrsh.w r3, [r5, #68] ; 0x44 33a6: f8a4 3044 strh.w r3, [r4, #68] ; 0x44 new_obj->realign.yofs = copy->realign.yofs; 33aa: f9b5 3046 ldrsh.w r3, [r5, #70] ; 0x46 33ae: f8a4 3046 strh.w r3, [r4, #70] ; 0x46 new_obj->realign.base = copy->realign.base; 33b2: 6c2b ldr r3, [r5, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 33b4: f895 2049 ldrb.w r2, [r5, #73] ; 0x49 new_obj->realign.base = copy->realign.base; 33b8: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 33ba: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 33be: f362 0300 bfi r3, r2, #0, #1 33c2: f884 3049 strb.w r3, [r4, #73] ; 0x49 new_obj->event_cb = copy->event_cb; 33c6: 69ab ldr r3, [r5, #24] 33c8: 61a3 str r3, [r4, #24] new_obj->adv_hittest = copy->adv_hittest; 33ca: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 33ce: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 33d2: 09db lsrs r3, r3, #7 33d4: f363 12c7 bfi r2, r3, #7, #1 33d8: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->click = copy->click; 33dc: f895 2034 ldrb.w r2, [r5, #52] ; 0x34 33e0: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 33e4: f362 0300 bfi r3, r2, #0, #1 33e8: f884 3034 strb.w r3, [r4, #52] ; 0x34 new_obj->drag = copy->drag; 33ec: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 33f0: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 33f4: f3c3 0340 ubfx r3, r3, #1, #1 33f8: f363 0241 bfi r2, r3, #1, #1 33fc: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_dir = copy->drag_dir; 3400: f895 3035 ldrb.w r3, [r5, #53] ; 0x35 3404: f894 2035 ldrb.w r2, [r4, #53] ; 0x35 3408: f3c3 0342 ubfx r3, r3, #1, #3 340c: f363 0243 bfi r2, r3, #1, #3 3410: f884 2035 strb.w r2, [r4, #53] ; 0x35 new_obj->drag_throw = copy->drag_throw; 3414: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3418: f894 2034 ldrb.w r2, [r4, #52] ; 0x34 341c: f3c3 0380 ubfx r3, r3, #2, #1 3420: f363 0282 bfi r2, r3, #2, #1 3424: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->drag_parent = copy->drag_parent; 3428: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 342c: b2d2 uxtb r2, r2 342e: f3c3 03c0 ubfx r3, r3, #3, #1 3432: f363 02c3 bfi r2, r3, #3, #1 3436: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->hidden = copy->hidden; 343a: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 343e: b2d2 uxtb r2, r2 3440: f3c3 1300 ubfx r3, r3, #4, #1 3444: f363 1204 bfi r2, r3, #4, #1 3448: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->top = copy->top; 344c: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3450: b2d2 uxtb r2, r2 3452: f3c3 1340 ubfx r3, r3, #5, #1 3456: f363 1245 bfi r2, r3, #5, #1 345a: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->parent_event = copy->parent_event; 345e: f895 3034 ldrb.w r3, [r5, #52] ; 0x34 3462: b2d2 uxtb r2, r2 3464: f3c3 1380 ubfx r3, r3, #6, #1 3468: f363 1286 bfi r2, r3, #6, #1 346c: f884 2034 strb.w r2, [r4, #52] ; 0x34 new_obj->protect = copy->protect; 3470: f895 303c ldrb.w r3, [r5, #60] ; 0x3c 3474: f884 303c strb.w r3, [r4, #60] ; 0x3c new_obj->gesture_parent = copy->gesture_parent; 3478: f895 2035 ldrb.w r2, [r5, #53] ; 0x35 347c: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 3480: f362 0300 bfi r3, r2, #0, #1 3484: f884 3035 strb.w r3, [r4, #53] ; 0x35 if(copy->group_p != NULL) { 3488: 6ba8 ldr r0, [r5, #56] ; 0x38 348a: b110 cbz r0, 3492 lv_group_add_obj(copy->group_p, new_obj); 348c: 4b0f ldr r3, [pc, #60] ; (34cc ) 348e: 4621 mov r1, r4 3490: 4798 blx r3 if(lv_obj_get_parent(copy) != NULL && parent != NULL) { 3492: 4b0f ldr r3, [pc, #60] ; (34d0 ) 3494: 4628 mov r0, r5 3496: 4798 blx r3 3498: b178 cbz r0, 34ba 349a: 2e00 cmp r6, #0 349c: f43f af34 beq.w 3308 lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); 34a0: 4b0c ldr r3, [pc, #48] ; (34d4 ) 34a2: 4628 mov r0, r5 34a4: 4798 blx r3 34a6: 4b0c ldr r3, [pc, #48] ; (34d8 ) 34a8: 9003 str r0, [sp, #12] 34aa: 4628 mov r0, r5 34ac: 4798 blx r3 34ae: 9903 ldr r1, [sp, #12] 34b0: 4b0a ldr r3, [pc, #40] ; (34dc ) 34b2: 4602 mov r2, r0 34b4: 4620 mov r0, r4 34b6: 4798 blx r3 if(parent != NULL) { 34b8: e689 b.n 31ce 34ba: 2e00 cmp r6, #0 34bc: f47f ae87 bne.w 31ce 34c0: e722 b.n 3308 34c2: bf00 nop 34c4: 00005d2d .word 0x00005d2d 34c8: 00001d19 .word 0x00001d19 34cc: 00001a9d .word 0x00001a9d 34d0: 00002125 .word 0x00002125 34d4: 0000232d .word 0x0000232d 34d8: 0000238d .word 0x0000238d 34dc: 000028a1 .word 0x000028a1 000034e0 : { 34e0: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 34e4: 4b33 ldr r3, [pc, #204] ; (35b4 ) { 34e6: 4604 mov r4, r0 34e8: 460d mov r5, r1 34ea: 4617 mov r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 34ec: 4798 blx r3 34ee: 4606 mov r6, r0 34f0: b968 cbnz r0, 350e 34f2: 4b31 ldr r3, [pc, #196] ; (35b8 ) 34f4: 4931 ldr r1, [pc, #196] ; (35bc ) 34f6: 9300 str r3, [sp, #0] 34f8: f240 22e5 movw r2, #741 ; 0x2e5 34fc: 2003 movs r0, #3 34fe: 4d30 ldr r5, [pc, #192] ; (35c0 ) 3500: 47a8 blx r5 3502: 4830 ldr r0, [pc, #192] ; (35c4 ) 3504: 4930 ldr r1, [pc, #192] ; (35c8 ) 3506: 4622 mov r2, r4 3508: 4633 mov r3, r6 350a: 4788 blx r1 350c: e7fe b.n 350c if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 350e: 4b2f ldr r3, [pc, #188] ; (35cc ) 3510: 4620 mov r0, r4 3512: 4798 blx r3 3514: 4285 cmp r5, r0 3516: d104 bne.n 3522 3518: 4b2d ldr r3, [pc, #180] ; (35d0 ) 351a: 4620 mov r0, r4 351c: 4798 blx r3 351e: 4287 cmp r7, r0 3520: d03a beq.n 3598 lv_obj_invalidate(obj); 3522: 4620 mov r0, r4 3524: 4e2b ldr r6, [pc, #172] ; (35d4 ) 3526: 47b0 blx r6 lv_obj_get_coords(obj, &ori); 3528: a902 add r1, sp, #8 352a: 4b2b ldr r3, [pc, #172] ; (35d8 ) 352c: 4620 mov r0, r4 352e: 4798 blx r3 obj->coords.y2 = obj->coords.y1 + h - 1; 3530: 8a63 ldrh r3, [r4, #18] 3532: 3f01 subs r7, #1 3534: 441f add r7, r3 3536: 82e7 strh r7, [r4, #22] if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) { 3538: 4b28 ldr r3, [pc, #160] ; (35dc ) 353a: 4620 mov r0, r4 353c: 4798 blx r3 353e: 2801 cmp r0, #1 obj->coords.x1 = obj->coords.x2 - w + 1; 3540: b2ad uxth r5, r5 3542: bf0b itete eq 3544: 8aa3 ldrheq r3, [r4, #20] obj->coords.x2 = obj->coords.x1 + w - 1; 3546: 8a23 ldrhne r3, [r4, #16] obj->coords.x1 = obj->coords.x2 - w + 1; 3548: f1c5 0501 rsbeq r5, r5, #1 obj->coords.x2 = obj->coords.x1 + w - 1; 354c: f105 35ff addne.w r5, r5, #4294967295 ; 0xffffffff obj->coords.x1 = obj->coords.x2 - w + 1; 3550: bf0a itet eq 3552: 18ed addeq r5, r5, r3 obj->coords.x2 = obj->coords.x1 + w - 1; 3554: 18ed addne r5, r5, r3 obj->coords.x1 = obj->coords.x2 - w + 1; 3556: 8225 strheq r5, [r4, #16] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 3558: 69e3 ldr r3, [r4, #28] obj->coords.x2 = obj->coords.x1 + w - 1; 355a: bf18 it ne 355c: 82a5 strhne r5, [r4, #20] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 355e: aa02 add r2, sp, #8 3560: 2102 movs r1, #2 3562: 4620 mov r0, r4 3564: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 3566: 4b1e ldr r3, [pc, #120] ; (35e0 ) 3568: 4620 mov r0, r4 356a: 4798 blx r3 if(par != NULL) par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 356c: b118 cbz r0, 3576 356e: 69c3 ldr r3, [r0, #28] 3570: 4622 mov r2, r4 3572: 2101 movs r1, #1 3574: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 3576: 1d27 adds r7, r4, #4 3578: 4b1a ldr r3, [pc, #104] ; (35e4 ) 357a: f8df 8070 ldr.w r8, [pc, #112] ; 35ec 357e: 4638 mov r0, r7 3580: 4798 blx r3 3582: 4605 mov r5, r0 3584: b95d cbnz r5, 359e lv_obj_invalidate(obj); 3586: 4620 mov r0, r4 3588: 47b0 blx r6 if(obj->realign.auto_realign) lv_obj_realign(obj); 358a: f894 3049 ldrb.w r3, [r4, #73] ; 0x49 358e: 07db lsls r3, r3, #31 3590: d502 bpl.n 3598 3592: 4b15 ldr r3, [pc, #84] ; (35e8 ) 3594: 4620 mov r0, r4 3596: 4798 blx r3 } 3598: b004 add sp, #16 359a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 359e: 69eb ldr r3, [r5, #28] 35a0: aa02 add r2, sp, #8 35a2: 2103 movs r1, #3 35a4: 4628 mov r0, r5 35a6: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 35a8: 4629 mov r1, r5 35aa: 4638 mov r0, r7 35ac: 47c0 blx r8 35ae: 4605 mov r5, r0 35b0: e7e8 b.n 3584 35b2: bf00 nop 35b4: 000017e1 .word 0x000017e1 35b8: 0001f5b5 .word 0x0001f5b5 35bc: 0001ee5b .word 0x0001ee5b 35c0: 0000e8e9 .word 0x0000e8e9 35c4: 0001eebf .word 0x0001eebf 35c8: 000017e9 .word 0x000017e9 35cc: 000023ed .word 0x000023ed 35d0: 0000243d .word 0x0000243d 35d4: 00002785 .word 0x00002785 35d8: 000022d5 .word 0x000022d5 35dc: 0000309d .word 0x0000309d 35e0: 00002125 .word 0x00002125 35e4: 0000e6a9 .word 0x0000e6a9 35e8: 00002ce9 .word 0x00002ce9 35ec: 0000e6b5 .word 0x0000e6b5 000035f0 : { 35f0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35f2: 4b0f ldr r3, [pc, #60] ; (3630 ) { 35f4: 4604 mov r4, r0 35f6: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 35f8: 4798 blx r3 35fa: 4605 mov r5, r0 35fc: b968 cbnz r0, 361a 35fe: 4b0d ldr r3, [pc, #52] ; (3634 ) 3600: 490d ldr r1, [pc, #52] ; (3638 ) 3602: 9300 str r3, [sp, #0] 3604: f240 3227 movw r2, #807 ; 0x327 3608: 2003 movs r0, #3 360a: 4e0c ldr r6, [pc, #48] ; (363c ) 360c: 47b0 blx r6 360e: 480c ldr r0, [pc, #48] ; (3640 ) 3610: 490c ldr r1, [pc, #48] ; (3644 ) 3612: 4622 mov r2, r4 3614: 462b mov r3, r5 3616: 4788 blx r1 3618: e7fe b.n 3618 lv_obj_set_size(obj, lv_obj_get_width(obj), h); 361a: 4b0b ldr r3, [pc, #44] ; (3648 ) 361c: 4620 mov r0, r4 361e: 4798 blx r3 3620: 4b0a ldr r3, [pc, #40] ; (364c ) 3622: 4601 mov r1, r0 3624: 4632 mov r2, r6 3626: 4620 mov r0, r4 } 3628: b002 add sp, #8 362a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_size(obj, lv_obj_get_width(obj), h); 362e: 4718 bx r3 3630: 000017e1 .word 0x000017e1 3634: 0001f5d6 .word 0x0001f5d6 3638: 0001ee5b .word 0x0001ee5b 363c: 0000e8e9 .word 0x0000e8e9 3640: 0001eebf .word 0x0001eebf 3644: 000017e9 .word 0x000017e9 3648: 000023ed .word 0x000023ed 364c: 000034e1 .word 0x000034e1 00003650 : { 3650: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3652: 4b0e ldr r3, [pc, #56] ; (368c ) { 3654: 4604 mov r4, r0 3656: 460e mov r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3658: 4798 blx r3 365a: 4605 mov r5, r0 365c: b968 cbnz r0, 367a 365e: 4b0c ldr r3, [pc, #48] ; (3690 ) 3660: 490c ldr r1, [pc, #48] ; (3694 ) 3662: 9300 str r3, [sp, #0] 3664: f640 22d7 movw r2, #2775 ; 0xad7 3668: 2003 movs r0, #3 366a: 4e0b ldr r6, [pc, #44] ; (3698 ) 366c: 47b0 blx r6 366e: 480b ldr r0, [pc, #44] ; (369c ) 3670: 490b ldr r1, [pc, #44] ; (36a0 ) 3672: 4622 mov r2, r4 3674: 462b mov r3, r5 3676: 4788 blx r1 3678: e7fe b.n 3678 return (obj->protect & prot) == 0 ? false : true; 367a: f894 303c ldrb.w r3, [r4, #60] ; 0x3c 367e: 421e tst r6, r3 } 3680: bf14 ite ne 3682: 2001 movne r0, #1 3684: 2000 moveq r0, #0 3686: b002 add sp, #8 3688: bd70 pop {r4, r5, r6, pc} 368a: bf00 nop 368c: 000017e1 .word 0x000017e1 3690: 0001f5fb .word 0x0001f5fb 3694: 0001ee5b .word 0x0001ee5b 3698: 0000e8e9 .word 0x0000e8e9 369c: 0001eebf .word 0x0001eebf 36a0: 000017e9 .word 0x000017e9 000036a4 : { 36a4: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 36a6: 4b13 ldr r3, [pc, #76] ; (36f4 ) { 36a8: 4604 mov r4, r0 36aa: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 36ac: 4798 blx r3 36ae: 4606 mov r6, r0 36b0: b968 cbnz r0, 36ce 36b2: 4b11 ldr r3, [pc, #68] ; (36f8 ) 36b4: 4911 ldr r1, [pc, #68] ; (36fc ) 36b6: 9300 str r3, [sp, #0] 36b8: f640 22de movw r2, #2782 ; 0xade 36bc: 2003 movs r0, #3 36be: 4d10 ldr r5, [pc, #64] ; (3700 ) 36c0: 47a8 blx r5 36c2: 4810 ldr r0, [pc, #64] ; (3704 ) 36c4: 4910 ldr r1, [pc, #64] ; (3708 ) 36c6: 4622 mov r2, r4 36c8: 4633 mov r3, r6 36ca: 4788 blx r1 36cc: e7fe b.n 36cc if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state; 36ce: 2d3f cmp r5, #63 ; 0x3f 36d0: d803 bhi.n 36da 36d2: f894 003d ldrb.w r0, [r4, #61] ; 0x3d } 36d6: b004 add sp, #16 36d8: bd70 pop {r4, r5, r6, pc} info.result = LV_STATE_DEFAULT; 36da: 2300 movs r3, #0 36dc: f88d 300d strb.w r3, [sp, #13] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 36e0: aa03 add r2, sp, #12 36e2: 4b0a ldr r3, [pc, #40] ; (370c ) info.part = part; 36e4: f88d 500c strb.w r5, [sp, #12] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 36e8: 2109 movs r1, #9 36ea: 4620 mov r0, r4 36ec: 4798 blx r3 return info.result; 36ee: f89d 000d ldrb.w r0, [sp, #13] 36f2: e7f0 b.n 36d6 36f4: 000017e1 .word 0x000017e1 36f8: 0001f60f .word 0x0001f60f 36fc: 0001ee5b .word 0x0001ee5b 3700: 0000e8e9 .word 0x0000e8e9 3704: 0001eebf .word 0x0001eebf 3708: 000017e9 .word 0x000017e9 370c: 00002025 .word 0x00002025 00003710 <_lv_obj_get_style_int>: { 3710: 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); 3714: f8df a094 ldr.w sl, [pc, #148] ; 37ac <_lv_obj_get_style_int+0x9c> res = _lv_style_list_get_int(dsc, prop, &value_act); 3718: f8df b094 ldr.w fp, [pc, #148] ; 37b0 <_lv_obj_get_style_int+0xa0> { 371c: 4605 mov r5, r0 371e: 460e mov r6, r1 3720: 4617 mov r7, r2 attr.full = prop_ori >> 8; 3722: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 3726: 4614 mov r4, r2 3728: b965 cbnz r5, 3744 <_lv_obj_get_style_int+0x34> prop = prop & (~LV_STYLE_STATE_MASK); 372a: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 372e: 2c22 cmp r4, #34 ; 0x22 prop = prop & (~LV_STYLE_STATE_MASK); 3730: b2a0 uxth r0, r4 switch(prop) { 3732: d030 beq.n 3796 <_lv_obj_get_style_int+0x86> 3734: d827 bhi.n 3786 <_lv_obj_get_style_int+0x76> 3736: 2803 cmp r0, #3 3738: d02f beq.n 379a <_lv_obj_get_style_int+0x8a> 373a: 1fc2 subs r2, r0, #7 373c: 4250 negs r0, r2 373e: 4150 adcs r0, r2 3740: 0200 lsls r0, r0, #8 3742: e013 b.n 376c <_lv_obj_get_style_int+0x5c> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3744: 4b17 ldr r3, [pc, #92] ; (37a4 <_lv_obj_get_style_int+0x94>) 3746: 4631 mov r1, r6 3748: 4628 mov r0, r5 374a: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 374c: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 374e: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 3750: 4628 mov r0, r5 3752: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3754: eb07 2000 add.w r0, r7, r0, lsl #8 3758: b284 uxth r4, r0 res = _lv_style_list_get_int(dsc, prop, &value_act); 375a: f10d 0206 add.w r2, sp, #6 375e: 4621 mov r1, r4 3760: 4648 mov r0, r9 3762: 47d8 blx fp if(res == LV_RES_OK) return value_act; 3764: 2801 cmp r0, #1 3766: d104 bne.n 3772 <_lv_obj_get_style_int+0x62> 3768: f9bd 0006 ldrsh.w r0, [sp, #6] } 376c: b003 add sp, #12 376e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 3772: f018 0f80 tst.w r8, #128 ; 0x80 3776: d0d8 beq.n 372a <_lv_obj_get_style_int+0x1a> if(part != LV_OBJ_PART_MAIN) { 3778: b91e cbnz r6, 3782 <_lv_obj_get_style_int+0x72> parent = lv_obj_get_parent(parent); 377a: 4628 mov r0, r5 377c: 4b0a ldr r3, [pc, #40] ; (37a8 <_lv_obj_get_style_int+0x98>) 377e: 4798 blx r3 3780: 4605 mov r5, r0 { 3782: 2600 movs r6, #0 3784: e7d0 b.n 3728 <_lv_obj_get_style_int+0x18> switch(prop) { 3786: 2831 cmp r0, #49 ; 0x31 3788: d009 beq.n 379e <_lv_obj_get_style_int+0x8e> 378a: f1a0 03c0 sub.w r3, r0, #192 ; 0xc0 378e: 4258 negs r0, r3 3790: 4158 adcs r0, r3 3792: 0100 lsls r0, r0, #4 3794: e7ea b.n 376c <_lv_obj_get_style_int+0x5c> return 255; 3796: 20ff movs r0, #255 ; 0xff 3798: e7e8 b.n 376c <_lv_obj_get_style_int+0x5c> switch(prop) { 379a: 2006 movs r0, #6 379c: e7e6 b.n 376c <_lv_obj_get_style_int+0x5c> return LV_BORDER_SIDE_FULL; 379e: 200f movs r0, #15 37a0: e7e4 b.n 376c <_lv_obj_get_style_int+0x5c> 37a2: bf00 nop 37a4: 0000248d .word 0x0000248d 37a8: 00002125 .word 0x00002125 37ac: 000036a5 .word 0x000036a5 37b0: 00005e8d .word 0x00005e8d 000037b4 <_lv_obj_get_style_color>: { 37b4: 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); 37b8: f8df a074 ldr.w sl, [pc, #116] ; 3830 <_lv_obj_get_style_color+0x7c> res = _lv_style_list_get_color(dsc, prop, &value_act); 37bc: f8df b074 ldr.w fp, [pc, #116] ; 3834 <_lv_obj_get_style_color+0x80> { 37c0: 4605 mov r5, r0 37c2: 460e mov r6, r1 37c4: 4617 mov r7, r2 attr.full = prop_ori >> 8; 37c6: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 37ca: 4614 mov r4, r2 37cc: b94d cbnz r5, 37e2 <_lv_obj_get_style_color+0x2e> prop = prop & (~LV_STYLE_STATE_MASK); 37ce: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 37d2: 3c29 subs r4, #41 ; 0x29 37d4: 2c01 cmp r4, #1 return LV_COLOR_WHITE; 37d6: bf96 itet ls 37d8: 4b12 ldrls r3, [pc, #72] ; (3824 <_lv_obj_get_style_color+0x70>) return LV_COLOR_BLACK; 37da: 2000 movhi r0, #0 return LV_COLOR_WHITE; 37dc: f8b3 0602 ldrhls.w r0, [r3, #1538] ; 0x602 return LV_COLOR_BLACK; 37e0: e012 b.n 3808 <_lv_obj_get_style_color+0x54> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 37e2: 4b11 ldr r3, [pc, #68] ; (3828 <_lv_obj_get_style_color+0x74>) 37e4: 4631 mov r1, r6 37e6: 4628 mov r0, r5 37e8: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 37ea: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 37ec: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 37ee: 4628 mov r0, r5 37f0: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 37f2: eb07 2000 add.w r0, r7, r0, lsl #8 37f6: b284 uxth r4, r0 res = _lv_style_list_get_color(dsc, prop, &value_act); 37f8: aa01 add r2, sp, #4 37fa: 4621 mov r1, r4 37fc: 4648 mov r0, r9 37fe: 47d8 blx fp if(res == LV_RES_OK) return value_act; 3800: 2801 cmp r0, #1 3802: d104 bne.n 380e <_lv_obj_get_style_color+0x5a> 3804: f8bd 0004 ldrh.w r0, [sp, #4] } 3808: b003 add sp, #12 380a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 380e: f018 0f80 tst.w r8, #128 ; 0x80 3812: d0dc beq.n 37ce <_lv_obj_get_style_color+0x1a> if(part != LV_OBJ_PART_MAIN) { 3814: b91e cbnz r6, 381e <_lv_obj_get_style_color+0x6a> parent = lv_obj_get_parent(parent); 3816: 4628 mov r0, r5 3818: 4b04 ldr r3, [pc, #16] ; (382c <_lv_obj_get_style_color+0x78>) 381a: 4798 blx r3 381c: 4605 mov r5, r0 { 381e: 2600 movs r6, #0 3820: e7d4 b.n 37cc <_lv_obj_get_style_color+0x18> 3822: bf00 nop 3824: 0001f062 .word 0x0001f062 3828: 0000248d .word 0x0000248d 382c: 00002125 .word 0x00002125 3830: 000036a5 .word 0x000036a5 3834: 00005f15 .word 0x00005f15 00003838 <_lv_obj_get_style_opa>: { 3838: 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); 383c: f8df a080 ldr.w sl, [pc, #128] ; 38c0 <_lv_obj_get_style_opa+0x88> res = _lv_style_list_get_opa(dsc, prop, &value_act); 3840: f8df b080 ldr.w fp, [pc, #128] ; 38c4 <_lv_obj_get_style_opa+0x8c> { 3844: 4605 mov r5, r0 3846: 460e mov r6, r1 3848: 4617 mov r7, r2 attr.full = prop_ori >> 8; 384a: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 384e: 4614 mov r4, r2 3850: b975 cbnz r5, 3870 <_lv_obj_get_style_opa+0x38> prop = prop & (~LV_STYLE_STATE_MASK); 3852: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 3856: 2c6d cmp r4, #109 ; 0x6d prop = prop & (~LV_STYLE_STATE_MASK); 3858: b2a0 uxth r0, r4 switch(prop) { 385a: d02a beq.n 38b2 <_lv_obj_get_style_opa+0x7a> 385c: f248 03ad movw r3, #32941 ; 0x80ad 3860: 4298 cmp r0, r3 3862: d026 beq.n 38b2 <_lv_obj_get_style_opa+0x7a> 3864: 382c subs r0, #44 ; 0x2c 3866: bf18 it ne 3868: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff 386c: b2c0 uxtb r0, r0 386e: e013 b.n 3898 <_lv_obj_get_style_opa+0x60> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3870: 4b11 ldr r3, [pc, #68] ; (38b8 <_lv_obj_get_style_opa+0x80>) 3872: 4631 mov r1, r6 3874: 4628 mov r0, r5 3876: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 3878: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 387a: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 387c: 4628 mov r0, r5 387e: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3880: eb07 2000 add.w r0, r7, r0, lsl #8 3884: b284 uxth r4, r0 res = _lv_style_list_get_opa(dsc, prop, &value_act); 3886: f10d 0207 add.w r2, sp, #7 388a: 4621 mov r1, r4 388c: 4648 mov r0, r9 388e: 47d8 blx fp if(res == LV_RES_OK) return value_act; 3890: 2801 cmp r0, #1 3892: d104 bne.n 389e <_lv_obj_get_style_opa+0x66> 3894: f89d 0007 ldrb.w r0, [sp, #7] } 3898: b003 add sp, #12 389a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 389e: f018 0f80 tst.w r8, #128 ; 0x80 38a2: d0d6 beq.n 3852 <_lv_obj_get_style_opa+0x1a> if(part != LV_OBJ_PART_MAIN) { 38a4: b91e cbnz r6, 38ae <_lv_obj_get_style_opa+0x76> parent = lv_obj_get_parent(parent); 38a6: 4628 mov r0, r5 38a8: 4b04 ldr r3, [pc, #16] ; (38bc <_lv_obj_get_style_opa+0x84>) 38aa: 4798 blx r3 38ac: 4605 mov r5, r0 { 38ae: 2600 movs r6, #0 38b0: e7ce b.n 3850 <_lv_obj_get_style_opa+0x18> return LV_OPA_TRANSP; 38b2: 2000 movs r0, #0 38b4: e7f0 b.n 3898 <_lv_obj_get_style_opa+0x60> 38b6: bf00 nop 38b8: 0000248d .word 0x0000248d 38bc: 00002125 .word 0x00002125 38c0: 000036a5 .word 0x000036a5 38c4: 00005f9d .word 0x00005f9d 000038c8 <_lv_obj_get_style_ptr>: { 38c8: 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); 38cc: f8df a084 ldr.w sl, [pc, #132] ; 3954 <_lv_obj_get_style_ptr+0x8c> res = _lv_style_list_get_ptr(dsc, prop, &value_act); 38d0: f8df b084 ldr.w fp, [pc, #132] ; 3958 <_lv_obj_get_style_ptr+0x90> { 38d4: 4605 mov r5, r0 38d6: 460e mov r6, r1 38d8: 4617 mov r7, r2 attr.full = prop_ori >> 8; 38da: ea4f 2812 mov.w r8, r2, lsr #8 while(parent) { 38de: 4614 mov r4, r2 38e0: b96d cbnz r5, 38fe <_lv_obj_get_style_ptr+0x36> prop = prop & (~LV_STYLE_STATE_MASK); 38e2: f424 44fe bic.w r4, r4, #32512 ; 0x7f00 switch(prop) { 38e6: 2cbe cmp r4, #190 ; 0xbe prop = prop & (~LV_STYLE_STATE_MASK); 38e8: b2a3 uxth r3, r4 switch(prop) { 38ea: d027 beq.n 393c <_lv_obj_get_style_ptr+0x74> 38ec: f248 028e movw r2, #32910 ; 0x808e 38f0: 4293 cmp r3, r2 38f2: d001 beq.n 38f8 <_lv_obj_get_style_ptr+0x30> 38f4: 2b7e cmp r3, #126 ; 0x7e 38f6: d123 bne.n 3940 <_lv_obj_get_style_ptr+0x78> return lv_theme_get_font_normal(); 38f8: 4b12 ldr r3, [pc, #72] ; (3944 <_lv_obj_get_style_ptr+0x7c>) 38fa: 4798 blx r3 38fc: e011 b.n 3922 <_lv_obj_get_style_ptr+0x5a> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 38fe: 4b12 ldr r3, [pc, #72] ; (3948 <_lv_obj_get_style_ptr+0x80>) 3900: 4631 mov r1, r6 3902: 4628 mov r0, r5 3904: 4798 blx r3 lv_state_t state = lv_obj_get_state(parent, part); 3906: 4631 mov r1, r6 lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3908: 4681 mov r9, r0 lv_state_t state = lv_obj_get_state(parent, part); 390a: 4628 mov r0, r5 390c: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 390e: eb07 2000 add.w r0, r7, r0, lsl #8 3912: b284 uxth r4, r0 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 3914: aa01 add r2, sp, #4 3916: 4621 mov r1, r4 3918: 4648 mov r0, r9 391a: 47d8 blx fp if(res == LV_RES_OK) return value_act; 391c: 2801 cmp r0, #1 391e: d103 bne.n 3928 <_lv_obj_get_style_ptr+0x60> 3920: 9801 ldr r0, [sp, #4] } 3922: b003 add sp, #12 3924: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(attr.bits.inherit == 0) break; 3928: f018 0f80 tst.w r8, #128 ; 0x80 392c: d0d9 beq.n 38e2 <_lv_obj_get_style_ptr+0x1a> if(part != LV_OBJ_PART_MAIN) { 392e: b91e cbnz r6, 3938 <_lv_obj_get_style_ptr+0x70> parent = lv_obj_get_parent(parent); 3930: 4628 mov r0, r5 3932: 4b06 ldr r3, [pc, #24] ; (394c <_lv_obj_get_style_ptr+0x84>) 3934: 4798 blx r3 3936: 4605 mov r5, r0 { 3938: 2600 movs r6, #0 393a: e7d1 b.n 38e0 <_lv_obj_get_style_ptr+0x18> return &lv_anim_path_def; 393c: 4804 ldr r0, [pc, #16] ; (3950 <_lv_obj_get_style_ptr+0x88>) 393e: e7f0 b.n 3922 <_lv_obj_get_style_ptr+0x5a> switch(prop) { 3940: 2000 movs r0, #0 3942: e7ee b.n 3922 <_lv_obj_get_style_ptr+0x5a> 3944: 000102d9 .word 0x000102d9 3948: 0000248d .word 0x0000248d 394c: 00002125 .word 0x00002125 3950: 00023f24 .word 0x00023f24 3954: 000036a5 .word 0x000036a5 3958: 00006025 .word 0x00006025 0000395c : { 395c: b570 push {r4, r5, r6, lr} lv_style_trans_t * tr = a->var; 395e: 6804 ldr r4, [r0, #0] lv_style_property_t prop_tmp = tr->prop; 3960: 88a5 ldrh r5, [r4, #4] tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 3962: 6820 ldr r0, [r4, #0] 3964: 79a1 ldrb r1, [r4, #6] 3966: f005 030f and.w r3, r5, #15 if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 396a: 2b08 cmp r3, #8 tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 396c: 462a mov r2, r5 if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 396e: d80c bhi.n 398a tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 3970: 4b0d ldr r3, [pc, #52] ; (39a8 ) 3972: 4798 blx r3 tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 3974: 8120 strh r0, [r4, #8] tr->prop = 0; 3976: 2300 movs r3, #0 3978: 80a3 strh r3, [r4, #4] trans_del(tr->obj, tr->part, prop_tmp, tr); 397a: 79a1 ldrb r1, [r4, #6] 397c: 6820 ldr r0, [r4, #0] 397e: 4e0b ldr r6, [pc, #44] ; (39ac ) 3980: 4623 mov r3, r4 3982: 462a mov r2, r5 3984: 47b0 blx r6 tr->prop = prop_tmp; 3986: 80a5 strh r5, [r4, #4] } 3988: bd70 pop {r4, r5, r6, pc} else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 398a: 2b0b cmp r3, #11 398c: d802 bhi.n 3994 tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 398e: 4b08 ldr r3, [pc, #32] ; (39b0 ) 3990: 4798 blx r3 3992: e7ef b.n 3974 else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3994: 2b0d cmp r3, #13 3996: d803 bhi.n 39a0 tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp); 3998: 4b06 ldr r3, [pc, #24] ; (39b4 ) 399a: 4798 blx r3 399c: 7220 strb r0, [r4, #8] 399e: e7ea b.n 3976 tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp); 39a0: 4b05 ldr r3, [pc, #20] ; (39b8 ) 39a2: 4798 blx r3 39a4: 60a0 str r0, [r4, #8] 39a6: e7e6 b.n 3976 39a8: 00003711 .word 0x00003711 39ac: 000024b5 .word 0x000024b5 39b0: 000037b5 .word 0x000037b5 39b4: 00003839 .word 0x00003839 39b8: 000038c9 .word 0x000038c9 000039bc : { 39bc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(obj->state == new_state) return; 39c0: f890 303d ldrb.w r3, [r0, #61] ; 0x3d 39c4: 428b cmp r3, r1 { 39c6: b09f sub sp, #124 ; 0x7c 39c8: 4604 mov r4, r0 39ca: 4688 mov r8, r1 if(obj->state == new_state) return; 39cc: f000 8242 beq.w 3e54 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39d0: 4b95 ldr r3, [pc, #596] ; (3c28 ) 39d2: 4798 blx r3 39d4: 4605 mov r5, r0 39d6: b968 cbnz r0, 39f4 39d8: 4b94 ldr r3, [pc, #592] ; (3c2c ) 39da: 4995 ldr r1, [pc, #596] ; (3c30 ) 39dc: 9300 str r3, [sp, #0] 39de: f240 6237 movw r2, #1591 ; 0x637 39e2: 2003 movs r0, #3 39e4: 4e93 ldr r6, [pc, #588] ; (3c34 ) 39e6: 47b0 blx r6 39e8: 4893 ldr r0, [pc, #588] ; (3c38 ) 39ea: 4994 ldr r1, [pc, #592] ; (3c3c ) 39ec: 4622 mov r2, r4 39ee: 462b mov r3, r5 39f0: 4788 blx r1 39f2: e7fe b.n 39f2 lv_state_t prev_state = obj->state; 39f4: f894 303d ldrb.w r3, [r4, #61] ; 0x3d 39f8: 9302 str r3, [sp, #8] obj->state = new_state; 39fa: 2300 movs r3, #0 39fc: f884 803d strb.w r8, [r4, #61] ; 0x3d 3a00: 9303 str r3, [sp, #12] 3a02: f89d 600c ldrb.w r6, [sp, #12] lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3a06: 4b8e ldr r3, [pc, #568] ; (3c40 ) 3a08: 4631 mov r1, r6 3a0a: 4620 mov r0, r4 3a0c: 4798 blx r3 if(style_list == NULL) break; /*No more style lists*/ 3a0e: 9005 str r0, [sp, #20] 3a10: b140 cbz r0, 3a24 if(style_list->ignore_trans) continue; 3a12: 7947 ldrb r7, [r0, #5] 3a14: f017 0708 ands.w r7, r7, #8 3a18: d00b beq.n 3a32 for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 3a1a: 9b03 ldr r3, [sp, #12] 3a1c: 3301 adds r3, #1 3a1e: 2b40 cmp r3, #64 ; 0x40 3a20: 9303 str r3, [sp, #12] 3a22: d1ee bne.n 3a02 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3a24: 4b87 ldr r3, [pc, #540] ; (3c44 ) 3a26: 21ff movs r1, #255 ; 0xff 3a28: 4620 mov r0, r4 } 3a2a: b01f add sp, #124 ; 0x7c 3a2c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3a30: 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) 3a32: 4d85 ldr r5, [pc, #532] ; (3c48 ) 3a34: 22b0 movs r2, #176 ; 0xb0 3a36: 4631 mov r1, r6 3a38: 4620 mov r0, r4 3a3a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 3a3c: 22b1 movs r2, #177 ; 0xb1 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 3a3e: 9009 str r0, [sp, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 3a40: 4631 mov r1, r6 3a42: 4620 mov r0, r4 3a44: 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) 3a46: 4b81 ldr r3, [pc, #516] ; (3c4c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 3a48: 9008 str r0, [sp, #32] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) 3a4a: 22be movs r2, #190 ; 0xbe 3a4c: 4631 mov r1, r6 3a4e: 4620 mov r0, r4 3a50: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 3a52: 22b2 movs r2, #178 ; 0xb2 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_t *, _ptr, scalar) 3a54: 9006 str r0, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 3a56: 4631 mov r1, r6 3a58: 4620 mov r0, r4 3a5a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar) 3a5c: 22b3 movs r2, #179 ; 0xb3 props[0] = lv_obj_get_style_transition_prop_1(obj, part); 3a5e: f8ad 002c strh.w r0, [sp, #44] ; 0x2c 3a62: 4631 mov r1, r6 3a64: 4620 mov r0, r4 3a66: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) 3a68: 22b4 movs r2, #180 ; 0xb4 props[1] = lv_obj_get_style_transition_prop_2(obj, part); 3a6a: f8ad 002e strh.w r0, [sp, #46] ; 0x2e 3a6e: 4631 mov r1, r6 3a70: 4620 mov r0, r4 3a72: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 3a74: 22b5 movs r2, #181 ; 0xb5 props[2] = lv_obj_get_style_transition_prop_3(obj, part); 3a76: f8ad 0030 strh.w r0, [sp, #48] ; 0x30 3a7a: 4631 mov r1, r6 3a7c: 4620 mov r0, r4 3a7e: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 3a80: 22b6 movs r2, #182 ; 0xb6 props[3] = lv_obj_get_style_transition_prop_4(obj, part); 3a82: f8ad 0032 strh.w r0, [sp, #50] ; 0x32 3a86: 4631 mov r1, r6 3a88: 4620 mov r0, r4 3a8a: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 3a8c: 22b7 movs r2, #183 ; 0xb7 props[4] = lv_obj_get_style_transition_prop_5(obj, part); 3a8e: f8ad 0034 strh.w r0, [sp, #52] ; 0x34 3a92: 4631 mov r1, r6 3a94: 4620 mov r0, r4 3a96: 47a8 blx r5 props[5] = lv_obj_get_style_transition_prop_6(obj, part); 3a98: 9704 str r7, [sp, #16] 3a9a: f8ad 0036 strh.w r0, [sp, #54] ; 0x36 if(props[i] != 0) { 3a9e: 9a04 ldr r2, [sp, #16] 3aa0: ab0b add r3, sp, #44 ; 0x2c 3aa2: f833 7012 ldrh.w r7, [r3, r2, lsl #1] 3aa6: 2f00 cmp r7, #0 3aa8: f000 80b6 beq.w 3c18 _lv_style_list_add_trans_style(style_list); 3aac: 4b68 ldr r3, [pc, #416] ; (3c50 ) 3aae: 9805 ldr r0, [sp, #20] 3ab0: 4798 blx r3 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3ab2: 4b63 ldr r3, [pc, #396] ; (3c40 ) 3ab4: 4631 mov r1, r6 3ab6: 4620 mov r0, r4 3ab8: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3aba: 4b66 ldr r3, [pc, #408] ; (3c54 ) lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3abc: 4605 mov r5, r0 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3abe: 4798 blx r3 3ac0: f007 030f and.w r3, r7, #15 if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 3ac4: 2b08 cmp r3, #8 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3ac6: 4682 mov sl, r0 if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 3ac8: f200 80dc bhi.w 3c84 style_list->skip_trans = 1; 3acc: 796b ldrb r3, [r5, #5] lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3ace: f8df b178 ldr.w fp, [pc, #376] ; 3c48 style_list->skip_trans = 1; 3ad2: f043 0304 orr.w r3, r3, #4 3ad6: 716b strb r3, [r5, #5] obj->state = prev_state; 3ad8: 9b02 ldr r3, [sp, #8] 3ada: f884 303d strb.w r3, [r4, #61] ; 0x3d lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3ade: 463a mov r2, r7 3ae0: 4631 mov r1, r6 3ae2: 4620 mov r0, r4 3ae4: 47d8 blx fp lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3ae6: 463a mov r2, r7 lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3ae8: 9007 str r0, [sp, #28] obj->state = new_state; 3aea: f884 803d strb.w r8, [r4, #61] ; 0x3d lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3aee: 4631 mov r1, r6 3af0: 4620 mov r0, r4 3af2: 47d8 blx fp style_list->skip_trans = 0; 3af4: 796a ldrb r2, [r5, #5] if(int1 == int2) return NULL; 3af6: 9b07 ldr r3, [sp, #28] style_list->skip_trans = 0; 3af8: f36f 0282 bfc r2, #2, #1 if(int1 == int2) return NULL; 3afc: 4283 cmp r3, r0 lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3afe: 4681 mov r9, r0 style_list->skip_trans = 0; 3b00: 716a strb r2, [r5, #5] if(int1 == int2) return NULL; 3b02: f000 8089 beq.w 3c18 obj->state = prev_state; 3b06: 9b02 ldr r3, [sp, #8] 3b08: f884 303d strb.w r3, [r4, #61] ; 0x3d int1 = _lv_obj_get_style_int(obj, part, prop); 3b0c: 463a mov r2, r7 3b0e: 4631 mov r1, r6 3b10: 4620 mov r0, r4 3b12: 47d8 blx fp _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3b14: 4b50 ldr r3, [pc, #320] ; (3c58 ) obj->state = new_state; 3b16: f884 803d strb.w r8, [r4, #61] ; 0x3d _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3b1a: 4602 mov r2, r0 int1 = _lv_obj_get_style_int(obj, part, prop); 3b1c: 4683 mov fp, r0 _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3b1e: 4639 mov r1, r7 3b20: 4650 mov r0, sl 3b22: 4798 blx r3 if(prop == LV_STYLE_RADIUS) { 3b24: 2f01 cmp r7, #1 3b26: d122 bne.n 3b6e if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) { 3b28: f647 73ff movw r3, #32767 ; 0x7fff 3b2c: 459b cmp fp, r3 3b2e: d001 beq.n 3b34 3b30: 4599 cmp r9, r3 3b32: d11c bne.n 3b6e lv_coord_t whalf = lv_obj_get_width(obj) / 2; 3b34: f8df a148 ldr.w sl, [pc, #328] ; 3c80 3b38: 4620 mov r0, r4 3b3a: 47d0 blx sl 3b3c: eb00 70d0 add.w r0, r0, r0, lsr #31 3b40: f340 054f sbfx r5, r0, #1, #16 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3b44: 4620 mov r0, r4 3b46: 47d0 blx sl if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b48: f647 73ff movw r3, #32767 ; 0x7fff lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3b4c: eb00 70d0 add.w r0, r0, r0, lsr #31 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b50: 459b cmp fp, r3 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3b52: f340 004f sbfx r0, r0, #1, #16 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b56: d12a bne.n 3bae 3b58: 4285 cmp r5, r0 3b5a: da1e bge.n 3b9a 3b5c: f105 0b01 add.w fp, r5, #1 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b60: 4599 cmp r9, r3 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b62: fa0f fb8b sxth.w fp, fp if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b66: d102 bne.n 3b6e 3b68: 3501 adds r5, #1 3b6a: fa0f f985 sxth.w r9, r5 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3b6e: 4b3b ldr r3, [pc, #236] ; (3c5c ) 3b70: 483b ldr r0, [pc, #236] ; (3c60 ) 3b72: 4798 blx r3 LV_ASSERT_MEM(tr); 3b74: 4b2c ldr r3, [pc, #176] ; (3c28 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3b76: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3b78: 4798 blx r3 3b7a: 4682 mov sl, r0 3b7c: b9e0 cbnz r0, 3bb8 3b7e: 4b39 ldr r3, [pc, #228] ; (3c64 ) 3b80: 492b ldr r1, [pc, #172] ; (3c30 ) 3b82: 9300 str r3, [sp, #0] 3b84: f640 62b2 movw r2, #3762 ; 0xeb2 3b88: 2003 movs r0, #3 3b8a: 4c2a ldr r4, [pc, #168] ; (3c34 ) 3b8c: 47a0 blx r4 3b8e: 4836 ldr r0, [pc, #216] ; (3c68 ) 3b90: 492a ldr r1, [pc, #168] ; (3c3c ) 3b92: 462a mov r2, r5 3b94: 4653 mov r3, sl 3b96: 4788 blx r1 3b98: e7fe b.n 3b98 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b9a: f100 0b01 add.w fp, r0, #1 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3b9e: 4599 cmp r9, r3 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3ba0: fa0f fb8b sxth.w fp, fp if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 3ba4: d1e3 bne.n 3b6e 3ba6: 3001 adds r0, #1 3ba8: fa0f f980 sxth.w r9, r0 3bac: e7df b.n 3b6e 3bae: 4599 cmp r9, r3 3bb0: d1dd bne.n 3b6e 3bb2: 4285 cmp r5, r0 3bb4: daf7 bge.n 3ba6 3bb6: e7d7 b.n 3b68 if(tr == NULL) return NULL; 3bb8: 2d00 cmp r5, #0 3bba: d02d beq.n 3c18 tr->start_value._int = int1; 3bbc: f8a5 b008 strh.w fp, [r5, #8] tr->end_value._int = int2; 3bc0: f8a5 900c strh.w r9, [r5, #12] lv_anim_init(&a); 3bc4: 4b29 ldr r3, [pc, #164] ; (3c6c ) tr->obj = obj; 3bc6: 602c str r4, [r5, #0] tr->prop = props[i]; 3bc8: 80af strh r7, [r5, #4] tr->part = part; 3bca: 71ae strb r6, [r5, #6] lv_anim_init(&a); 3bcc: a80e add r0, sp, #56 ; 0x38 3bce: 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; 3bd0: 4b27 ldr r3, [pc, #156] ; (3c70 ) 3bd2: 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; 3bd4: 4b27 ldr r3, [pc, #156] ; (3c74 ) 3bd6: 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; 3bd8: 4b27 ldr r3, [pc, #156] ; (3c78 ) 3bda: 9311 str r3, [sp, #68] ; 0x44 a->end = end; 3bdc: 2200 movs r2, #0 3bde: 23ff movs r3, #255 ; 0xff 3be0: e9cd 2314 strd r2, r3, [sp, #80] ; 0x50 a->time = duration; 3be4: 9b09 ldr r3, [sp, #36] ; 0x24 3be6: 9316 str r3, [sp, #88] ; 0x58 a->act_time = (int32_t)(-delay); 3be8: 9b08 ldr r3, [sp, #32] 3bea: 9a06 ldr r2, [sp, #24] a->var = var; 3bec: 950e str r5, [sp, #56] ; 0x38 a->act_time = (int32_t)(-delay); 3bee: 425b negs r3, r3 3bf0: 9317 str r3, [sp, #92] ; 0x5c 3bf2: 9b06 ldr r3, [sp, #24] 3bf4: 1dd1 adds r1, r2, #7 3bf6: 3b01 subs r3, #1 uint8_t * d8 = (uint8_t *)dst; 3bf8: aa12 add r2, sp, #72 ; 0x48 *d8 = *s8; 3bfa: f813 0f01 ldrb.w r0, [r3, #1]! 3bfe: f802 0b01 strb.w r0, [r2], #1 while(len) { 3c02: 4299 cmp r1, r3 3c04: d1f9 bne.n 3bfa a.early_apply = 0; 3c06: f89d 306e ldrb.w r3, [sp, #110] ; 0x6e 3c0a: f36f 0300 bfc r3, #0, #1 3c0e: f88d 306e strb.w r3, [sp, #110] ; 0x6e lv_anim_start(&a); 3c12: a80e add r0, sp, #56 ; 0x38 3c14: 4b19 ldr r3, [pc, #100] ; (3c7c ) 3c16: 4798 blx r3 for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) { 3c18: 9b04 ldr r3, [sp, #16] 3c1a: 3301 adds r3, #1 3c1c: 2b06 cmp r3, #6 3c1e: 9304 str r3, [sp, #16] 3c20: f47f af3d bne.w 3a9e 3c24: e6f9 b.n 3a1a 3c26: bf00 nop 3c28: 000017e1 .word 0x000017e1 3c2c: 0001f666 .word 0x0001f666 3c30: 0001ee5b .word 0x0001ee5b 3c34: 0000e8e9 .word 0x0000e8e9 3c38: 0001eebf .word 0x0001eebf 3c3c: 000017e9 .word 0x000017e9 3c40: 0000248d .word 0x0000248d 3c44: 00002d91 .word 0x00002d91 3c48: 00003711 .word 0x00003711 3c4c: 000038c9 .word 0x000038c9 3c50: 00005de1 .word 0x00005de1 3c54: 00005cb9 .word 0x00005cb9 3c58: 00005879 .word 0x00005879 3c5c: 0000e619 .word 0x0000e619 3c60: 20008660 .word 0x20008660 3c64: 0001f677 .word 0x0001f677 3c68: 0001edbe .word 0x0001edbe 3c6c: 0000dc79 .word 0x0000dc79 3c70: 00002f8d .word 0x00002f8d 3c74: 0000395d .word 0x0000395d 3c78: 000025a1 .word 0x000025a1 3c7c: 0000dd21 .word 0x0000dd21 3c80: 000023ed .word 0x000023ed else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3c84: 2b0b cmp r3, #11 3c86: d84b bhi.n 3d20 style_list->skip_trans = 1; 3c88: 796b ldrb r3, [r5, #5] lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3c8a: f8df b200 ldr.w fp, [pc, #512] ; 3e8c style_list->skip_trans = 1; 3c8e: f043 0304 orr.w r3, r3, #4 3c92: 716b strb r3, [r5, #5] obj->state = prev_state; 3c94: 9b02 ldr r3, [sp, #8] 3c96: f884 303d strb.w r3, [r4, #61] ; 0x3d lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3c9a: 463a mov r2, r7 3c9c: 4631 mov r1, r6 3c9e: 4620 mov r0, r4 3ca0: 47d8 blx fp lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3ca2: 463a mov r2, r7 lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3ca4: 4681 mov r9, r0 obj->state = new_state; 3ca6: f884 803d strb.w r8, [r4, #61] ; 0x3d lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3caa: 4631 mov r1, r6 3cac: 4620 mov r0, r4 3cae: 47d8 blx fp style_list->skip_trans = 0; 3cb0: 796a ldrb r2, [r5, #5] lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 3cb2: f8ad 001c strh.w r0, [sp, #28] style_list->skip_trans = 0; 3cb6: f36f 0282 bfc r2, #2, #1 3cba: 716a strb r2, [r5, #5] if(c1.full == c2.full) return NULL; 3cbc: fa1f f989 uxth.w r9, r9 3cc0: b282 uxth r2, r0 3cc2: 4591 cmp r9, r2 3cc4: d0a8 beq.n 3c18 obj->state = prev_state; 3cc6: 9b02 ldr r3, [sp, #8] 3cc8: f884 303d strb.w r3, [r4, #61] ; 0x3d c1 = _lv_obj_get_style_color(obj, part, prop); 3ccc: 463a mov r2, r7 3cce: 4631 mov r1, r6 3cd0: 4620 mov r0, r4 3cd2: 47d8 blx fp _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 3cd4: 4639 mov r1, r7 3cd6: 4602 mov r2, r0 3cd8: 4b60 ldr r3, [pc, #384] ; (3e5c ) obj->state = new_state; 3cda: f884 803d strb.w r8, [r4, #61] ; 0x3d c1 = _lv_obj_get_style_color(obj, part, prop); 3cde: 4681 mov r9, r0 _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 3ce0: 4650 mov r0, sl 3ce2: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3ce4: 4b5e ldr r3, [pc, #376] ; (3e60 ) 3ce6: 485f ldr r0, [pc, #380] ; (3e64 ) 3ce8: 4798 blx r3 LV_ASSERT_MEM(tr); 3cea: 4b5f ldr r3, [pc, #380] ; (3e68 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3cec: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3cee: 4798 blx r3 3cf0: 4682 mov sl, r0 3cf2: b968 cbnz r0, 3d10 3cf4: 4b5d ldr r3, [pc, #372] ; (3e6c ) 3cf6: 495e ldr r1, [pc, #376] ; (3e70 ) 3cf8: 9300 str r3, [sp, #0] 3cfa: f640 62c6 movw r2, #3782 ; 0xec6 3cfe: 2003 movs r0, #3 3d00: 4c5c ldr r4, [pc, #368] ; (3e74 ) 3d02: 47a0 blx r4 3d04: 485c ldr r0, [pc, #368] ; (3e78 ) 3d06: 495d ldr r1, [pc, #372] ; (3e7c ) 3d08: 462a mov r2, r5 3d0a: 4653 mov r3, sl 3d0c: 4788 blx r1 3d0e: e7fe b.n 3d0e if(tr == NULL) return NULL; 3d10: 2d00 cmp r5, #0 3d12: d081 beq.n 3c18 tr->end_value._color = c2; 3d14: f8bd 301c ldrh.w r3, [sp, #28] tr->start_value._color = c1; 3d18: f8a5 9008 strh.w r9, [r5, #8] tr->end_value._color = c2; 3d1c: 81ab strh r3, [r5, #12] 3d1e: e751 b.n 3bc4 else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3d20: 2b0d cmp r3, #13 3d22: d849 bhi.n 3db8 style_list->skip_trans = 1; 3d24: 796b ldrb r3, [r5, #5] lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3d26: f8df b168 ldr.w fp, [pc, #360] ; 3e90 style_list->skip_trans = 1; 3d2a: f043 0304 orr.w r3, r3, #4 3d2e: 716b strb r3, [r5, #5] obj->state = prev_state; 3d30: 9b02 ldr r3, [sp, #8] 3d32: f884 303d strb.w r3, [r4, #61] ; 0x3d lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3d36: 463a mov r2, r7 3d38: 4631 mov r1, r6 3d3a: 4620 mov r0, r4 3d3c: 47d8 blx fp lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3d3e: 463a mov r2, r7 lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3d40: 9007 str r0, [sp, #28] obj->state = new_state; 3d42: f884 803d strb.w r8, [r4, #61] ; 0x3d lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3d46: 4631 mov r1, r6 3d48: 4620 mov r0, r4 3d4a: 47d8 blx fp style_list->skip_trans = 0; 3d4c: 796a ldrb r2, [r5, #5] if(o1 == o2) return NULL; 3d4e: 9b07 ldr r3, [sp, #28] style_list->skip_trans = 0; 3d50: f36f 0282 bfc r2, #2, #1 if(o1 == o2) return NULL; 3d54: 4283 cmp r3, r0 lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3d56: 4681 mov r9, r0 style_list->skip_trans = 0; 3d58: 716a strb r2, [r5, #5] if(o1 == o2) return NULL; 3d5a: f43f af5d beq.w 3c18 obj->state = prev_state; 3d5e: 9b02 ldr r3, [sp, #8] 3d60: f884 303d strb.w r3, [r4, #61] ; 0x3d o1 = _lv_obj_get_style_opa(obj, part, prop); 3d64: 463a mov r2, r7 3d66: 4631 mov r1, r6 3d68: 4620 mov r0, r4 3d6a: 47d8 blx fp _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 3d6c: 4639 mov r1, r7 3d6e: 4602 mov r2, r0 3d70: 4b43 ldr r3, [pc, #268] ; (3e80 ) obj->state = new_state; 3d72: f884 803d strb.w r8, [r4, #61] ; 0x3d o1 = _lv_obj_get_style_opa(obj, part, prop); 3d76: 4683 mov fp, r0 _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 3d78: 4650 mov r0, sl 3d7a: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3d7c: 4b38 ldr r3, [pc, #224] ; (3e60 ) 3d7e: 4839 ldr r0, [pc, #228] ; (3e64 ) 3d80: 4798 blx r3 LV_ASSERT_MEM(tr); 3d82: 4b39 ldr r3, [pc, #228] ; (3e68 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3d84: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3d86: 4798 blx r3 3d88: 4682 mov sl, r0 3d8a: b968 cbnz r0, 3da8 3d8c: 4b37 ldr r3, [pc, #220] ; (3e6c ) 3d8e: 4938 ldr r1, [pc, #224] ; (3e70 ) 3d90: 9300 str r3, [sp, #0] 3d92: f640 62db movw r2, #3803 ; 0xedb 3d96: 2003 movs r0, #3 3d98: 4c36 ldr r4, [pc, #216] ; (3e74 ) 3d9a: 47a0 blx r4 3d9c: 4836 ldr r0, [pc, #216] ; (3e78 ) 3d9e: 4937 ldr r1, [pc, #220] ; (3e7c ) 3da0: 462a mov r2, r5 3da2: 4653 mov r3, sl 3da4: 4788 blx r1 3da6: e7fe b.n 3da6 if(tr == NULL) return NULL; 3da8: 2d00 cmp r5, #0 3daa: f43f af35 beq.w 3c18 tr->start_value._opa = o1; 3dae: f885 b008 strb.w fp, [r5, #8] tr->end_value._opa = o2; 3db2: f885 900c strb.w r9, [r5, #12] 3db6: e705 b.n 3bc4 obj->state = prev_state; 3db8: 9b02 ldr r3, [sp, #8] 3dba: f884 303d strb.w r3, [r4, #61] ; 0x3d style_list->skip_trans = 1; 3dbe: 796b ldrb r3, [r5, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3dc0: f8df b0d0 ldr.w fp, [pc, #208] ; 3e94 style_list->skip_trans = 1; 3dc4: f043 0304 orr.w r3, r3, #4 3dc8: 716b strb r3, [r5, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3dca: 463a mov r2, r7 3dcc: 4631 mov r1, r6 3dce: 4620 mov r0, r4 3dd0: 47d8 blx fp const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3dd2: 463a mov r2, r7 const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 3dd4: 900a str r0, [sp, #40] ; 0x28 const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3dd6: 4631 mov r1, r6 obj->state = new_state; 3dd8: f884 803d strb.w r8, [r4, #61] ; 0x3d const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3ddc: 4620 mov r0, r4 3dde: 47d8 blx fp 3de0: 900e str r0, [sp, #56] ; 0x38 style_list->skip_trans = 0; 3de2: 796b ldrb r3, [r5, #5] 3de4: f36f 0382 bfc r3, #2, #1 const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 3de8: 4681 mov r9, r0 style_list->skip_trans = 0; 3dea: 716b strb r3, [r5, #5] if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; 3dec: 2204 movs r2, #4 3dee: 4b25 ldr r3, [pc, #148] ; (3e84 ) 3df0: a90e add r1, sp, #56 ; 0x38 3df2: a80a add r0, sp, #40 ; 0x28 3df4: 4798 blx r3 3df6: 2800 cmp r0, #0 3df8: f43f af0e beq.w 3c18 obj->state = prev_state; 3dfc: 9b02 ldr r3, [sp, #8] 3dfe: f884 303d strb.w r3, [r4, #61] ; 0x3d p1 = _lv_obj_get_style_ptr(obj, part, prop); 3e02: 463a mov r2, r7 3e04: 4631 mov r1, r6 3e06: 4620 mov r0, r4 3e08: 47d8 blx fp _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 3e0a: 4639 mov r1, r7 3e0c: 4602 mov r2, r0 3e0e: 4b1e ldr r3, [pc, #120] ; (3e88 ) p1 = _lv_obj_get_style_ptr(obj, part, prop); 3e10: 900a str r0, [sp, #40] ; 0x28 3e12: 4683 mov fp, r0 obj->state = new_state; 3e14: f884 803d strb.w r8, [r4, #61] ; 0x3d _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 3e18: 4650 mov r0, sl 3e1a: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3e1c: 4b10 ldr r3, [pc, #64] ; (3e60 ) 3e1e: 4811 ldr r0, [pc, #68] ; (3e64 ) 3e20: 4798 blx r3 LV_ASSERT_MEM(tr); 3e22: 4b11 ldr r3, [pc, #68] ; (3e68 ) tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3e24: 4605 mov r5, r0 LV_ASSERT_MEM(tr); 3e26: 4798 blx r3 3e28: 4682 mov sl, r0 3e2a: b968 cbnz r0, 3e48 3e2c: 4b0f ldr r3, [pc, #60] ; (3e6c ) 3e2e: 4910 ldr r1, [pc, #64] ; (3e70 ) 3e30: 9300 str r3, [sp, #0] 3e32: f640 62ef movw r2, #3823 ; 0xeef 3e36: 2003 movs r0, #3 3e38: 4c0e ldr r4, [pc, #56] ; (3e74 ) 3e3a: 47a0 blx r4 3e3c: 480e ldr r0, [pc, #56] ; (3e78 ) 3e3e: 490f ldr r1, [pc, #60] ; (3e7c ) 3e40: 462a mov r2, r5 3e42: 4653 mov r3, sl 3e44: 4788 blx r1 3e46: e7fe b.n 3e46 if(tr == NULL) return NULL; 3e48: 2d00 cmp r5, #0 3e4a: f43f aee5 beq.w 3c18 tr->end_value._ptr = p2; 3e4e: e9c5 b902 strd fp, r9, [r5, #8] 3e52: e6b7 b.n 3bc4 } 3e54: b01f add sp, #124 ; 0x7c 3e56: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 3e5a: bf00 nop 3e5c: 00005949 .word 0x00005949 3e60: 0000e619 .word 0x0000e619 3e64: 20008660 .word 0x20008660 3e68: 000017e1 .word 0x000017e1 3e6c: 0001f677 .word 0x0001f677 3e70: 0001ee5b .word 0x0001ee5b 3e74: 0000e8e9 .word 0x0000e8e9 3e78: 0001edbe .word 0x0001edbe 3e7c: 000017e9 .word 0x000017e9 3e80: 00005a19 .word 0x00005a19 3e84: 00016295 .word 0x00016295 3e88: 00005aed .word 0x00005aed 3e8c: 000037b5 .word 0x000037b5 3e90: 00003839 .word 0x00003839 3e94: 000038c9 .word 0x000038c9 00003e98 : { 3e98: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3e9a: 4b11 ldr r3, [pc, #68] ; (3ee0 ) { 3e9c: 4604 mov r4, r0 3e9e: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ea0: 4798 blx r3 3ea2: 4606 mov r6, r0 3ea4: b968 cbnz r0, 3ec2 3ea6: 4b0f ldr r3, [pc, #60] ; (3ee4 ) 3ea8: 490f ldr r1, [pc, #60] ; (3ee8 ) 3eaa: 9300 str r3, [sp, #0] 3eac: f240 627e movw r2, #1662 ; 0x67e 3eb0: 2003 movs r0, #3 3eb2: 4d0e ldr r5, [pc, #56] ; (3eec ) 3eb4: 47a8 blx r5 3eb6: 480e ldr r0, [pc, #56] ; (3ef0 ) 3eb8: 490e ldr r1, [pc, #56] ; (3ef4 ) 3eba: 4622 mov r2, r4 3ebc: 4633 mov r3, r6 3ebe: 4788 blx r1 3ec0: e7fe b.n 3ec0 lv_state_t new_state = obj->state | state; 3ec2: f894 303d ldrb.w r3, [r4, #61] ; 0x3d 3ec6: ea43 0105 orr.w r1, r3, r5 if(obj->state != new_state) { 3eca: 439d bics r5, r3 3ecc: d005 beq.n 3eda lv_obj_set_state(obj, new_state); 3ece: 4b0a ldr r3, [pc, #40] ; (3ef8 ) 3ed0: 4620 mov r0, r4 } 3ed2: b002 add sp, #8 3ed4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_state(obj, new_state); 3ed8: 4718 bx r3 } 3eda: b002 add sp, #8 3edc: bd70 pop {r4, r5, r6, pc} 3ede: bf00 nop 3ee0: 000017e1 .word 0x000017e1 3ee4: 0001f684 .word 0x0001f684 3ee8: 0001ee5b .word 0x0001ee5b 3eec: 0000e8e9 .word 0x0000e8e9 3ef0: 0001eebf .word 0x0001eebf 3ef4: 000017e9 .word 0x000017e9 3ef8: 000039bd .word 0x000039bd 00003efc : { 3efc: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3efe: 4b11 ldr r3, [pc, #68] ; (3f44 ) { 3f00: 4604 mov r4, r0 3f02: 460d mov r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f04: 4798 blx r3 3f06: 4606 mov r6, r0 3f08: b968 cbnz r0, 3f26 3f0a: 4b0f ldr r3, [pc, #60] ; (3f48 ) 3f0c: 490f ldr r1, [pc, #60] ; (3f4c ) 3f0e: 9300 str r3, [sp, #0] 3f10: f240 628f movw r2, #1679 ; 0x68f 3f14: 2003 movs r0, #3 3f16: 4d0e ldr r5, [pc, #56] ; (3f50 ) 3f18: 47a8 blx r5 3f1a: 480e ldr r0, [pc, #56] ; (3f54 ) 3f1c: 490e ldr r1, [pc, #56] ; (3f58 ) 3f1e: 4622 mov r2, r4 3f20: 4633 mov r3, r6 3f22: 4788 blx r1 3f24: e7fe b.n 3f24 lv_state_t new_state = obj->state & (~state); 3f26: f894 303d ldrb.w r3, [r4, #61] ; 0x3d if(obj->state != new_state) { 3f2a: 421d tst r5, r3 lv_state_t new_state = obj->state & (~state); 3f2c: ea23 0105 bic.w r1, r3, r5 if(obj->state != new_state) { 3f30: d005 beq.n 3f3e lv_obj_set_state(obj, new_state); 3f32: 4b0a ldr r3, [pc, #40] ; (3f5c ) 3f34: 4620 mov r0, r4 } 3f36: b002 add sp, #8 3f38: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_set_state(obj, new_state); 3f3c: 4718 bx r3 } 3f3e: b002 add sp, #8 3f40: bd70 pop {r4, r5, r6, pc} 3f42: bf00 nop 3f44: 000017e1 .word 0x000017e1 3f48: 0001f695 .word 0x0001f695 3f4c: 0001ee5b .word 0x0001ee5b 3f50: 0000e8e9 .word 0x0000e8e9 3f54: 0001eebf .word 0x0001eebf 3f58: 000017e9 .word 0x000017e9 3f5c: 000039bd .word 0x000039bd 00003f60 : { 3f60: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f62: 4b0b ldr r3, [pc, #44] ; (3f90 ) { 3f64: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3f66: 4798 blx r3 3f68: 4605 mov r5, r0 3f6a: b968 cbnz r0, 3f88 3f6c: 4b09 ldr r3, [pc, #36] ; (3f94 ) 3f6e: 490a ldr r1, [pc, #40] ; (3f98 ) 3f70: 9300 str r3, [sp, #0] 3f72: f640 22f5 movw r2, #2805 ; 0xaf5 3f76: 2003 movs r0, #3 3f78: 4e08 ldr r6, [pc, #32] ; (3f9c ) 3f7a: 47b0 blx r6 3f7c: 4808 ldr r0, [pc, #32] ; (3fa0 ) 3f7e: 4909 ldr r1, [pc, #36] ; (3fa4 ) 3f80: 4622 mov r2, r4 3f82: 462b mov r3, r5 3f84: 4788 blx r1 3f86: e7fe b.n 3f86 } 3f88: 69e0 ldr r0, [r4, #28] 3f8a: b002 add sp, #8 3f8c: bd70 pop {r4, r5, r6, pc} 3f8e: bf00 nop 3f90: 000017e1 .word 0x000017e1 3f94: 0001f6a8 .word 0x0001f6a8 3f98: 0001ee5b .word 0x0001ee5b 3f9c: 0000e8e9 .word 0x0000e8e9 3fa0: 0001eebf .word 0x0001eebf 3fa4: 000017e9 .word 0x000017e9 00003fa8 : { 3fa8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3faa: 4b0b ldr r3, [pc, #44] ; (3fd8 ) { 3fac: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3fae: 4798 blx r3 3fb0: 4605 mov r5, r0 3fb2: b968 cbnz r0, 3fd0 3fb4: 4b09 ldr r3, [pc, #36] ; (3fdc ) 3fb6: 490a ldr r1, [pc, #40] ; (3fe0 ) 3fb8: 9300 str r3, [sp, #0] 3fba: f640 321e movw r2, #2846 ; 0xb1e 3fbe: 2003 movs r0, #3 3fc0: 4e08 ldr r6, [pc, #32] ; (3fe4 ) 3fc2: 47b0 blx r6 3fc4: 4808 ldr r0, [pc, #32] ; (3fe8 ) 3fc6: 4909 ldr r1, [pc, #36] ; (3fec ) 3fc8: 4622 mov r2, r4 3fca: 462b mov r3, r5 3fcc: 4788 blx r1 3fce: e7fe b.n 3fce } 3fd0: 6a60 ldr r0, [r4, #36] ; 0x24 3fd2: b002 add sp, #8 3fd4: bd70 pop {r4, r5, r6, pc} 3fd6: bf00 nop 3fd8: 000017e1 .word 0x000017e1 3fdc: 0001f6e6 .word 0x0001f6e6 3fe0: 0001ee5b .word 0x0001ee5b 3fe4: 0000e8e9 .word 0x0000e8e9 3fe8: 0001eebf .word 0x0001eebf 3fec: 000017e9 .word 0x000017e9 00003ff0 : { 3ff0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ff2: 4b0b ldr r3, [pc, #44] ; (4020 ) { 3ff4: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3ff6: 4798 blx r3 3ff8: 4605 mov r5, r0 3ffa: b968 cbnz r0, 4018 3ffc: 4b09 ldr r3, [pc, #36] ; (4024 ) 3ffe: 490a ldr r1, [pc, #40] ; (4028 ) 4000: 9300 str r3, [sp, #0] 4002: f640 326f movw r2, #2927 ; 0xb6f 4006: 2003 movs r0, #3 4008: 4e08 ldr r6, [pc, #32] ; (402c ) 400a: 47b0 blx r6 400c: 4808 ldr r0, [pc, #32] ; (4030 ) 400e: 4909 ldr r1, [pc, #36] ; (4034 ) 4010: 4622 mov r2, r4 4012: 462b mov r3, r5 4014: 4788 blx r1 4016: e7fe b.n 4016 } 4018: 6ba0 ldr r0, [r4, #56] ; 0x38 401a: b002 add sp, #8 401c: bd70 pop {r4, r5, r6, pc} 401e: bf00 nop 4020: 000017e1 .word 0x000017e1 4024: 0001f70a .word 0x0001f70a 4028: 0001ee5b .word 0x0001ee5b 402c: 0000e8e9 .word 0x0000e8e9 4030: 0001eebf .word 0x0001eebf 4034: 000017e9 .word 0x000017e9 00004038 : { 4038: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_event_send(obj, LV_EVENT_DELETE, NULL); 403c: 4b39 ldr r3, [pc, #228] ; (4124 ) { 403e: 4604 mov r4, r0 lv_event_send(obj, LV_EVENT_DELETE, NULL); 4040: 2200 movs r2, #0 4042: 2115 movs r1, #21 4044: 4798 blx r3 lv_group_t * group = lv_obj_get_group(obj); 4046: 4b38 ldr r3, [pc, #224] ; (4128 ) 4048: 4620 mov r0, r4 404a: 4798 blx r3 if(group) lv_group_remove_obj(obj); 404c: 4607 mov r7, r0 404e: b110 cbz r0, 4056 4050: 4b36 ldr r3, [pc, #216] ; (412c ) 4052: 4620 mov r0, r4 4054: 4798 blx r3 lv_anim_del(obj, NULL); 4056: 4b36 ldr r3, [pc, #216] ; (4130 ) trans_del(obj, 0xFF, 0xFF, NULL); 4058: 4d36 ldr r5, [pc, #216] ; (4134 ) i_next = _lv_ll_get_next(&(obj->child_ll), i); 405a: f8df 90f4 ldr.w r9, [pc, #244] ; 4150 lv_anim_del(obj, NULL); 405e: 2100 movs r1, #0 4060: 4620 mov r0, r4 4062: 4798 blx r3 trans_del(obj, 0xFF, 0xFF, NULL); 4064: 22ff movs r2, #255 ; 0xff 4066: 2300 movs r3, #0 4068: 4611 mov r1, r2 406a: 4620 mov r0, r4 i = _lv_ll_get_head(&(obj->child_ll)); 406c: f104 0804 add.w r8, r4, #4 trans_del(obj, 0xFF, 0xFF, NULL); 4070: 47a8 blx r5 i = _lv_ll_get_head(&(obj->child_ll)); 4072: 4b31 ldr r3, [pc, #196] ; (4138 ) 4074: 4640 mov r0, r8 4076: 4798 blx r3 4078: 4605 mov r5, r0 while(i != NULL) { 407a: bb3d cbnz r5, 40cc #endif static void lv_event_mark_deleted(lv_obj_t * obj) { lv_event_temp_data_t * t = event_temp_data_head; 407c: 4b2f ldr r3, [pc, #188] ; (413c ) 407e: 685e ldr r6, [r3, #4] while(t) { if(t->obj == obj) t->deleted = true; 4080: 2301 movs r3, #1 while(t) { 4082: bb66 cbnz r6, 40de lv_indev_t * indev = lv_indev_get_next(NULL); 4084: f8df 80cc ldr.w r8, [pc, #204] ; 4154 lv_indev_reset(indev, obj); 4088: f8df 90cc ldr.w r9, [pc, #204] ; 4158 if(indev->group == group && obj == lv_indev_get_obj_act()) { 408c: f8df a0cc ldr.w sl, [pc, #204] ; 415c lv_indev_t * indev = lv_indev_get_next(NULL); 4090: 4630 mov r0, r6 4092: 47c0 blx r8 4094: 4605 mov r5, r0 while(indev) { 4096: bb45 cbnz r5, 40ea obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL); 4098: 462a mov r2, r5 409a: 4629 mov r1, r5 409c: 69e3 ldr r3, [r4, #28] 409e: 4d28 ldr r5, [pc, #160] ; (4140 ) 40a0: 4620 mov r0, r4 40a2: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 40a4: 4b27 ldr r3, [pc, #156] ; (4144 ) 40a6: 4620 mov r0, r4 40a8: 4798 blx r3 if(par == NULL) { /*It is a screen*/ 40aa: 2800 cmp r0, #0 40ac: d137 bne.n 411e lv_disp_t * d = lv_obj_get_disp(obj); 40ae: 4b26 ldr r3, [pc, #152] ; (4148 ) 40b0: 4620 mov r0, r4 40b2: 4798 blx r3 _lv_ll_remove(&d->scr_ll, obj); 40b4: 4621 mov r1, r4 40b6: 3030 adds r0, #48 ; 0x30 _lv_ll_remove(&(par->child_ll), obj); 40b8: 47a8 blx r5 if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr); 40ba: 6a60 ldr r0, [r4, #36] ; 0x24 40bc: 4d23 ldr r5, [pc, #140] ; (414c ) 40be: b100 cbz r0, 40c2 40c0: 47a8 blx r5 lv_mem_free(obj); /*Free the object itself*/ 40c2: 4620 mov r0, r4 40c4: 462b mov r3, r5 } 40c6: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_mem_free(obj); /*Free the object itself*/ 40ca: 4718 bx r3 i_next = _lv_ll_get_next(&(obj->child_ll), i); 40cc: 4629 mov r1, r5 40ce: 4640 mov r0, r8 40d0: 47c8 blx r9 40d2: 4606 mov r6, r0 obj_del_core(i); 40d4: 4628 mov r0, r5 40d6: f7ff ffaf bl 4038 i = i_next; 40da: 4635 mov r5, r6 40dc: e7cd b.n 407a if(t->obj == obj) t->deleted = true; 40de: 6832 ldr r2, [r6, #0] 40e0: 4294 cmp r4, r2 40e2: bf08 it eq 40e4: 7133 strbeq r3, [r6, #4] t = t->prev; 40e6: 68b6 ldr r6, [r6, #8] 40e8: e7cb b.n 4082 if(indev->proc.types.pointer.act_obj == obj || indev->proc.types.pointer.last_obj == obj) { 40ea: 6b6b ldr r3, [r5, #52] ; 0x34 40ec: 42a3 cmp r3, r4 40ee: d002 beq.n 40f6 40f0: 6bab ldr r3, [r5, #56] ; 0x38 40f2: 42a3 cmp r3, r4 40f4: d102 bne.n 40fc lv_indev_reset(indev, obj); 40f6: 4621 mov r1, r4 40f8: 4628 mov r0, r5 40fa: 47c8 blx r9 if(indev->proc.types.pointer.last_pressed == obj) { 40fc: 6beb ldr r3, [r5, #60] ; 0x3c 40fe: 42a3 cmp r3, r4 if(indev->group == group && obj == lv_indev_get_obj_act()) { 4100: 6dab ldr r3, [r5, #88] ; 0x58 indev->proc.types.pointer.last_pressed = NULL; 4102: bf08 it eq 4104: 63ee streq r6, [r5, #60] ; 0x3c if(indev->group == group && obj == lv_indev_get_obj_act()) { 4106: 42bb cmp r3, r7 4108: d105 bne.n 4116 410a: 47d0 blx sl 410c: 4284 cmp r4, r0 410e: d102 bne.n 4116 lv_indev_reset(indev, obj); 4110: 4621 mov r1, r4 4112: 4628 mov r0, r5 4114: 47c8 blx r9 indev = lv_indev_get_next(indev); 4116: 4628 mov r0, r5 4118: 47c0 blx r8 411a: 4605 mov r5, r0 411c: e7bb b.n 4096 _lv_ll_remove(&(par->child_ll), obj); 411e: 4621 mov r1, r4 4120: 3004 adds r0, #4 4122: e7c9 b.n 40b8 4124: 00001f79 .word 0x00001f79 4128: 00003ff1 .word 0x00003ff1 412c: 00001b75 .word 0x00001b75 4130: 0000dcb1 .word 0x0000dcb1 4134: 000024b5 .word 0x000024b5 4138: 0000e6a9 .word 0x0000e6a9 413c: 200080f4 .word 0x200080f4 4140: 0000e76d .word 0x0000e76d 4144: 00002125 .word 0x00002125 4148: 000021c5 .word 0x000021c5 414c: 0000eae5 .word 0x0000eae5 4150: 0000e6b5 .word 0x0000e6b5 4154: 0000da19 .word 0x0000da19 4158: 00001c79 .word 0x00001c79 415c: 00001cb5 .word 0x00001cb5 00004160 : { 4160: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4162: 4b1b ldr r3, [pc, #108] ; (41d0 ) { 4164: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4166: 4798 blx r3 4168: 4605 mov r5, r0 416a: b968 cbnz r0, 4188 416c: 4b19 ldr r3, [pc, #100] ; (41d4 ) 416e: 491a ldr r1, [pc, #104] ; (41d8 ) 4170: 9300 str r3, [sp, #0] 4172: f240 1293 movw r2, #403 ; 0x193 4176: 2003 movs r0, #3 4178: 4e18 ldr r6, [pc, #96] ; (41dc ) 417a: 47b0 blx r6 417c: 4818 ldr r0, [pc, #96] ; (41e0 ) 417e: 4919 ldr r1, [pc, #100] ; (41e4 ) 4180: 4622 mov r2, r4 4182: 462b mov r3, r5 4184: 4788 blx r1 4186: e7fe b.n 4186 lv_obj_invalidate(obj); 4188: 4b17 ldr r3, [pc, #92] ; (41e8 ) 418a: 4620 mov r0, r4 418c: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 418e: 4b17 ldr r3, [pc, #92] ; (41ec ) 4190: 4620 mov r0, r4 4192: 4798 blx r3 if(par == NULL) { 4194: 4606 mov r6, r0 4196: b9b8 cbnz r0, 41c8 disp = lv_obj_get_disp(obj); 4198: 4b15 ldr r3, [pc, #84] ; (41f0 ) 419a: 4620 mov r0, r4 419c: 4798 blx r3 if(!disp) return LV_RES_INV; /*Shouldn't happen*/ 419e: 4605 mov r5, r0 41a0: b178 cbz r0, 41c2 if(disp->act_scr == obj) act_scr_del = true; 41a2: 6bc7 ldr r7, [r0, #60] ; 0x3c 41a4: 1b3b subs r3, r7, r4 41a6: 425f negs r7, r3 41a8: 415f adcs r7, r3 obj_del_core(obj); 41aa: 4b12 ldr r3, [pc, #72] ; (41f4 ) 41ac: 4620 mov r0, r4 41ae: 4798 blx r3 if(par) { 41b0: b126 cbz r6, 41bc par->signal_cb(par, LV_SIGNAL_CHILD_CHG, NULL); 41b2: 69f3 ldr r3, [r6, #28] 41b4: 2200 movs r2, #0 41b6: 2101 movs r1, #1 41b8: 4630 mov r0, r6 41ba: 4798 blx r3 if(act_scr_del) { 41bc: b10f cbz r7, 41c2 disp->act_scr = NULL; 41be: 2300 movs r3, #0 41c0: 63eb str r3, [r5, #60] ; 0x3c } 41c2: 2000 movs r0, #0 41c4: b003 add sp, #12 41c6: bdf0 pop {r4, r5, r6, r7, pc} bool act_scr_del = false; 41c8: 2700 movs r7, #0 lv_disp_t * disp = NULL; 41ca: 463d mov r5, r7 41cc: e7ed b.n 41aa 41ce: bf00 nop 41d0: 000017e1 .word 0x000017e1 41d4: 0001f71b .word 0x0001f71b 41d8: 0001ee5b .word 0x0001ee5b 41dc: 0000e8e9 .word 0x0000e8e9 41e0: 0001eebf .word 0x0001eebf 41e4: 000017e9 .word 0x000017e9 41e8: 00002785 .word 0x00002785 41ec: 00002125 .word 0x00002125 41f0: 000021c5 .word 0x000021c5 41f4: 00004039 .word 0x00004039 000041f8 : { 41f8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 41fa: 4b0e ldr r3, [pc, #56] ; (4234 ) { 41fc: 4604 mov r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 41fe: 4798 blx r3 4200: 4605 mov r5, r0 4202: b968 cbnz r0, 4220 4204: 4b0c ldr r3, [pc, #48] ; (4238 ) 4206: 490d ldr r1, [pc, #52] ; (423c ) 4208: 9300 str r3, [sp, #0] 420a: f44f 6238 mov.w r2, #2944 ; 0xb80 420e: 2003 movs r0, #3 4210: 4e0b ldr r6, [pc, #44] ; (4240 ) 4212: 47b0 blx r6 4214: 480b ldr r0, [pc, #44] ; (4244 ) 4216: 490c ldr r1, [pc, #48] ; (4248 ) 4218: 4622 mov r2, r4 421a: 462b mov r3, r5 421c: 4788 blx r1 421e: e7fe b.n 421e if(obj->group_p) { 4220: 6ba0 ldr r0, [r4, #56] ; 0x38 4222: b120 cbz r0, 422e if(lv_group_get_focused(obj->group_p) == obj) return true; 4224: 4b09 ldr r3, [pc, #36] ; (424c ) 4226: 4798 blx r3 4228: 1a23 subs r3, r4, r0 422a: 4258 negs r0, r3 422c: 4158 adcs r0, r3 } 422e: b002 add sp, #8 4230: bd70 pop {r4, r5, r6, pc} 4232: bf00 nop 4234: 000017e1 .word 0x000017e1 4238: 0001f747 .word 0x0001f747 423c: 0001ee5b .word 0x0001ee5b 4240: 0000e8e9 .word 0x0000e8e9 4244: 0001eebf .word 0x0001eebf 4248: 000017e9 .word 0x000017e9 424c: 00001c11 .word 0x00001c11 00004250 : { 4250: b507 push {r0, r1, r2, lr} ext_area.x1 = obj->coords.x1 - obj->ext_click_pad_hor; 4252: 8a02 ldrh r2, [r0, #16] 4254: f890 3030 ldrb.w r3, [r0, #48] ; 0x30 4258: 1ad2 subs r2, r2, r3 425a: f8ad 2000 strh.w r2, [sp] ext_area.x2 = obj->coords.x2 + obj->ext_click_pad_hor; 425e: 8a82 ldrh r2, [r0, #20] 4260: 4413 add r3, r2 4262: f8ad 3004 strh.w r3, [sp, #4] ext_area.y1 = obj->coords.y1 - obj->ext_click_pad_ver; 4266: 8a42 ldrh r2, [r0, #18] 4268: f890 3031 ldrb.w r3, [r0, #49] ; 0x31 426c: 1ad2 subs r2, r2, r3 426e: f8ad 2002 strh.w r2, [sp, #2] ext_area.y2 = obj->coords.y2 + obj->ext_click_pad_ver; 4272: 8ac2 ldrh r2, [r0, #22] 4274: 4413 add r3, r2 4276: f8ad 3006 strh.w r3, [sp, #6] if(!_lv_area_is_point_on(&ext_area, point, 0)) { 427a: 2200 movs r2, #0 427c: 4b02 ldr r3, [pc, #8] ; (4288 ) 427e: 4668 mov r0, sp 4280: 4798 blx r3 } 4282: b003 add sp, #12 4284: f85d fb04 ldr.w pc, [sp], #4 4288: 0000df25 .word 0x0000df25 0000428c : { 428c: b510 push {r4, lr} 428e: 2300 movs r3, #0 if(buf->type[i] == NULL) break; 4290: f850 4023 ldr.w r4, [r0, r3, lsl #2] 4294: b2da uxtb r2, r3 4296: b11c cbz r4, 42a0 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 4298: 3301 adds r3, #1 429a: 2b07 cmp r3, #7 429c: d1f8 bne.n 4290 429e: 461a mov r2, r3 buf->type[i] = name; 42a0: f840 1022 str.w r1, [r0, r2, lsl #2] } 42a4: 2001 movs r0, #1 42a6: bd10 pop {r4, pc} 000042a8 : { 42a8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 42ac: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 42ae: 4fb6 ldr r7, [pc, #728] ; (4588 ) _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 42b0: f8df 82e0 ldr.w r8, [pc, #736] ; 4594 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 42b4: 2201 movs r2, #1 42b6: 4605 mov r5, r0 42b8: 460e mov r6, r1 42ba: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 42bc: f248 020c movw r2, #32780 ; 0x800c draw_dsc->radius = lv_obj_get_style_radius(obj, part); 42c0: 8020 strh r0, [r4, #0] 42c2: 4631 mov r1, r6 42c4: 4628 mov r0, r5 42c6: 47c0 blx r8 if(opa_scale <= LV_OPA_MIN) { 42c8: 2805 cmp r0, #5 42ca: 4681 mov r9, r0 42cc: d80a bhi.n 42e4 draw_dsc->bg_opa = LV_OPA_TRANSP; 42ce: 2300 movs r3, #0 42d0: 7323 strb r3, [r4, #12] draw_dsc->border_opa = LV_OPA_TRANSP; 42d2: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = LV_OPA_TRANSP; 42d4: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = LV_OPA_TRANSP; 42d8: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 42dc: f884 3044 strb.w r3, [r4, #68] ; 0x44 } 42e0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if(draw_dsc->bg_opa != LV_OPA_TRANSP) { 42e4: 7b23 ldrb r3, [r4, #12] 42e6: b343 cbz r3, 433a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 42e8: 222c movs r2, #44 ; 0x2c 42ea: 4631 mov r1, r6 42ec: 4628 mov r0, r5 42ee: 47c0 blx r8 if(draw_dsc->bg_opa > LV_OPA_MIN) { 42f0: 2805 cmp r0, #5 draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part); 42f2: 7320 strb r0, [r4, #12] if(draw_dsc->bg_opa > LV_OPA_MIN) { 42f4: d921 bls.n 433a _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 42f6: 2229 movs r2, #41 ; 0x29 42f8: 4631 mov r1, r6 42fa: f8df a290 ldr.w sl, [pc, #656] ; 458c 42fe: 4628 mov r0, r5 4300: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) 4302: 2223 movs r2, #35 ; 0x23 draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part); 4304: 8060 strh r0, [r4, #2] 4306: 4631 mov r1, r6 4308: 4628 mov r0, r5 430a: 47b8 blx r7 430c: b2c0 uxtb r0, r0 draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part); 430e: 71a0 strb r0, [r4, #6] if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) { 4310: b170 cbz r0, 4330 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) 4312: 222a movs r2, #42 ; 0x2a 4314: 4631 mov r1, r6 4316: 4628 mov r0, r5 4318: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) 431a: 2221 movs r2, #33 ; 0x21 draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part); 431c: 80a0 strh r0, [r4, #4] 431e: 4631 mov r1, r6 4320: 4628 mov r0, r5 4322: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) 4324: 2222 movs r2, #34 ; 0x22 draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part); 4326: 8120 strh r0, [r4, #8] 4328: 4631 mov r1, r6 432a: 4628 mov r0, r5 432c: 47b8 blx r7 draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part); 432e: 8160 strh r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 4330: 2220 movs r2, #32 4332: 4631 mov r1, r6 4334: 4628 mov r0, r5 4336: 47b8 blx r7 4338: 7360 strb r0, [r4, #13] if(draw_dsc->border_opa != LV_OPA_TRANSP) { 433a: 7d23 ldrb r3, [r4, #20] 433c: b1eb cbz r3, 437a _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 433e: 2230 movs r2, #48 ; 0x30 4340: 4631 mov r1, r6 4342: 4628 mov r0, r5 4344: 47b8 blx r7 draw_dsc->border_width = lv_obj_get_style_border_width(obj, part); 4346: 8220 strh r0, [r4, #16] if(draw_dsc->border_width) { 4348: b1b8 cbz r0, 437a _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 434a: 223c movs r2, #60 ; 0x3c 434c: 4631 mov r1, r6 434e: 4628 mov r0, r5 4350: 47c0 blx r8 if(draw_dsc->border_opa > LV_OPA_MIN) { 4352: 2805 cmp r0, #5 draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part); 4354: 7520 strb r0, [r4, #20] if(draw_dsc->border_opa > LV_OPA_MIN) { 4356: d90b bls.n 4370 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 4358: 2231 movs r2, #49 ; 0x31 435a: 4631 mov r1, r6 435c: 4628 mov r0, r5 435e: 47b8 blx r7 draw_dsc->border_side = lv_obj_get_style_border_side(obj, part); 4360: b2c0 uxtb r0, r0 4362: 8260 strh r0, [r4, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 4364: 4b89 ldr r3, [pc, #548] ; (458c ) 4366: 2239 movs r2, #57 ; 0x39 4368: 4631 mov r1, r6 436a: 4628 mov r0, r5 436c: 4798 blx r3 draw_dsc->border_color = lv_obj_get_style_border_color(obj, part); 436e: 81e0 strh r0, [r4, #14] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 4370: 2232 movs r2, #50 ; 0x32 4372: 4631 mov r1, r6 4374: 4628 mov r0, r5 4376: 47b8 blx r7 4378: 7560 strb r0, [r4, #21] if(draw_dsc->outline_opa != LV_OPA_TRANSP) { 437a: 7f23 ldrb r3, [r4, #28] 437c: b1e3 cbz r3, 43b8 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 437e: 2240 movs r2, #64 ; 0x40 4380: 4631 mov r1, r6 4382: 4628 mov r0, r5 4384: 47b8 blx r7 draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part); 4386: 8320 strh r0, [r4, #24] if(draw_dsc->outline_width) { 4388: b1b0 cbz r0, 43b8 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 438a: 224c movs r2, #76 ; 0x4c 438c: 4631 mov r1, r6 438e: 4628 mov r0, r5 4390: 47c0 blx r8 if(draw_dsc->outline_opa > LV_OPA_MIN) { 4392: 2805 cmp r0, #5 draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part); 4394: 7720 strb r0, [r4, #28] if(draw_dsc->outline_opa > LV_OPA_MIN) { 4396: d90a bls.n 43ae _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 4398: 2241 movs r2, #65 ; 0x41 439a: 4631 mov r1, r6 439c: 4628 mov r0, r5 439e: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 43a0: 4b7a ldr r3, [pc, #488] ; (458c ) draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part); 43a2: 8360 strh r0, [r4, #26] 43a4: 2249 movs r2, #73 ; 0x49 43a6: 4631 mov r1, r6 43a8: 4628 mov r0, r5 43aa: 4798 blx r3 draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part); 43ac: 82e0 strh r0, [r4, #22] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar) 43ae: 2242 movs r2, #66 ; 0x42 43b0: 4631 mov r1, r6 43b2: 4628 mov r0, r5 43b4: 47b8 blx r7 43b6: 7760 strb r0, [r4, #29] if(draw_dsc->pattern_opa != LV_OPA_TRANSP) { 43b8: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 43bc: 2b00 cmp r3, #0 43be: d03b beq.n 4438 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 43c0: f8df a1d4 ldr.w sl, [pc, #468] ; 4598 43c4: 226e movs r2, #110 ; 0x6e 43c6: 4631 mov r1, r6 43c8: 4628 mov r0, r5 43ca: 47d0 blx sl draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part); 43cc: 62e0 str r0, [r4, #44] ; 0x2c if(draw_dsc->pattern_image) { 43ce: 2800 cmp r0, #0 43d0: d032 beq.n 4438 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar) 43d2: 226c movs r2, #108 ; 0x6c 43d4: 4631 mov r1, r6 43d6: 4628 mov r0, r5 43d8: 47c0 blx r8 if(draw_dsc->pattern_opa > LV_OPA_MIN) { 43da: 2805 cmp r0, #5 draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part); 43dc: f884 0036 strb.w r0, [r4, #54] ; 0x36 if(draw_dsc->pattern_opa > LV_OPA_MIN) { 43e0: d92a bls.n 4438 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar) 43e2: 226d movs r2, #109 ; 0x6d 43e4: 4631 mov r1, r6 43e6: 4628 mov r0, r5 43e8: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar) 43ea: 2261 movs r2, #97 ; 0x61 draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part); 43ec: f884 0037 strb.w r0, [r4, #55] ; 0x37 43f0: 4631 mov r1, r6 43f2: 4628 mov r0, r5 43f4: 47b8 blx r7 draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part); 43f6: f894 3038 ldrb.w r3, [r4, #56] ; 0x38 43fa: 3800 subs r0, #0 43fc: bf18 it ne 43fe: 2001 movne r0, #1 4400: f360 0300 bfi r3, r0, #0, #1 4404: f884 3038 strb.w r3, [r4, #56] ; 0x38 if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) { 4408: 6ae0 ldr r0, [r4, #44] ; 0x2c 440a: 4b61 ldr r3, [pc, #388] ; (4590 ) 440c: 4798 blx r3 440e: 2802 cmp r0, #2 4410: f040 80ad bne.w 456e _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 4414: 4b5d ldr r3, [pc, #372] ; (458c ) 4416: 2269 movs r2, #105 ; 0x69 4418: 4631 mov r1, r6 441a: 4628 mov r0, r5 441c: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 441e: f248 028e movw r2, #32910 ; 0x808e draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 4422: 86a0 strh r0, [r4, #52] ; 0x34 4424: 4631 mov r1, r6 4426: 4628 mov r0, r5 4428: 47d0 blx sl draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part); 442a: 6320 str r0, [r4, #48] ; 0x30 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar) 442c: 2260 movs r2, #96 ; 0x60 442e: 4631 mov r1, r6 4430: 4628 mov r0, r5 4432: 47b8 blx r7 4434: f884 0039 strb.w r0, [r4, #57] ; 0x39 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 4438: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 443c: 2b05 cmp r3, #5 443e: d928 bls.n 4492 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 4440: 2250 movs r2, #80 ; 0x50 4442: 4631 mov r1, r6 4444: 4628 mov r0, r5 4446: 47b8 blx r7 draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part); 4448: 8420 strh r0, [r4, #32] if(draw_dsc->shadow_width) { 444a: b310 cbz r0, 4492 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 444c: 225c movs r2, #92 ; 0x5c 444e: 4631 mov r1, r6 4450: 4628 mov r0, r5 4452: 47c0 blx r8 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 4454: 2805 cmp r0, #5 draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part); 4456: f884 0028 strb.w r0, [r4, #40] ; 0x28 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 445a: d91a bls.n 4492 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 445c: 2251 movs r2, #81 ; 0x51 445e: 4631 mov r1, r6 4460: 4628 mov r0, r5 4462: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4464: 2252 movs r2, #82 ; 0x52 draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part); 4466: 8460 strh r0, [r4, #34] ; 0x22 4468: 4631 mov r1, r6 446a: 4628 mov r0, r5 446c: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 446e: 2253 movs r2, #83 ; 0x53 draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part); 4470: 84a0 strh r0, [r4, #36] ; 0x24 4472: 4631 mov r1, r6 4474: 4628 mov r0, r5 4476: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 4478: 4b44 ldr r3, [pc, #272] ; (458c ) draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part); 447a: 84e0 strh r0, [r4, #38] ; 0x26 447c: 2259 movs r2, #89 ; 0x59 447e: 4631 mov r1, r6 4480: 4628 mov r0, r5 4482: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar) 4484: 2254 movs r2, #84 ; 0x54 draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part); 4486: 83e0 strh r0, [r4, #30] 4488: 4631 mov r1, r6 448a: 4628 mov r0, r5 448c: 47b8 blx r7 448e: f884 0029 strb.w r0, [r4, #41] ; 0x29 if(draw_dsc->value_opa > LV_OPA_MIN) { 4492: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 4496: 2b05 cmp r3, #5 4498: d940 bls.n 451c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 449a: f8df a0fc ldr.w sl, [pc, #252] ; 4598 449e: 227f movs r2, #127 ; 0x7f 44a0: 4631 mov r1, r6 44a2: 4628 mov r0, r5 44a4: 47d0 blx sl draw_dsc->value_str = lv_obj_get_style_value_str(obj, part); 44a6: 63e0 str r0, [r4, #60] ; 0x3c if(draw_dsc->value_str) { 44a8: 2800 cmp r0, #0 44aa: d037 beq.n 451c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 44ac: 227c movs r2, #124 ; 0x7c 44ae: 4631 mov r1, r6 44b0: 4628 mov r0, r5 44b2: 47c0 blx r8 if(draw_dsc->value_opa > LV_OPA_MIN) { 44b4: 2805 cmp r0, #5 draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part); 44b6: f884 0044 strb.w r0, [r4, #68] ; 0x44 if(draw_dsc->value_opa > LV_OPA_MIN) { 44ba: d92f bls.n 451c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 44bc: 2273 movs r2, #115 ; 0x73 44be: 4631 mov r1, r6 44c0: 4628 mov r0, r5 44c2: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 44c4: 2274 movs r2, #116 ; 0x74 draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part); 44c6: f8a4 0048 strh.w r0, [r4, #72] ; 0x48 44ca: 4631 mov r1, r6 44cc: 4628 mov r0, r5 44ce: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 44d0: 4b2e ldr r3, [pc, #184] ; (458c ) draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part); 44d2: f8a4 004a strh.w r0, [r4, #74] ; 0x4a 44d6: 2279 movs r2, #121 ; 0x79 44d8: 4631 mov r1, r6 44da: 4628 mov r0, r5 44dc: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 44de: 227e movs r2, #126 ; 0x7e draw_dsc->value_color = lv_obj_get_style_value_color(obj, part); 44e0: f8a4 0046 strh.w r0, [r4, #70] ; 0x46 44e4: 4631 mov r1, r6 44e6: 4628 mov r0, r5 44e8: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 44ea: 2270 movs r2, #112 ; 0x70 draw_dsc->value_font = lv_obj_get_style_value_font(obj, part); 44ec: 6420 str r0, [r4, #64] ; 0x40 44ee: 4631 mov r1, r6 44f0: 4628 mov r0, r5 44f2: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t, _int, scalar) 44f4: 2271 movs r2, #113 ; 0x71 draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part); 44f6: f8a4 004c strh.w r0, [r4, #76] ; 0x4c 44fa: 4631 mov r1, r6 44fc: 4628 mov r0, r5 44fe: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 4500: 2275 movs r2, #117 ; 0x75 draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part); 4502: f8a4 004e strh.w r0, [r4, #78] ; 0x4e 4506: 4631 mov r1, r6 4508: 4628 mov r0, r5 450a: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t, _int, scalar) 450c: 2272 movs r2, #114 ; 0x72 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 450e: 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) 4512: 4631 mov r1, r6 4514: 4628 mov r0, r5 4516: 47b8 blx r7 4518: f884 0051 strb.w r0, [r4, #81] ; 0x51 if(opa_scale < LV_OPA_MAX) { 451c: f1b9 0ff9 cmp.w r9, #249 ; 0xf9 4520: f63f aede bhi.w 42e0 draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8; 4524: 7b23 ldrb r3, [r4, #12] 4526: fa1f f089 uxth.w r0, r9 452a: fb13 f300 smulbb r3, r3, r0 452e: f3c3 2307 ubfx r3, r3, #8, #8 4532: 7323 strb r3, [r4, #12] draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8; 4534: 7d23 ldrb r3, [r4, #20] 4536: fb13 f300 smulbb r3, r3, r0 453a: f3c3 2307 ubfx r3, r3, #8, #8 453e: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8; 4540: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 4544: fb13 f300 smulbb r3, r3, r0 4548: f3c3 2307 ubfx r3, r3, #8, #8 454c: f884 3028 strb.w r3, [r4, #40] ; 0x28 draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8; 4550: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 4554: fb13 f300 smulbb r3, r3, r0 4558: f3c3 2307 ubfx r3, r3, #8, #8 455c: f884 3036 strb.w r3, [r4, #54] ; 0x36 draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 4560: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 4564: fb13 f300 smulbb r3, r3, r0 4568: f3c3 2307 ubfx r3, r3, #8, #8 456c: e6b6 b.n 42dc else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) { 456e: f894 3037 ldrb.w r3, [r4, #55] ; 0x37 4572: 2b05 cmp r3, #5 4574: f67f af5a bls.w 442c _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 4578: 4b04 ldr r3, [pc, #16] ; (458c ) 457a: 2269 movs r2, #105 ; 0x69 457c: 4631 mov r1, r6 457e: 4628 mov r0, r5 4580: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 4582: 86a0 strh r0, [r4, #52] ; 0x34 4584: e752 b.n 442c 4586: bf00 nop 4588: 00003711 .word 0x00003711 458c: 000037b5 .word 0x000037b5 4590: 00007805 .word 0x00007805 4594: 00003839 .word 0x00003839 4598: 000038c9 .word 0x000038c9 0000459c : { 459c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(mode == LV_DESIGN_COVER_CHK) { 45a0: 2a02 cmp r2, #2 { 45a2: b099 sub sp, #100 ; 0x64 45a4: 4604 mov r4, r0 45a6: 460f mov r7, r1 45a8: 4615 mov r5, r2 if(mode == LV_DESIGN_COVER_CHK) { 45aa: d159 bne.n 4660 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 45ac: f8df 9230 ldr.w r9, [pc, #560] ; 47e0 45b0: 2100 movs r1, #0 45b2: 47c8 blx r9 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 45b4: 4606 mov r6, r0 45b6: 2800 cmp r0, #0 45b8: d150 bne.n 465c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 45ba: 4601 mov r1, r0 45bc: 2201 movs r2, #1 45be: 4620 mov r0, r4 45c0: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 45c2: 2204 movs r2, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 45c4: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 45c6: 4631 mov r1, r6 45c8: 4620 mov r0, r4 45ca: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 45cc: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 45ce: 4683 mov fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 45d0: 4631 mov r1, r6 45d2: 4620 mov r0, r4 45d4: 47c8 blx r9 lv_area_copy(&coords, &obj->coords); 45d6: 4b77 ldr r3, [pc, #476] ; (47b4 ) 45d8: 4680 mov r8, r0 45da: f104 0110 add.w r1, r4, #16 45de: a803 add r0, sp, #12 45e0: 4798 blx r3 coords.x1 -= w; 45e2: f8bd 300c ldrh.w r3, [sp, #12] coords.y1 -= h; 45e6: f8bd 200e ldrh.w r2, [sp, #14] coords.x1 -= w; 45ea: fa1f f08b uxth.w r0, fp 45ee: 1a1b subs r3, r3, r0 45f0: f8ad 300c strh.w r3, [sp, #12] coords.x2 += w; 45f4: f8bd 3010 ldrh.w r3, [sp, #16] 45f8: 4418 add r0, r3 coords.y1 -= h; 45fa: fa1f f388 uxth.w r3, r8 45fe: 1ad2 subs r2, r2, r3 4600: f8ad 200e strh.w r2, [sp, #14] coords.y2 += h; 4604: f8bd 2012 ldrh.w r2, [sp, #18] coords.x2 += w; 4608: f8ad 0010 strh.w r0, [sp, #16] coords.y2 += h; 460c: 4413 add r3, r2 460e: f8ad 3012 strh.w r3, [sp, #18] if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER; 4612: 4652 mov r2, sl 4614: 4b68 ldr r3, [pc, #416] ; (47b8 ) 4616: a903 add r1, sp, #12 4618: 4638 mov r0, r7 461a: 4798 blx r3 461c: b1d0 cbz r0, 4654 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 461e: 4f67 ldr r7, [pc, #412] ; (47bc ) 4620: 222c movs r2, #44 ; 0x2c 4622: 4631 mov r1, r6 4624: 4620 mov r0, r4 4626: 47b8 blx r7 if(lv_obj_get_style_bg_opa(obj, LV_OBJ_PART_MAIN) < LV_OPA_MAX) return LV_DESIGN_RES_NOT_COVER; 4628: 28f9 cmp r0, #249 ; 0xf9 462a: d913 bls.n 4654 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 462c: 4631 mov r1, r6 462e: 2220 movs r2, #32 4630: 4620 mov r0, r4 4632: 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; 4634: f010 01ff ands.w r1, r0, #255 ; 0xff 4638: d10c bne.n 4654 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 463a: 2232 movs r2, #50 ; 0x32 463c: 4620 mov r0, r4 463e: 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; 4640: f010 01ff ands.w r1, r0, #255 ; 0xff 4644: d106 bne.n 4654 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4646: f248 020c movw r2, #32780 ; 0x800c 464a: 4620 mov r0, r4 464c: 47b8 blx r7 return LV_DESIGN_RES_COVER; 464e: 28f9 cmp r0, #249 ; 0xf9 4650: bf88 it hi 4652: 2501 movhi r5, #1 } 4654: 4628 mov r0, r5 4656: b019 add sp, #100 ; 0x64 4658: 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; 465c: 2503 movs r5, #3 465e: e7f9 b.n 4654 else if(mode == LV_DESIGN_DRAW_MAIN) { 4660: 2a00 cmp r2, #0 4662: d156 bne.n 4712 lv_draw_rect_dsc_init(&draw_dsc); 4664: a803 add r0, sp, #12 4666: 4b56 ldr r3, [pc, #344] ; (47c0 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 4668: f8df 8174 ldr.w r8, [pc, #372] ; 47e0 466c: 4798 blx r3 466e: 2233 movs r2, #51 ; 0x33 4670: 4629 mov r1, r5 4672: 4620 mov r0, r4 4674: 47c0 blx r8 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 4676: b108 cbz r0, 467c draw_dsc.border_opa = LV_OPA_TRANSP; 4678: f88d 5020 strb.w r5, [sp, #32] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 467c: 4b51 ldr r3, [pc, #324] ; (47c4 ) 467e: aa03 add r2, sp, #12 4680: 2100 movs r1, #0 4682: 4620 mov r0, r4 4684: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4686: 2204 movs r2, #4 4688: 2100 movs r1, #0 468a: 4620 mov r0, r4 468c: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 468e: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4690: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4692: 2100 movs r1, #0 4694: 4620 mov r0, r4 4696: 47c0 blx r8 lv_area_copy(&coords, &obj->coords); 4698: f104 0910 add.w r9, r4, #16 469c: 4b45 ldr r3, [pc, #276] ; (47b4 ) 469e: 4682 mov sl, r0 46a0: 4649 mov r1, r9 46a2: a801 add r0, sp, #4 46a4: 4798 blx r3 coords.x1 -= w; 46a6: f8bd 2004 ldrh.w r2, [sp, #4] 46aa: b2b3 uxth r3, r6 46ac: 1ad2 subs r2, r2, r3 46ae: f8ad 2004 strh.w r2, [sp, #4] coords.x2 += w; 46b2: f8bd 2008 ldrh.w r2, [sp, #8] 46b6: 4413 add r3, r2 46b8: f8ad 3008 strh.w r3, [sp, #8] coords.y1 -= h; 46bc: f8bd 3006 ldrh.w r3, [sp, #6] 46c0: fa1f f08a uxth.w r0, sl 46c4: 1a1b subs r3, r3, r0 46c6: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 46ca: f8bd 300a ldrh.w r3, [sp, #10] 46ce: 4418 add r0, r3 46d0: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 46d4: aa03 add r2, sp, #12 46d6: 4639 mov r1, r7 46d8: a801 add r0, sp, #4 46da: 4b3b ldr r3, [pc, #236] ; (47c8 ) 46dc: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 46de: 2202 movs r2, #2 46e0: 2100 movs r1, #0 46e2: 4620 mov r0, r4 46e4: 47c0 blx r8 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 46e6: 2800 cmp r0, #0 46e8: d0b4 beq.n 4654 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 46ea: 4b38 ldr r3, [pc, #224] ; (47cc ) lv_draw_mask_radius_init(mp, &obj->coords, r, false); 46ec: 4f38 ldr r7, [pc, #224] ; (47d0 ) lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 46ee: 201c movs r0, #28 46f0: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 46f2: 2201 movs r2, #1 46f4: 4606 mov r6, r0 46f6: 2100 movs r1, #0 46f8: 4620 mov r0, r4 46fa: 47c0 blx r8 lv_draw_mask_radius_init(mp, &obj->coords, r, false); 46fc: 4649 mov r1, r9 46fe: 4602 mov r2, r0 4700: 2300 movs r3, #0 4702: 4630 mov r0, r6 4704: 47b8 blx r7 lv_draw_mask_add(mp, obj + 8); 4706: 4b33 ldr r3, [pc, #204] ; (47d4 ) 4708: f504 7118 add.w r1, r4, #608 ; 0x260 470c: 4630 mov r0, r6 470e: 4798 blx r3 4710: e7a0 b.n 4654 else if(mode == LV_DESIGN_DRAW_POST) { 4712: 2a01 cmp r2, #1 4714: d001 beq.n 471a return LV_DESIGN_RES_OK; 4716: 2500 movs r5, #0 4718: e79c b.n 4654 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 471a: f8df 80c4 ldr.w r8, [pc, #196] ; 47e0 471e: 2202 movs r2, #2 4720: 2100 movs r1, #0 4722: 47c0 blx r8 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 4724: b128 cbz r0, 4732 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); 4726: 4b2c ldr r3, [pc, #176] ; (47d8 ) 4728: f504 7018 add.w r0, r4, #608 ; 0x260 472c: 4798 blx r3 _lv_mem_buf_release(param); 472e: 4b2b ldr r3, [pc, #172] ; (47dc ) 4730: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 4732: 2233 movs r2, #51 ; 0x33 4734: 2100 movs r1, #0 4736: 4620 mov r0, r4 4738: 47c0 blx r8 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 473a: 2800 cmp r0, #0 473c: d0eb beq.n 4716 draw_dsc.bg_opa = LV_OPA_TRANSP; 473e: 2500 movs r5, #0 lv_draw_rect_dsc_init(&draw_dsc); 4740: a803 add r0, sp, #12 4742: 4b1f ldr r3, [pc, #124] ; (47c0 ) 4744: 4798 blx r3 lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 4746: 4b1f ldr r3, [pc, #124] ; (47c4 ) draw_dsc.bg_opa = LV_OPA_TRANSP; 4748: f88d 5018 strb.w r5, [sp, #24] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 474c: aa03 add r2, sp, #12 474e: 4629 mov r1, r5 4750: 4620 mov r0, r4 draw_dsc.pattern_opa = LV_OPA_TRANSP; 4752: f88d 5042 strb.w r5, [sp, #66] ; 0x42 draw_dsc.shadow_opa = LV_OPA_TRANSP; 4756: f88d 5034 strb.w r5, [sp, #52] ; 0x34 lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 475a: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 475c: 4629 mov r1, r5 475e: 2204 movs r2, #4 4760: 4620 mov r0, r4 4762: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4764: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4766: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4768: 4629 mov r1, r5 476a: 4620 mov r0, r4 476c: 47c0 blx r8 lv_area_copy(&coords, &obj->coords); 476e: f104 0110 add.w r1, r4, #16 4772: 4680 mov r8, r0 4774: 4b0f ldr r3, [pc, #60] ; (47b4 ) 4776: a801 add r0, sp, #4 4778: 4798 blx r3 coords.x1 -= w; 477a: f8bd 2004 ldrh.w r2, [sp, #4] 477e: b2b3 uxth r3, r6 4780: 1ad2 subs r2, r2, r3 4782: f8ad 2004 strh.w r2, [sp, #4] coords.x2 += w; 4786: f8bd 2008 ldrh.w r2, [sp, #8] 478a: 4413 add r3, r2 478c: f8ad 3008 strh.w r3, [sp, #8] coords.y1 -= h; 4790: f8bd 3006 ldrh.w r3, [sp, #6] 4794: fa1f f088 uxth.w r0, r8 4798: 1a1b subs r3, r3, r0 479a: f8ad 3006 strh.w r3, [sp, #6] coords.y2 += h; 479e: f8bd 300a ldrh.w r3, [sp, #10] 47a2: 4418 add r0, r3 47a4: f8ad 000a strh.w r0, [sp, #10] lv_draw_rect(&coords, clip_area, &draw_dsc); 47a8: 4b07 ldr r3, [pc, #28] ; (47c8 ) 47aa: aa03 add r2, sp, #12 47ac: 4639 mov r1, r7 47ae: a801 add r0, sp, #4 47b0: 4798 blx r3 47b2: e74f b.n 4654 47b4: 00001d19 .word 0x00001d19 47b8: 0000e091 .word 0x0000e091 47bc: 00003839 .word 0x00003839 47c0: 00009ba1 .word 0x00009ba1 47c4: 000042a9 .word 0x000042a9 47c8: 00009bed .word 0x00009bed 47cc: 0000eeb5 .word 0x0000eeb5 47d0: 00009915 .word 0x00009915 47d4: 00009711 .word 0x00009711 47d8: 000097c9 .word 0x000097c9 47dc: 0000eb69 .word 0x0000eb69 47e0: 00003711 .word 0x00003711 000047e4 : { 47e4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 47e8: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar) 47ea: 4f28 ldr r7, [pc, #160] ; (488c ) 47ec: f248 028c movw r2, #32908 ; 0x808c 47f0: 4605 mov r5, r0 47f2: 460e mov r6, r1 47f4: 47b8 blx r7 if(draw_dsc->opa <= LV_OPA_MIN) return; 47f6: 2805 cmp r0, #5 draw_dsc->opa = lv_obj_get_style_text_opa(obj, part); 47f8: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 47fa: d945 bls.n 4888 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 47fc: f248 020c movw r2, #32780 ; 0x800c 4800: 4631 mov r1, r6 4802: 4628 mov r0, r5 4804: 47b8 blx r7 if(opa_scale < LV_OPA_MAX) { 4806: 28f9 cmp r0, #249 ; 0xf9 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 4808: bf9f itttt ls 480a: 7a23 ldrbls r3, [r4, #8] 480c: fb13 f000 smulbbls r0, r3, r0 4810: f3c0 2007 ubfxls r0, r0, #8, #8 4814: 7220 strbls r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 4816: 7a23 ldrb r3, [r4, #8] 4818: 2b05 cmp r3, #5 481a: d935 bls.n 4888 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 481c: f248 0289 movw r2, #32905 ; 0x8089 4820: 4631 mov r1, r6 4822: f8df 8074 ldr.w r8, [pc, #116] ; 4898 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 4826: 4f1a ldr r7, [pc, #104] ; (4890 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 4828: 4628 mov r0, r5 482a: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 482c: f248 0280 movw r2, #32896 ; 0x8080 draw_dsc->color = lv_obj_get_style_text_color(obj, part); 4830: 8020 strh r0, [r4, #0] 4832: 4631 mov r1, r6 4834: 4628 mov r0, r5 4836: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 4838: f248 0281 movw r2, #32897 ; 0x8081 draw_dsc->letter_space = lv_obj_get_style_text_letter_space(obj, part); 483c: 81a0 strh r0, [r4, #12] 483e: 4631 mov r1, r6 4840: 4628 mov r0, r5 4842: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 4844: f248 0282 movw r2, #32898 ; 0x8082 draw_dsc->line_space = lv_obj_get_style_text_line_space(obj, part); 4848: 8160 strh r0, [r4, #10] 484a: 4631 mov r1, r6 484c: 4628 mov r0, r5 484e: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 4850: f248 0283 movw r2, #32899 ; 0x8083 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 4854: 7620 strb r0, [r4, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 4856: 4631 mov r1, r6 4858: 4628 mov r0, r5 485a: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 485c: 4b0d ldr r3, [pc, #52] ; (4894 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 485e: 7660 strb r0, [r4, #25] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 4860: f248 028e movw r2, #32910 ; 0x808e 4864: 4631 mov r1, r6 4866: 4628 mov r0, r5 4868: 4798 blx r3 if(draw_dsc->sel_start != LV_DRAW_LABEL_NO_TXT_SEL && draw_dsc->sel_end != LV_DRAW_LABEL_NO_TXT_SEL) { 486a: 89e2 ldrh r2, [r4, #14] draw_dsc->font = lv_obj_get_style_text_font(obj, part); 486c: 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) { 486e: f64f 73ff movw r3, #65535 ; 0xffff 4872: 429a cmp r2, r3 4874: d008 beq.n 4888 4876: 8a22 ldrh r2, [r4, #16] 4878: 429a cmp r2, r3 487a: d005 beq.n 4888 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar) 487c: f248 028a movw r2, #32906 ; 0x808a 4880: 4631 mov r1, r6 4882: 4628 mov r0, r5 4884: 47c0 blx r8 draw_dsc->color = lv_obj_get_style_text_sel_color(obj, part); 4886: 8020 strh r0, [r4, #0] } 4888: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} 488c: 00003839 .word 0x00003839 4890: 00003711 .word 0x00003711 4894: 000038c9 .word 0x000038c9 4898: 000037b5 .word 0x000037b5 0000489c : { 489c: b5f8 push {r3, r4, r5, r6, r7, lr} 489e: 4614 mov r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 48a0: 4f23 ldr r7, [pc, #140] ; (4930 ) 48a2: f248 02ac movw r2, #32940 ; 0x80ac 48a6: 4605 mov r5, r0 48a8: 460e mov r6, r1 48aa: 47b8 blx r7 if(draw_dsc->opa <= LV_OPA_MIN) return; 48ac: 2805 cmp r0, #5 draw_dsc->opa = lv_obj_get_style_image_opa(obj, part); 48ae: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 48b0: d93c bls.n 492c _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 48b2: f248 020c movw r2, #32780 ; 0x800c 48b6: 4631 mov r1, r6 48b8: 4628 mov r0, r5 48ba: 47b8 blx r7 if(opa_scale < LV_OPA_MAX) { 48bc: 28f9 cmp r0, #249 ; 0xf9 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 48be: bf9f itttt ls 48c0: 7823 ldrbls r3, [r4, #0] 48c2: fb13 f000 smulbbls r0, r3, r0 48c6: f3c0 2007 ubfxls r0, r0, #8, #8 48ca: 7020 strbls r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 48cc: 7823 ldrb r3, [r4, #0] 48ce: 2b05 cmp r3, #5 48d0: d92c bls.n 492c draw_dsc->angle = 0; 48d2: 2300 movs r3, #0 48d4: 8063 strh r3, [r4, #2] draw_dsc->zoom = LV_IMG_ZOOM_NONE; 48d6: f44f 7380 mov.w r3, #256 ; 0x100 48da: 8123 strh r3, [r4, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 48dc: 8aab ldrh r3, [r5, #20] 48de: 8a2a ldrh r2, [r5, #16] 48e0: 3301 adds r3, #1 48e2: 1a9b subs r3, r3, r2 draw_dsc->pivot.x = lv_area_get_width(&obj->coords) / 2; 48e4: f3c3 32c0 ubfx r2, r3, #15, #1 48e8: fa02 f383 sxtah r3, r2, r3 48ec: 105b asrs r3, r3, #1 48ee: 80a3 strh r3, [r4, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 48f0: 8aeb ldrh r3, [r5, #22] 48f2: 8a6a ldrh r2, [r5, #18] 48f4: 3301 adds r3, #1 48f6: 1a9b subs r3, r3, r2 draw_dsc->pivot.y = lv_area_get_height(&obj->coords) / 2; 48f8: f3c3 32c0 ubfx r2, r3, #15, #1 48fc: fa02 f383 sxtah r3, r2, r3 4900: 105b asrs r3, r3, #1 4902: 80e3 strh r3, [r4, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) 4904: f248 02ad movw r2, #32941 ; 0x80ad 4908: 4631 mov r1, r6 490a: 4628 mov r0, r5 490c: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 490e: 4b09 ldr r3, [pc, #36] ; (4934 ) draw_dsc->recolor_opa = lv_obj_get_style_image_recolor_opa(obj, part); 4910: 72a0 strb r0, [r4, #10] 4912: f248 02a9 movw r2, #32937 ; 0x80a9 4916: 4631 mov r1, r6 4918: 4628 mov r0, r5 491a: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) 491c: 4b06 ldr r3, [pc, #24] ; (4938 ) draw_dsc->recolor = lv_obj_get_style_image_recolor(obj, part); 491e: 81a0 strh r0, [r4, #12] 4920: f248 02a0 movw r2, #32928 ; 0x80a0 4924: 4631 mov r1, r6 4926: 4628 mov r0, r5 4928: 4798 blx r3 492a: 73a0 strb r0, [r4, #14] } 492c: bdf8 pop {r3, r4, r5, r6, r7, pc} 492e: bf00 nop 4930: 00003839 .word 0x00003839 4934: 000037b5 .word 0x000037b5 4938: 00003711 .word 0x00003711 0000493c : { 493c: 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) 4940: 2250 movs r2, #80 ; 0x50 4942: 4f75 ldr r7, [pc, #468] ; (4b18 ) 4944: b08a sub sp, #40 ; 0x28 4946: 4604 mov r4, r0 4948: 460e mov r6, r1 494a: 47b8 blx r7 if(sh_width) { 494c: 4605 mov r5, r0 494e: 2800 cmp r0, #0 4950: f040 80b4 bne.w 4abc lv_coord_t s = 0; 4954: 2500 movs r5, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 4956: f8df a1c8 ldr.w sl, [pc, #456] ; 4b20 495a: 227f movs r2, #127 ; 0x7f 495c: 4631 mov r1, r6 495e: 4620 mov r0, r4 4960: 47d0 blx sl if(value_str) { 4962: 4680 mov r8, r0 4964: 2800 cmp r0, #0 4966: d07e beq.n 4a66 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 4968: 4b6c ldr r3, [pc, #432] ; (4b1c ) 496a: 227c movs r2, #124 ; 0x7c 496c: 4631 mov r1, r6 496e: 4620 mov r0, r4 4970: 4798 blx r3 if(value_opa > LV_OPA_MIN) { 4972: 2805 cmp r0, #5 4974: d977 bls.n 4a66 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 4976: 2270 movs r2, #112 ; 0x70 4978: 4631 mov r1, r6 497a: 4620 mov r0, r4 497c: 47b8 blx r7 497e: 2270 movs r2, #112 ; 0x70 4980: 9005 str r0, [sp, #20] 4982: 4631 mov r1, r6 4984: 4620 mov r0, r4 4986: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 4988: 227e movs r2, #126 ; 0x7e _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 498a: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 498c: 4631 mov r1, r6 498e: 4620 mov r0, r4 4990: 47d0 blx sl _lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE); 4992: f04f 0a00 mov.w sl, #0 4996: f647 4118 movw r1, #31768 ; 0x7c18 499a: e9cd 1a01 strd r1, sl, [sp, #4] 499e: 4602 mov r2, r0 49a0: 4641 mov r1, r8 49a2: 9b05 ldr r3, [sp, #20] 49a4: f8df 817c ldr.w r8, [pc, #380] ; 4b24 49a8: f8cd 9000 str.w r9, [sp] 49ac: a806 add r0, sp, #24 49ae: 47c0 blx r8 value_area.x2 = txt_size.x - 1; 49b0: f8bd 3018 ldrh.w r3, [sp, #24] value_area.x1 = 0; 49b4: f8cd a020 str.w sl, [sp, #32] value_area.x2 = txt_size.x - 1; 49b8: 3b01 subs r3, #1 49ba: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 value_area.y2 = txt_size.y - 1; 49be: f8bd 301a ldrh.w r3, [sp, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 49c2: 2275 movs r2, #117 ; 0x75 49c4: 3b01 subs r3, #1 49c6: 4631 mov r1, r6 49c8: 4620 mov r0, r4 49ca: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 49ce: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49d0: 2273 movs r2, #115 ; 0x73 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 49d2: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49d4: 4631 mov r1, r6 49d6: 4620 mov r0, r4 49d8: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 49da: 2274 movs r2, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49dc: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 49de: 4631 mov r1, r6 49e0: 4620 mov r0, r4 49e2: 47b8 blx r7 _lv_area_align(&obj->coords, &value_area, align, &p_align); 49e4: fa5f f28a uxtb.w r2, sl 49e8: 4680 mov r8, r0 49ea: ab07 add r3, sp, #28 49ec: a908 add r1, sp, #32 49ee: f104 0010 add.w r0, r4, #16 49f2: f8df a134 ldr.w sl, [pc, #308] ; 4b28 49f6: 47d0 blx sl value_area.y1 += p_align.y + yofs; 49f8: f8bd 201e ldrh.w r2, [sp, #30] value_area.x1 += p_align.x + xofs; 49fc: f8bd 301c ldrh.w r3, [sp, #28] s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 4a00: f9b4 1010 ldrsh.w r1, [r4, #16] value_area.y1 += p_align.y + yofs; 4a04: eb08 0002 add.w r0, r8, r2 value_area.x1 += p_align.x + xofs; 4a08: f8bd 2020 ldrh.w r2, [sp, #32] 4a0c: 444b add r3, r9 4a0e: fa12 f283 uxtah r2, r2, r3 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 4a12: b212 sxth r2, r2 4a14: 1a89 subs r1, r1, r2 4a16: 42a9 cmp r1, r5 4a18: bfb8 it lt 4a1a: 4629 movlt r1, r5 value_area.y1 += p_align.y + yofs; 4a1c: f8bd 5022 ldrh.w r5, [sp, #34] ; 0x22 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 4a20: f9b4 2012 ldrsh.w r2, [r4, #18] value_area.y1 += p_align.y + yofs; 4a24: fa15 f580 uxtah r5, r5, r0 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 4a28: b22d sxth r5, r5 4a2a: 1b52 subs r2, r2, r5 4a2c: b209 sxth r1, r1 4a2e: 428a cmp r2, r1 4a30: bfb8 it lt 4a32: 460a movlt r2, r1 value_area.x2 += p_align.x + xofs; 4a34: f8bd 1024 ldrh.w r1, [sp, #36] ; 0x24 4a38: fa11 f383 uxtah r3, r1, r3 s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2); 4a3c: f9b4 1014 ldrsh.w r1, [r4, #20] 4a40: b21b sxth r3, r3 4a42: 1a5b subs r3, r3, r1 4a44: b212 sxth r2, r2 4a46: 4293 cmp r3, r2 4a48: bfb8 it lt 4a4a: 4613 movlt r3, r2 value_area.y2 += p_align.y + yofs; 4a4c: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 4a50: fa12 f080 uxtah r0, r2, r0 s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2); 4a54: f9b4 2016 ldrsh.w r2, [r4, #22] 4a58: b200 sxth r0, r0 4a5a: 1a80 subs r0, r0, r2 4a5c: b21b sxth r3, r3 4a5e: 4298 cmp r0, r3 4a60: bfb8 it lt 4a62: 4618 movlt r0, r3 4a64: b205 sxth r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 4a66: 2240 movs r2, #64 ; 0x40 4a68: 4631 mov r1, r6 4a6a: 4620 mov r0, r4 4a6c: 47b8 blx r7 if(outline_width) { 4a6e: 4680 mov r8, r0 4a70: b178 cbz r0, 4a92 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 4a72: 4b2a ldr r3, [pc, #168] ; (4b1c ) 4a74: 224c movs r2, #76 ; 0x4c 4a76: 4631 mov r1, r6 4a78: 4620 mov r0, r4 4a7a: 4798 blx r3 if(outline_opa > LV_OPA_MIN) { 4a7c: 2805 cmp r0, #5 4a7e: d908 bls.n 4a92 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 4a80: 2241 movs r2, #65 ; 0x41 4a82: 4631 mov r1, r6 4a84: 4620 mov r0, r4 4a86: 47b8 blx r7 s = LV_MATH_MAX(s, outline_pad + outline_width); 4a88: 4440 add r0, r8 4a8a: 42a8 cmp r0, r5 4a8c: bfb8 it lt 4a8e: 4628 movlt r0, r5 4a90: b205 sxth r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4a92: 4631 mov r1, r6 4a94: 2204 movs r2, #4 4a96: 4620 mov r0, r4 4a98: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4a9a: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4a9c: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4a9e: 4631 mov r1, r6 4aa0: 4620 mov r0, r4 4aa2: 47b8 blx r7 lv_coord_t wh = LV_MATH_MAX(w, h); 4aa4: 4540 cmp r0, r8 4aa6: bfb8 it lt 4aa8: 4640 movlt r0, r8 4aaa: b200 sxth r0, r0 if(wh > 0) s += wh; 4aac: 2800 cmp r0, #0 4aae: bfc4 itt gt 4ab0: 1940 addgt r0, r0, r5 4ab2: b205 sxthgt r5, r0 } 4ab4: 4628 mov r0, r5 4ab6: b00a add sp, #40 ; 0x28 4ab8: 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) 4abc: 4b17 ldr r3, [pc, #92] ; (4b1c ) 4abe: 225c movs r2, #92 ; 0x5c 4ac0: 4631 mov r1, r6 4ac2: 4620 mov r0, r4 4ac4: 4798 blx r3 if(sh_opa > LV_OPA_MIN) { 4ac6: 2805 cmp r0, #5 4ac8: f67f af44 bls.w 4954 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 4acc: 2253 movs r2, #83 ; 0x53 4ace: 4631 mov r1, r6 4ad0: 4620 mov r0, r4 4ad2: 47b8 blx r7 sh_width = sh_width / 2; /*THe blur adds only half width*/ 4ad4: eb05 75d5 add.w r5, r5, r5, lsr #31 sh_width++; 4ad8: 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) 4adc: 2251 movs r2, #81 ; 0x51 4ade: 4631 mov r1, r6 4ae0: 4620 mov r0, r4 4ae2: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4ae4: 2252 movs r2, #82 ; 0x52 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 4ae6: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4ae8: 4631 mov r1, r6 4aea: 4620 mov r0, r4 4aec: 47b8 blx r7 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 4aee: 2800 cmp r0, #0 4af0: bfb8 it lt 4af2: 4240 neglt r0, r0 4af4: f1b8 0f00 cmp.w r8, #0 4af8: bfb8 it lt 4afa: f1c8 0800 rsblt r8, r8, #0 sh_width += lv_obj_get_style_shadow_spread(obj, part); 4afe: 3501 adds r5, #1 4b00: b2ad uxth r5, r5 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 4b02: b280 uxth r0, r0 4b04: fa1f f888 uxth.w r8, r8 4b08: 4540 cmp r0, r8 4b0a: bf2c ite cs 4b0c: 182d addcs r5, r5, r0 4b0e: 4445 addcc r5, r8 s = LV_MATH_MAX(s, sh_width); 4b10: b22d sxth r5, r5 4b12: ea25 75e5 bic.w r5, r5, r5, asr #31 4b16: e71e b.n 4956 4b18: 00003711 .word 0x00003711 4b1c: 00003839 .word 0x00003839 4b20: 000038c9 .word 0x000038c9 4b24: 0001019d .word 0x0001019d 4b28: 0000e131 .word 0x0000e131 00004b2c : { 4b2c: b570 push {r4, r5, r6, lr} 4b2e: 4605 mov r5, r0 4b30: 4610 mov r0, r2 4b32: 2917 cmp r1, #23 4b34: d811 bhi.n 4b5a 4b36: e8df f001 tbb [pc, r1] 4b3a: 1a55 .short 0x1a55 4b3c: 10372e10 .word 0x10372e10 4b40: 100c1523 .word 0x100c1523 4b44: 40103b10 .word 0x40103b10 4b48: 10101040 .word 0x10101040 4b4c: 10101010 .word 0x10101010 4b50: 5344 .short 0x5344 if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list; 4b52: 7813 ldrb r3, [r2, #0] 4b54: b91b cbnz r3, 4b5e 4b56: 3528 adds r5, #40 ; 0x28 4b58: 6055 str r5, [r2, #4] lv_res_t res = LV_RES_OK; 4b5a: 2401 movs r4, #1 4b5c: e00e b.n 4b7c else info->result = NULL; 4b5e: 2300 movs r3, #0 4b60: 6053 str r3, [r2, #4] 4b62: e7fa b.n 4b5a } 4b64: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 4b68: 4920 ldr r1, [pc, #128] ; (4bec ) 4b6a: 4b21 ldr r3, [pc, #132] ; (4bf0 ) 4b6c: 4718 bx r3 if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV; 4b6e: 4b21 ldr r3, [pc, #132] ; (4bf4 ) 4b70: 2101 movs r1, #1 4b72: 4628 mov r0, r5 4b74: 4798 blx r3 4b76: f080 0001 eor.w r0, r0, #1 return LV_RES_OK; 4b7a: b2c4 uxtb r4, r0 } 4b7c: 4620 mov r0, r4 4b7e: bd70 pop {r4, r5, r6, pc} lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN); 4b80: 4b1d ldr r3, [pc, #116] ; (4bf8 ) 4b82: 2100 movs r1, #0 4b84: 4628 mov r0, r5 4b86: 4798 blx r3 obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d); 4b88: f9b5 3032 ldrsh.w r3, [r5, #50] ; 0x32 4b8c: 4298 cmp r0, r3 4b8e: bfb8 it lt 4b90: 4618 movlt r0, r3 4b92: 8668 strh r0, [r5, #50] ; 0x32 4b94: e7e1 b.n 4b5a if(obj->realign.auto_realign) { 4b96: f895 4049 ldrb.w r4, [r5, #73] ; 0x49 4b9a: f014 0401 ands.w r4, r4, #1 4b9e: d0dc beq.n 4b5a lv_obj_realign(obj); 4ba0: 4b16 ldr r3, [pc, #88] ; (4bfc ) 4ba2: 4628 mov r0, r5 4ba4: 4798 blx r3 4ba6: e7e9 b.n 4b7c lv_obj_refresh_ext_draw_pad(obj); 4ba8: 4b15 ldr r3, [pc, #84] ; (4c00 ) 4baa: 4628 mov r0, r5 4bac: 4798 blx r3 4bae: e7d4 b.n 4b5a lv_obj_add_state(obj, LV_STATE_PRESSED); 4bb0: 4b14 ldr r3, [pc, #80] ; (4c04 ) 4bb2: 2110 movs r1, #16 4bb4: 4628 mov r0, r5 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 4bb6: 4798 blx r3 4bb8: e7cf b.n 4b5a lv_obj_clear_state(obj, LV_STATE_PRESSED); 4bba: 2110 movs r1, #16 lv_obj_clear_state(obj, LV_STATE_EDITED); 4bbc: 4b12 ldr r3, [pc, #72] ; (4c08 ) 4bbe: 4628 mov r0, r5 4bc0: e7f9 b.n 4bb6 if(lv_group_get_editing(lv_obj_get_group(obj))) { 4bc2: 4b12 ldr r3, [pc, #72] ; (4c0c ) 4bc4: 4628 mov r0, r5 4bc6: 4798 blx r3 4bc8: 4b11 ldr r3, [pc, #68] ; (4c10 ) 4bca: 4798 blx r3 4bcc: 4b0d ldr r3, [pc, #52] ; (4c04 ) 4bce: b110 cbz r0, 4bd6 lv_obj_add_state(obj, state); 4bd0: 2106 movs r1, #6 4bd2: 4628 mov r0, r5 4bd4: e7ef b.n 4bb6 lv_obj_add_state(obj, LV_STATE_FOCUSED); 4bd6: 2102 movs r1, #2 4bd8: 4628 mov r0, r5 4bda: 4798 blx r3 lv_obj_clear_state(obj, LV_STATE_EDITED); 4bdc: 2104 movs r1, #4 4bde: e7ed b.n 4bbc lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 4be0: 2106 movs r1, #6 4be2: e7eb b.n 4bbc lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 4be4: 4b0b ldr r3, [pc, #44] ; (4c14 ) 4be6: 2100 movs r1, #0 4be8: 4628 mov r0, r5 4bea: e7e4 b.n 4bb6 4bec: 0001f05b .word 0x0001f05b 4bf0: 0000428d .word 0x0000428d 4bf4: 00003651 .word 0x00003651 4bf8: 0000493d .word 0x0000493d 4bfc: 00002ce9 .word 0x00002ce9 4c00: 000020d1 .word 0x000020d1 4c04: 00003e99 .word 0x00003e99 4c08: 00003efd .word 0x00003efd 4c0c: 00003ff1 .word 0x00003ff1 4c10: 00001c1b .word 0x00001c1b 4c14: 00002549 .word 0x00002549 00004c18 : /** * Flush the content of the VDB */ static void lv_refr_vdb_flush(void) { 4c18: b538 push {r3, r4, r5, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4c1a: 4d17 ldr r5, [pc, #92] ; (4c78 ) 4c1c: 4b17 ldr r3, [pc, #92] ; (4c7c ) 4c1e: 6828 ldr r0, [r5, #0] 4c20: 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)) { 4c22: 4b17 ldr r3, [pc, #92] ; (4c80 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4c24: 4604 mov r4, r0 if(lv_disp_is_double_buf(disp_refr)) { 4c26: 6828 ldr r0, [r5, #0] 4c28: 4798 blx r3 4c2a: b958 cbnz r0, 4c44 } } vdb->flushing = 1; if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c2c: 6828 ldr r0, [r5, #0] vdb->flushing = 1; 4c2e: 2301 movs r3, #1 if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c30: 6842 ldr r2, [r0, #4] vdb->flushing = 1; 4c32: 61a3 str r3, [r4, #24] if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c34: 6a11 ldr r1, [r2, #32] 4c36: 07c9 lsls r1, r1, #31 4c38: d409 bmi.n 4c4e else vdb->flushing_last = 0; 4c3a: 2300 movs r3, #0 4c3c: e00a b.n 4c54 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 4c3e: 69c3 ldr r3, [r0, #28] 4c40: b10b cbz r3, 4c46 4c42: 4798 blx r3 4c44: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 4c46: 69a3 ldr r3, [r4, #24] 4c48: 2b00 cmp r3, #0 4c4a: d1f8 bne.n 4c3e 4c4c: e7ee b.n 4c2c if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 4c4e: 6a12 ldr r2, [r2, #32] 4c50: 0792 lsls r2, r2, #30 4c52: d5f2 bpl.n 4c3a else vdb->flushing_last = 0; 4c54: 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); 4c56: 68c3 ldr r3, [r0, #12] 4c58: b11b cbz r3, 4c62 4c5a: 68a2 ldr r2, [r4, #8] 4c5c: f104 0110 add.w r1, r4, #16 4c60: 4798 blx r3 if(vdb->buf1 && vdb->buf2) { 4c62: 6822 ldr r2, [r4, #0] 4c64: b132 cbz r2, 4c74 4c66: 6863 ldr r3, [r4, #4] 4c68: b123 cbz r3, 4c74 if(vdb->buf_act == vdb->buf1) 4c6a: 68a1 ldr r1, [r4, #8] vdb->buf_act = vdb->buf2; 4c6c: 428a cmp r2, r1 4c6e: bf18 it ne 4c70: 4613 movne r3, r2 4c72: 60a3 str r3, [r4, #8] else vdb->buf_act = vdb->buf1; } } 4c74: bd38 pop {r3, r4, r5, pc} 4c76: bf00 nop 4c78: 20008100 .word 0x20008100 4c7c: 0000d9e1 .word 0x0000d9e1 4c80: 0000d9e5 .word 0x0000d9e5 00004c84 : { 4c84: 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) { 4c88: 2200 movs r2, #0 { 4c8a: 460c mov r4, r1 if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 4c8c: 4b17 ldr r3, [pc, #92] ; (4cec ) 4c8e: 3110 adds r1, #16 { 4c90: 4607 mov r7, r0 if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) { 4c92: 4798 blx r3 4c94: b910 cbnz r0, 4c9c lv_obj_t * found_p = NULL; 4c96: 2000 movs r0, #0 } 4c98: 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) { 4c9c: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 4ca0: 06db lsls r3, r3, #27 4ca2: d4f8 bmi.n 4c96 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 4ca4: 6a23 ldr r3, [r4, #32] 4ca6: b19b cbz r3, 4cd0 4ca8: 2202 movs r2, #2 4caa: 4639 mov r1, r7 4cac: 4620 mov r0, r4 4cae: 4798 blx r3 if(design_res == LV_DESIGN_RES_MASKED) return NULL; 4cb0: 2803 cmp r0, #3 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 4cb2: 4606 mov r6, r0 if(design_res == LV_DESIGN_RES_MASKED) return NULL; 4cb4: d0ef beq.n 4c96 _LV_LL_READ(obj->child_ll, i) { 4cb6: f104 0804 add.w r8, r4, #4 4cba: 4b0d ldr r3, [pc, #52] ; (4cf0 ) 4cbc: f8df 9034 ldr.w r9, [pc, #52] ; 4cf4 4cc0: 4640 mov r0, r8 4cc2: 4798 blx r3 4cc4: 4605 mov r5, r0 4cc6: b92d cbnz r5, 4cd4 if(design_res == LV_DESIGN_RES_COVER) { 4cc8: 2e01 cmp r6, #1 4cca: d1e4 bne.n 4c96 4ccc: 4620 mov r0, r4 4cce: e7e3 b.n 4c98 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 4cd0: 2602 movs r6, #2 4cd2: e7f0 b.n 4cb6 found_p = lv_refr_get_top_obj(area_p, i); 4cd4: 4629 mov r1, r5 4cd6: 4638 mov r0, r7 4cd8: f7ff ffd4 bl 4c84 if(found_p != NULL) { 4cdc: 2800 cmp r0, #0 4cde: d1db bne.n 4c98 _LV_LL_READ(obj->child_ll, i) { 4ce0: 4629 mov r1, r5 4ce2: 4640 mov r0, r8 4ce4: 47c8 blx r9 4ce6: 4605 mov r5, r0 4ce8: e7ed b.n 4cc6 4cea: bf00 nop 4cec: 0000e091 .word 0x0000e091 4cf0: 0000e6a9 .word 0x0000e6a9 4cf4: 0000e6b5 .word 0x0000e6b5 00004cf8 : { 4cf8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if(obj->hidden != 0) return; 4cfc: f890 8034 ldrb.w r8, [r0, #52] ; 0x34 4d00: f018 0810 ands.w r8, r8, #16 { 4d04: b08b sub sp, #44 ; 0x2c 4d06: 4604 mov r4, r0 4d08: 460f mov r7, r1 if(obj->hidden != 0) return; 4d0a: d13c bne.n 4d86 lv_coord_t ext_size = obj->ext_draw_pad; 4d0c: f9b0 5032 ldrsh.w r5, [r0, #50] ; 0x32 lv_obj_get_coords(obj, &obj_area); 4d10: 4e31 ldr r6, [pc, #196] ; (4dd8 ) union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d12: f8df 90cc ldr.w r9, [pc, #204] ; 4de0 lv_obj_get_coords(obj, &obj_area); 4d16: a904 add r1, sp, #16 4d18: 47b0 blx r6 obj_area.x1 -= ext_size; 4d1a: f8bd 2010 ldrh.w r2, [sp, #16] 4d1e: b2ab uxth r3, r5 4d20: 1ad2 subs r2, r2, r3 4d22: f8ad 2010 strh.w r2, [sp, #16] obj_area.y1 -= ext_size; 4d26: f8bd 2012 ldrh.w r2, [sp, #18] 4d2a: 1ad2 subs r2, r2, r3 4d2c: f8ad 2012 strh.w r2, [sp, #18] obj_area.x2 += ext_size; 4d30: f8bd 2014 ldrh.w r2, [sp, #20] 4d34: 441a add r2, r3 4d36: f8ad 2014 strh.w r2, [sp, #20] obj_area.y2 += ext_size; 4d3a: f8bd 2016 ldrh.w r2, [sp, #22] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d3e: 4639 mov r1, r7 obj_area.y2 += ext_size; 4d40: 4413 add r3, r2 union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d42: a802 add r0, sp, #8 4d44: aa04 add r2, sp, #16 obj_area.y2 += ext_size; 4d46: f8ad 3016 strh.w r3, [sp, #22] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 4d4a: 47c8 blx r9 if(union_ok != false) { 4d4c: b1d8 cbz r0, 4d86 if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); 4d4e: 6a23 ldr r3, [r4, #32] 4d50: b11b cbz r3, 4d5a 4d52: 4642 mov r2, r8 4d54: a902 add r1, sp, #8 4d56: 4620 mov r0, r4 4d58: 4798 blx r3 lv_obj_get_coords(obj, &obj_area); 4d5a: a904 add r1, sp, #16 4d5c: 4620 mov r0, r4 4d5e: 47b0 blx r6 union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area); 4d60: aa04 add r2, sp, #16 4d62: 4639 mov r1, r7 4d64: 4668 mov r0, sp 4d66: 47c8 blx r9 if(union_ok != false) { 4d68: b138 cbz r0, 4d7a _LV_LL_READ_BACK(obj->child_ll, child_p) { 4d6a: 1d27 adds r7, r4, #4 4d6c: 4b1b ldr r3, [pc, #108] ; (4ddc ) 4d6e: f8df 8074 ldr.w r8, [pc, #116] ; 4de4 4d72: 4638 mov r0, r7 4d74: 4798 blx r3 4d76: 4605 mov r5, r0 4d78: b945 cbnz r5, 4d8c if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST); 4d7a: 6a23 ldr r3, [r4, #32] 4d7c: b11b cbz r3, 4d86 4d7e: 2201 movs r2, #1 4d80: a902 add r1, sp, #8 4d82: 4620 mov r0, r4 4d84: 4798 blx r3 } 4d86: b00b add sp, #44 ; 0x2c 4d88: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} lv_obj_get_coords(child_p, &child_area); 4d8c: a908 add r1, sp, #32 4d8e: 4628 mov r0, r5 4d90: 47b0 blx r6 child_area.x1 -= ext_size; 4d92: 8e6b ldrh r3, [r5, #50] ; 0x32 4d94: f8bd 2020 ldrh.w r2, [sp, #32] 4d98: 1ad2 subs r2, r2, r3 4d9a: f8ad 2020 strh.w r2, [sp, #32] child_area.y1 -= ext_size; 4d9e: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 4da2: 1ad2 subs r2, r2, r3 4da4: f8ad 2022 strh.w r2, [sp, #34] ; 0x22 child_area.x2 += ext_size; 4da8: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 4dac: 441a add r2, r3 4dae: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 child_area.y2 += ext_size; 4db2: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 4db6: 4669 mov r1, sp child_area.y2 += ext_size; 4db8: 4413 add r3, r2 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 4dba: a806 add r0, sp, #24 4dbc: aa08 add r2, sp, #32 child_area.y2 += ext_size; 4dbe: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 4dc2: 47c8 blx r9 if(union_ok) { 4dc4: b118 cbz r0, 4dce lv_refr_obj(child_p, &mask_child); 4dc6: a906 add r1, sp, #24 4dc8: 4628 mov r0, r5 4dca: f7ff ff95 bl 4cf8 _LV_LL_READ_BACK(obj->child_ll, child_p) { 4dce: 4629 mov r1, r5 4dd0: 4638 mov r0, r7 4dd2: 47c0 blx r8 4dd4: 4605 mov r5, r0 4dd6: e7cf b.n 4d78 4dd8: 000022d5 .word 0x000022d5 4ddc: 0000e6af .word 0x0000e6af 4de0: 0000de8d .word 0x0000de8d 4de4: 0000e6d5 .word 0x0000e6d5 00004de8 : { 4de8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 4dec: 460e mov r6, r1 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 4dee: 4604 mov r4, r0 4df0: b928 cbnz r0, 4dfe 4df2: 4b15 ldr r3, [pc, #84] ; (4e48 ) 4df4: 6818 ldr r0, [r3, #0] 4df6: 4b15 ldr r3, [pc, #84] ; (4e4c ) 4df8: 4798 blx r3 if(top_p == NULL) return; /*Shouldn't happen*/ 4dfa: 4604 mov r4, r0 4dfc: b158 cbz r0, 4e16 lv_refr_obj(top_p, mask_p); 4dfe: 4631 mov r1, r6 4e00: 4620 mov r0, r4 4e02: 4f13 ldr r7, [pc, #76] ; (4e50 ) par = lv_obj_get_parent(top_p); 4e04: f8df 804c ldr.w r8, [pc, #76] ; 4e54 lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 4e08: f8df 904c ldr.w r9, [pc, #76] ; 4e58 lv_refr_obj(top_p, mask_p); 4e0c: 47b8 blx r7 par = lv_obj_get_parent(top_p); 4e0e: 4620 mov r0, r4 4e10: 47c0 blx r8 4e12: 4605 mov r5, r0 while(par != NULL) { 4e14: b90d cbnz r5, 4e1a } 4e16: 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); 4e1a: f105 0a04 add.w sl, r5, #4 i = _lv_ll_get_prev(&(par->child_ll), i); 4e1e: 4621 mov r1, r4 4e20: 4650 mov r0, sl 4e22: 47c8 blx r9 4e24: 4604 mov r4, r0 while(i != NULL) { 4e26: b950 cbnz r0, 4e3e if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST); 4e28: 6a2b ldr r3, [r5, #32] 4e2a: b11b cbz r3, 4e34 4e2c: 2201 movs r2, #1 4e2e: 4631 mov r1, r6 4e30: 4628 mov r0, r5 4e32: 4798 blx r3 par = lv_obj_get_parent(par); 4e34: 4628 mov r0, r5 4e36: 47c0 blx r8 4e38: 462c mov r4, r5 4e3a: 4605 mov r5, r0 4e3c: e7ea b.n 4e14 lv_refr_obj(i, mask_p); 4e3e: 4631 mov r1, r6 4e40: 4620 mov r0, r4 4e42: 47b8 blx r7 4e44: e7eb b.n 4e1e 4e46: bf00 nop 4e48: 20008100 .word 0x20008100 4e4c: 00001871 .word 0x00001871 4e50: 00004cf9 .word 0x00004cf9 4e54: 00002125 .word 0x00002125 4e58: 0000e6d5 .word 0x0000e6d5 00004e5c : { 4e5c: b573 push {r0, r1, r4, r5, r6, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4e5e: 4c1a ldr r4, [pc, #104] ; (4ec8 ) 4e60: 4b1a ldr r3, [pc, #104] ; (4ecc ) { 4e62: 4606 mov r6, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4e64: 6820 ldr r0, [r4, #0] 4e66: 4798 blx r3 if(lv_disp_is_double_buf(disp_refr) == false) { 4e68: 4b19 ldr r3, [pc, #100] ; (4ed0 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 4e6a: 4605 mov r5, r0 if(lv_disp_is_double_buf(disp_refr) == false) { 4e6c: 6820 ldr r0, [r4, #0] 4e6e: 4798 blx r3 4e70: b320 cbz r0, 4ebc _lv_area_intersect(&start_mask, area_p, &vdb->area); 4e72: f105 0210 add.w r2, r5, #16 4e76: 4631 mov r1, r6 4e78: 4b16 ldr r3, [pc, #88] ; (4ed4 ) lv_refr_obj_and_children(top_p, &start_mask); 4e7a: 4d17 ldr r5, [pc, #92] ; (4ed8 ) _lv_area_intersect(&start_mask, area_p, &vdb->area); 4e7c: 4668 mov r0, sp 4e7e: 4798 blx r3 top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr)); 4e80: 4b16 ldr r3, [pc, #88] ; (4edc ) 4e82: 6820 ldr r0, [r4, #0] 4e84: 4798 blx r3 4e86: 4b16 ldr r3, [pc, #88] ; (4ee0 ) 4e88: 4601 mov r1, r0 4e8a: 4668 mov r0, sp 4e8c: 4798 blx r3 lv_refr_obj_and_children(top_p, &start_mask); 4e8e: 4669 mov r1, sp 4e90: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask); 4e92: 4b14 ldr r3, [pc, #80] ; (4ee4 ) 4e94: 6820 ldr r0, [r4, #0] 4e96: 4798 blx r3 4e98: 4669 mov r1, sp 4e9a: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask); 4e9c: 4b12 ldr r3, [pc, #72] ; (4ee8 ) 4e9e: 6820 ldr r0, [r4, #0] 4ea0: 4798 blx r3 4ea2: 4669 mov r1, sp 4ea4: 47a8 blx r5 if(lv_disp_is_true_double_buf(disp_refr) == false) { 4ea6: 6820 ldr r0, [r4, #0] 4ea8: 4b10 ldr r3, [pc, #64] ; (4eec ) 4eaa: 4798 blx r3 4eac: b908 cbnz r0, 4eb2 lv_refr_vdb_flush(); 4eae: 4b10 ldr r3, [pc, #64] ; (4ef0 ) 4eb0: 4798 blx r3 } 4eb2: b002 add sp, #8 4eb4: bd70 pop {r4, r5, r6, pc} if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 4eb6: 69c3 ldr r3, [r0, #28] 4eb8: b10b cbz r3, 4ebe 4eba: 4798 blx r3 4ebc: 6820 ldr r0, [r4, #0] while(vdb->flushing) { 4ebe: 69ab ldr r3, [r5, #24] 4ec0: 2b00 cmp r3, #0 4ec2: d1f8 bne.n 4eb6 4ec4: e7d5 b.n 4e72 4ec6: bf00 nop 4ec8: 20008100 .word 0x20008100 4ecc: 0000d9e1 .word 0x0000d9e1 4ed0: 0000d9e5 .word 0x0000d9e5 4ed4: 0000de8d .word 0x0000de8d 4ed8: 00004de9 .word 0x00004de9 4edc: 00001871 .word 0x00001871 4ee0: 00004c85 .word 0x00004c85 4ee4: 000018ad .word 0x000018ad 4ee8: 000018e9 .word 0x000018e9 4eec: 0000d9f5 .word 0x0000d9f5 4ef0: 00004c19 .word 0x00004c19 00004ef4 : 4ef4: 3901 subs r1, #1 4ef6: f100 0308 add.w r3, r0, #8 *d8 = *s8; 4efa: f811 2f01 ldrb.w r2, [r1, #1]! 4efe: f800 2b01 strb.w r2, [r0], #1 while(len) { 4f02: 4298 cmp r0, r3 4f04: d1f9 bne.n 4efa } 4f06: 4770 bx lr 00004f08 <_lv_refr_init>: } 4f08: 4770 bx lr ... 00004f0c <_lv_inv_area>: { 4f0c: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} 4f10: 460d mov r5, r1 if(!disp) disp = lv_disp_get_default(); 4f12: 4604 mov r4, r0 4f14: b918 cbnz r0, 4f1e <_lv_inv_area+0x12> 4f16: 4b2d ldr r3, [pc, #180] ; (4fcc <_lv_inv_area+0xc0>) 4f18: 4798 blx r3 if(!disp) return; 4f1a: 4604 mov r4, r0 4f1c: b130 cbz r0, 4f2c <_lv_inv_area+0x20> if(area_p == NULL) { 4f1e: b945 cbnz r5, 4f32 <_lv_inv_area+0x26> disp->inv_p = 0; 4f20: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 4f24: f365 0309 bfi r3, r5, #0, #10 4f28: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 } 4f2c: b004 add sp, #16 4f2e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} scr_area.x1 = 0; 4f32: 2300 movs r3, #0 4f34: 9300 str r3, [sp, #0] scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 4f36: 4620 mov r0, r4 4f38: 4b25 ldr r3, [pc, #148] ; (4fd0 <_lv_inv_area+0xc4>) 4f3a: 4798 blx r3 4f3c: 3801 subs r0, #1 scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 4f3e: 4b25 ldr r3, [pc, #148] ; (4fd4 <_lv_inv_area+0xc8>) scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 4f40: f8ad 0004 strh.w r0, [sp, #4] scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 4f44: 4620 mov r0, r4 4f46: 4798 blx r3 4f48: 3801 subs r0, #1 4f4a: f8ad 0006 strh.w r0, [sp, #6] suc = _lv_area_intersect(&com_area, area_p, &scr_area); 4f4e: 4b22 ldr r3, [pc, #136] ; (4fd8 <_lv_inv_area+0xcc>) 4f50: 466a mov r2, sp 4f52: 4629 mov r1, r5 4f54: a802 add r0, sp, #8 4f56: 4798 blx r3 if(suc != false) { 4f58: 2800 cmp r0, #0 4f5a: d0e7 beq.n 4f2c <_lv_inv_area+0x20> if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area); 4f5c: 6923 ldr r3, [r4, #16] 4f5e: b113 cbz r3, 4f66 <_lv_inv_area+0x5a> 4f60: a902 add r1, sp, #8 4f62: 4620 mov r0, r4 4f64: 4798 blx r3 4f66: f104 0548 add.w r5, r4, #72 ; 0x48 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 4f6a: f8df 8078 ldr.w r8, [pc, #120] ; 4fe4 <_lv_inv_area+0xd8> { 4f6e: 2600 movs r6, #0 4f70: 462f mov r7, r5 for(i = 0; i < disp->inv_p; i++) { 4f72: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 4f76: b2b2 uxth r2, r6 4f78: f3c3 0009 ubfx r0, r3, #0, #10 4f7c: 4290 cmp r0, r2 4f7e: d81c bhi.n 4fba <_lv_inv_area+0xae> if(disp->inv_p < LV_INV_BUF_SIZE) { 4f80: 281f cmp r0, #31 lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 4f82: bf9b ittet ls 4f84: 3009 addls r0, #9 4f86: f3c0 0009 ubfxls r0, r0, #0, #10 disp->inv_p = 0; 4f8a: f36f 0309 bfchi r3, #0, #10 lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 4f8e: a902 addls r1, sp, #8 4f90: bf91 iteee ls 4f92: eb04 00c0 addls.w r0, r4, r0, lsl #3 disp->inv_p = 0; 4f96: f8a4 3168 strhhi.w r3, [r4, #360] ; 0x168 lv_area_copy(&disp->inv_areas[disp->inv_p], &scr_area); 4f9a: 4669 movhi r1, sp 4f9c: 4638 movhi r0, r7 4f9e: 4a0f ldr r2, [pc, #60] ; (4fdc <_lv_inv_area+0xd0>) 4fa0: 4790 blx r2 disp->inv_p++; 4fa2: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 4fa6: 6ae0 ldr r0, [r4, #44] ; 0x2c disp->inv_p++; 4fa8: 1c5a adds r2, r3, #1 4faa: f362 0309 bfi r3, r2, #0, #10 4fae: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 4fb2: 2103 movs r1, #3 4fb4: 4b0a ldr r3, [pc, #40] ; (4fe0 <_lv_inv_area+0xd4>) 4fb6: 4798 blx r3 4fb8: e7b8 b.n 4f2c <_lv_inv_area+0x20> if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 4fba: 4629 mov r1, r5 4fbc: 2200 movs r2, #0 4fbe: a802 add r0, sp, #8 4fc0: 47c0 blx r8 4fc2: 3601 adds r6, #1 4fc4: 3508 adds r5, #8 4fc6: 2800 cmp r0, #0 4fc8: d0d3 beq.n 4f72 <_lv_inv_area+0x66> 4fca: e7af b.n 4f2c <_lv_inv_area+0x20> 4fcc: 0000d8fd .word 0x0000d8fd 4fd0: 0000d909 .word 0x0000d909 4fd4: 0000d92d .word 0x0000d92d 4fd8: 0000de8d .word 0x0000de8d 4fdc: 00004ef5 .word 0x00004ef5 4fe0: 0000fb6d .word 0x0000fb6d 4fe4: 0000e091 .word 0x0000e091 00004fe8 <_lv_refr_get_disp_refreshing>: } 4fe8: 4b01 ldr r3, [pc, #4] ; (4ff0 <_lv_refr_get_disp_refreshing+0x8>) 4fea: 6818 ldr r0, [r3, #0] 4fec: 4770 bx lr 4fee: bf00 nop 4ff0: 20008100 .word 0x20008100 00004ff4 <_lv_disp_refr_task>: { 4ff4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 4ff8: ed2d 8b02 vpush {d8} uint32_t start = lv_tick_get(); 4ffc: 4b82 ldr r3, [pc, #520] ; (5208 <_lv_disp_refr_task+0x214>) disp_refr = task->user_data; 4ffe: 4c83 ldr r4, [pc, #524] ; (520c <_lv_disp_refr_task+0x218>) { 5000: b08b sub sp, #44 ; 0x2c 5002: 4605 mov r5, r0 uint32_t start = lv_tick_get(); 5004: 4798 blx r3 disp_refr = task->user_data; 5006: 68eb ldr r3, [r5, #12] 5008: 6023 str r3, [r4, #0] lv_task_set_prio(task, LV_TASK_PRIO_OFF); 500a: 2100 movs r1, #0 500c: 4b80 ldr r3, [pc, #512] ; (5210 <_lv_disp_refr_task+0x21c>) uint32_t start = lv_tick_get(); 500e: ee08 0a90 vmov s17, r0 lv_task_set_prio(task, LV_TASK_PRIO_OFF); 5012: 4628 mov r0, r5 5014: 4798 blx r3 if(disp_refr->act_scr == NULL) { 5016: 6823 ldr r3, [r4, #0] 5018: 6bd9 ldr r1, [r3, #60] ; 0x3c 501a: 2900 cmp r1, #0 501c: f040 808b bne.w 5136 <_lv_disp_refr_task+0x142> disp_refr->inv_p = 0; 5020: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 5024: f361 0209 bfi r2, r1, #0, #10 5028: f8a3 2168 strh.w r2, [r3, #360] ; 0x168 } 502c: b00b add sp, #44 ; 0x2c 502e: ecbd 8b02 vpop {d8} 5032: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(disp_refr->inv_area_joined[join_in] != 0) continue; 5036: 4433 add r3, r6 5038: f893 5148 ldrb.w r5, [r3, #328] ; 0x148 503c: 2d00 cmp r5, #0 503e: d03c beq.n 50ba <_lv_disp_refr_task+0xc6> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 5040: 3601 adds r6, #1 5042: 6823 ldr r3, [r4, #0] 5044: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 5048: f3c2 0109 ubfx r1, r2, #0, #10 504c: 428e cmp r6, r1 504e: d3f2 bcc.n 5036 <_lv_disp_refr_task+0x42> px_num = 0; 5050: 2000 movs r0, #0 5052: 6060 str r0, [r4, #4] if(disp_refr->inv_p == 0) return; 5054: 2900 cmp r1, #0 5056: d171 bne.n 513c <_lv_disp_refr_task+0x148> if(disp_refr->inv_p != 0) { 5058: 4f6c ldr r7, [pc, #432] ; (520c <_lv_disp_refr_task+0x218>) 505a: 6838 ldr r0, [r7, #0] 505c: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 5060: f3c3 0309 ubfx r3, r3, #0, #10 5064: b303 cbz r3, 50a8 <_lv_disp_refr_task+0xb4> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 5066: 4b6b ldr r3, [pc, #428] ; (5214 <_lv_disp_refr_task+0x220>) 5068: 4798 blx r3 506a: 2800 cmp r0, #0 506c: f040 81a1 bne.w 53b2 <_lv_disp_refr_task+0x3be> _lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas)); 5070: 6820 ldr r0, [r4, #0] 5072: 4d69 ldr r5, [pc, #420] ; (5218 <_lv_disp_refr_task+0x224>) 5074: f44f 7180 mov.w r1, #256 ; 0x100 5078: 3048 adds r0, #72 ; 0x48 507a: 47a8 blx r5 _lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined)); 507c: 6820 ldr r0, [r4, #0] 507e: 2120 movs r1, #32 5080: f500 70a4 add.w r0, r0, #328 ; 0x148 5084: 47a8 blx r5 disp_refr->inv_p = 0; 5086: 6823 ldr r3, [r4, #0] 5088: f8b3 2168 ldrh.w r2, [r3, #360] ; 0x168 508c: f36f 0209 bfc r2, #0, #10 5090: f8a3 2168 strh.w r2, [r3, #360] ; 0x168 elaps = lv_tick_elaps(start); 5094: ee18 0a90 vmov r0, s17 5098: 4b60 ldr r3, [pc, #384] ; (521c <_lv_disp_refr_task+0x228>) 509a: 4798 blx r3 509c: 4601 mov r1, r0 if(disp_refr->driver.monitor_cb) { 509e: 6820 ldr r0, [r4, #0] 50a0: 6983 ldr r3, [r0, #24] 50a2: 2b00 cmp r3, #0 50a4: f040 81dd bne.w 5462 <_lv_disp_refr_task+0x46e> _lv_mem_buf_free_all(); 50a8: 4b5d ldr r3, [pc, #372] ; (5220 <_lv_disp_refr_task+0x22c>) 50aa: 4798 blx r3 _lv_font_clean_up_fmt_txt(); 50ac: 4b5d ldr r3, [pc, #372] ; (5224 <_lv_disp_refr_task+0x230>) } 50ae: b00b add sp, #44 ; 0x2c 50b0: ecbd 8b02 vpop {d8} 50b4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} _lv_font_clean_up_fmt_txt(); 50b8: 4718 bx r3 50ba: 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]) + 50be: f8df a184 ldr.w sl, [pc, #388] ; 5244 <_lv_disp_refr_task+0x250> 50c2: f109 0948 add.w r9, r9, #72 ; 0x48 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 50c6: 6820 ldr r0, [r4, #0] 50c8: f8b0 3168 ldrh.w r3, [r0, #360] ; 0x168 50cc: f3c3 0309 ubfx r3, r3, #0, #10 50d0: 429d cmp r5, r3 50d2: d2b5 bcs.n 5040 <_lv_disp_refr_task+0x4c> if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) { 50d4: 1943 adds r3, r0, r5 50d6: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 50da: bb53 cbnz r3, 5132 <_lv_disp_refr_task+0x13e> 50dc: 42ae cmp r6, r5 50de: d028 beq.n 5132 <_lv_disp_refr_task+0x13e> if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 50e0: ea4f 0bc5 mov.w fp, r5, lsl #3 50e4: f10b 0b48 add.w fp, fp, #72 ; 0x48 50e8: eb00 010b add.w r1, r0, fp 50ec: 4448 add r0, r9 50ee: 47b8 blx r7 50f0: b1f8 cbz r0, 5132 <_lv_disp_refr_task+0x13e> _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 50f2: 6821 ldr r1, [r4, #0] 50f4: 4b4c ldr r3, [pc, #304] ; (5228 <_lv_disp_refr_task+0x234>) 50f6: eb01 020b add.w r2, r1, fp 50fa: a808 add r0, sp, #32 50fc: 4449 add r1, r9 50fe: 4798 blx r3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5100: a808 add r0, sp, #32 5102: 47d0 blx sl 5104: 4680 mov r8, r0 5106: 6820 ldr r0, [r4, #0] 5108: 4448 add r0, r9 510a: 47d0 blx sl 510c: 9003 str r0, [sp, #12] lv_area_get_size(&disp_refr->inv_areas[join_from]))) { 510e: 6820 ldr r0, [r4, #0] 5110: 4458 add r0, fp 5112: 47d0 blx sl if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5114: 9b03 ldr r3, [sp, #12] 5116: 4418 add r0, r3 5118: 4580 cmp r8, r0 511a: d20a bcs.n 5132 <_lv_disp_refr_task+0x13e> lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 511c: f8d4 b000 ldr.w fp, [r4] 5120: 4b42 ldr r3, [pc, #264] ; (522c <_lv_disp_refr_task+0x238>) 5122: eb0b 0009 add.w r0, fp, r9 5126: a908 add r1, sp, #32 disp_refr->inv_area_joined[join_from] = 1; 5128: 44ab add fp, r5 lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 512a: 4798 blx r3 disp_refr->inv_area_joined[join_from] = 1; 512c: 2301 movs r3, #1 512e: f88b 3148 strb.w r3, [fp, #328] ; 0x148 for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 5132: 3501 adds r5, #1 5134: e7c7 b.n 50c6 <_lv_disp_refr_task+0xd2> if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 5136: 4f3e ldr r7, [pc, #248] ; (5230 <_lv_disp_refr_task+0x23c>) for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 5138: 2600 movs r6, #0 513a: e782 b.n 5042 <_lv_disp_refr_task+0x4e> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 513c: 1e4f subs r7, r1, #1 if(disp_refr->inv_area_joined[i] == 0) { 513e: f503 72a4 add.w r2, r3, #328 ; 0x148 for(i = disp_refr->inv_p - 1; i >= 0; i--) { 5142: 1c79 adds r1, r7, #1 5144: d15b bne.n 51fe <_lv_disp_refr_task+0x20a> int32_t last_i = 0; 5146: 2700 movs r7, #0 disp_refr->driver.buffer->last_area = 0; 5148: 685b ldr r3, [r3, #4] for(i = 0; i < disp_refr->inv_p; i++) { 514a: f8df 80c0 ldr.w r8, [pc, #192] ; 520c <_lv_disp_refr_task+0x218> disp_refr->driver.buffer->last_area = 0; 514e: f893 2020 ldrb.w r2, [r3, #32] 5152: f36f 0200 bfc r2, #0, #1 5156: f883 2020 strb.w r2, [r3, #32] disp_refr->driver.buffer->last_part = 0; 515a: f893 2020 ldrb.w r2, [r3, #32] 515e: f36f 0241 bfc r2, #1, #1 5162: f883 2020 strb.w r2, [r3, #32] for(i = 0; i < disp_refr->inv_p; i++) { 5166: f04f 0b00 mov.w fp, #0 516a: f8d8 5000 ldr.w r5, [r8] 516e: f8b5 3168 ldrh.w r3, [r5, #360] ; 0x168 5172: f3c3 0309 ubfx r3, r3, #0, #10 5176: 459b cmp fp, r3 5178: f6bf af6e bge.w 5058 <_lv_disp_refr_task+0x64> if(disp_refr->inv_area_joined[i] == 0) { 517c: eb05 030b add.w r3, r5, fp 5180: f893 3148 ldrb.w r3, [r3, #328] ; 0x148 5184: 2b00 cmp r3, #0 5186: f040 80c6 bne.w 5316 <_lv_disp_refr_task+0x322> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 518a: 686b ldr r3, [r5, #4] 518c: 45bb cmp fp, r7 518e: bf02 ittt eq 5190: f893 2020 ldrbeq.w r2, [r3, #32] 5194: f042 0201 orreq.w r2, r2, #1 5198: f883 2020 strbeq.w r2, [r3, #32] disp_refr->driver.buffer->last_part = 0; 519c: f893 2020 ldrb.w r2, [r3, #32] 51a0: ea4f 09cb mov.w r9, fp, lsl #3 51a4: f36f 0241 bfc r2, #1, #1 51a8: f883 2020 strb.w r2, [r3, #32] lv_refr_area(&disp_refr->inv_areas[i]); 51ac: f109 0348 add.w r3, r9, #72 ; 0x48 51b0: 9304 str r3, [sp, #16] 51b2: 18eb adds r3, r5, r3 51b4: ee08 3a10 vmov s16, r3 if(lv_disp_is_true_double_buf(disp_refr)) { 51b8: 4628 mov r0, r5 51ba: 4b16 ldr r3, [pc, #88] ; (5214 <_lv_disp_refr_task+0x220>) 51bc: 4798 blx r3 51be: 4b1d ldr r3, [pc, #116] ; (5234 <_lv_disp_refr_task+0x240>) 51c0: 2800 cmp r0, #0 51c2: d041 beq.n 5248 <_lv_disp_refr_task+0x254> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 51c4: 6820 ldr r0, [r4, #0] 51c6: 4798 blx r3 vdb->area.x1 = 0; 51c8: 2600 movs r6, #0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 51ca: 4605 mov r5, r0 vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 51cc: 4b1a ldr r3, [pc, #104] ; (5238 <_lv_disp_refr_task+0x244>) vdb->area.x1 = 0; 51ce: 8206 strh r6, [r0, #16] vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 51d0: 6820 ldr r0, [r4, #0] 51d2: 4798 blx r3 51d4: 3801 subs r0, #1 vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51d6: 4b19 ldr r3, [pc, #100] ; (523c <_lv_disp_refr_task+0x248>) vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 51d8: 82a8 strh r0, [r5, #20] vdb->area.y1 = 0; 51da: 826e strh r6, [r5, #18] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51dc: 6820 ldr r0, [r4, #0] 51de: 4798 blx r3 disp_refr->driver.buffer->last_part = 1; 51e0: 6823 ldr r3, [r4, #0] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51e2: 3801 subs r0, #1 disp_refr->driver.buffer->last_part = 1; 51e4: 685a ldr r2, [r3, #4] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 51e6: 82e8 strh r0, [r5, #22] disp_refr->driver.buffer->last_part = 1; 51e8: f892 3020 ldrb.w r3, [r2, #32] 51ec: f043 0302 orr.w r3, r3, #2 51f0: f882 3020 strb.w r3, [r2, #32] lv_refr_area_part(area_p); 51f4: ee18 0a10 vmov r0, s16 51f8: 4b11 ldr r3, [pc, #68] ; (5240 <_lv_disp_refr_task+0x24c>) 51fa: 4798 blx r3 51fc: e07e b.n 52fc <_lv_disp_refr_task+0x308> if(disp_refr->inv_area_joined[i] == 0) { 51fe: 5dd1 ldrb r1, [r2, r7] 5200: 2900 cmp r1, #0 5202: d0a1 beq.n 5148 <_lv_disp_refr_task+0x154> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 5204: 3f01 subs r7, #1 5206: e79c b.n 5142 <_lv_disp_refr_task+0x14e> 5208: 0000da49 .word 0x0000da49 520c: 20008100 .word 0x20008100 5210: 0000fb6d .word 0x0000fb6d 5214: 0000d9f5 .word 0x0000d9f5 5218: 0000f019 .word 0x0000f019 521c: 0000da5d .word 0x0000da5d 5220: 0000ebdd .word 0x0000ebdd 5224: 0000d741 .word 0x0000d741 5228: 0000dee1 .word 0x0000dee1 522c: 00004ef5 .word 0x00004ef5 5230: 0000e055 .word 0x0000e055 5234: 0000d9e1 .word 0x0000d9e1 5238: 0000d909 .word 0x0000d909 523c: 0000d92d .word 0x0000d92d 5240: 00004e5d .word 0x00004e5d 5244: 0000de71 .word 0x0000de71 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5248: 444d add r5, r9 524a: 6820 ldr r0, [r4, #0] 524c: 4798 blx r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 524e: f8b5 904c ldrh.w r9, [r5, #76] ; 0x4c 5252: f8b5 3048 ldrh.w r3, [r5, #72] ; 0x48 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 5256: f9b5 204e ldrsh.w r2, [r5, #78] ; 0x4e 525a: 9203 str r2, [sp, #12] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 525c: f109 0901 add.w r9, r9, #1 5260: eba9 0903 sub.w r9, r9, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 5264: f8b5 304a ldrh.w r3, [r5, #74] ; 0x4a 5268: f102 0a01 add.w sl, r2, #1 526c: ebaa 0a03 sub.w sl, sl, r3 5270: 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; 5272: 4b7d ldr r3, [pc, #500] ; (5468 <_lv_disp_refr_task+0x474>) 5274: 6820 ldr r0, [r4, #0] 5276: 4798 blx r3 lv_coord_t y2 = 5278: 9a03 ldr r2, [sp, #12] 527a: 4b7b ldr r3, [pc, #492] ; (5468 <_lv_disp_refr_task+0x474>) 527c: 4282 cmp r2, r0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 527e: fa0f f989 sxth.w r9, r9 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 5282: fa0f fa8a sxth.w sl, sl 5286: db49 blt.n 531c <_lv_disp_refr_task+0x328> area_p->y2 >= lv_disp_get_ver_res(disp_refr) ? lv_disp_get_ver_res(disp_refr) - 1 : area_p->y2; 5288: 6820 ldr r0, [r4, #0] 528a: 4798 blx r3 528c: 3801 subs r0, #1 lv_coord_t y2 = 528e: b203 sxth r3, r0 int32_t max_row = (uint32_t)vdb->size / w; 5290: 68f2 ldr r2, [r6, #12] 5292: fbb2 f2f9 udiv r2, r2, r9 5296: 4552 cmp r2, sl 5298: bfa8 it ge 529a: 4652 movge r2, sl 529c: 9203 str r2, [sp, #12] if(disp_refr->driver.rounder_cb) { 529e: f8d8 2000 ldr.w r2, [r8] 52a2: 6912 ldr r2, [r2, #16] 52a4: 2a00 cmp r2, #0 52a6: d040 beq.n 532a <_lv_disp_refr_task+0x336> tmp.x1 = 0; 52a8: 2200 movs r2, #0 lv_coord_t h_tmp = max_row; 52aa: f9bd 900c ldrsh.w r9, [sp, #12] tmp.x1 = 0; 52ae: 9208 str r2, [sp, #32] tmp.x2 = 0; 52b0: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 52b4: f8d8 0000 ldr.w r0, [r8] 52b8: 9305 str r3, [sp, #20] tmp.y2 = h_tmp - 1; 52ba: 46ca mov sl, r9 52bc: f109 39ff add.w r9, r9, #4294967295 ; 0xffffffff 52c0: fa0f f989 sxth.w r9, r9 disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 52c4: 6902 ldr r2, [r0, #16] tmp.y2 = h_tmp - 1; 52c6: f8ad 9026 strh.w r9, [sp, #38] ; 0x26 disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 52ca: a908 add r1, sp, #32 52cc: 4790 blx r2 52ce: f9bd 1026 ldrsh.w r1, [sp, #38] ; 0x26 52d2: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 if(lv_area_get_height(&tmp) <= max_row) break; 52d6: 9b03 ldr r3, [sp, #12] 52d8: 3101 adds r1, #1 52da: 1a8a subs r2, r1, r2 52dc: b212 sxth r2, r2 52de: 4293 cmp r3, r2 52e0: 9b05 ldr r3, [sp, #20] 52e2: da1e bge.n 5322 <_lv_disp_refr_task+0x32e> } while(h_tmp > 0); 52e4: f1b9 0f00 cmp.w r9, #0 52e8: dce4 bgt.n 52b4 <_lv_disp_refr_task+0x2c0> LV_LOG_WARN("Can't set VDB height using the round function. (Wrong round_cb or to " 52ea: 4b60 ldr r3, [pc, #384] ; (546c <_lv_disp_refr_task+0x478>) 52ec: 9300 str r3, [sp, #0] 52ee: 4960 ldr r1, [pc, #384] ; (5470 <_lv_disp_refr_task+0x47c>) 52f0: 4b60 ldr r3, [pc, #384] ; (5474 <_lv_disp_refr_task+0x480>) 52f2: 4d61 ldr r5, [pc, #388] ; (5478 <_lv_disp_refr_task+0x484>) 52f4: f44f 72cf mov.w r2, #414 ; 0x19e 52f8: 2002 movs r0, #2 52fa: 47a8 blx r5 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 52fc: f8d8 0000 ldr.w r0, [r8] 5300: 6983 ldr r3, [r0, #24] 5302: b143 cbz r3, 5316 <_lv_disp_refr_task+0x322> 5304: 9b04 ldr r3, [sp, #16] 5306: 4418 add r0, r3 5308: 4b5c ldr r3, [pc, #368] ; (547c <_lv_disp_refr_task+0x488>) 530a: 4798 blx r3 530c: f8d8 3004 ldr.w r3, [r8, #4] 5310: 4418 add r0, r3 5312: f8c8 0004 str.w r0, [r8, #4] for(i = 0; i < disp_refr->inv_p; i++) { 5316: f10b 0b01 add.w fp, fp, #1 531a: e726 b.n 516a <_lv_disp_refr_task+0x176> lv_coord_t y2 = 531c: f9b5 304e ldrsh.w r3, [r5, #78] ; 0x4e 5320: e7b6 b.n 5290 <_lv_disp_refr_task+0x29c> if(h_tmp <= 0) { 5322: f1ba 0f00 cmp.w sl, #0 5326: dde0 ble.n 52ea <_lv_disp_refr_task+0x2f6> max_row = tmp.y2 + 1; 5328: 9103 str r1, [sp, #12] vdb->area.y2 = row + max_row - 1; 532a: f8bd 100c ldrh.w r1, [sp, #12] for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 532e: f9b5 204a ldrsh.w r2, [r5, #74] ; 0x4a 5332: 1e48 subs r0, r1, #1 lv_coord_t row_last = 0; 5334: f04f 0900 mov.w r9, #0 5338: 9005 str r0, [sp, #20] for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 533a: 9803 ldr r0, [sp, #12] 533c: 1810 adds r0, r2, r0 533e: 3801 subs r0, #1 5340: 4298 cmp r0, r3 5342: dd0c ble.n 535e <_lv_disp_refr_task+0x36a> if(y2 != row_last) { 5344: 454b cmp r3, r9 5346: d0d9 beq.n 52fc <_lv_disp_refr_task+0x308> vdb->area.x1 = area_p->x1; 5348: f9b5 0048 ldrsh.w r0, [r5, #72] ; 0x48 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 534c: 6821 ldr r1, [r4, #0] vdb->area.x1 = area_p->x1; 534e: 8230 strh r0, [r6, #16] vdb->area.x2 = area_p->x2; 5350: f9b5 004c ldrsh.w r0, [r5, #76] ; 0x4c 5354: 82b0 strh r0, [r6, #20] vdb->area.y1 = row; 5356: 8272 strh r2, [r6, #18] vdb->area.y2 = y2; 5358: 82f3 strh r3, [r6, #22] disp_refr->driver.buffer->last_part = 1; 535a: 684a ldr r2, [r1, #4] 535c: e744 b.n 51e8 <_lv_disp_refr_task+0x1f4> vdb->area.x1 = area_p->x1; 535e: f9b5 0048 ldrsh.w r0, [r5, #72] ; 0x48 5362: 8230 strh r0, [r6, #16] vdb->area.x2 = area_p->x2; 5364: f9b5 004c ldrsh.w r0, [r5, #76] ; 0x4c 5368: 82b0 strh r0, [r6, #20] vdb->area.y1 = row; 536a: 9805 ldr r0, [sp, #20] 536c: 8272 strh r2, [r6, #18] vdb->area.y2 = row + max_row - 1; 536e: fa1f fa82 uxth.w sl, r2 5372: fa10 f282 uxtah r2, r0, r2 5376: b212 sxth r2, r2 if(vdb->area.y2 > y2) vdb->area.y2 = y2; 5378: 4293 cmp r3, r2 537a: 4699 mov r9, r3 537c: bfa8 it ge 537e: 4691 movge r9, r2 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 5380: 4293 cmp r3, r2 5382: f8a6 9016 strh.w r9, [r6, #22] 5386: dc08 bgt.n 539a <_lv_disp_refr_task+0x3a6> 5388: f8d8 2000 ldr.w r2, [r8] 538c: 6850 ldr r0, [r2, #4] 538e: f890 2020 ldrb.w r2, [r0, #32] 5392: f042 0202 orr.w r2, r2, #2 5396: f880 2020 strb.w r2, [r0, #32] lv_refr_area_part(area_p); 539a: 4a39 ldr r2, [pc, #228] ; (5480 <_lv_disp_refr_task+0x48c>) 539c: ee18 0a10 vmov r0, s16 53a0: e9cd 3106 strd r3, r1, [sp, #24] 53a4: 4790 blx r2 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 53a6: 9907 ldr r1, [sp, #28] 53a8: 9b06 ldr r3, [sp, #24] 53aa: 448a add sl, r1 53ac: fa0f f28a sxth.w r2, sl 53b0: e7c3 b.n 533a <_lv_disp_refr_task+0x346> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 53b2: 6838 ldr r0, [r7, #0] 53b4: 6943 ldr r3, [r0, #20] 53b6: 2b00 cmp r3, #0 53b8: f47f ae5a bne.w 5070 <_lv_disp_refr_task+0x7c> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 53bc: 4b31 ldr r3, [pc, #196] ; (5484 <_lv_disp_refr_task+0x490>) 53be: 4798 blx r3 lv_refr_vdb_flush(); 53c0: 4b31 ldr r3, [pc, #196] ; (5488 <_lv_disp_refr_task+0x494>) lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 53c2: 4605 mov r5, r0 lv_refr_vdb_flush(); 53c4: 4798 blx r3 while(vdb->flushing) 53c6: 69ab ldr r3, [r5, #24] 53c8: 2b00 cmp r3, #0 53ca: d1fc bne.n 53c6 <_lv_disp_refr_task+0x3d2> uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 53cc: f8d5 9000 ldr.w r9, [r5] uint8_t * buf_act = (uint8_t *)vdb->buf_act; 53d0: f8d5 b008 ldr.w fp, [r5, #8] lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 53d4: 4b2d ldr r3, [pc, #180] ; (548c <_lv_disp_refr_task+0x498>) 53d6: 6838 ldr r0, [r7, #0] uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 53d8: 45d9 cmp r9, fp 53da: bf08 it eq 53dc: f8d5 9004 ldreq.w r9, [r5, #4] lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 53e0: 4798 blx r3 for(a = 0; a < disp_refr->inv_p; a++) { 53e2: 2500 movs r5, #0 lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 53e4: 4680 mov r8, r0 start_offs += hres * sizeof(lv_color_t); 53e6: 0043 lsls r3, r0, #1 for(a = 0; a < disp_refr->inv_p; a++) { 53e8: 683a ldr r2, [r7, #0] 53ea: f8b2 1168 ldrh.w r1, [r2, #360] ; 0x168 53ee: b2a8 uxth r0, r5 53f0: f3c1 0109 ubfx r1, r1, #0, #10 53f4: 4281 cmp r1, r0 53f6: f67f ae3b bls.w 5070 <_lv_disp_refr_task+0x7c> if(disp_refr->inv_area_joined[a] == 0) { 53fa: 1951 adds r1, r2, r5 53fc: f891 1148 ldrb.w r1, [r1, #328] ; 0x148 5400: b109 cbz r1, 5406 <_lv_disp_refr_task+0x412> for(a = 0; a < disp_refr->inv_p; a++) { 5402: 3501 adds r5, #1 5404: e7f0 b.n 53e8 <_lv_disp_refr_task+0x3f4> uint32_t start_offs = 5406: 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); 540a: f9b2 0048 ldrsh.w r0, [r2, #72] ; 0x48 540e: f9b2 604a ldrsh.w r6, [r2, #74] ; 0x4a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 5412: f8b2 204c ldrh.w r2, [r2, #76] ; 0x4c 5416: 3201 adds r2, #1 5418: fb08 0106 mla r1, r8, r6, r0 541c: 1a12 subs r2, r2, r0 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 541e: f105 0009 add.w r0, r5, #9 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 5422: b212 sxth r2, r2 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 5424: 00c0 lsls r0, r0, #3 5426: 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); 542a: ea4f 0c42 mov.w ip, r2, lsl #1 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 542e: eb09 0141 add.w r1, r9, r1, lsl #1 5432: 9003 str r0, [sp, #12] 5434: 6838 ldr r0, [r7, #0] 5436: 9a03 ldr r2, [sp, #12] 5438: 4410 add r0, r2 543a: f9b0 0006 ldrsh.w r0, [r0, #6] 543e: 42b0 cmp r0, r6 5440: dbdf blt.n 5402 <_lv_disp_refr_task+0x40e> 5442: 9306 str r3, [sp, #24] _lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length); 5444: 4662 mov r2, ip 5446: 4b12 ldr r3, [pc, #72] ; (5490 <_lv_disp_refr_task+0x49c>) 5448: 4650 mov r0, sl 544a: e9cd 1c04 strd r1, ip, [sp, #16] 544e: 4798 blx r3 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 5450: 9b06 ldr r3, [sp, #24] 5452: 9904 ldr r1, [sp, #16] 5454: f8dd c014 ldr.w ip, [sp, #20] 5458: 3601 adds r6, #1 545a: b236 sxth r6, r6 545c: 449a add sl, r3 545e: 4419 add r1, r3 5460: e7e8 b.n 5434 <_lv_disp_refr_task+0x440> disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num); 5462: 6862 ldr r2, [r4, #4] 5464: 4798 blx r3 5466: e61f b.n 50a8 <_lv_disp_refr_task+0xb4> 5468: 0000d92d .word 0x0000d92d 546c: 0001f789 .word 0x0001f789 5470: 0001f759 .word 0x0001f759 5474: 0001f7d9 .word 0x0001f7d9 5478: 0000e8e9 .word 0x0000e8e9 547c: 0000de71 .word 0x0000de71 5480: 00004e5d .word 0x00004e5d 5484: 0000d9e1 .word 0x0000d9e1 5488: 00004c19 .word 0x00004c19 548c: 0000d909 .word 0x0000d909 5490: 0000ec31 .word 0x0000ec31 00005494 : if(list->has_trans && list->skip_trans) id++; 5494: 7943 ldrb r3, [r0, #5] 5496: f003 0306 and.w r3, r3, #6 549a: 2b06 cmp r3, #6 549c: bf08 it eq 549e: 3101 addeq r1, #1 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 54a0: 7903 ldrb r3, [r0, #4] if(list->has_trans && list->skip_trans) id++; 54a2: bf08 it eq 54a4: b2c9 uxtbeq r1, r1 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 54a6: 428b cmp r3, r1 return list->style_list[id]; 54a8: bf86 itte hi 54aa: 6803 ldrhi r3, [r0, #0] 54ac: f853 0021 ldrhi.w r0, [r3, r1, lsl #2] if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 54b0: 2000 movls r0, #0 } 54b2: 4770 bx lr 000054b4 : * @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) 54b4: b5f0 push {r4, r5, r6, r7, lr} { LV_ASSERT_STYLE(style); if(style->map == NULL) return -1; 54b6: b378 cbz r0, 5518 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; 54b8: f04f 35ff mov.w r5, #4294967295 ; 0xffffffff uint8_t id_to_find = prop & 0xFF; 54bc: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 54be: ea4f 2c11 mov.w ip, r1, lsr #8 size_t i = 0; 54c2: 2300 movs r3, #0 int16_t weight = -1; 54c4: 462e mov r6, r5 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) { 54c6: f3c1 2106 ubfx r1, r1, #8, #7 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 54ca: 5cc2 ldrb r2, [r0, r3] 54cc: 2aff cmp r2, #255 ; 0xff 54ce: d101 bne.n 54d4 else i += sizeof(const void *); i += sizeof(lv_style_property_t); } return id_guess; 54d0: 4628 mov r0, r5 54d2: e009 b.n 54e8 if(style->map[i] == id_to_find) { 54d4: 4297 cmp r7, r2 54d6: d111 bne.n 54fc attr_i.full = style->map[i + 1]; 54d8: 18c4 adds r4, r0, r3 54da: 7864 ldrb r4, [r4, #1] if(attr_i.bits.state == attr.bits.state) { 54dc: ea8c 0e04 eor.w lr, ip, r4 54e0: f01e 0f7f tst.w lr, #127 ; 0x7f 54e4: d101 bne.n 54ea return i; 54e6: 4618 mov r0, r3 } 54e8: bdf0 pop {r4, r5, r6, r7, pc} else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 54ea: f004 047f and.w r4, r4, #127 ; 0x7f 54ee: ea34 0e01 bics.w lr, r4, r1 54f2: d103 bne.n 54fc if(attr_i.bits.state > weight) { 54f4: 42b4 cmp r4, r6 weight = attr_i.bits.state; 54f6: bfc4 itt gt 54f8: b226 sxthgt r6, r4 id_guess = i; 54fa: b21d sxthgt r5, r3 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 54fc: f002 020f and.w r2, r2, #15 5500: 2a08 cmp r2, #8 5502: d802 bhi.n 550a else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 5504: 3302 adds r3, #2 i += sizeof(lv_style_property_t); 5506: 3302 adds r3, #2 5508: e7df b.n 54ca else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 550a: 2a0b cmp r2, #11 550c: d9fa bls.n 5504 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 550e: 2a0d cmp r2, #13 5510: bf94 ite ls 5512: 3301 addls r3, #1 else i += sizeof(const void *); 5514: 3304 addhi r3, #4 5516: e7f6 b.n 5506 if(style->map == NULL) return -1; 5518: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 551c: e7e4 b.n 54e8 0000551e <_lv_memcpy_small.isra.0>: 551e: 3901 subs r1, #1 5520: 4402 add r2, r0 *d8 = *s8; 5522: f811 3f01 ldrb.w r3, [r1, #1]! 5526: f800 3b01 strb.w r3, [r0], #1 while(len) { 552a: 4290 cmp r0, r2 552c: d1f9 bne.n 5522 <_lv_memcpy_small.isra.0+0x4> s8++; len--; } return dst; } 552e: 4770 bx lr 00005530 : _lv_memset_00(style, sizeof(lv_style_t)); 5530: 4b01 ldr r3, [pc, #4] ; (5538 ) 5532: 2104 movs r1, #4 5534: 4718 bx r3 5536: bf00 nop 5538: 0000f019 .word 0x0000f019 0000553c : _lv_memset_00(list, sizeof(lv_style_list_t)); 553c: 4b01 ldr r3, [pc, #4] ; (5544 ) 553e: 2108 movs r1, #8 5540: 4718 bx r3 5542: bf00 nop 5544: 0000f019 .word 0x0000f019 00005548 <_lv_style_list_remove_style>: { 5548: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} if(list->style_cnt == 0) return; 554a: 7903 ldrb r3, [r0, #4] { 554c: 4604 mov r4, r0 554e: 460e mov r6, r1 if(list->style_cnt == 0) return; 5550: b14b cbz r3, 5566 <_lv_style_list_remove_style+0x1e> if(list->style_list[i] == style) { 5552: 6800 ldr r0, [r0, #0] 5554: 2200 movs r2, #0 5556: f850 1022 ldr.w r1, [r0, r2, lsl #2] 555a: 42b1 cmp r1, r6 555c: d03c beq.n 55d8 <_lv_style_list_remove_style+0x90> for(i = 0; i < list->style_cnt; i++) { 555e: 3201 adds r2, #1 5560: b2d1 uxtb r1, r2 5562: 428b cmp r3, r1 5564: d8f7 bhi.n 5556 <_lv_style_list_remove_style+0xe> } 5566: b003 add sp, #12 5568: 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)); 556a: 3b01 subs r3, #1 556c: 0099 lsls r1, r3, #2 556e: 4b21 ldr r3, [pc, #132] ; (55f4 <_lv_style_list_remove_style+0xac>) 5570: 4798 blx r3 LV_ASSERT_MEM(new_classes); 5572: 4b21 ldr r3, [pc, #132] ; (55f8 <_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)); 5574: 4605 mov r5, r0 LV_ASSERT_MEM(new_classes); 5576: 4798 blx r3 5578: 4607 mov r7, r0 557a: b968 cbnz r0, 5598 <_lv_style_list_remove_style+0x50> 557c: 4b1f ldr r3, [pc, #124] ; (55fc <_lv_style_list_remove_style+0xb4>) 557e: 4920 ldr r1, [pc, #128] ; (5600 <_lv_style_list_remove_style+0xb8>) 5580: 9300 str r3, [sp, #0] 5582: f44f 7282 mov.w r2, #260 ; 0x104 5586: 2003 movs r0, #3 5588: 4c1e ldr r4, [pc, #120] ; (5604 <_lv_style_list_remove_style+0xbc>) 558a: 47a0 blx r4 558c: 481e ldr r0, [pc, #120] ; (5608 <_lv_style_list_remove_style+0xc0>) 558e: 491f ldr r1, [pc, #124] ; (560c <_lv_style_list_remove_style+0xc4>) 5590: 462a mov r2, r5 5592: 463b mov r3, r7 5594: 4788 blx r1 5596: e7fe b.n 5596 <_lv_style_list_remove_style+0x4e> if(new_classes == NULL) { 5598: b14d cbz r5, 55ae <_lv_style_list_remove_style+0x66> for(i = 0, j = 0; i < list->style_cnt; i++) { 559a: 2300 movs r3, #0 559c: 7921 ldrb r1, [r4, #4] 559e: 461a mov r2, r3 55a0: b2d8 uxtb r0, r3 55a2: 4288 cmp r0, r1 55a4: d30d bcc.n 55c2 <_lv_style_list_remove_style+0x7a> list->style_cnt--; 55a6: 3901 subs r1, #1 55a8: 7121 strb r1, [r4, #4] list->style_list = new_classes; 55aa: 6025 str r5, [r4, #0] 55ac: e7db b.n 5566 <_lv_style_list_remove_style+0x1e> LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list"); 55ae: 4b18 ldr r3, [pc, #96] ; (5610 <_lv_style_list_remove_style+0xc8>) 55b0: 9300 str r3, [sp, #0] 55b2: 4913 ldr r1, [pc, #76] ; (5600 <_lv_style_list_remove_style+0xb8>) 55b4: 4b11 ldr r3, [pc, #68] ; (55fc <_lv_style_list_remove_style+0xb4>) 55b6: 4c13 ldr r4, [pc, #76] ; (5604 <_lv_style_list_remove_style+0xbc>) 55b8: f44f 7283 mov.w r2, #262 ; 0x106 55bc: 2002 movs r0, #2 55be: 47a0 blx r4 return; 55c0: e7d1 b.n 5566 <_lv_style_list_remove_style+0x1e> if(list->style_list[i] == style) continue; 55c2: 6820 ldr r0, [r4, #0] 55c4: f850 0023 ldr.w r0, [r0, r3, lsl #2] 55c8: 42b0 cmp r0, r6 new_classes[j] = list->style_list[i]; 55ca: bf1e ittt ne 55cc: f845 0022 strne.w r0, [r5, r2, lsl #2] j++; 55d0: 3201 addne r2, #1 55d2: b2d2 uxtbne r2, r2 for(i = 0, j = 0; i < list->style_cnt; i++) { 55d4: 3301 adds r3, #1 55d6: e7e3 b.n 55a0 <_lv_style_list_remove_style+0x58> if(list->style_cnt == 1) { 55d8: 2b01 cmp r3, #1 55da: d1c6 bne.n 556a <_lv_style_list_remove_style+0x22> lv_mem_free(list->style_list); 55dc: 4b0d ldr r3, [pc, #52] ; (5614 <_lv_style_list_remove_style+0xcc>) 55de: 4798 blx r3 list->style_list = NULL; 55e0: 2300 movs r3, #0 55e2: 6023 str r3, [r4, #0] list->style_cnt = 0; 55e4: 88a3 ldrh r3, [r4, #4] 55e6: f423 73ff bic.w r3, r3, #510 ; 0x1fe 55ea: f023 0301 bic.w r3, r3, #1 55ee: 80a3 strh r3, [r4, #4] return; 55f0: e7b9 b.n 5566 <_lv_style_list_remove_style+0x1e> 55f2: bf00 nop 55f4: 0000ee15 .word 0x0000ee15 55f8: 000017e1 .word 0x000017e1 55fc: 0001f8ef .word 0x0001f8ef 5600: 0001f7e6 .word 0x0001f7e6 5604: 0000e8e9 .word 0x0000e8e9 5608: 0001edbe .word 0x0001edbe 560c: 000017e9 .word 0x000017e9 5610: 0001f817 .word 0x0001f817 5614: 0000eae5 .word 0x0000eae5 00005618 <_lv_style_list_add_style>: { 5618: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 561c: 460f mov r7, r1 if(list == NULL) return; 561e: 4605 mov r5, r0 5620: b338 cbz r0, 5672 <_lv_style_list_add_style+0x5a> _lv_style_list_remove_style(list, style); 5622: 4b29 ldr r3, [pc, #164] ; (56c8 <_lv_style_list_add_style+0xb0>) 5624: 4798 blx r3 if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *)); 5626: 7929 ldrb r1, [r5, #4] 5628: b9a1 cbnz r1, 5654 <_lv_style_list_add_style+0x3c> 562a: 4b28 ldr r3, [pc, #160] ; (56cc <_lv_style_list_add_style+0xb4>) 562c: 2004 movs r0, #4 562e: 4798 blx r3 LV_ASSERT_MEM(new_classes); 5630: 4b27 ldr r3, [pc, #156] ; (56d0 <_lv_style_list_add_style+0xb8>) else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 5632: 4604 mov r4, r0 LV_ASSERT_MEM(new_classes); 5634: 4798 blx r3 5636: 4606 mov r6, r0 5638: b990 cbnz r0, 5660 <_lv_style_list_add_style+0x48> 563a: 4b26 ldr r3, [pc, #152] ; (56d4 <_lv_style_list_add_style+0xbc>) 563c: 4926 ldr r1, [pc, #152] ; (56d8 <_lv_style_list_add_style+0xc0>) 563e: 9300 str r3, [sp, #0] 5640: 22d0 movs r2, #208 ; 0xd0 5642: 2003 movs r0, #3 5644: 4d25 ldr r5, [pc, #148] ; (56dc <_lv_style_list_add_style+0xc4>) 5646: 47a8 blx r5 5648: 4825 ldr r0, [pc, #148] ; (56e0 <_lv_style_list_add_style+0xc8>) 564a: 4926 ldr r1, [pc, #152] ; (56e4 <_lv_style_list_add_style+0xcc>) 564c: 4622 mov r2, r4 564e: 4633 mov r3, r6 5650: 4788 blx r1 5652: e7fe b.n 5652 <_lv_style_list_add_style+0x3a> else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 5654: 3101 adds r1, #1 5656: 6828 ldr r0, [r5, #0] 5658: 4b23 ldr r3, [pc, #140] ; (56e8 <_lv_style_list_add_style+0xd0>) 565a: 0089 lsls r1, r1, #2 565c: 4798 blx r3 565e: e7e7 b.n 5630 <_lv_style_list_add_style+0x18> if(new_classes == NULL) { 5660: b954 cbnz r4, 5678 <_lv_style_list_add_style+0x60> LV_LOG_WARN("lv_style_list_add_style: couldn't add the class"); 5662: 4b22 ldr r3, [pc, #136] ; (56ec <_lv_style_list_add_style+0xd4>) 5664: 9300 str r3, [sp, #0] 5666: 491c ldr r1, [pc, #112] ; (56d8 <_lv_style_list_add_style+0xc0>) 5668: 4b1a ldr r3, [pc, #104] ; (56d4 <_lv_style_list_add_style+0xbc>) 566a: 4c1c ldr r4, [pc, #112] ; (56dc <_lv_style_list_add_style+0xc4>) 566c: 22d2 movs r2, #210 ; 0xd2 566e: 2002 movs r0, #2 5670: 47a0 blx r4 } 5672: b002 add sp, #8 5674: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(list->has_trans) first_style++; 5678: 796b ldrb r3, [r5, #5] for(i = list->style_cnt; i > first_style; i--) { 567a: 792e ldrb r6, [r5, #4] uint8_t first_style = 0; 567c: f3c3 0840 ubfx r8, r3, #1, #1 if(list->has_local) first_style++; 5680: 07db lsls r3, r3, #31 5682: bf48 it mi 5684: f108 0801 addmi.w r8, r8, #1 new_classes[i] = new_classes[i - 1]; 5688: eba6 0208 sub.w r2, r6, r8 568c: b2d2 uxtb r2, r2 568e: 4546 cmp r6, r8 5690: f1c2 0001 rsb r0, r2, #1 5694: f106 4180 add.w r1, r6, #1073741824 ; 0x40000000 5698: ea4f 0080 mov.w r0, r0, lsl #2 569c: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff 56a0: bf38 it cc 56a2: 2004 movcc r0, #4 56a4: eb00 0181 add.w r1, r0, r1, lsl #2 56a8: eb00 0086 add.w r0, r0, r6, lsl #2 56ac: ea4f 0282 mov.w r2, r2, lsl #2 56b0: 4b0f ldr r3, [pc, #60] ; (56f0 <_lv_style_list_add_style+0xd8>) 56b2: bf38 it cc 56b4: 2200 movcc r2, #0 56b6: 4421 add r1, r4 56b8: 4420 add r0, r4 list->style_cnt++; 56ba: 3601 adds r6, #1 new_classes[i] = new_classes[i - 1]; 56bc: 4798 blx r3 new_classes[first_style] = style; 56be: f844 7028 str.w r7, [r4, r8, lsl #2] list->style_cnt++; 56c2: 712e strb r6, [r5, #4] list->style_list = new_classes; 56c4: 602c str r4, [r5, #0] 56c6: e7d4 b.n 5672 <_lv_style_list_add_style+0x5a> 56c8: 00005549 .word 0x00005549 56cc: 0000ea2d .word 0x0000ea2d 56d0: 000017e1 .word 0x000017e1 56d4: 0001f90b .word 0x0001f90b 56d8: 0001f7e6 .word 0x0001f7e6 56dc: 0000e8e9 .word 0x0000e8e9 56e0: 0001edbe .word 0x0001edbe 56e4: 000017e9 .word 0x000017e9 56e8: 0000ee15 .word 0x0000ee15 56ec: 0001f852 .word 0x0001f852 56f0: 000162d1 .word 0x000162d1 000056f4 : */ 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); 56f4: 7943 ldrb r3, [r0, #5] 56f6: 07db lsls r3, r3, #31 { 56f8: b573 push {r0, r1, r4, r5, r6, lr} 56fa: 4605 mov r5, r0 if(list->has_local) return lv_style_list_get_style(list, 0); 56fc: d505 bpl.n 570a 56fe: 4b1a ldr r3, [pc, #104] ; (5768 ) 5700: 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; } 5702: b002 add sp, #8 5704: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} if(list->has_local) return lv_style_list_get_style(list, 0); 5708: 4718 bx r3 lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 570a: 4b18 ldr r3, [pc, #96] ; (576c ) 570c: 2004 movs r0, #4 570e: 4798 blx r3 LV_ASSERT_MEM(local_style); 5710: 4b17 ldr r3, [pc, #92] ; (5770 ) lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 5712: 4604 mov r4, r0 LV_ASSERT_MEM(local_style); 5714: 4798 blx r3 5716: 4606 mov r6, r0 5718: b968 cbnz r0, 5736 571a: 4b16 ldr r3, [pc, #88] ; (5774 ) 571c: 4916 ldr r1, [pc, #88] ; (5778 ) 571e: 9300 str r3, [sp, #0] 5720: f240 4235 movw r2, #1077 ; 0x435 5724: 2003 movs r0, #3 5726: 4d15 ldr r5, [pc, #84] ; (577c ) 5728: 47a8 blx r5 572a: 4815 ldr r0, [pc, #84] ; (5780 ) 572c: 4915 ldr r1, [pc, #84] ; (5784 ) 572e: 4622 mov r2, r4 5730: 4633 mov r3, r6 5732: 4788 blx r1 5734: e7fe b.n 5734 if(local_style == NULL) { 5736: b95c cbnz r4, 5750 LV_LOG_WARN("get_local_style: couldn't create local style"); 5738: 4b13 ldr r3, [pc, #76] ; (5788 ) 573a: 9300 str r3, [sp, #0] 573c: 490e ldr r1, [pc, #56] ; (5778 ) 573e: 4b0d ldr r3, [pc, #52] ; (5774 ) 5740: 4d0e ldr r5, [pc, #56] ; (577c ) 5742: f240 4237 movw r2, #1079 ; 0x437 5746: 2002 movs r0, #2 5748: 47a8 blx r5 } 574a: 4620 mov r0, r4 574c: b002 add sp, #8 574e: bd70 pop {r4, r5, r6, pc} lv_style_init(local_style); 5750: 4b0e ldr r3, [pc, #56] ; (578c ) 5752: 4620 mov r0, r4 5754: 4798 blx r3 _lv_style_list_add_style(list, local_style); 5756: 4b0e ldr r3, [pc, #56] ; (5790 ) 5758: 4621 mov r1, r4 575a: 4628 mov r0, r5 575c: 4798 blx r3 list->has_local = 1; 575e: 796b ldrb r3, [r5, #5] 5760: f043 0301 orr.w r3, r3, #1 5764: 716b strb r3, [r5, #5] return local_style; 5766: e7f0 b.n 574a 5768: 00005495 .word 0x00005495 576c: 0000ea2d .word 0x0000ea2d 5770: 000017e1 .word 0x000017e1 5774: 0001f924 .word 0x0001f924 5778: 0001f7e6 .word 0x0001f7e6 577c: 0000e8e9 .word 0x0000e8e9 5780: 0001edbe .word 0x0001edbe 5784: 000017e9 .word 0x000017e9 5788: 0001f882 .word 0x0001f882 578c: 00005531 .word 0x00005531 5790: 00005619 .word 0x00005619 00005794 : { 5794: b510 push {r4, lr} lv_mem_free(style->map); 5796: 4b03 ldr r3, [pc, #12] ; (57a4 ) { 5798: 4604 mov r4, r0 lv_mem_free(style->map); 579a: 6800 ldr r0, [r0, #0] 579c: 4798 blx r3 style->map = NULL; 579e: 2300 movs r3, #0 57a0: 6023 str r3, [r4, #0] } 57a2: bd10 pop {r4, pc} 57a4: 0000eae5 .word 0x0000eae5 000057a8 <_lv_style_get_mem_size>: if(style->map == NULL) return 0; 57a8: 6800 ldr r0, [r0, #0] 57aa: b128 cbz r0, 57b8 <_lv_style_get_mem_size+0x10> size_t i = 0; 57ac: 2300 movs r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 57ae: 5cc2 ldrb r2, [r0, r3] 57b0: 2aff cmp r2, #255 ; 0xff 57b2: d102 bne.n 57ba <_lv_style_get_mem_size+0x12> return i + sizeof(lv_style_property_t); 57b4: 3302 adds r3, #2 57b6: b298 uxth r0, r3 } 57b8: 4770 bx lr if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 57ba: f002 020f and.w r2, r2, #15 57be: 2a08 cmp r2, #8 57c0: d802 bhi.n 57c8 <_lv_style_get_mem_size+0x20> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 57c2: 3302 adds r3, #2 i += sizeof(lv_style_property_t); 57c4: 3302 adds r3, #2 57c6: e7f2 b.n 57ae <_lv_style_get_mem_size+0x6> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 57c8: 2a0b cmp r2, #11 57ca: d9fa bls.n 57c2 <_lv_style_get_mem_size+0x1a> else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 57cc: 2a0d cmp r2, #13 57ce: bf94 ite ls 57d0: 3301 addls r3, #1 else i += sizeof(const void *); 57d2: 3304 addhi r3, #4 57d4: e7f6 b.n 57c4 <_lv_style_get_mem_size+0x1c> ... 000057d8 : { 57d8: b537 push {r0, r1, r2, r4, r5, lr} 57da: 4605 mov r5, r0 if(style_src == NULL) return; 57dc: 460c mov r4, r1 57de: b179 cbz r1, 5800 if(style_src->map == NULL) return; 57e0: 680b ldr r3, [r1, #0] 57e2: b16b cbz r3, 5800 uint16_t size = _lv_style_get_mem_size(style_src); 57e4: 4608 mov r0, r1 57e6: 4b07 ldr r3, [pc, #28] ; (5804 ) 57e8: 4798 blx r3 style_dest->map = lv_mem_alloc(size); 57ea: 4b07 ldr r3, [pc, #28] ; (5808 ) uint16_t size = _lv_style_get_mem_size(style_src); 57ec: 9001 str r0, [sp, #4] style_dest->map = lv_mem_alloc(size); 57ee: 4798 blx r3 57f0: 6028 str r0, [r5, #0] _lv_memcpy(style_dest->map, style_src->map, size); 57f2: 9a01 ldr r2, [sp, #4] 57f4: 6821 ldr r1, [r4, #0] 57f6: 4b05 ldr r3, [pc, #20] ; (580c ) } 57f8: b003 add sp, #12 57fa: e8bd 4030 ldmia.w sp!, {r4, r5, lr} _lv_memcpy(style_dest->map, style_src->map, size); 57fe: 4718 bx r3 } 5800: b003 add sp, #12 5802: bd30 pop {r4, r5, pc} 5804: 000057a9 .word 0x000057a9 5808: 0000ea2d .word 0x0000ea2d 580c: 0000ec31 .word 0x0000ec31 00005810 : { 5810: b5f8 push {r3, r4, r5, r6, r7, lr} 5812: 460f mov r7, r1 if(style == NULL) return false; 5814: 4604 mov r4, r0 5816: b330 cbz r0, 5866 int32_t id = get_property_index(style, prop); 5818: 6806 ldr r6, [r0, #0] 581a: 4b14 ldr r3, [pc, #80] ; (586c ) 581c: 4630 mov r0, r6 581e: 4798 blx r3 if(id >= 0) { 5820: 1e05 subs r5, r0, #0 5822: db20 blt.n 5866 attr_found.full = *(style->map + id + 1); 5824: 442e add r6, r5 if(attr_found.bits.state == attr_goal.bits.state) { 5826: 7873 ldrb r3, [r6, #1] 5828: ea83 2317 eor.w r3, r3, r7, lsr #8 582c: 065b lsls r3, r3, #25 582e: d11a bne.n 5866 uint32_t map_size = _lv_style_get_mem_size(style); 5830: 4b0f ldr r3, [pc, #60] ; (5870 ) 5832: 4620 mov r0, r4 5834: f007 010f and.w r1, r7, #15 5838: 4798 blx r3 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 583a: 290b cmp r1, #11 583c: d90c bls.n 5858 else prop_size += sizeof(const void *); 583e: 290e cmp r1, #14 5840: bf34 ite cc 5842: 2303 movcc r3, #3 5844: 2306 movcs r3, #6 for(i = id; i < map_size - prop_size; i++) { 5846: 1ac1 subs r1, r0, r3 5848: 42a9 cmp r1, r5 style->map[i] = style->map[i + prop_size]; 584a: 6820 ldr r0, [r4, #0] for(i = id; i < map_size - prop_size; i++) { 584c: d806 bhi.n 585c style->map = lv_mem_realloc(style->map, map_size - prop_size); 584e: 4b09 ldr r3, [pc, #36] ; (5874 ) 5850: 4798 blx r3 5852: 6020 str r0, [r4, #0] return true; 5854: 2001 movs r0, #1 } 5856: bdf8 pop {r3, r4, r5, r6, r7, pc} else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 5858: 2304 movs r3, #4 585a: e7f4 b.n 5846 style->map[i] = style->map[i + prop_size]; 585c: 1942 adds r2, r0, r5 585e: 5cd2 ldrb r2, [r2, r3] 5860: 5542 strb r2, [r0, r5] for(i = id; i < map_size - prop_size; i++) { 5862: 3501 adds r5, #1 5864: e7f0 b.n 5848 if(style == NULL) return false; 5866: 2000 movs r0, #0 5868: e7f5 b.n 5856 586a: bf00 nop 586c: 000054b5 .word 0x000054b5 5870: 000057a9 .word 0x000057a9 5874: 0000ee15 .word 0x0000ee15 00005878 <_lv_style_set_int>: { 5878: b570 push {r4, r5, r6, lr} 587a: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 587c: 4b28 ldr r3, [pc, #160] ; (5920 <_lv_style_set_int+0xa8>) { 587e: b086 sub sp, #24 5880: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 5882: 4630 mov r0, r6 { 5884: f8ad 100e strh.w r1, [sp, #14] 5888: f8ad 200c strh.w r2, [sp, #12] int32_t id = get_property_index(style, prop); 588c: 460c mov r4, r1 588e: 4798 blx r3 if(id >= 0) { 5890: 2800 cmp r0, #0 5892: db0d blt.n 58b0 <_lv_style_set_int+0x38> attr_found.full = *(style->map + id + 1); 5894: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5896: 785b ldrb r3, [r3, #1] 5898: ea83 2314 eor.w r3, r3, r4, lsr #8 589c: 065b lsls r3, r3, #25 589e: d107 bne.n 58b0 <_lv_style_set_int+0x38> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t)); 58a0: 3002 adds r0, #2 58a2: 4b20 ldr r3, [pc, #128] ; (5924 <_lv_style_set_int+0xac>) 58a4: 2202 movs r2, #2 58a6: a903 add r1, sp, #12 58a8: 4430 add r0, r6 58aa: 4798 blx r3 } 58ac: b006 add sp, #24 58ae: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 58b0: 23ff movs r3, #255 ; 0xff 58b2: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 58b6: 4628 mov r0, r5 58b8: 4b1b ldr r3, [pc, #108] ; (5928 <_lv_style_set_int+0xb0>) 58ba: 4798 blx r3 if(size == 0) size += end_mark_size; 58bc: 1e04 subs r4, r0, #0 58be: bf08 it eq 58c0: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t); 58c2: 3404 adds r4, #4 style->map = lv_mem_realloc(style->map, size); 58c4: b2a4 uxth r4, r4 58c6: 4b19 ldr r3, [pc, #100] ; (592c <_lv_style_set_int+0xb4>) 58c8: 4621 mov r1, r4 58ca: 4630 mov r0, r6 58cc: 4798 blx r3 LV_ASSERT_MEM(style->map); 58ce: 4b18 ldr r3, [pc, #96] ; (5930 <_lv_style_set_int+0xb8>) style->map = lv_mem_realloc(style->map, size); 58d0: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 58d2: 4798 blx r3 58d4: 4606 mov r6, r0 58d6: b968 cbnz r0, 58f4 <_lv_style_set_int+0x7c> 58d8: 4b16 ldr r3, [pc, #88] ; (5934 <_lv_style_set_int+0xbc>) 58da: 4917 ldr r1, [pc, #92] ; (5938 <_lv_style_set_int+0xc0>) 58dc: 9300 str r3, [sp, #0] 58de: f44f 72c3 mov.w r2, #390 ; 0x186 58e2: 2003 movs r0, #3 58e4: 4c15 ldr r4, [pc, #84] ; (593c <_lv_style_set_int+0xc4>) 58e6: 47a0 blx r4 58e8: 682a ldr r2, [r5, #0] 58ea: 4815 ldr r0, [pc, #84] ; (5940 <_lv_style_set_int+0xc8>) 58ec: 4915 ldr r1, [pc, #84] ; (5944 <_lv_style_set_int+0xcc>) 58ee: 4633 mov r3, r6 58f0: 4788 blx r1 58f2: e7fe b.n 58f2 <_lv_style_set_int+0x7a> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 58f4: 6828 ldr r0, [r5, #0] 58f6: 4e0b ldr r6, [pc, #44] ; (5924 <_lv_style_set_int+0xac>) 58f8: 1fa3 subs r3, r4, #6 58fa: f10d 010e add.w r1, sp, #14 58fe: 4418 add r0, r3 5900: 2202 movs r2, #2 5902: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(lv_style_int_t) - end_mark_size, &value, sizeof(lv_style_int_t)); 5904: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5906: 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)); 5908: a903 add r1, sp, #12 590a: 4418 add r0, r3 590c: 2202 movs r2, #2 590e: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5910: 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)); 5912: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5914: 2202 movs r2, #2 5916: f10d 0116 add.w r1, sp, #22 591a: 4420 add r0, r4 591c: 47b0 blx r6 591e: e7c5 b.n 58ac <_lv_style_set_int+0x34> 5920: 000054b5 .word 0x000054b5 5924: 0000551f .word 0x0000551f 5928: 000057a9 .word 0x000057a9 592c: 0000ee15 .word 0x0000ee15 5930: 000017e1 .word 0x000017e1 5934: 0001f93a .word 0x0001f93a 5938: 0001f7e6 .word 0x0001f7e6 593c: 0000e8e9 .word 0x0000e8e9 5940: 0001edbe .word 0x0001edbe 5944: 000017e9 .word 0x000017e9 00005948 <_lv_style_set_color>: { 5948: b570 push {r4, r5, r6, lr} 594a: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 594c: 4b28 ldr r3, [pc, #160] ; (59f0 <_lv_style_set_color+0xa8>) { 594e: b086 sub sp, #24 5950: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 5952: 4630 mov r0, r6 { 5954: f8ad 200c strh.w r2, [sp, #12] 5958: f8ad 100e strh.w r1, [sp, #14] int32_t id = get_property_index(style, prop); 595c: 460c mov r4, r1 595e: 4798 blx r3 if(id >= 0) { 5960: 2800 cmp r0, #0 5962: db0d blt.n 5980 <_lv_style_set_color+0x38> attr_found.full = *(style->map + id + 1); 5964: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5966: 785b ldrb r3, [r3, #1] 5968: ea83 2314 eor.w r3, r3, r4, lsr #8 596c: 065b lsls r3, r3, #25 596e: d107 bne.n 5980 <_lv_style_set_color+0x38> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t)); 5970: 3002 adds r0, #2 5972: 4b20 ldr r3, [pc, #128] ; (59f4 <_lv_style_set_color+0xac>) 5974: 2202 movs r2, #2 5976: a903 add r1, sp, #12 5978: 4430 add r0, r6 597a: 4798 blx r3 } 597c: b006 add sp, #24 597e: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 5980: 23ff movs r3, #255 ; 0xff 5982: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 5986: 4628 mov r0, r5 5988: 4b1b ldr r3, [pc, #108] ; (59f8 <_lv_style_set_color+0xb0>) 598a: 4798 blx r3 if(size == 0) size += end_mark_size; 598c: 1e04 subs r4, r0, #0 598e: bf08 it eq 5990: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(lv_color_t); 5992: 3404 adds r4, #4 style->map = lv_mem_realloc(style->map, size); 5994: b2a4 uxth r4, r4 5996: 4b19 ldr r3, [pc, #100] ; (59fc <_lv_style_set_color+0xb4>) 5998: 4621 mov r1, r4 599a: 4630 mov r0, r6 599c: 4798 blx r3 LV_ASSERT_MEM(style->map); 599e: 4b18 ldr r3, [pc, #96] ; (5a00 <_lv_style_set_color+0xb8>) style->map = lv_mem_realloc(style->map, size); 59a0: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 59a2: 4798 blx r3 59a4: 4606 mov r6, r0 59a6: b968 cbnz r0, 59c4 <_lv_style_set_color+0x7c> 59a8: 4b16 ldr r3, [pc, #88] ; (5a04 <_lv_style_set_color+0xbc>) 59aa: 4917 ldr r1, [pc, #92] ; (5a08 <_lv_style_set_color+0xc0>) 59ac: 9300 str r3, [sp, #0] 59ae: f240 12b5 movw r2, #437 ; 0x1b5 59b2: 2003 movs r0, #3 59b4: 4c15 ldr r4, [pc, #84] ; (5a0c <_lv_style_set_color+0xc4>) 59b6: 47a0 blx r4 59b8: 682a ldr r2, [r5, #0] 59ba: 4815 ldr r0, [pc, #84] ; (5a10 <_lv_style_set_color+0xc8>) 59bc: 4915 ldr r1, [pc, #84] ; (5a14 <_lv_style_set_color+0xcc>) 59be: 4633 mov r3, r6 59c0: 4788 blx r1 59c2: e7fe b.n 59c2 <_lv_style_set_color+0x7a> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 59c4: 6828 ldr r0, [r5, #0] 59c6: 4e0b ldr r6, [pc, #44] ; (59f4 <_lv_style_set_color+0xac>) 59c8: 1fa3 subs r3, r4, #6 59ca: f10d 010e add.w r1, sp, #14 59ce: 4418 add r0, r3 59d0: 2202 movs r2, #2 59d2: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 59d4: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 59d6: 1f23 subs r3, r4, #4 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 59d8: a903 add r1, sp, #12 59da: 4418 add r0, r3 59dc: 2202 movs r2, #2 59de: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 59e0: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 59e2: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 59e4: 2202 movs r2, #2 59e6: f10d 0116 add.w r1, sp, #22 59ea: 4420 add r0, r4 59ec: 47b0 blx r6 59ee: e7c5 b.n 597c <_lv_style_set_color+0x34> 59f0: 000054b5 .word 0x000054b5 59f4: 0000551f .word 0x0000551f 59f8: 000057a9 .word 0x000057a9 59fc: 0000ee15 .word 0x0000ee15 5a00: 000017e1 .word 0x000017e1 5a04: 0001f94c .word 0x0001f94c 5a08: 0001f7e6 .word 0x0001f7e6 5a0c: 0000e8e9 .word 0x0000e8e9 5a10: 0001edbe .word 0x0001edbe 5a14: 000017e9 .word 0x000017e9 00005a18 <_lv_style_set_opa>: { 5a18: b570 push {r4, r5, r6, lr} 5a1a: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 5a1c: 4b29 ldr r3, [pc, #164] ; (5ac4 <_lv_style_set_opa+0xac>) { 5a1e: b086 sub sp, #24 5a20: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 5a22: 4630 mov r0, r6 { 5a24: f8ad 100e strh.w r1, [sp, #14] 5a28: f88d 200d strb.w r2, [sp, #13] int32_t id = get_property_index(style, prop); 5a2c: 460c mov r4, r1 5a2e: 4798 blx r3 if(id >= 0) { 5a30: 2800 cmp r0, #0 5a32: db0e blt.n 5a52 <_lv_style_set_opa+0x3a> attr_found.full = *(style->map + id + 1); 5a34: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5a36: 785b ldrb r3, [r3, #1] 5a38: ea83 2314 eor.w r3, r3, r4, lsr #8 5a3c: 065b lsls r3, r3, #25 5a3e: d108 bne.n 5a52 <_lv_style_set_opa+0x3a> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &opa, sizeof(lv_opa_t)); 5a40: 3002 adds r0, #2 5a42: 4b21 ldr r3, [pc, #132] ; (5ac8 <_lv_style_set_opa+0xb0>) 5a44: 2201 movs r2, #1 5a46: f10d 010d add.w r1, sp, #13 5a4a: 4430 add r0, r6 5a4c: 4798 blx r3 } 5a4e: b006 add sp, #24 5a50: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 5a52: 23ff movs r3, #255 ; 0xff 5a54: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 5a58: 4628 mov r0, r5 5a5a: 4b1c ldr r3, [pc, #112] ; (5acc <_lv_style_set_opa+0xb4>) 5a5c: 4798 blx r3 if(size == 0) size += end_mark_size; 5a5e: 1e04 subs r4, r0, #0 5a60: bf08 it eq 5a62: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(lv_opa_t); 5a64: 3403 adds r4, #3 style->map = lv_mem_realloc(style->map, size); 5a66: b2a4 uxth r4, r4 5a68: 4b19 ldr r3, [pc, #100] ; (5ad0 <_lv_style_set_opa+0xb8>) 5a6a: 4621 mov r1, r4 5a6c: 4630 mov r0, r6 5a6e: 4798 blx r3 LV_ASSERT_MEM(style->map); 5a70: 4b18 ldr r3, [pc, #96] ; (5ad4 <_lv_style_set_opa+0xbc>) style->map = lv_mem_realloc(style->map, size); 5a72: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 5a74: 4798 blx r3 5a76: 4606 mov r6, r0 5a78: b968 cbnz r0, 5a96 <_lv_style_set_opa+0x7e> 5a7a: 4b17 ldr r3, [pc, #92] ; (5ad8 <_lv_style_set_opa+0xc0>) 5a7c: 4917 ldr r1, [pc, #92] ; (5adc <_lv_style_set_opa+0xc4>) 5a7e: 9300 str r3, [sp, #0] 5a80: f44f 72f2 mov.w r2, #484 ; 0x1e4 5a84: 2003 movs r0, #3 5a86: 4c16 ldr r4, [pc, #88] ; (5ae0 <_lv_style_set_opa+0xc8>) 5a88: 47a0 blx r4 5a8a: 682a ldr r2, [r5, #0] 5a8c: 4815 ldr r0, [pc, #84] ; (5ae4 <_lv_style_set_opa+0xcc>) 5a8e: 4916 ldr r1, [pc, #88] ; (5ae8 <_lv_style_set_opa+0xd0>) 5a90: 4633 mov r3, r6 5a92: 4788 blx r1 5a94: e7fe b.n 5a94 <_lv_style_set_opa+0x7c> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5a96: 6828 ldr r0, [r5, #0] 5a98: 4e0b ldr r6, [pc, #44] ; (5ac8 <_lv_style_set_opa+0xb0>) 5a9a: 1f63 subs r3, r4, #5 5a9c: f10d 010e add.w r1, sp, #14 5aa0: 4418 add r0, r3 5aa2: 2202 movs r2, #2 5aa4: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 5aa6: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5aa8: 1ee3 subs r3, r4, #3 _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 5aaa: f10d 010d add.w r1, sp, #13 5aae: 4418 add r0, r3 5ab0: 2201 movs r2, #1 5ab2: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5ab4: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 5ab6: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5ab8: 2202 movs r2, #2 5aba: f10d 0116 add.w r1, sp, #22 5abe: 4420 add r0, r4 5ac0: 47b0 blx r6 5ac2: e7c4 b.n 5a4e <_lv_style_set_opa+0x36> 5ac4: 000054b5 .word 0x000054b5 5ac8: 0000551f .word 0x0000551f 5acc: 000057a9 .word 0x000057a9 5ad0: 0000ee15 .word 0x0000ee15 5ad4: 000017e1 .word 0x000017e1 5ad8: 0001f960 .word 0x0001f960 5adc: 0001f7e6 .word 0x0001f7e6 5ae0: 0000e8e9 .word 0x0000e8e9 5ae4: 0001edbe .word 0x0001edbe 5ae8: 000017e9 .word 0x000017e9 00005aec <_lv_style_set_ptr>: { 5aec: b570 push {r4, r5, r6, lr} 5aee: 6806 ldr r6, [r0, #0] int32_t id = get_property_index(style, prop); 5af0: 4b28 ldr r3, [pc, #160] ; (5b94 <_lv_style_set_ptr+0xa8>) { 5af2: b086 sub sp, #24 5af4: 4605 mov r5, r0 int32_t id = get_property_index(style, prop); 5af6: 4630 mov r0, r6 { 5af8: 9202 str r2, [sp, #8] 5afa: f8ad 100e strh.w r1, [sp, #14] int32_t id = get_property_index(style, prop); 5afe: 460c mov r4, r1 5b00: 4798 blx r3 if(id >= 0) { 5b02: 2800 cmp r0, #0 5b04: db0d blt.n 5b22 <_lv_style_set_ptr+0x36> attr_found.full = *(style->map + id + 1); 5b06: 1833 adds r3, r6, r0 if(attr_found.bits.state == attr_goal.bits.state) { 5b08: 785b ldrb r3, [r3, #1] 5b0a: ea83 2314 eor.w r3, r3, r4, lsr #8 5b0e: 065b lsls r3, r3, #25 5b10: d107 bne.n 5b22 <_lv_style_set_ptr+0x36> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *)); 5b12: 3002 adds r0, #2 5b14: 4b20 ldr r3, [pc, #128] ; (5b98 <_lv_style_set_ptr+0xac>) 5b16: 2204 movs r2, #4 5b18: a902 add r1, sp, #8 5b1a: 4430 add r0, r6 5b1c: 4798 blx r3 } 5b1e: b006 add sp, #24 5b20: bd70 pop {r4, r5, r6, pc} lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 5b22: 23ff movs r3, #255 ; 0xff 5b24: f8ad 3016 strh.w r3, [sp, #22] uint16_t size = _lv_style_get_mem_size(style); 5b28: 4628 mov r0, r5 5b2a: 4b1c ldr r3, [pc, #112] ; (5b9c <_lv_style_set_ptr+0xb0>) 5b2c: 4798 blx r3 if(size == 0) size += end_mark_size; 5b2e: 1e04 subs r4, r0, #0 5b30: bf08 it eq 5b32: 2402 moveq r4, #2 size += sizeof(lv_style_property_t) + sizeof(const void *); 5b34: 3406 adds r4, #6 style->map = lv_mem_realloc(style->map, size); 5b36: b2a4 uxth r4, r4 5b38: 4b19 ldr r3, [pc, #100] ; (5ba0 <_lv_style_set_ptr+0xb4>) 5b3a: 4621 mov r1, r4 5b3c: 4630 mov r0, r6 5b3e: 4798 blx r3 LV_ASSERT_MEM(style->map); 5b40: 4b18 ldr r3, [pc, #96] ; (5ba4 <_lv_style_set_ptr+0xb8>) style->map = lv_mem_realloc(style->map, size); 5b42: 6028 str r0, [r5, #0] LV_ASSERT_MEM(style->map); 5b44: 4798 blx r3 5b46: 4606 mov r6, r0 5b48: b968 cbnz r0, 5b66 <_lv_style_set_ptr+0x7a> 5b4a: 4b17 ldr r3, [pc, #92] ; (5ba8 <_lv_style_set_ptr+0xbc>) 5b4c: 4917 ldr r1, [pc, #92] ; (5bac <_lv_style_set_ptr+0xc0>) 5b4e: 9300 str r3, [sp, #0] 5b50: f240 2213 movw r2, #531 ; 0x213 5b54: 2003 movs r0, #3 5b56: 4c16 ldr r4, [pc, #88] ; (5bb0 <_lv_style_set_ptr+0xc4>) 5b58: 47a0 blx r4 5b5a: 682a ldr r2, [r5, #0] 5b5c: 4815 ldr r0, [pc, #84] ; (5bb4 <_lv_style_set_ptr+0xc8>) 5b5e: 4916 ldr r1, [pc, #88] ; (5bb8 <_lv_style_set_ptr+0xcc>) 5b60: 4633 mov r3, r6 5b62: 4788 blx r1 5b64: e7fe b.n 5b64 <_lv_style_set_ptr+0x78> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5b66: 6828 ldr r0, [r5, #0] 5b68: 4e0b ldr r6, [pc, #44] ; (5b98 <_lv_style_set_ptr+0xac>) 5b6a: f1a4 0308 sub.w r3, r4, #8 5b6e: f10d 010e add.w r1, sp, #14 5b72: 4418 add r0, r3 5b74: 2202 movs r2, #2 5b76: 47b0 blx r6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 5b78: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 5b7a: 1fa3 subs r3, r4, #6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 5b7c: a902 add r1, sp, #8 5b7e: 4418 add r0, r3 5b80: 2204 movs r2, #4 5b82: 47b0 blx r6 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5b84: 6828 ldr r0, [r5, #0] _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 5b86: 3c02 subs r4, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 5b88: 2202 movs r2, #2 5b8a: f10d 0116 add.w r1, sp, #22 5b8e: 4420 add r0, r4 5b90: 47b0 blx r6 5b92: e7c4 b.n 5b1e <_lv_style_set_ptr+0x32> 5b94: 000054b5 .word 0x000054b5 5b98: 0000551f .word 0x0000551f 5b9c: 000057a9 .word 0x000057a9 5ba0: 0000ee15 .word 0x0000ee15 5ba4: 000017e1 .word 0x000017e1 5ba8: 0001f972 .word 0x0001f972 5bac: 0001f7e6 .word 0x0001f7e6 5bb0: 0000e8e9 .word 0x0000e8e9 5bb4: 0001edbe .word 0x0001edbe 5bb8: 000017e9 .word 0x000017e9 00005bbc <_lv_style_get_int>: { 5bbc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5bc0: 460e mov r6, r1 5bc2: 4617 mov r7, r2 if(style == NULL) return -1; 5bc4: 4605 mov r5, r0 5bc6: b1c0 cbz r0, 5bfa <_lv_style_get_int+0x3e> if(style->map == NULL) return -1; 5bc8: f8d0 8000 ldr.w r8, [r0] 5bcc: f1b8 0f00 cmp.w r8, #0 5bd0: d013 beq.n 5bfa <_lv_style_get_int+0x3e> int32_t id = get_property_index(style, prop); 5bd2: 4b0b ldr r3, [pc, #44] ; (5c00 <_lv_style_get_int+0x44>) 5bd4: 4640 mov r0, r8 5bd6: 4798 blx r3 if(id < 0) { 5bd8: 1e04 subs r4, r0, #0 5bda: db0e blt.n 5bfa <_lv_style_get_int+0x3e> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t)); 5bdc: 1ca1 adds r1, r4, #2 5bde: 4b09 ldr r3, [pc, #36] ; (5c04 <_lv_style_get_int+0x48>) 5be0: 4638 mov r0, r7 5be2: 2202 movs r2, #2 5be4: 4441 add r1, r8 5be6: 4798 blx r3 attr_act.full = style->map[id + 1]; 5be8: 682b ldr r3, [r5, #0] 5bea: 4423 add r3, r4 5bec: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 5bee: f3c0 0006 ubfx r0, r0, #0, #7 5bf2: ea00 2016 and.w r0, r0, r6, lsr #8 } 5bf6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(style == NULL) return -1; 5bfa: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5bfe: e7fa b.n 5bf6 <_lv_style_get_int+0x3a> 5c00: 000054b5 .word 0x000054b5 5c04: 0000551f .word 0x0000551f 00005c08 <_lv_style_get_opa>: { 5c08: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5c0c: 460e mov r6, r1 5c0e: 4617 mov r7, r2 if(style == NULL) return -1; 5c10: 4605 mov r5, r0 5c12: b1c0 cbz r0, 5c46 <_lv_style_get_opa+0x3e> if(style->map == NULL) return -1; 5c14: f8d0 8000 ldr.w r8, [r0] 5c18: f1b8 0f00 cmp.w r8, #0 5c1c: d013 beq.n 5c46 <_lv_style_get_opa+0x3e> int32_t id = get_property_index(style, prop); 5c1e: 4b0b ldr r3, [pc, #44] ; (5c4c <_lv_style_get_opa+0x44>) 5c20: 4640 mov r0, r8 5c22: 4798 blx r3 if(id < 0) { 5c24: 1e04 subs r4, r0, #0 5c26: db0e blt.n 5c46 <_lv_style_get_opa+0x3e> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_opa_t)); 5c28: 1ca1 adds r1, r4, #2 5c2a: 4b09 ldr r3, [pc, #36] ; (5c50 <_lv_style_get_opa+0x48>) 5c2c: 4638 mov r0, r7 5c2e: 2201 movs r2, #1 5c30: 4441 add r1, r8 5c32: 4798 blx r3 attr_act.full = style->map[id + 1]; 5c34: 682b ldr r3, [r5, #0] 5c36: 4423 add r3, r4 5c38: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 5c3a: f3c0 0006 ubfx r0, r0, #0, #7 5c3e: ea00 2016 and.w r0, r0, r6, lsr #8 } 5c42: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(style == NULL) return -1; 5c46: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5c4a: e7fa b.n 5c42 <_lv_style_get_opa+0x3a> 5c4c: 000054b5 .word 0x000054b5 5c50: 0000551f .word 0x0000551f 00005c54 <_lv_style_get_ptr>: { 5c54: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 5c58: 460e mov r6, r1 5c5a: 4617 mov r7, r2 if(style == NULL) return -1; 5c5c: 4605 mov r5, r0 5c5e: b1c0 cbz r0, 5c92 <_lv_style_get_ptr+0x3e> if(style->map == NULL) return -1; 5c60: f8d0 8000 ldr.w r8, [r0] 5c64: f1b8 0f00 cmp.w r8, #0 5c68: d013 beq.n 5c92 <_lv_style_get_ptr+0x3e> int32_t id = get_property_index(style, prop); 5c6a: 4b0b ldr r3, [pc, #44] ; (5c98 <_lv_style_get_ptr+0x44>) 5c6c: 4640 mov r0, r8 5c6e: 4798 blx r3 if(id < 0) { 5c70: 1e04 subs r4, r0, #0 5c72: db0e blt.n 5c92 <_lv_style_get_ptr+0x3e> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *)); 5c74: 1ca1 adds r1, r4, #2 5c76: 4b09 ldr r3, [pc, #36] ; (5c9c <_lv_style_get_ptr+0x48>) 5c78: 4638 mov r0, r7 5c7a: 2204 movs r2, #4 5c7c: 4441 add r1, r8 5c7e: 4798 blx r3 attr_act.full = style->map[id + 1]; 5c80: 682b ldr r3, [r5, #0] 5c82: 4423 add r3, r4 5c84: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 5c86: f3c0 0006 ubfx r0, r0, #0, #7 5c8a: ea00 2016 and.w r0, r0, r6, lsr #8 } 5c8e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(style == NULL) return -1; 5c92: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 5c96: e7fa b.n 5c8e <_lv_style_get_ptr+0x3a> 5c98: 000054b5 .word 0x000054b5 5c9c: 0000551f .word 0x0000551f 00005ca0 : if(!list->has_local) return NULL; 5ca0: 7942 ldrb r2, [r0, #5] 5ca2: f012 0301 ands.w r3, r2, #1 5ca6: d005 beq.n 5cb4 if(list->has_trans) return list->style_list[1]; 5ca8: 6803 ldr r3, [r0, #0] 5caa: 0792 lsls r2, r2, #30 5cac: bf4c ite mi 5cae: 6858 ldrmi r0, [r3, #4] else return list->style_list[0]; 5cb0: 6818 ldrpl r0, [r3, #0] 5cb2: 4770 bx lr if(!list->has_local) return NULL; 5cb4: 4618 mov r0, r3 } 5cb6: 4770 bx lr 00005cb8 <_lv_style_list_get_transition_style>: if(!list->has_trans) return NULL; 5cb8: 7943 ldrb r3, [r0, #5] 5cba: f013 0302 ands.w r3, r3, #2 return list->style_list[0]; 5cbe: bf1a itte ne 5cc0: 6803 ldrne r3, [r0, #0] 5cc2: 6818 ldrne r0, [r3, #0] if(!list->has_trans) return NULL; 5cc4: 4618 moveq r0, r3 } 5cc6: 4770 bx lr 00005cc8 <_lv_style_list_reset>: { 5cc8: b538 push {r3, r4, r5, lr} if(list == NULL) return; 5cca: 4604 mov r4, r0 5ccc: b328 cbz r0, 5d1a <_lv_style_list_reset+0x52> if(list->has_local) { 5cce: 7943 ldrb r3, [r0, #5] 5cd0: 07da lsls r2, r3, #31 5cd2: d508 bpl.n 5ce6 <_lv_style_list_reset+0x1e> lv_style_t * local = lv_style_list_get_local_style(list); 5cd4: 4b11 ldr r3, [pc, #68] ; (5d1c <_lv_style_list_reset+0x54>) 5cd6: 4798 blx r3 if(local) { 5cd8: 4605 mov r5, r0 5cda: b120 cbz r0, 5ce6 <_lv_style_list_reset+0x1e> lv_style_reset(local); 5cdc: 4b10 ldr r3, [pc, #64] ; (5d20 <_lv_style_list_reset+0x58>) 5cde: 4798 blx r3 lv_mem_free(local); 5ce0: 4b10 ldr r3, [pc, #64] ; (5d24 <_lv_style_list_reset+0x5c>) 5ce2: 4628 mov r0, r5 5ce4: 4798 blx r3 if(list->has_trans) { 5ce6: 7963 ldrb r3, [r4, #5] 5ce8: 079b lsls r3, r3, #30 5cea: d509 bpl.n 5d00 <_lv_style_list_reset+0x38> lv_style_t * trans = _lv_style_list_get_transition_style(list); 5cec: 4b0e ldr r3, [pc, #56] ; (5d28 <_lv_style_list_reset+0x60>) 5cee: 4620 mov r0, r4 5cf0: 4798 blx r3 if(trans) { 5cf2: 4605 mov r5, r0 5cf4: b120 cbz r0, 5d00 <_lv_style_list_reset+0x38> lv_style_reset(trans); 5cf6: 4b0a ldr r3, [pc, #40] ; (5d20 <_lv_style_list_reset+0x58>) 5cf8: 4798 blx r3 lv_mem_free(trans); 5cfa: 4b0a ldr r3, [pc, #40] ; (5d24 <_lv_style_list_reset+0x5c>) 5cfc: 4628 mov r0, r5 5cfe: 4798 blx r3 if(list->style_cnt > 0) lv_mem_free(list->style_list); 5d00: 7923 ldrb r3, [r4, #4] 5d02: b113 cbz r3, 5d0a <_lv_style_list_reset+0x42> 5d04: 6820 ldr r0, [r4, #0] 5d06: 4b07 ldr r3, [pc, #28] ; (5d24 <_lv_style_list_reset+0x5c>) 5d08: 4798 blx r3 list->style_list = NULL; 5d0a: 2300 movs r3, #0 5d0c: 6023 str r3, [r4, #0] list->style_cnt = 0; 5d0e: 88a3 ldrh r3, [r4, #4] 5d10: f423 63ff bic.w r3, r3, #2040 ; 0x7f8 5d14: f023 0307 bic.w r3, r3, #7 5d18: 80a3 strh r3, [r4, #4] } 5d1a: bd38 pop {r3, r4, r5, pc} 5d1c: 00005ca1 .word 0x00005ca1 5d20: 00005795 .word 0x00005795 5d24: 0000eae5 .word 0x0000eae5 5d28: 00005cb9 .word 0x00005cb9 00005d2c : { 5d2c: b570 push {r4, r5, r6, lr} 5d2e: 460c mov r4, r1 _lv_style_list_reset(list_dest); 5d30: 4b26 ldr r3, [pc, #152] ; (5dcc ) { 5d32: 4605 mov r5, r0 _lv_style_list_reset(list_dest); 5d34: 4798 blx r3 if(list_src->style_list == NULL) return; 5d36: 6823 ldr r3, [r4, #0] 5d38: b1b3 cbz r3, 5d68 if(list_src->has_local == 0) { 5d3a: 7963 ldrb r3, [r4, #5] list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5d3c: 7920 ldrb r0, [r4, #4] 5d3e: 4e24 ldr r6, [pc, #144] ; (5dd0 ) if(list_src->has_local == 0) { 5d40: f013 0f01 tst.w r3, #1 if(list_src->has_trans) { 5d44: f003 0202 and.w r2, r3, #2 5d48: 4b22 ldr r3, [pc, #136] ; (5dd4 ) if(list_src->has_local == 0) { 5d4a: d117 bne.n 5d7c if(list_src->has_trans) { 5d4c: b16a cbz r2, 5d6a list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5d4e: 3801 subs r0, #1 5d50: 0080 lsls r0, r0, #2 5d52: 4798 blx r3 5d54: 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 *)); 5d56: 7922 ldrb r2, [r4, #4] 5d58: 6821 ldr r1, [r4, #0] 5d5a: 3a01 subs r2, #1 5d5c: 0092 lsls r2, r2, #2 5d5e: 3104 adds r1, #4 5d60: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt - 1; 5d62: 7923 ldrb r3, [r4, #4] 5d64: 3b01 subs r3, #1 list_dest->style_cnt = list_src->style_cnt; 5d66: 712b strb r3, [r5, #4] } 5d68: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *)); 5d6a: 0080 lsls r0, r0, #2 5d6c: 4798 blx r3 5d6e: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *)); 5d70: 7922 ldrb r2, [r4, #4] 5d72: 6821 ldr r1, [r4, #0] 5d74: 0092 lsls r2, r2, #2 5d76: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt; 5d78: 7923 ldrb r3, [r4, #4] 5d7a: e7f4 b.n 5d66 if(list_src->has_trans) { 5d7c: b1ca cbz r2, 5db2 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *)); 5d7e: 3802 subs r0, #2 5d80: 0080 lsls r0, r0, #2 5d82: 4798 blx r3 5d84: 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 *)); 5d86: 7922 ldrb r2, [r4, #4] 5d88: 6821 ldr r1, [r4, #0] 5d8a: 3a02 subs r2, #2 5d8c: 0092 lsls r2, r2, #2 5d8e: 3108 adds r1, #8 5d90: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt - 2; 5d92: 7923 ldrb r3, [r4, #4] 5d94: 3b02 subs r3, #2 list_dest->style_cnt = list_src->style_cnt - 1; 5d96: b2db uxtb r3, r3 list_dest->style_cnt = list_src->style_cnt - 2; 5d98: 712b strb r3, [r5, #4] lv_style_t * local_style = get_alloc_local_style(list_dest); 5d9a: 4e0f ldr r6, [pc, #60] ; (5dd8 ) 5d9c: 4628 mov r0, r5 5d9e: 47b0 blx r6 5da0: 4605 mov r5, r0 lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 5da2: 4620 mov r0, r4 5da4: 47b0 blx r6 5da6: 4b0d ldr r3, [pc, #52] ; (5ddc ) 5da8: 4601 mov r1, r0 5daa: 4628 mov r0, r5 } 5dac: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 5db0: 4718 bx r3 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 5db2: 3801 subs r0, #1 5db4: 0080 lsls r0, r0, #2 5db6: 4798 blx r3 5db8: 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 *)); 5dba: 7922 ldrb r2, [r4, #4] 5dbc: 6821 ldr r1, [r4, #0] 5dbe: 3a01 subs r2, #1 5dc0: 0092 lsls r2, r2, #2 5dc2: 3104 adds r1, #4 5dc4: 47b0 blx r6 list_dest->style_cnt = list_src->style_cnt - 1; 5dc6: 7923 ldrb r3, [r4, #4] 5dc8: 3b01 subs r3, #1 5dca: e7e4 b.n 5d96 5dcc: 00005cc9 .word 0x00005cc9 5dd0: 0000ec31 .word 0x0000ec31 5dd4: 0000ea2d .word 0x0000ea2d 5dd8: 000056f5 .word 0x000056f5 5ddc: 000057d9 .word 0x000057d9 00005de0 <_lv_style_list_add_trans_style>: if(list->has_trans) return _lv_style_list_get_transition_style(list); 5de0: 7943 ldrb r3, [r0, #5] 5de2: 079a lsls r2, r3, #30 { 5de4: b573 push {r0, r1, r4, r5, r6, lr} 5de6: 4605 mov r5, r0 if(list->has_trans) return _lv_style_list_get_transition_style(list); 5de8: d504 bpl.n 5df4 <_lv_style_list_add_trans_style+0x14> 5dea: 4b1d ldr r3, [pc, #116] ; (5e60 <_lv_style_list_add_trans_style+0x80>) } 5dec: b002 add sp, #8 5dee: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} if(list->has_trans) return _lv_style_list_get_transition_style(list); 5df2: 4718 bx r3 lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 5df4: 4b1b ldr r3, [pc, #108] ; (5e64 <_lv_style_list_add_trans_style+0x84>) 5df6: 2004 movs r0, #4 5df8: 4798 blx r3 LV_ASSERT_MEM(trans_style); 5dfa: 4b1b ldr r3, [pc, #108] ; (5e68 <_lv_style_list_add_trans_style+0x88>) lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 5dfc: 4604 mov r4, r0 LV_ASSERT_MEM(trans_style); 5dfe: 4798 blx r3 5e00: 4606 mov r6, r0 5e02: b968 cbnz r0, 5e20 <_lv_style_list_add_trans_style+0x40> 5e04: 4b19 ldr r3, [pc, #100] ; (5e6c <_lv_style_list_add_trans_style+0x8c>) 5e06: 491a ldr r1, [pc, #104] ; (5e70 <_lv_style_list_add_trans_style+0x90>) 5e08: 9300 str r3, [sp, #0] 5e0a: f240 22cd movw r2, #717 ; 0x2cd 5e0e: 2003 movs r0, #3 5e10: 4d18 ldr r5, [pc, #96] ; (5e74 <_lv_style_list_add_trans_style+0x94>) 5e12: 47a8 blx r5 5e14: 4818 ldr r0, [pc, #96] ; (5e78 <_lv_style_list_add_trans_style+0x98>) 5e16: 4919 ldr r1, [pc, #100] ; (5e7c <_lv_style_list_add_trans_style+0x9c>) 5e18: 4622 mov r2, r4 5e1a: 4633 mov r3, r6 5e1c: 4788 blx r1 5e1e: e7fe b.n 5e1e <_lv_style_list_add_trans_style+0x3e> if(trans_style == NULL) { 5e20: b95c cbnz r4, 5e3a <_lv_style_list_add_trans_style+0x5a> LV_LOG_WARN("lv_style_list_add_trans_style: couldn't create transition style"); 5e22: 4b17 ldr r3, [pc, #92] ; (5e80 <_lv_style_list_add_trans_style+0xa0>) 5e24: 9300 str r3, [sp, #0] 5e26: 4912 ldr r1, [pc, #72] ; (5e70 <_lv_style_list_add_trans_style+0x90>) 5e28: 4b10 ldr r3, [pc, #64] ; (5e6c <_lv_style_list_add_trans_style+0x8c>) 5e2a: 4d12 ldr r5, [pc, #72] ; (5e74 <_lv_style_list_add_trans_style+0x94>) 5e2c: f240 22cf movw r2, #719 ; 0x2cf 5e30: 2002 movs r0, #2 5e32: 47a8 blx r5 } 5e34: 4620 mov r0, r4 5e36: b002 add sp, #8 5e38: bd70 pop {r4, r5, r6, pc} lv_style_init(trans_style); 5e3a: 4b12 ldr r3, [pc, #72] ; (5e84 <_lv_style_list_add_trans_style+0xa4>) 5e3c: 4620 mov r0, r4 5e3e: 4798 blx r3 _lv_style_list_add_style(list, trans_style); 5e40: 4621 mov r1, r4 5e42: 4b11 ldr r3, [pc, #68] ; (5e88 <_lv_style_list_add_trans_style+0xa8>) 5e44: 4628 mov r0, r5 5e46: 4798 blx r3 list->has_trans = 1; 5e48: 796b ldrb r3, [r5, #5] 5e4a: f043 0302 orr.w r3, r3, #2 5e4e: 716b strb r3, [r5, #5] if(list->has_local) { 5e50: 07db lsls r3, r3, #31 lv_style_t * tmp = list->style_list[0]; 5e52: bf42 ittt mi 5e54: 682b ldrmi r3, [r5, #0] list->style_list[0] = list->style_list[1]; 5e56: e9d3 2100 ldrdmi r2, r1, [r3] list->style_list[1] = tmp; 5e5a: e9c3 1200 strdmi r1, r2, [r3] 5e5e: e7e9 b.n 5e34 <_lv_style_list_add_trans_style+0x54> 5e60: 00005cb9 .word 0x00005cb9 5e64: 0000ea2d .word 0x0000ea2d 5e68: 000017e1 .word 0x000017e1 5e6c: 0001f984 .word 0x0001f984 5e70: 0001f7e6 .word 0x0001f7e6 5e74: 0000e8e9 .word 0x0000e8e9 5e78: 0001edbe .word 0x0001edbe 5e7c: 000017e9 .word 0x000017e9 5e80: 0001f8af .word 0x0001f8af 5e84: 00005531 .word 0x00005531 5e88: 00005619 .word 0x00005619 00005e8c <_lv_style_list_get_int>: { 5e8c: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 5e90: 460f mov r7, r1 5e92: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 5e94: 4605 mov r5, r0 5e96: b318 cbz r0, 5ee0 <_lv_style_list_get_int+0x54> if(list->style_list == NULL) return LV_RES_INV; 5e98: 6800 ldr r0, [r0, #0] 5e9a: b308 cbz r0, 5ee0 <_lv_style_list_get_int+0x54> lv_style_int_t value_act = 0; 5e9c: 2600 movs r6, #0 lv_style_t * class = lv_style_list_get_style(list, ci); 5e9e: 4b1b ldr r3, [pc, #108] ; (5f0c <_lv_style_list_get_int+0x80>) int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 5ea0: f8df b06c ldr.w fp, [pc, #108] ; 5f10 <_lv_style_list_get_int+0x84> lv_style_int_t value_act = 0; 5ea4: f8ad 6006 strh.w r6, [sp, #6] int16_t weight_goal = attr.full; 5ea8: ea4f 2a11 mov.w sl, r1, lsr #8 int16_t weight = -1; 5eac: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 5eb0: 792a ldrb r2, [r5, #4] 5eb2: fa0f f986 sxth.w r9, r6 5eb6: 4591 cmp r9, r2 5eb8: db03 blt.n 5ec2 <_lv_style_list_get_int+0x36> if(weight >= 0) return LV_RES_OK; 5eba: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 5ebc: f3c0 30c0 ubfx r0, r0, #15, #1 5ec0: e00e b.n 5ee0 <_lv_style_list_get_int+0x54> lv_style_t * class = lv_style_list_get_style(list, ci); 5ec2: b2f1 uxtb r1, r6 5ec4: 4628 mov r0, r5 5ec6: 4798 blx r3 int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 5ec8: f10d 0206 add.w r2, sp, #6 5ecc: 4639 mov r1, r7 5ece: 47d8 blx fp if(weight_act == weight_goal) { 5ed0: 4582 cmp sl, r0 5ed2: 4b0e ldr r3, [pc, #56] ; (5f0c <_lv_style_list_get_int+0x80>) 5ed4: d107 bne.n 5ee6 <_lv_style_list_get_int+0x5a> *res = value_act; 5ed6: f8bd 3006 ldrh.w r3, [sp, #6] 5eda: f8a8 3000 strh.w r3, [r8] return LV_RES_OK; 5ede: 2001 movs r0, #1 } 5ee0: b003 add sp, #12 5ee2: 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) { 5ee6: 796a ldrb r2, [r5, #5] 5ee8: 0791 lsls r1, r2, #30 5eea: d506 bpl.n 5efa <_lv_style_list_get_int+0x6e> 5eec: 2800 cmp r0, #0 5eee: db04 blt.n 5efa <_lv_style_list_get_int+0x6e> 5ef0: f1b9 0f00 cmp.w r9, #0 5ef4: d101 bne.n 5efa <_lv_style_list_get_int+0x6e> 5ef6: 0752 lsls r2, r2, #29 5ef8: d5ed bpl.n 5ed6 <_lv_style_list_get_int+0x4a> else if(weight_act > weight) { 5efa: 4284 cmp r4, r0 *res = value_act; 5efc: bfbe ittt lt 5efe: f8bd 2006 ldrhlt.w r2, [sp, #6] 5f02: f8a8 2000 strhlt.w r2, [r8] 5f06: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 5f08: 3601 adds r6, #1 5f0a: e7d1 b.n 5eb0 <_lv_style_list_get_int+0x24> 5f0c: 00005495 .word 0x00005495 5f10: 00005bbd .word 0x00005bbd 00005f14 <_lv_style_list_get_color>: { 5f14: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 5f18: 460f mov r7, r1 5f1a: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 5f1c: 4605 mov r5, r0 5f1e: b310 cbz r0, 5f66 <_lv_style_list_get_color+0x52> if(list->style_list == NULL) return LV_RES_INV; 5f20: 6800 ldr r0, [r0, #0] 5f22: b300 cbz r0, 5f66 <_lv_style_list_get_color+0x52> lv_color_t value_act = { 0 }; 5f24: 2600 movs r6, #0 lv_style_t * class = lv_style_list_get_style(list, ci); 5f26: 4b1b ldr r3, [pc, #108] ; (5f94 <_lv_style_list_get_color+0x80>) int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 5f28: f8df b06c ldr.w fp, [pc, #108] ; 5f98 <_lv_style_list_get_color+0x84> lv_color_t value_act = { 0 }; 5f2c: f8ad 6004 strh.w r6, [sp, #4] int16_t weight_goal = attr.full; 5f30: ea4f 2a11 mov.w sl, r1, lsr #8 int16_t weight = -1; 5f34: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 5f38: 792a ldrb r2, [r5, #4] 5f3a: fa0f f986 sxth.w r9, r6 5f3e: 4591 cmp r9, r2 5f40: db03 blt.n 5f4a <_lv_style_list_get_color+0x36> if(weight >= 0) return LV_RES_OK; 5f42: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 5f44: f3c0 30c0 ubfx r0, r0, #15, #1 5f48: e00d b.n 5f66 <_lv_style_list_get_color+0x52> lv_style_t * class = lv_style_list_get_style(list, ci); 5f4a: b2f1 uxtb r1, r6 5f4c: 4628 mov r0, r5 5f4e: 4798 blx r3 int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 5f50: aa01 add r2, sp, #4 5f52: 4639 mov r1, r7 5f54: 47d8 blx fp if(weight_act == weight_goal) { 5f56: 4582 cmp sl, r0 5f58: 4b0e ldr r3, [pc, #56] ; (5f94 <_lv_style_list_get_color+0x80>) 5f5a: d107 bne.n 5f6c <_lv_style_list_get_color+0x58> *res = value_act; 5f5c: f8bd 3004 ldrh.w r3, [sp, #4] 5f60: f8a8 3000 strh.w r3, [r8] return LV_RES_OK; 5f64: 2001 movs r0, #1 } 5f66: b003 add sp, #12 5f68: 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) { 5f6c: 796a ldrb r2, [r5, #5] 5f6e: 0791 lsls r1, r2, #30 5f70: d506 bpl.n 5f80 <_lv_style_list_get_color+0x6c> 5f72: 2800 cmp r0, #0 5f74: db04 blt.n 5f80 <_lv_style_list_get_color+0x6c> 5f76: f1b9 0f00 cmp.w r9, #0 5f7a: d101 bne.n 5f80 <_lv_style_list_get_color+0x6c> 5f7c: 0752 lsls r2, r2, #29 5f7e: d5ed bpl.n 5f5c <_lv_style_list_get_color+0x48> else if(weight_act > weight) { 5f80: 4284 cmp r4, r0 *res = value_act; 5f82: bfbe ittt lt 5f84: f8bd 2004 ldrhlt.w r2, [sp, #4] 5f88: f8a8 2000 strhlt.w r2, [r8] 5f8c: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 5f8e: 3601 adds r6, #1 5f90: e7d2 b.n 5f38 <_lv_style_list_get_color+0x24> 5f92: bf00 nop 5f94: 00005495 .word 0x00005495 5f98: 00005bbd .word 0x00005bbd 00005f9c <_lv_style_list_get_opa>: { 5f9c: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 5fa0: 460f mov r7, r1 5fa2: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 5fa4: 4605 mov r5, r0 5fa6: b318 cbz r0, 5ff0 <_lv_style_list_get_opa+0x54> if(list->style_list == NULL) return LV_RES_INV; 5fa8: 6800 ldr r0, [r0, #0] 5faa: b308 cbz r0, 5ff0 <_lv_style_list_get_opa+0x54> lv_opa_t value_act = LV_OPA_TRANSP; 5fac: 2600 movs r6, #0 lv_style_t * class = lv_style_list_get_style(list, ci); 5fae: 4b1b ldr r3, [pc, #108] ; (601c <_lv_style_list_get_opa+0x80>) int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 5fb0: f8df b06c ldr.w fp, [pc, #108] ; 6020 <_lv_style_list_get_opa+0x84> lv_opa_t value_act = LV_OPA_TRANSP; 5fb4: f88d 6007 strb.w r6, [sp, #7] int16_t weight_goal = attr.full; 5fb8: ea4f 2a11 mov.w sl, r1, lsr #8 int16_t weight = -1; 5fbc: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 5fc0: 792a ldrb r2, [r5, #4] 5fc2: fa0f f986 sxth.w r9, r6 5fc6: 4591 cmp r9, r2 5fc8: db03 blt.n 5fd2 <_lv_style_list_get_opa+0x36> if(weight >= 0) return LV_RES_OK; 5fca: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 5fcc: f3c0 30c0 ubfx r0, r0, #15, #1 5fd0: e00e b.n 5ff0 <_lv_style_list_get_opa+0x54> lv_style_t * class = lv_style_list_get_style(list, ci); 5fd2: b2f1 uxtb r1, r6 5fd4: 4628 mov r0, r5 5fd6: 4798 blx r3 int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 5fd8: f10d 0207 add.w r2, sp, #7 5fdc: 4639 mov r1, r7 5fde: 47d8 blx fp if(weight_act == weight_goal) { 5fe0: 4582 cmp sl, r0 5fe2: 4b0e ldr r3, [pc, #56] ; (601c <_lv_style_list_get_opa+0x80>) 5fe4: d107 bne.n 5ff6 <_lv_style_list_get_opa+0x5a> *res = value_act; 5fe6: f89d 3007 ldrb.w r3, [sp, #7] 5fea: f888 3000 strb.w r3, [r8] return LV_RES_OK; 5fee: 2001 movs r0, #1 } 5ff0: b003 add sp, #12 5ff2: 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) { 5ff6: 796a ldrb r2, [r5, #5] 5ff8: 0791 lsls r1, r2, #30 5ffa: d506 bpl.n 600a <_lv_style_list_get_opa+0x6e> 5ffc: 2800 cmp r0, #0 5ffe: db04 blt.n 600a <_lv_style_list_get_opa+0x6e> 6000: f1b9 0f00 cmp.w r9, #0 6004: d101 bne.n 600a <_lv_style_list_get_opa+0x6e> 6006: 0752 lsls r2, r2, #29 6008: d5ed bpl.n 5fe6 <_lv_style_list_get_opa+0x4a> else if(weight_act > weight) { 600a: 4284 cmp r4, r0 *res = value_act; 600c: bfbe ittt lt 600e: f89d 2007 ldrblt.w r2, [sp, #7] 6012: f888 2000 strblt.w r2, [r8] 6016: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 6018: 3601 adds r6, #1 601a: e7d1 b.n 5fc0 <_lv_style_list_get_opa+0x24> 601c: 00005495 .word 0x00005495 6020: 00005c09 .word 0x00005c09 00006024 <_lv_style_list_get_ptr>: { 6024: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 6028: 460f mov r7, r1 602a: 4690 mov r8, r2 if(list == NULL) return LV_RES_INV; 602c: 4605 mov r5, r0 602e: b1f8 cbz r0, 6070 <_lv_style_list_get_ptr+0x4c> if(list->style_list == NULL) return LV_RES_INV; 6030: 6800 ldr r0, [r0, #0] 6032: b1e8 cbz r0, 6070 <_lv_style_list_get_ptr+0x4c> lv_style_t * class = lv_style_list_get_style(list, ci); 6034: 4b19 ldr r3, [pc, #100] ; (609c <_lv_style_list_get_ptr+0x78>) int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 6036: f8df b068 ldr.w fp, [pc, #104] ; 60a0 <_lv_style_list_get_ptr+0x7c> int16_t weight_goal = attr.full; 603a: ea4f 2a11 mov.w sl, r1, lsr #8 for(ci = 0; ci < list->style_cnt; ci++) { 603e: 2600 movs r6, #0 int16_t weight = -1; 6040: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff for(ci = 0; ci < list->style_cnt; ci++) { 6044: 792a ldrb r2, [r5, #4] 6046: fa0f f986 sxth.w r9, r6 604a: 4591 cmp r9, r2 604c: db03 blt.n 6056 <_lv_style_list_get_ptr+0x32> if(weight >= 0) return LV_RES_OK; 604e: 43e0 mvns r0, r4 if(list == NULL) return LV_RES_INV; 6050: f3c0 30c0 ubfx r0, r0, #15, #1 6054: e00c b.n 6070 <_lv_style_list_get_ptr+0x4c> lv_style_t * class = lv_style_list_get_style(list, ci); 6056: b2f1 uxtb r1, r6 6058: 4628 mov r0, r5 605a: 4798 blx r3 int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 605c: aa01 add r2, sp, #4 605e: 4639 mov r1, r7 6060: 47d8 blx fp if(weight_act == weight_goal) { 6062: 4582 cmp sl, r0 6064: 4b0d ldr r3, [pc, #52] ; (609c <_lv_style_list_get_ptr+0x78>) 6066: d106 bne.n 6076 <_lv_style_list_get_ptr+0x52> *res = value_act; 6068: 9b01 ldr r3, [sp, #4] 606a: f8c8 3000 str.w r3, [r8] return LV_RES_OK; 606e: 2001 movs r0, #1 } 6070: b003 add sp, #12 6072: 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) { 6076: 796a ldrb r2, [r5, #5] 6078: 0791 lsls r1, r2, #30 607a: d506 bpl.n 608a <_lv_style_list_get_ptr+0x66> 607c: 2800 cmp r0, #0 607e: db04 blt.n 608a <_lv_style_list_get_ptr+0x66> 6080: f1b9 0f00 cmp.w r9, #0 6084: d101 bne.n 608a <_lv_style_list_get_ptr+0x66> 6086: 0752 lsls r2, r2, #29 6088: d5ee bpl.n 6068 <_lv_style_list_get_ptr+0x44> else if(weight_act > weight) { 608a: 4284 cmp r4, r0 *res = value_act; 608c: bfbe ittt lt 608e: 9a01 ldrlt r2, [sp, #4] 6090: f8c8 2000 strlt.w r2, [r8] 6094: 4604 movlt r4, r0 for(ci = 0; ci < list->style_cnt; ci++) { 6096: 3601 adds r6, #1 6098: e7d4 b.n 6044 <_lv_style_list_get_ptr+0x20> 609a: bf00 nop 609c: 00005495 .word 0x00005495 60a0: 00005c55 .word 0x00005c55 000060a4 : * @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) { 60a4: 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))); 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 1345 ubfx r3, r1, #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))); 60aa: f1c2 06ff rsb r6, 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))); 60ae: f3c0 1445 ubfx r4, r0, #5, #6 60b2: 4373 muls r3, r6 60b4: fb04 3302 mla r3, r4, 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))); 60b8: f001 041f and.w r4, r1, #31 60bc: f000 071f and.w r7, r0, #31 60c0: 4374 muls r4, r6 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 60c2: f248 0581 movw r5, #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))); 60c6: fb07 4402 mla r4, r7, r2, r4 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 60ca: 436b muls r3, r5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 60cc: 436c muls r4, r5 #else /*LV_COLOR_DEPTH == 1*/ ret.full = mix > LV_OPA_50 ? c1.full : c2.full; #endif return ret; 60ce: f3c3 53c5 ubfx r3, r3, #23, #6 60d2: f3c4 54c4 ubfx r4, r4, #23, #5 60d6: ea44 1443 orr.w r4, r4, r3, 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))); 60da: f3c1 23c4 ubfx r3, r1, #11, #5 60de: 4373 muls r3, r6 60e0: f3c0 20c4 ubfx r0, r0, #11, #5 60e4: fb00 3202 mla r2, r0, r2, r3 60e8: fb05 f302 mul.w r3, r5, r2 60ec: 0ddb lsrs r3, r3, #23 } 60ee: ea44 20c3 orr.w r0, r4, r3, lsl #11 60f2: bdf0 pop {r4, r5, r6, r7, pc} 000060f4 : } } } static inline lv_color_t color_blend_true_color_additive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 60f4: 460b mov r3, r1 if(opa <= LV_OPA_MIN) return bg; 60f6: 2a05 cmp r2, #5 { 60f8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 60fc: f000 0c1f and.w ip, r0, #31 6100: f3c0 1e45 ubfx lr, r0, #5, #6 6104: f3c0 28c4 ubfx r8, r0, #11, #5 6108: f003 061f and.w r6, r3, #31 610c: f3c3 1545 ubfx r5, r3, #5, #6 6110: f3c3 24c4 ubfx r4, r3, #11, #5 if(opa <= LV_OPA_MIN) return bg; 6114: d802 bhi.n 611c 6116: 4608 mov r0, r1 #endif if(opa == LV_OPA_COVER) return fg; return lv_color_mix(fg, bg, opa); } 6118: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} tmp = bg.ch.red + fg.ch.red; 611c: eb04 0308 add.w r3, r4, r8 fg.ch.red = LV_MATH_MIN(tmp, 31); 6120: 2b1f cmp r3, #31 tmp = bg.ch.green + fg.ch.green; 6122: eb05 040e add.w r4, r5, lr fg.ch.red = LV_MATH_MIN(tmp, 31); 6126: bf28 it cs 6128: 231f movcs r3, #31 tmp = bg.ch.blue + fg.ch.blue; 612a: eb06 050c add.w r5, r6, ip fg.ch.green = LV_MATH_MIN(tmp, 63); 612e: 2c3f cmp r4, #63 ; 0x3f 6130: bf28 it cs 6132: 243f movcs r4, #63 ; 0x3f fg.ch.blue = LV_MATH_MIN(tmp, 31); 6134: 2d1f cmp r5, #31 6136: bf28 it cs 6138: 251f movcs r5, #31 if(opa == LV_OPA_COVER) return fg; 613a: 2aff cmp r2, #255 ; 0xff fg.ch.red = LV_MATH_MIN(tmp, 31); 613c: f003 031f and.w r3, r3, #31 fg.ch.green = LV_MATH_MIN(tmp, 63); 6140: f004 043f and.w r4, r4, #63 ; 0x3f fg.ch.blue = LV_MATH_MIN(tmp, 31); 6144: f005 051f and.w r5, r5, #31 if(opa == LV_OPA_COVER) return fg; 6148: d108 bne.n 615c 614a: f04f 0000 mov.w r0, #0 614e: f365 0004 bfi r0, r5, #0, #5 6152: f364 104a bfi r0, r4, #5, #6 6156: f363 20cf bfi r0, r3, #11, #5 615a: e7dd b.n 6118 return lv_color_mix(fg, bg, opa); 615c: f365 0004 bfi r0, r5, #0, #5 6160: f364 104a bfi r0, r4, #5, #6 6164: f363 20cf bfi r0, r3, #11, #5 } 6168: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} return lv_color_mix(fg, bg, opa); 616c: 4b00 ldr r3, [pc, #0] ; (6170 ) 616e: 4718 bx r3 6170: 000060a5 .word 0x000060a5 00006174 : static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 6174: 460b mov r3, r1 if(opa <= LV_OPA_MIN) return bg; 6176: 2a05 cmp r2, #5 { 6178: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 617c: f000 0c1f and.w ip, r0, #31 6180: f3c0 1e45 ubfx lr, r0, #5, #6 6184: f3c0 28c4 ubfx r8, r0, #11, #5 6188: f003 061f and.w r6, r3, #31 618c: f3c3 1545 ubfx r5, r3, #5, #6 6190: f3c3 24c4 ubfx r4, r3, #11, #5 if(opa <= LV_OPA_MIN) return bg; 6194: d802 bhi.n 619c 6196: 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); } 6198: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} tmp = bg.ch.red - fg.ch.red; 619c: eba4 0308 sub.w r3, r4, r8 tmp = bg.ch.green - fg.ch.green; 61a0: eba5 040e sub.w r4, r5, lr tmp = bg.ch.blue - fg.ch.blue; 61a4: eba6 050c sub.w r5, r6, ip fg.ch.red = LV_MATH_MAX(tmp, 0); 61a8: ea23 73e3 bic.w r3, r3, r3, asr #31 fg.ch.green = LV_MATH_MAX(tmp, 0); 61ac: ea24 74e4 bic.w r4, r4, r4, asr #31 fg.ch.blue = LV_MATH_MAX(tmp, 0); 61b0: ea25 75e5 bic.w r5, r5, r5, asr #31 if(opa == LV_OPA_COVER) return fg; 61b4: 2aff cmp r2, #255 ; 0xff fg.ch.red = LV_MATH_MAX(tmp, 0); 61b6: f003 031f and.w r3, r3, #31 fg.ch.green = LV_MATH_MAX(tmp, 0); 61ba: f004 043f and.w r4, r4, #63 ; 0x3f fg.ch.blue = LV_MATH_MAX(tmp, 0); 61be: f005 051f and.w r5, r5, #31 if(opa == LV_OPA_COVER) return fg; 61c2: d108 bne.n 61d6 61c4: f04f 0000 mov.w r0, #0 61c8: f365 0004 bfi r0, r5, #0, #5 61cc: f364 104a bfi r0, r4, #5, #6 61d0: f363 20cf bfi r0, r3, #11, #5 61d4: e7e0 b.n 6198 return lv_color_mix(fg, bg, opa); 61d6: f365 0004 bfi r0, r5, #0, #5 61da: f364 104a bfi r0, r4, #5, #6 61de: f363 20cf bfi r0, r3, #11, #5 } 61e2: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} return lv_color_mix(fg, bg, opa); 61e6: 4b01 ldr r3, [pc, #4] ; (61ec ) 61e8: 4718 bx r3 61ea: bf00 nop 61ec: 000060a5 .word 0x000060a5 000061f0 <_lv_blend_fill>: { 61f0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 61f4: b08d sub sp, #52 ; 0x34 61f6: 4605 mov r5, r0 61f8: 9305 str r3, [sp, #20] 61fa: f89d 305c ldrb.w r3, [sp, #92] ; 0x5c 61fe: f89d 7058 ldrb.w r7, [sp, #88] ; 0x58 6202: f89d b060 ldrb.w fp, [sp, #96] ; 0x60 6206: 9304 str r3, [sp, #16] if(opa < LV_OPA_MIN) return; 6208: 2b04 cmp r3, #4 { 620a: 460e mov r6, r1 620c: 4614 mov r4, r2 if(opa < LV_OPA_MIN) return; 620e: f240 80a3 bls.w 6358 <_lv_blend_fill+0x168> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 6212: 2f00 cmp r7, #0 6214: f000 80a0 beq.w 6358 <_lv_blend_fill+0x168> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6218: 4ba4 ldr r3, [pc, #656] ; (64ac <_lv_blend_fill+0x2bc>) 621a: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 621c: 4ba4 ldr r3, [pc, #656] ; (64b0 <_lv_blend_fill+0x2c0>) lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 621e: 4682 mov sl, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6220: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 6222: 4ba4 ldr r3, [pc, #656] ; (64b4 <_lv_blend_fill+0x2c4>) lv_color_t * disp_buf = vdb->buf_act; 6224: f8d0 9008 ldr.w r9, [r0, #8] lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6228: 4680 mov r8, r0 is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 622a: 4632 mov r2, r6 622c: 4629 mov r1, r5 622e: a80a add r0, sp, #40 ; 0x28 6230: 4798 blx r3 if(!is_common) return; 6232: 2800 cmp r0, #0 6234: f000 8090 beq.w 6358 <_lv_blend_fill+0x168> draw_area.x1 -= disp_area->x1; 6238: f8bd 2028 ldrh.w r2, [sp, #40] ; 0x28 623c: f8b8 0010 ldrh.w r0, [r8, #16] draw_area.x2 -= disp_area->x1; 6240: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c draw_area.y1 -= disp_area->y1; 6244: f8b8 6012 ldrh.w r6, [r8, #18] 6248: f8bd 502a ldrh.w r5, [sp, #42] ; 0x2a draw_area.x1 -= disp_area->x1; 624c: 1a11 subs r1, r2, r0 draw_area.x2 -= disp_area->x1; 624e: 1a18 subs r0, r3, r0 6250: f8ad 002c strh.w r0, [sp, #44] ; 0x2c draw_area.y2 -= disp_area->y1; 6254: f8bd 002e ldrh.w r0, [sp, #46] ; 0x2e 6258: 1b80 subs r0, r0, r6 draw_area.y1 -= disp_area->y1; 625a: 1bad subs r5, r5, r6 draw_area.y2 -= disp_area->y1; 625c: f8ad 002e strh.w r0, [sp, #46] ; 0x2e if(mask && disp->driver.antialiasing == 0) 6260: 9805 ldr r0, [sp, #20] draw_area.x1 -= disp_area->x1; 6262: b209 sxth r1, r1 draw_area.y1 -= disp_area->y1; 6264: b22d sxth r5, r5 draw_area.x1 -= disp_area->x1; 6266: f8ad 1028 strh.w r1, [sp, #40] ; 0x28 draw_area.y1 -= disp_area->y1; 626a: f8ad 502a strh.w r5, [sp, #42] ; 0x2a if(mask && disp->driver.antialiasing == 0) 626e: 2800 cmp r0, #0 6270: d145 bne.n 62fe <_lv_blend_fill+0x10e> if(disp->driver.set_px_cb) { 6272: f8da 0014 ldr.w r0, [sl, #20] 6276: b2a6 uxth r6, r4 6278: 2800 cmp r0, #0 627a: d15a bne.n 6332 <_lv_blend_fill+0x142> else if(mode == LV_BLEND_MODE_NORMAL) { 627c: f1bb 0f00 cmp.w fp, #0 6280: f040 8227 bne.w 66d2 <_lv_blend_fill+0x4e2> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6284: 4b89 ldr r3, [pc, #548] ; (64ac <_lv_blend_fill+0x2bc>) 6286: 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); 6288: f8b8 3014 ldrh.w r3, [r8, #20] 628c: f8b8 2010 ldrh.w r2, [r8, #16] * @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); 6290: f9bd 102a ldrsh.w r1, [sp, #42] ; 0x2a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6294: 3301 adds r3, #1 6296: eba3 0802 sub.w r8, r3, r2 629a: f8bd 302c ldrh.w r3, [sp, #44] ; 0x2c 629e: f9bd 2028 ldrsh.w r2, [sp, #40] ; 0x28 62a2: 3301 adds r3, #1 62a4: 1a9b subs r3, r3, r2 62a6: b21b sxth r3, r3 62a8: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 62aa: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 62ae: 9308 str r3, [sp, #32] 62b0: 3301 adds r3, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 62b2: fa0f f888 sxth.w r8, r8 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 62b6: 1a5b subs r3, r3, r1 int32_t draw_area_h = lv_area_get_height(draw_area); 62b8: b21b sxth r3, r3 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 62ba: fb08 2201 mla r2, r8, r1, r2 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 62be: 2f01 cmp r7, #1 int32_t draw_area_h = lv_area_get_height(draw_area); 62c0: 9307 str r3, [sp, #28] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 62c2: 4682 mov sl, r0 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 62c4: 460b mov r3, r1 62c6: eb09 0542 add.w r5, r9, r2, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 62ca: f040 8132 bne.w 6532 <_lv_blend_fill+0x342> if(opa > LV_OPA_MAX) { 62ce: 9b04 ldr r3, [sp, #16] 62d0: 2bfa cmp r3, #250 ; 0xfa 62d2: f240 809e bls.w 6412 <_lv_blend_fill+0x222> if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 62d6: 6a43 ldr r3, [r0, #36] ; 0x24 62d8: 2b00 cmp r3, #0 62da: f000 8095 beq.w 6408 <_lv_blend_fill+0x218> 62de: 4b76 ldr r3, [pc, #472] ; (64b8 <_lv_blend_fill+0x2c8>) 62e0: a80a add r0, sp, #40 ; 0x28 62e2: 4798 blx r3 62e4: 28f0 cmp r0, #240 ; 0xf0 62e6: f240 808f bls.w 6408 <_lv_blend_fill+0x218> disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color); 62ea: f8da 5024 ldr.w r5, [sl, #36] ; 0x24 62ee: f8ad 4000 strh.w r4, [sp] 62f2: ab0a add r3, sp, #40 ; 0x28 62f4: 4642 mov r2, r8 62f6: 4649 mov r1, r9 62f8: 4650 mov r0, sl 62fa: 47a8 blx r5 return; 62fc: e02c b.n 6358 <_lv_blend_fill+0x168> if(mask && disp->driver.antialiasing == 0) 62fe: f89a 0008 ldrb.w r0, [sl, #8] 6302: 07c0 lsls r0, r0, #31 6304: d4b5 bmi.n 6272 <_lv_blend_fill+0x82> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6306: 1c58 adds r0, r3, #1 6308: 1a80 subs r0, r0, r2 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 630a: 9e05 ldr r6, [sp, #20] int32_t mask_w = lv_area_get_width(&draw_area); 630c: fa0f fe80 sxth.w lr, r0 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 6310: 9805 ldr r0, [sp, #20] 6312: f1c6 0c01 rsb ip, r6, #1 6316: 3801 subs r0, #1 6318: eb0c 0600 add.w r6, ip, r0 631c: 45b6 cmp lr, r6 631e: dda8 ble.n 6272 <_lv_blend_fill+0x82> 6320: f810 6f01 ldrb.w r6, [r0, #1]! 6324: 2e80 cmp r6, #128 ; 0x80 6326: f04f 36ff mov.w r6, #4294967295 ; 0xffffffff 632a: bf98 it ls 632c: 2600 movls r6, #0 632e: 7006 strb r6, [r0, #0] 6330: e7f2 b.n 6318 <_lv_blend_fill+0x128> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6332: 4b5e ldr r3, [pc, #376] ; (64ac <_lv_blend_fill+0x2bc>) 6334: 4798 blx r3 6336: f8b8 2014 ldrh.w r2, [r8, #20] 633a: f8b8 3010 ldrh.w r3, [r8, #16] 633e: f9bd 502a ldrsh.w r5, [sp, #42] ; 0x2a 6342: 3201 adds r2, #1 6344: 1ad2 subs r2, r2, r3 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6346: 2f01 cmp r7, #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6348: 4606 mov r6, r0 634a: b212 sxth r2, r2 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 634c: d121 bne.n 6392 <_lv_blend_fill+0x1a2> for(y = draw_area->y1; y <= draw_area->y2; y++) { 634e: 46aa mov sl, r5 6350: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6354: 459a cmp sl, r3 6356: dd02 ble.n 635e <_lv_blend_fill+0x16e> } 6358: b00d add sp, #52 ; 0x34 635a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} for(x = draw_area->x1; x <= draw_area->x2; x++) { 635e: f9bd 7028 ldrsh.w r7, [sp, #40] ; 0x28 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 6362: fa0f f88a sxth.w r8, sl for(x = draw_area->x1; x <= draw_area->x2; x++) { 6366: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c 636a: 429f cmp r7, r3 636c: dd02 ble.n 6374 <_lv_blend_fill+0x184> for(y = draw_area->y1; y <= draw_area->y2; y++) { 636e: f10a 0a01 add.w sl, sl, #1 6372: e7ed b.n 6350 <_lv_blend_fill+0x160> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 6374: 9b04 ldr r3, [sp, #16] 6376: 9302 str r3, [sp, #8] 6378: f8ad 4004 strh.w r4, [sp, #4] 637c: f8cd 8000 str.w r8, [sp] 6380: b23b sxth r3, r7 6382: 6975 ldr r5, [r6, #20] 6384: 9205 str r2, [sp, #20] 6386: 4649 mov r1, r9 6388: 4630 mov r0, r6 638a: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 638c: 3701 adds r7, #1 638e: 9a05 ldr r2, [sp, #20] 6390: e7e9 b.n 6366 <_lv_blend_fill+0x176> 6392: f8bd 702c ldrh.w r7, [sp, #44] ; 0x2c const lv_opa_t * mask_tmp = mask - draw_area->x1; 6396: f9bd 3028 ldrsh.w r3, [sp, #40] ; 0x28 639a: 9905 ldr r1, [sp, #20] 639c: 3701 adds r7, #1 639e: 1aff subs r7, r7, r3 63a0: eba1 0a03 sub.w sl, r1, r3 63a4: b23b sxth r3, r7 63a6: 9305 str r3, [sp, #20] for(y = draw_area->y1; y <= draw_area->y2; y++) { 63a8: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 63ac: 429d cmp r5, r3 63ae: dcd3 bgt.n 6358 <_lv_blend_fill+0x168> for(x = draw_area->x1; x <= draw_area->x2; x++) { 63b0: f9bd 8028 ldrsh.w r8, [sp, #40] ; 0x28 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 63b4: fa0f fb85 sxth.w fp, r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 63b8: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c 63bc: 4598 cmp r8, r3 63be: dd03 ble.n 63c8 <_lv_blend_fill+0x1d8> mask_tmp += draw_area_w; 63c0: 9b05 ldr r3, [sp, #20] for(y = draw_area->y1; y <= draw_area->y2; y++) { 63c2: 3501 adds r5, #1 mask_tmp += draw_area_w; 63c4: 449a add sl, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 63c6: e7ef b.n 63a8 <_lv_blend_fill+0x1b8> (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 63c8: f81a 3008 ldrb.w r3, [sl, r8] 63cc: 9904 ldr r1, [sp, #16] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 63ce: f8ad 4004 strh.w r4, [sp, #4] (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 63d2: fb13 f301 smulbb r3, r3, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 63d6: 0a1b lsrs r3, r3, #8 63d8: 9302 str r3, [sp, #8] 63da: f8cd b000 str.w fp, [sp] 63de: fa0f f388 sxth.w r3, r8 63e2: 6977 ldr r7, [r6, #20] 63e4: 9206 str r2, [sp, #24] 63e6: 4649 mov r1, r9 63e8: 4630 mov r0, r6 63ea: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 63ec: f108 0801 add.w r8, r8, #1 63f0: 9a06 ldr r2, [sp, #24] 63f2: e7e1 b.n 63b8 <_lv_blend_fill+0x1c8> lv_color_fill(disp_buf_first, color, draw_area_w); 63f4: 4628 mov r0, r5 63f6: 9a06 ldr r2, [sp, #24] 63f8: 4631 mov r1, r6 63fa: 47b8 blx r7 disp_buf_first += disp_w; 63fc: 4445 add r5, r8 for(y = 0; y < draw_area_h; y++) { 63fe: 3401 adds r4, #1 6400: 9b07 ldr r3, [sp, #28] 6402: 42a3 cmp r3, r4 6404: dcf6 bgt.n 63f4 <_lv_blend_fill+0x204> 6406: e7a7 b.n 6358 <_lv_blend_fill+0x168> lv_color_fill(disp_buf_first, color, draw_area_w); 6408: 4f2c ldr r7, [pc, #176] ; (64bc <_lv_blend_fill+0x2cc>) disp_buf_first += disp_w; 640a: ea4f 0848 mov.w r8, r8, lsl #1 640e: 2400 movs r4, #0 6410: e7f6 b.n 6400 <_lv_blend_fill+0x210> if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 6412: 6a03 ldr r3, [r0, #32] 6414: b313 cbz r3, 645c <_lv_blend_fill+0x26c> 6416: 4b28 ldr r3, [pc, #160] ; (64b8 <_lv_blend_fill+0x2c8>) 6418: a80a add r0, sp, #40 ; 0x28 641a: 4798 blx r3 641c: 28f0 cmp r0, #240 ; 0xf0 641e: d91d bls.n 645c <_lv_blend_fill+0x26c> 6420: 4b27 ldr r3, [pc, #156] ; (64c0 <_lv_blend_fill+0x2d0>) for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 6422: 9a06 ldr r2, [sp, #24] 6424: 455a cmp r2, fp 6426: dc14 bgt.n 6452 <_lv_blend_fill+0x262> for(y = draw_area->y1; y <= draw_area->y2; y++) { 6428: f9bd 602a ldrsh.w r6, [sp, #42] ; 0x2a disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 642c: 4f24 ldr r7, [pc, #144] ; (64c0 <_lv_blend_fill+0x2d0>) disp_buf_first += disp_w; 642e: ea4f 0848 mov.w r8, r8, lsl #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6432: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6436: 429e cmp r6, r3 6438: dc8e bgt.n 6358 <_lv_blend_fill+0x168> disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 643a: 9b04 ldr r3, [sp, #16] 643c: 9300 str r3, [sp, #0] 643e: 4629 mov r1, r5 6440: f8da 4020 ldr.w r4, [sl, #32] 6444: 9b06 ldr r3, [sp, #24] 6446: 463a mov r2, r7 6448: 4650 mov r0, sl 644a: 47a0 blx r4 disp_buf_first += disp_w; 644c: 4445 add r5, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 644e: 3601 adds r6, #1 6450: e7ef b.n 6432 <_lv_blend_fill+0x242> for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 6452: f823 6b02 strh.w r6, [r3], #2 6456: f10b 0b01 add.w fp, fp, #1 645a: e7e2 b.n 6422 <_lv_blend_fill+0x232> lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 645c: 9a04 ldr r2, [sp, #16] 645e: 4b19 ldr r3, [pc, #100] ; (64c4 <_lv_blend_fill+0x2d4>) 6460: 4620 mov r0, r4 lv_color_t last_dest_color = LV_COLOR_BLACK; 6462: f04f 0100 mov.w r1, #0 lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 6466: 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; 6468: 9e04 ldr r6, [sp, #16] 646a: f3c4 22c4 ubfx r2, r4, #11, #5 646e: 4372 muls r2, r6 6470: 9205 str r2, [sp, #20] out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 6472: f3c4 1245 ubfx r2, r4, #5, #6 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 6476: f004 041f and.w r4, r4, #31 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 647a: fb02 fb06 mul.w fp, r2, r6 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 647e: fb04 fa06 mul.w sl, r4, r6 disp_buf_first += disp_w; 6482: ea4f 0248 mov.w r2, r8, lsl #1 lv_opa_t opa_inv = 255 - opa; 6486: 43f6 mvns r6, r6 lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 6488: f000 031f and.w r3, r0, #31 648c: f3c0 1c45 ubfx ip, r0, #5, #6 disp_buf_first += disp_w; 6490: 9204 str r2, [sp, #16] lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 6492: f3c0 20c4 ubfx r0, r0, #11, #5 for(y = 0; y < draw_area_h; y++) { 6496: f04f 0800 mov.w r8, #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); 649a: b2f6 uxtb r6, r6 649c: 9a07 ldr r2, [sp, #28] 649e: 4542 cmp r2, r8 64a0: f77f af5a ble.w 6358 <_lv_blend_fill+0x168> 64a4: 462f mov r7, r5 for(x = 0; x < draw_area_w; x++) { 64a6: f04f 0e00 mov.w lr, #0 64aa: e03a b.n 6522 <_lv_blend_fill+0x332> 64ac: 00004fe9 .word 0x00004fe9 64b0: 0000d9e1 .word 0x0000d9e1 64b4: 0000de8d .word 0x0000de8d 64b8: 0000de71 .word 0x0000de71 64bc: 0000e309 .word 0x0000e309 64c0: 20008108 .word 0x20008108 64c4: 000060a5 .word 0x000060a5 if(last_dest_color.full != disp_buf_first[x].full) { 64c8: 463a mov r2, r7 64ca: fa1f f981 uxth.w r9, r1 64ce: 8814 ldrh r4, [r2, #0] 64d0: 45a1 cmp r9, r4 64d2: f107 0702 add.w r7, r7, #2 64d6: d015 beq.n 6504 <_lv_blend_fill+0x314> 64d8: 7850 ldrb r0, [r2, #1] 64da: 9b05 ldr r3, [sp, #20] last_dest_color = disp_buf_first[x]; 64dc: f837 1c02 ldrh.w r1, [r7, #-2] 64e0: 08c0 lsrs r0, r0, #3 64e2: fb00 3006 mla r0, r0, r6, r3 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); 64e6: 7813 ldrb r3, [r2, #0] LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 64e8: f3c4 1445 ubfx r4, r4, #5, #6 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 64ec: f003 031f and.w r3, r3, #31 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 64f0: fb04 b406 mla r4, r4, r6, fp LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 64f4: fb03 a306 mla r3, r3, r6, sl LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 64f8: 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); 64fc: f3c4 2c05 ubfx ip, r4, #8, #6 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 6500: f3c3 2304 ubfx r3, r3, #8, #5 disp_buf_first[x] = last_res_color; 6504: 7814 ldrb r4, [r2, #0] 6506: f363 0404 bfi r4, r3, #0, #5 650a: 7014 strb r4, [r2, #0] 650c: 8814 ldrh r4, [r2, #0] 650e: f36c 144a bfi r4, ip, #5, #6 6512: 8014 strh r4, [r2, #0] 6514: f3c4 2407 ubfx r4, r4, #8, #8 6518: f360 04c7 bfi r4, r0, #3, #5 651c: 7054 strb r4, [r2, #1] for(x = 0; x < draw_area_w; x++) { 651e: f10e 0e01 add.w lr, lr, #1 6522: 9a06 ldr r2, [sp, #24] 6524: 4572 cmp r2, lr 6526: dccf bgt.n 64c8 <_lv_blend_fill+0x2d8> disp_buf_first += disp_w; 6528: 9a04 ldr r2, [sp, #16] for(y = 0; y < draw_area_h; y++) { 652a: f108 0801 add.w r8, r8, #1 disp_buf_first += disp_w; 652e: 4415 add r5, r2 for(y = 0; y < draw_area_h; y++) { 6530: e7b4 b.n 649c <_lv_blend_fill+0x2ac> last_dest_color.full = disp_buf_first[0].full; 6532: f839 1012 ldrh.w r1, [r9, r2, lsl #1] disp_buf_first += disp_w; 6536: ea4f 0248 mov.w r2, r8, lsl #1 653a: 9209 str r2, [sp, #36] ; 0x24 if(opa > LV_OPA_MAX) { 653c: 9a04 ldr r2, [sp, #16] 653e: 2afa cmp r2, #250 ; 0xfa 6540: f240 80c4 bls.w 66cc <_lv_blend_fill+0x4dc> int32_t x_end4 = draw_area_w - 4; 6544: 9b06 ldr r3, [sp, #24] FILL_NORMAL_MASK_PX(x, color) 6546: f8df 8298 ldr.w r8, [pc, #664] ; 67e0 <_lv_blend_fill+0x5f0> int32_t x_end4 = draw_area_w - 4; 654a: 3b04 subs r3, #4 654c: 9304 str r3, [sp, #16] for(y = 0; y < draw_area_h; y++) { 654e: 9b07 ldr r3, [sp, #28] 6550: 455b cmp r3, fp 6552: f77f af01 ble.w 6358 <_lv_blend_fill+0x168> 6556: f8dd a014 ldr.w sl, [sp, #20] 655a: 46a9 mov r9, r5 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 655c: 2400 movs r4, #0 655e: e013 b.n 6588 <_lv_blend_fill+0x398> FILL_NORMAL_MASK_PX(x, color) 6560: f8b9 1000 ldrh.w r1, [r9] 6564: 4630 mov r0, r6 6566: 47c0 blx r8 6568: f8a9 0000 strh.w r0, [r9] 656c: e009 b.n 6582 <_lv_blend_fill+0x392> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 656e: f01a 0f03 tst.w sl, #3 6572: d00d beq.n 6590 <_lv_blend_fill+0x3a0> FILL_NORMAL_MASK_PX(x, color) 6574: f81a 2b01 ldrb.w r2, [sl], #1 6578: b11a cbz r2, 6582 <_lv_blend_fill+0x392> 657a: 2aff cmp r2, #255 ; 0xff 657c: d1f0 bne.n 6560 <_lv_blend_fill+0x370> 657e: f8a9 6000 strh.w r6, [r9] for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6582: 3401 adds r4, #1 6584: f109 0902 add.w r9, r9, #2 6588: 9b06 ldr r3, [sp, #24] 658a: 42a3 cmp r3, r4 658c: 4657 mov r7, sl 658e: dcee bgt.n 656e <_lv_blend_fill+0x37e> 6590: eb05 0944 add.w r9, r5, r4, lsl #1 for(; x <= x_end4; x += 4) { 6594: 9b04 ldr r3, [sp, #16] 6596: 42a3 cmp r3, r4 6598: da0e bge.n 65b8 <_lv_blend_fill+0x3c8> 659a: 3f01 subs r7, #1 659c: eb05 0944 add.w r9, r5, r4, lsl #1 for(; x < draw_area_w ; x++) { 65a0: 9b06 ldr r3, [sp, #24] 65a2: 42a3 cmp r3, r4 65a4: dc4c bgt.n 6640 <_lv_blend_fill+0x450> disp_buf_first += disp_w; 65a6: 9b09 ldr r3, [sp, #36] ; 0x24 65a8: 441d add r5, r3 mask += draw_area_w; 65aa: e9dd 3205 ldrd r3, r2, [sp, #20] 65ae: 4413 add r3, r2 65b0: 9305 str r3, [sp, #20] for(y = 0; y < draw_area_h; y++) { 65b2: f10b 0b01 add.w fp, fp, #1 65b6: e7ca b.n 654e <_lv_blend_fill+0x35e> if(*mask32) { 65b8: 683b ldr r3, [r7, #0] 65ba: b14b cbz r3, 65d0 <_lv_blend_fill+0x3e0> if((*mask32) == 0xFFFFFFFF) { 65bc: 3301 adds r3, #1 65be: d10c bne.n 65da <_lv_blend_fill+0x3ea> disp_buf_first[x] = color; 65c0: f8a9 6000 strh.w r6, [r9] disp_buf_first[x + 1] = color; 65c4: f8a9 6002 strh.w r6, [r9, #2] disp_buf_first[x + 2] = color; 65c8: f8a9 6004 strh.w r6, [r9, #4] FILL_NORMAL_MASK_PX(x + 3, color) 65cc: f8a9 6006 strh.w r6, [r9, #6] mask32++; 65d0: 3704 adds r7, #4 for(; x <= x_end4; x += 4) { 65d2: 3404 adds r4, #4 65d4: f109 0908 add.w r9, r9, #8 65d8: e7dc b.n 6594 <_lv_blend_fill+0x3a4> FILL_NORMAL_MASK_PX(x, color) 65da: 783a ldrb r2, [r7, #0] 65dc: b11a cbz r2, 65e6 <_lv_blend_fill+0x3f6> 65de: 2aff cmp r2, #255 ; 0xff 65e0: d119 bne.n 6616 <_lv_blend_fill+0x426> 65e2: f8a9 6000 strh.w r6, [r9] FILL_NORMAL_MASK_PX(x + 1, color) 65e6: 787a ldrb r2, [r7, #1] 65e8: b11a cbz r2, 65f2 <_lv_blend_fill+0x402> 65ea: 2aff cmp r2, #255 ; 0xff 65ec: d11a bne.n 6624 <_lv_blend_fill+0x434> 65ee: f8a9 6002 strh.w r6, [r9, #2] FILL_NORMAL_MASK_PX(x + 2, color) 65f2: 78ba ldrb r2, [r7, #2] 65f4: b11a cbz r2, 65fe <_lv_blend_fill+0x40e> 65f6: 2aff cmp r2, #255 ; 0xff 65f8: d11b bne.n 6632 <_lv_blend_fill+0x442> 65fa: f8a9 6004 strh.w r6, [r9, #4] FILL_NORMAL_MASK_PX(x + 3, color) 65fe: 78fa ldrb r2, [r7, #3] 6600: 2a00 cmp r2, #0 6602: d0e5 beq.n 65d0 <_lv_blend_fill+0x3e0> 6604: 2aff cmp r2, #255 ; 0xff 6606: d0e1 beq.n 65cc <_lv_blend_fill+0x3dc> 6608: f8b9 1006 ldrh.w r1, [r9, #6] 660c: 4630 mov r0, r6 660e: 47c0 blx r8 6610: f8a9 0006 strh.w r0, [r9, #6] 6614: e7dc b.n 65d0 <_lv_blend_fill+0x3e0> FILL_NORMAL_MASK_PX(x, color) 6616: f8b9 1000 ldrh.w r1, [r9] 661a: 4630 mov r0, r6 661c: 47c0 blx r8 661e: f8a9 0000 strh.w r0, [r9] 6622: e7e0 b.n 65e6 <_lv_blend_fill+0x3f6> FILL_NORMAL_MASK_PX(x + 1, color) 6624: f8b9 1002 ldrh.w r1, [r9, #2] 6628: 4630 mov r0, r6 662a: 47c0 blx r8 662c: f8a9 0002 strh.w r0, [r9, #2] 6630: e7df b.n 65f2 <_lv_blend_fill+0x402> FILL_NORMAL_MASK_PX(x + 2, color) 6632: f8b9 1004 ldrh.w r1, [r9, #4] 6636: 4630 mov r0, r6 6638: 47c0 blx r8 663a: f8a9 0004 strh.w r0, [r9, #4] 663e: e7de b.n 65fe <_lv_blend_fill+0x40e> FILL_NORMAL_MASK_PX(x, color) 6640: f817 2f01 ldrb.w r2, [r7, #1]! 6644: b11a cbz r2, 664e <_lv_blend_fill+0x45e> 6646: 2aff cmp r2, #255 ; 0xff 6648: d105 bne.n 6656 <_lv_blend_fill+0x466> 664a: f8a9 6000 strh.w r6, [r9] for(; x < draw_area_w ; x++) { 664e: 3401 adds r4, #1 6650: f109 0902 add.w r9, r9, #2 6654: e7a4 b.n 65a0 <_lv_blend_fill+0x3b0> FILL_NORMAL_MASK_PX(x, color) 6656: f8b9 1000 ldrh.w r1, [r9] 665a: 4630 mov r0, r6 665c: 47c0 blx r8 665e: f8a9 0000 strh.w r0, [r9] 6662: e7f4 b.n 664e <_lv_blend_fill+0x45e> if(*mask_tmp_x) { 6664: 9a05 ldr r2, [sp, #20] 6666: f812 4008 ldrb.w r4, [r2, r8] 666a: b1d4 cbz r4, 66a2 <_lv_blend_fill+0x4b2> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 666c: 455c cmp r4, fp if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 666e: f8b7 9000 ldrh.w r9, [r7] if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 6672: d012 beq.n 669a <_lv_blend_fill+0x4aa> 6674: 2cff cmp r4, #255 ; 0xff (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 6676: bf17 itett ne 6678: 9a04 ldrne r2, [sp, #16] 667a: f8dd a010 ldreq.w sl, [sp, #16] 667e: fb14 f202 smulbbne r2, r4, r2 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 6682: ea4f 2a12 movne.w sl, r2, lsr #8 6686: 9307 str r3, [sp, #28] else last_res_color = lv_color_mix(color, disp_buf_first[x], opa_tmp); 6688: 8839 ldrh r1, [r7, #0] 668a: 4b55 ldr r3, [pc, #340] ; (67e0 <_lv_blend_fill+0x5f0>) 668c: 4652 mov r2, sl 668e: 4630 mov r0, r6 6690: 4798 blx r3 6692: 46a3 mov fp, r4 6694: 9b07 ldr r3, [sp, #28] 6696: b280 uxth r0, r0 last_dest_color.full = disp_buf_first[x].full; 6698: e001 b.n 669e <_lv_blend_fill+0x4ae> if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 669a: 4549 cmp r1, r9 669c: d1f3 bne.n 6686 <_lv_blend_fill+0x496> disp_buf_first[x] = last_res_color; 669e: 8038 strh r0, [r7, #0] if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 66a0: 4649 mov r1, r9 for(x = 0; x < draw_area_w; x++) { 66a2: f108 0801 add.w r8, r8, #1 66a6: 3702 adds r7, #2 66a8: 9a06 ldr r2, [sp, #24] 66aa: 4542 cmp r2, r8 66ac: dcda bgt.n 6664 <_lv_blend_fill+0x474> disp_buf_first += disp_w; 66ae: 9a09 ldr r2, [sp, #36] ; 0x24 66b0: 4415 add r5, r2 mask += draw_area_w; 66b2: e9dd 2405 ldrd r2, r4, [sp, #20] 66b6: 4422 add r2, r4 66b8: 9205 str r2, [sp, #20] for(y = draw_area->y1; y <= draw_area->y2; y++) { 66ba: 3301 adds r3, #1 66bc: 9a08 ldr r2, [sp, #32] 66be: 4293 cmp r3, r2 66c0: f73f ae4a bgt.w 6358 <_lv_blend_fill+0x168> 66c4: 462f mov r7, r5 for(x = 0; x < draw_area_w; x++) { 66c6: f04f 0800 mov.w r8, #0 66ca: e7ed b.n 66a8 <_lv_blend_fill+0x4b8> last_res_color.full = disp_buf_first[0].full; 66cc: 4608 mov r0, r1 lv_opa_t opa_tmp = LV_OPA_TRANSP; 66ce: 46da mov sl, fp 66d0: e7f4 b.n 66bc <_lv_blend_fill+0x4cc> switch(mode) { 66d2: f1bb 0f01 cmp.w fp, #1 66d6: f9b8 0010 ldrsh.w r0, [r8, #16] 66da: f9b8 6014 ldrsh.w r6, [r8, #20] 66de: d00c beq.n 66fa <_lv_blend_fill+0x50a> 66e0: f1bb 0f02 cmp.w fp, #2 66e4: d02d beq.n 6742 <_lv_blend_fill+0x552> LV_LOG_WARN("fill_blended: unsupported blend mode"); 66e6: 4b3f ldr r3, [pc, #252] ; (67e4 <_lv_blend_fill+0x5f4>) 66e8: 9300 str r3, [sp, #0] 66ea: 493f ldr r1, [pc, #252] ; (67e8 <_lv_blend_fill+0x5f8>) 66ec: 4b3f ldr r3, [pc, #252] ; (67ec <_lv_blend_fill+0x5fc>) 66ee: 4c40 ldr r4, [pc, #256] ; (67f0 <_lv_blend_fill+0x600>) 66f0: f44f 7204 mov.w r2, #528 ; 0x210 66f4: 2002 movs r0, #2 66f6: 47a0 blx r4 return; 66f8: e62e b.n 6358 <_lv_blend_fill+0x168> blend_fp = color_blend_true_color_additive; 66fa: f8df b0f8 ldr.w fp, [pc, #248] ; 67f4 <_lv_blend_fill+0x604> 66fe: 3601 adds r6, #1 6700: 1a36 subs r6, r6, r0 6702: b236 sxth r6, r6 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 6704: fb06 f005 mul.w r0, r6, r5 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6708: 2f01 cmp r7, #1 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 670a: eb09 0a40 add.w sl, r9, r0, lsl #1 disp_buf_tmp += disp_w; 670e: ea4f 0646 mov.w r6, r6, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6712: d127 bne.n 6764 <_lv_blend_fill+0x574> lv_color_t last_dest_color = LV_COLOR_BLACK; 6714: f04f 0800 mov.w r8, #0 lv_color_t last_res_color = lv_color_mix(color, last_dest_color, opa); 6718: 9a04 ldr r2, [sp, #16] 671a: 4b31 ldr r3, [pc, #196] ; (67e0 <_lv_blend_fill+0x5f0>) 671c: 4641 mov r1, r8 671e: 4620 mov r0, r4 6720: 4798 blx r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6722: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6726: 429d cmp r5, r3 6728: f73f ae16 bgt.w 6358 <_lv_blend_fill+0x168> for(x = draw_area->x1; x <= draw_area->x2; x++) { 672c: f9bd 7028 ldrsh.w r7, [sp, #40] ; 0x28 6730: eb0a 0947 add.w r9, sl, r7, lsl #1 6734: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c 6738: 429f cmp r7, r3 673a: dd05 ble.n 6748 <_lv_blend_fill+0x558> disp_buf_tmp += disp_w; 673c: 44b2 add sl, r6 for(y = draw_area->y1; y <= draw_area->y2; y++) { 673e: 3501 adds r5, #1 6740: e7ef b.n 6722 <_lv_blend_fill+0x532> switch(mode) { 6742: f8df b0b4 ldr.w fp, [pc, #180] ; 67f8 <_lv_blend_fill+0x608> 6746: e7da b.n 66fe <_lv_blend_fill+0x50e> if(last_dest_color.full != disp_buf_tmp[x].full) { 6748: f8b9 1000 ldrh.w r1, [r9] 674c: fa1f f388 uxth.w r3, r8 6750: 428b cmp r3, r1 6752: d003 beq.n 675c <_lv_blend_fill+0x56c> last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 6754: 9a04 ldr r2, [sp, #16] 6756: 4620 mov r0, r4 last_dest_color = disp_buf_tmp[x]; 6758: 4688 mov r8, r1 last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 675a: 47d8 blx fp disp_buf_tmp[x] = last_res_color; 675c: f829 0b02 strh.w r0, [r9], #2 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6760: 3701 adds r7, #1 6762: e7e7 b.n 6734 <_lv_blend_fill+0x544> 6764: f1c2 0201 rsb r2, r2, #1 6768: eb03 0802 add.w r8, r3, r2 const lv_opa_t * mask_tmp = mask - draw_area->x1; 676c: 9b05 ldr r3, [sp, #20] 676e: 1a5f subs r7, r3, r1 last_dest_color.full = disp_buf_tmp[0].full; 6770: f839 1010 ldrh.w r1, [r9, r0, lsl #1] 6774: fa0f f888 sxth.w r8, r8 last_res_color.full = disp_buf_tmp[0].full; 6778: 4608 mov r0, r1 lv_opa_t last_mask = LV_OPA_TRANSP; 677a: f04f 0c00 mov.w ip, #0 for(y = draw_area->y1; y <= draw_area->y2; y++) { 677e: f9bd 302e ldrsh.w r3, [sp, #46] ; 0x2e 6782: 429d cmp r5, r3 6784: f73f ade8 bgt.w 6358 <_lv_blend_fill+0x168> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6788: f9bd 9028 ldrsh.w r9, [sp, #40] ; 0x28 678c: eb0a 0349 add.w r3, sl, r9, lsl #1 6790: f9bd 202c ldrsh.w r2, [sp, #44] ; 0x2c 6794: 4591 cmp r9, r2 6796: dd03 ble.n 67a0 <_lv_blend_fill+0x5b0> disp_buf_tmp += disp_w; 6798: 44b2 add sl, r6 mask_tmp += draw_area_w; 679a: 4447 add r7, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 679c: 3501 adds r5, #1 679e: e7ee b.n 677e <_lv_blend_fill+0x58e> if(mask_tmp[x] == 0) continue; 67a0: f817 2009 ldrb.w r2, [r7, r9] 67a4: b1ba cbz r2, 67d6 <_lv_blend_fill+0x5e6> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 67a6: 4562 cmp r2, ip 67a8: d103 bne.n 67b2 <_lv_blend_fill+0x5c2> 67aa: f8b3 e000 ldrh.w lr, [r3] 67ae: 458e cmp lr, r1 67b0: d010 beq.n 67d4 <_lv_blend_fill+0x5e4> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 67b2: 2af9 cmp r2, #249 ; 0xf9 67b4: bf94 ite ls 67b6: 9904 ldrls r1, [sp, #16] 67b8: 9a04 ldrhi r2, [sp, #16] last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 67ba: 9305 str r3, [sp, #20] lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 67bc: bf9c itt ls 67be: fb12 f201 smulbbls r2, r2, r1 67c2: 0a12 lsrls r2, r2, #8 last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 67c4: 8819 ldrh r1, [r3, #0] 67c6: 4620 mov r0, r4 67c8: 47d8 blx fp last_dest_color.full = disp_buf_tmp[x].full; 67ca: 9b05 ldr r3, [sp, #20] last_mask = mask_tmp[x]; 67cc: f817 c009 ldrb.w ip, [r7, r9] last_dest_color.full = disp_buf_tmp[x].full; 67d0: 8819 ldrh r1, [r3, #0] last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 67d2: b280 uxth r0, r0 disp_buf_tmp[x] = last_res_color; 67d4: 8018 strh r0, [r3, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 67d6: f109 0901 add.w r9, r9, #1 67da: 3302 adds r3, #2 67dc: e7d8 b.n 6790 <_lv_blend_fill+0x5a0> 67de: bf00 nop 67e0: 000060a5 .word 0x000060a5 67e4: 0001f9d9 .word 0x0001f9d9 67e8: 0001f9a3 .word 0x0001f9a3 67ec: 0001f9fe .word 0x0001f9fe 67f0: 0000e8e9 .word 0x0000e8e9 67f4: 000060f5 .word 0x000060f5 67f8: 00006175 .word 0x00006175 000067fc <_lv_blend_map>: { 67fc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 6800: b08f sub sp, #60 ; 0x3c 6802: 4689 mov r9, r1 6804: 9306 str r3, [sp, #24] 6806: f89d 3060 ldrb.w r3, [sp, #96] ; 0x60 680a: 930a str r3, [sp, #40] ; 0x28 680c: f89d 3064 ldrb.w r3, [sp, #100] ; 0x64 6810: f89d a068 ldrb.w sl, [sp, #104] ; 0x68 6814: 920b str r2, [sp, #44] ; 0x2c if(opa < LV_OPA_MIN) return; 6816: 2b04 cmp r3, #4 { 6818: 9305 str r3, [sp, #20] if(opa < LV_OPA_MIN) return; 681a: f240 80d7 bls.w 69cc <_lv_blend_map+0x1d0> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 681e: 9b0a ldr r3, [sp, #40] ; 0x28 6820: 2b00 cmp r3, #0 6822: f000 80d3 beq.w 69cc <_lv_blend_map+0x1d0> is_common = _lv_area_intersect(&draw_area, clip_area, map_area); 6826: 460a mov r2, r1 6828: 4bb6 ldr r3, [pc, #728] ; (6b04 <_lv_blend_map+0x308>) 682a: 4601 mov r1, r0 682c: a80c add r0, sp, #48 ; 0x30 682e: 4798 blx r3 if(!is_common) return; 6830: 2800 cmp r0, #0 6832: f000 80cb beq.w 69cc <_lv_blend_map+0x1d0> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6836: 4bb4 ldr r3, [pc, #720] ; (6b08 <_lv_blend_map+0x30c>) 6838: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 683a: 4bb4 ldr r3, [pc, #720] ; (6b0c <_lv_blend_map+0x310>) lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 683c: 4605 mov r5, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 683e: 4798 blx r3 6840: 4683 mov fp, r0 lv_color_t * disp_buf = vdb->buf_act; 6842: 6883 ldr r3, [r0, #8] draw_area.y1 -= disp_area->y1; 6844: f8bd e032 ldrh.w lr, [sp, #50] ; 0x32 lv_color_t * disp_buf = vdb->buf_act; 6848: 9308 str r3, [sp, #32] draw_area.y1 -= disp_area->y1; 684a: f8bb 3012 ldrh.w r3, [fp, #18] draw_area.y2 -= disp_area->y1; 684e: f8bd c036 ldrh.w ip, [sp, #54] ; 0x36 draw_area.x1 -= disp_area->x1; 6852: f8bd 4030 ldrh.w r4, [sp, #48] ; 0x30 6856: 8a00 ldrh r0, [r0, #16] draw_area.y1 -= disp_area->y1; 6858: ebae 0203 sub.w r2, lr, r3 685c: fa0f f882 sxth.w r8, r2 draw_area.y2 -= disp_area->y1; 6860: ebac 0303 sub.w r3, ip, r3 draw_area.x2 -= disp_area->x1; 6864: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 draw_area.y2 -= disp_area->y1; 6868: f8ad 3036 strh.w r3, [sp, #54] ; 0x36 draw_area.x1 -= disp_area->x1; 686c: 1a21 subs r1, r4, r0 if(mask && disp->driver.antialiasing == 0) 686e: 9b06 ldr r3, [sp, #24] draw_area.y1 -= disp_area->y1; 6870: f8ad 8032 strh.w r8, [sp, #50] ; 0x32 draw_area.x1 -= disp_area->x1; 6874: b209 sxth r1, r1 draw_area.x2 -= disp_area->x1; 6876: 1a10 subs r0, r2, r0 draw_area.x1 -= disp_area->x1; 6878: f8ad 1030 strh.w r1, [sp, #48] ; 0x30 draw_area.x2 -= disp_area->x1; 687c: f8ad 0034 strh.w r0, [sp, #52] ; 0x34 if(mask && disp->driver.antialiasing == 0) 6880: 2b00 cmp r3, #0 6882: d15e bne.n 6942 <_lv_blend_map+0x146> if(disp->driver.set_px_cb) { 6884: 696b ldr r3, [r5, #20] 6886: 2b00 cmp r3, #0 6888: d172 bne.n 6970 <_lv_blend_map+0x174> 688a: f1c4 0401 rsb r4, r4, #1 688e: 4422 add r2, r4 6890: f8b9 7004 ldrh.w r7, [r9, #4] 6894: f8bb 6014 ldrh.w r6, [fp, #20] 6898: f9bb 3010 ldrsh.w r3, [fp, #16] const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 689c: f9bb 0012 ldrsh.w r0, [fp, #18] 68a0: b212 sxth r2, r2 68a2: 9207 str r2, [sp, #28] 68a4: f9b9 2000 ldrsh.w r2, [r9] 68a8: f9b9 9002 ldrsh.w r9, [r9, #2] 68ac: 3601 adds r6, #1 68ae: 3701 adds r7, #1 68b0: 1af6 subs r6, r6, r3 68b2: 1abf subs r7, r7, r2 68b4: eba9 0900 sub.w r9, r9, r0 68b8: b236 sxth r6, r6 68ba: b23f sxth r7, r7 68bc: eba8 0909 sub.w r9, r8, r9 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 68c0: fb06 f408 mul.w r4, r6, r8 const lv_color_t * map_buf_first = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 68c4: fb07 f909 mul.w r9, r7, r9 else if(mode == LV_BLEND_MODE_NORMAL) { 68c8: f1ba 0f00 cmp.w sl, #0 68cc: f040 81ea bne.w 6ca4 <_lv_blend_map+0x4a8> return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 68d0: f1ce 0001 rsb r0, lr, #1 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68d4: 1ad5 subs r5, r2, r3 68d6: 4484 add ip, r0 68d8: 9b0b ldr r3, [sp, #44] ; 0x2c int32_t draw_area_h = lv_area_get_height(draw_area); 68da: fa0f f08c sxth.w r0, ip map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68de: 1b4d subs r5, r1, r5 int32_t draw_area_h = lv_area_get_height(draw_area); 68e0: 9009 str r0, [sp, #36] ; 0x24 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68e2: 444d add r5, r9 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 68e4: 9808 ldr r0, [sp, #32] 68e6: 440c add r4, r1 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 68e8: eb03 0545 add.w r5, r3, r5, lsl #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 68ec: 4b86 ldr r3, [pc, #536] ; (6b08 <_lv_blend_map+0x30c>) lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 68ee: eb00 0444 add.w r4, r0, r4, lsl #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 68f2: 4798 blx r3 map_buf_first += map_w; 68f4: 007b lsls r3, r7, #1 68f6: 9308 str r3, [sp, #32] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 68f8: 9b0a ldr r3, [sp, #40] ; 0x28 68fa: 2b01 cmp r3, #1 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 68fc: 4680 mov r8, r0 disp_buf_first += disp_w; 68fe: ea4f 0b46 mov.w fp, r6, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6902: f040 80e0 bne.w 6ac6 <_lv_blend_map+0x2ca> if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) { 6906: 6a03 ldr r3, [r0, #32] 6908: 2b00 cmp r3, #0 690a: f000 80af beq.w 6a6c <_lv_blend_map+0x270> 690e: 4b80 ldr r3, [pc, #512] ; (6b10 <_lv_blend_map+0x314>) 6910: a80c add r0, sp, #48 ; 0x30 6912: 4798 blx r3 6914: 28f0 cmp r0, #240 ; 0xf0 6916: f240 80a9 bls.w 6a6c <_lv_blend_map+0x270> for(y = draw_area->y1; y <= draw_area->y2; y++) { 691a: f9bd 7032 ldrsh.w r7, [sp, #50] ; 0x32 691e: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6922: 429f cmp r7, r3 6924: dc52 bgt.n 69cc <_lv_blend_map+0x1d0> disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa); 6926: 9b05 ldr r3, [sp, #20] 6928: 9300 str r3, [sp, #0] 692a: 462a mov r2, r5 692c: 9b07 ldr r3, [sp, #28] 692e: f8d8 6020 ldr.w r6, [r8, #32] 6932: 4621 mov r1, r4 6934: 4640 mov r0, r8 6936: 47b0 blx r6 map_buf_first += map_w; 6938: 9b08 ldr r3, [sp, #32] disp_buf_first += disp_w; 693a: 445c add r4, fp map_buf_first += map_w; 693c: 441d add r5, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 693e: 3701 adds r7, #1 6940: e7ed b.n 691e <_lv_blend_map+0x122> if(mask && disp->driver.antialiasing == 0) 6942: 7a2b ldrb r3, [r5, #8] 6944: 07d8 lsls r0, r3, #31 6946: d49d bmi.n 6884 <_lv_blend_map+0x88> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6948: 9806 ldr r0, [sp, #24] for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 694a: 9e06 ldr r6, [sp, #24] 694c: 1c53 adds r3, r2, #1 694e: 1b1b subs r3, r3, r4 int32_t mask_w = lv_area_get_width(&draw_area); 6950: b21b sxth r3, r3 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 6952: 3801 subs r0, #1 6954: f1c6 0701 rsb r7, r6, #1 6958: 183e adds r6, r7, r0 695a: 42b3 cmp r3, r6 695c: dd92 ble.n 6884 <_lv_blend_map+0x88> 695e: f810 6f01 ldrb.w r6, [r0, #1]! 6962: 2e80 cmp r6, #128 ; 0x80 6964: f04f 36ff mov.w r6, #4294967295 ; 0xffffffff 6968: bf98 it ls 696a: 2600 movls r6, #0 696c: 7006 strb r6, [r0, #0] 696e: e7f3 b.n 6958 <_lv_blend_map+0x15c> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6970: 4b65 ldr r3, [pc, #404] ; (6b08 <_lv_blend_map+0x30c>) 6972: 4798 blx r3 6974: f8b9 5004 ldrh.w r5, [r9, #4] 6978: f9b9 1000 ldrsh.w r1, [r9] 697c: f8bb 2014 ldrh.w r2, [fp, #20] const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6980: f9bb c012 ldrsh.w ip, [fp, #18] 6984: f9b9 7002 ldrsh.w r7, [r9, #2] 6988: f9bb 4010 ldrsh.w r4, [fp, #16] 698c: f9bd 6032 ldrsh.w r6, [sp, #50] ; 0x32 6990: f9bd 3030 ldrsh.w r3, [sp, #48] ; 0x30 6994: f9bd 8034 ldrsh.w r8, [sp, #52] ; 0x34 6998: 3501 adds r5, #1 699a: 1a6d subs r5, r5, r1 699c: 3201 adds r2, #1 699e: eba7 070c sub.w r7, r7, ip 69a2: 1b12 subs r2, r2, r4 69a4: b22d sxth r5, r5 map_buf_tmp -= draw_area->x1; 69a6: 1a64 subs r4, r4, r1 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 69a8: 1bf7 subs r7, r6, r7 map_buf_tmp -= draw_area->x1; 69aa: 990b ldr r1, [sp, #44] ; 0x2c 69ac: fb05 4407 mla r4, r5, r7, r4 69b0: eb01 0444 add.w r4, r1, r4, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 69b4: 990a ldr r1, [sp, #40] ; 0x28 69b6: 2901 cmp r1, #1 69b8: b212 sxth r2, r2 69ba: f1c3 0a00 rsb sl, r3, #0 69be: ea4f 0b45 mov.w fp, r5, lsl #1 69c2: d123 bne.n 6a0c <_lv_blend_map+0x210> for(y = draw_area->y1; y <= draw_area->y2; y++) { 69c4: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 69c8: 429e cmp r6, r3 69ca: dd02 ble.n 69d2 <_lv_blend_map+0x1d6> } 69cc: b00f add sp, #60 ; 0x3c 69ce: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} for(x = draw_area->x1; x <= draw_area->x2; x++) { 69d2: 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); 69d6: b237 sxth r7, r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 69d8: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 69dc: 4598 cmp r8, r3 69de: dd02 ble.n 69e6 <_lv_blend_map+0x1ea> map_buf_tmp += map_w; 69e0: 445c add r4, fp for(y = draw_area->y1; y <= draw_area->y2; y++) { 69e2: 3601 adds r6, #1 69e4: e7ee b.n 69c4 <_lv_blend_map+0x1c8> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 69e6: 9b05 ldr r3, [sp, #20] 69e8: 9302 str r3, [sp, #8] 69ea: f834 3018 ldrh.w r3, [r4, r8, lsl #1] 69ee: f8ad 3004 strh.w r3, [sp, #4] 69f2: 9700 str r7, [sp, #0] 69f4: 6945 ldr r5, [r0, #20] 69f6: 9908 ldr r1, [sp, #32] 69f8: 9207 str r2, [sp, #28] 69fa: fa0f f388 sxth.w r3, r8 69fe: 9006 str r0, [sp, #24] for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a00: f108 0801 add.w r8, r8, #1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 6a04: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a06: e9dd 0206 ldrd r0, r2, [sp, #24] 6a0a: e7e5 b.n 69d8 <_lv_blend_map+0x1dc> 6a0c: f108 0801 add.w r8, r8, #1 6a10: eba8 0803 sub.w r8, r8, r3 const lv_opa_t * mask_tmp = mask - draw_area->x1; 6a14: 9b06 ldr r3, [sp, #24] 6a16: 4453 add r3, sl 6a18: fa0f f888 sxth.w r8, r8 6a1c: 469a mov sl, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6a1e: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6a22: 429e cmp r6, r3 6a24: dcd2 bgt.n 69cc <_lv_blend_map+0x1d0> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a26: 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], 6a2a: b237 sxth r7, r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a2c: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 6a30: 4599 cmp r9, r3 6a32: dd03 ble.n 6a3c <_lv_blend_map+0x240> mask_tmp += draw_area_w; 6a34: 44c2 add sl, r8 map_buf_tmp += map_w; 6a36: 445c add r4, fp for(y = draw_area->y1; y <= draw_area->y2; y++) { 6a38: 3601 adds r6, #1 6a3a: e7f0 b.n 6a1e <_lv_blend_map+0x222> (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 6a3c: f81a 3009 ldrb.w r3, [sl, r9] 6a40: 9905 ldr r1, [sp, #20] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a42: 9207 str r2, [sp, #28] (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 6a44: fb13 f301 smulbb r3, r3, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 6a48: 0a1b lsrs r3, r3, #8 6a4a: 9302 str r3, [sp, #8] 6a4c: f834 3019 ldrh.w r3, [r4, r9, lsl #1] 6a50: f8ad 3004 strh.w r3, [sp, #4] 6a54: 9700 str r7, [sp, #0] 6a56: 6945 ldr r5, [r0, #20] 6a58: 9908 ldr r1, [sp, #32] 6a5a: 9006 str r0, [sp, #24] 6a5c: fa0f f389 sxth.w r3, r9 6a60: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 6a62: f109 0901 add.w r9, r9, #1 6a66: e9dd 0206 ldrd r0, r2, [sp, #24] 6a6a: e7df b.n 6a2c <_lv_blend_map+0x230> if(opa > LV_OPA_MAX) { 6a6c: 9b05 ldr r3, [sp, #20] 6a6e: 2bfa cmp r3, #250 ; 0xfa 6a70: d925 bls.n 6abe <_lv_blend_map+0x2c2> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 6a72: 9b07 ldr r3, [sp, #28] 6a74: f8df 809c ldr.w r8, [pc, #156] ; 6b14 <_lv_blend_map+0x318> 6a78: 005f lsls r7, r3, #1 for(y = 0; y < draw_area_h; y++) { 6a7a: 2600 movs r6, #0 6a7c: 9b09 ldr r3, [sp, #36] ; 0x24 6a7e: 42b3 cmp r3, r6 6a80: dda4 ble.n 69cc <_lv_blend_map+0x1d0> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 6a82: 4629 mov r1, r5 6a84: 4620 mov r0, r4 6a86: 463a mov r2, r7 6a88: 47c0 blx r8 map_buf_first += map_w; 6a8a: 9b08 ldr r3, [sp, #32] disp_buf_first += disp_w; 6a8c: 445c add r4, fp map_buf_first += map_w; 6a8e: 441d add r5, r3 for(y = 0; y < draw_area_h; y++) { 6a90: 3601 adds r6, #1 6a92: e7f3 b.n 6a7c <_lv_blend_map+0x280> disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 6a94: f834 1016 ldrh.w r1, [r4, r6, lsl #1] 6a98: f835 0016 ldrh.w r0, [r5, r6, lsl #1] 6a9c: 9a05 ldr r2, [sp, #20] 6a9e: 47c0 blx r8 6aa0: f824 0016 strh.w r0, [r4, r6, lsl #1] for(x = 0; x < draw_area_w; x++) { 6aa4: 3601 adds r6, #1 6aa6: 9b07 ldr r3, [sp, #28] 6aa8: 42b3 cmp r3, r6 6aaa: dcf3 bgt.n 6a94 <_lv_blend_map+0x298> map_buf_first += map_w; 6aac: 9b08 ldr r3, [sp, #32] disp_buf_first += disp_w; 6aae: 445c add r4, fp map_buf_first += map_w; 6ab0: 441d add r5, r3 for(y = 0; y < draw_area_h; y++) { 6ab2: 3701 adds r7, #1 6ab4: 9b09 ldr r3, [sp, #36] ; 0x24 6ab6: 42bb cmp r3, r7 6ab8: dd88 ble.n 69cc <_lv_blend_map+0x1d0> for(x = 0; x < draw_area_w; x++) { 6aba: 2600 movs r6, #0 6abc: e7f3 b.n 6aa6 <_lv_blend_map+0x2aa> disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 6abe: f8df 8058 ldr.w r8, [pc, #88] ; 6b18 <_lv_blend_map+0x31c> for(y = 0; y < draw_area_h; y++) { 6ac2: 2700 movs r7, #0 6ac4: e7f6 b.n 6ab4 <_lv_blend_map+0x2b8> if(opa > LV_OPA_MAX) { 6ac6: 9b05 ldr r3, [sp, #20] 6ac8: 2bfa cmp r3, #250 ; 0xfa 6aca: f240 80e9 bls.w 6ca0 <_lv_blend_map+0x4a4> int32_t x_end4 = draw_area_w - 4; 6ace: 9b07 ldr r3, [sp, #28] MAP_NORMAL_MASK_PX(x) 6ad0: f8df 8044 ldr.w r8, [pc, #68] ; 6b18 <_lv_blend_map+0x31c> for(y = 0; y < draw_area_h; y++) { 6ad4: f8cd a014 str.w sl, [sp, #20] int32_t x_end4 = draw_area_w - 4; 6ad8: 3b04 subs r3, #4 6ada: 930a str r3, [sp, #40] ; 0x28 for(y = 0; y < draw_area_h; y++) { 6adc: 9b09 ldr r3, [sp, #36] ; 0x24 6ade: 9a05 ldr r2, [sp, #20] 6ae0: 4293 cmp r3, r2 6ae2: f77f af73 ble.w 69cc <_lv_blend_map+0x1d0> 6ae6: 9b06 ldr r3, [sp, #24] 6ae8: 46aa mov sl, r5 6aea: 46a1 mov r9, r4 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6aec: 2600 movs r6, #0 6aee: e025 b.n 6b3c <_lv_blend_map+0x340> MAP_NORMAL_MASK_PX(x) 6af0: f8b9 1000 ldrh.w r1, [r9] 6af4: f8ba 0000 ldrh.w r0, [sl] 6af8: 930b str r3, [sp, #44] ; 0x2c 6afa: 47c0 blx r8 6afc: 9b0b ldr r3, [sp, #44] ; 0x2c 6afe: f8a9 0000 strh.w r0, [r9] 6b02: e016 b.n 6b32 <_lv_blend_map+0x336> 6b04: 0000de8d .word 0x0000de8d 6b08: 00004fe9 .word 0x00004fe9 6b0c: 0000d9e1 .word 0x0000d9e1 6b10: 0000de71 .word 0x0000de71 6b14: 0000ec31 .word 0x0000ec31 6b18: 000060a5 .word 0x000060a5 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6b1c: 079a lsls r2, r3, #30 6b1e: d011 beq.n 6b44 <_lv_blend_map+0x348> MAP_NORMAL_MASK_PX(x) 6b20: f813 2b01 ldrb.w r2, [r3], #1 6b24: b12a cbz r2, 6b32 <_lv_blend_map+0x336> 6b26: 2aff cmp r2, #255 ; 0xff 6b28: d1e2 bne.n 6af0 <_lv_blend_map+0x2f4> 6b2a: f8ba 2000 ldrh.w r2, [sl] 6b2e: f8a9 2000 strh.w r2, [r9] for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 6b32: 3601 adds r6, #1 6b34: f10a 0a02 add.w sl, sl, #2 6b38: f109 0902 add.w r9, r9, #2 6b3c: 9a07 ldr r2, [sp, #28] 6b3e: 42b2 cmp r2, r6 6b40: 461f mov r7, r3 6b42: dceb bgt.n 6b1c <_lv_blend_map+0x320> 6b44: eb05 0a46 add.w sl, r5, r6, lsl #1 6b48: eb04 0946 add.w r9, r4, r6, lsl #1 for(; x < x_end4; x += 4) { 6b4c: 9b0a ldr r3, [sp, #40] ; 0x28 6b4e: 42b3 cmp r3, r6 6b50: dc12 bgt.n 6b78 <_lv_blend_map+0x37c> 6b52: 3f01 subs r7, #1 6b54: eb05 0a46 add.w sl, r5, r6, lsl #1 6b58: eb04 0946 add.w r9, r4, r6, lsl #1 for(; x < draw_area_w ; x++) { 6b5c: 9b07 ldr r3, [sp, #28] 6b5e: 42b3 cmp r3, r6 6b60: dc62 bgt.n 6c28 <_lv_blend_map+0x42c> mask += draw_area_w; 6b62: e9dd 3206 ldrd r3, r2, [sp, #24] 6b66: 4413 add r3, r2 6b68: 9306 str r3, [sp, #24] map_buf_first += map_w; 6b6a: 9b08 ldr r3, [sp, #32] 6b6c: 441d add r5, r3 for(y = 0; y < draw_area_h; y++) { 6b6e: 9b05 ldr r3, [sp, #20] 6b70: 3301 adds r3, #1 disp_buf_first += disp_w; 6b72: 445c add r4, fp for(y = 0; y < draw_area_h; y++) { 6b74: 9305 str r3, [sp, #20] 6b76: e7b1 b.n 6adc <_lv_blend_map+0x2e0> if(*mask32) { 6b78: 683b ldr r3, [r7, #0] 6b7a: b18b cbz r3, 6ba0 <_lv_blend_map+0x3a4> if((*mask32) == 0xFFFFFFFF) { 6b7c: 3301 adds r3, #1 6b7e: d116 bne.n 6bae <_lv_blend_map+0x3b2> disp_buf_first[x] = map_buf_first[x]; 6b80: f8ba 3000 ldrh.w r3, [sl] 6b84: f8a9 3000 strh.w r3, [r9] disp_buf_first[x + 1] = map_buf_first[x + 1]; 6b88: f8ba 3002 ldrh.w r3, [sl, #2] 6b8c: f8a9 3002 strh.w r3, [r9, #2] disp_buf_first[x + 2] = map_buf_first[x + 2]; 6b90: f8ba 3004 ldrh.w r3, [sl, #4] 6b94: f8a9 3004 strh.w r3, [r9, #4] MAP_NORMAL_MASK_PX(x + 3) 6b98: f8ba 3006 ldrh.w r3, [sl, #6] 6b9c: f8a9 3006 strh.w r3, [r9, #6] mask32++; 6ba0: 3704 adds r7, #4 for(; x < x_end4; x += 4) { 6ba2: 3604 adds r6, #4 6ba4: f10a 0a08 add.w sl, sl, #8 6ba8: f109 0908 add.w r9, r9, #8 6bac: e7ce b.n 6b4c <_lv_blend_map+0x350> MAP_NORMAL_MASK_PX(x) 6bae: 783a ldrb r2, [r7, #0] 6bb0: b12a cbz r2, 6bbe <_lv_blend_map+0x3c2> 6bb2: 2aff cmp r2, #255 ; 0xff 6bb4: d120 bne.n 6bf8 <_lv_blend_map+0x3fc> 6bb6: f8ba 3000 ldrh.w r3, [sl] 6bba: f8a9 3000 strh.w r3, [r9] MAP_NORMAL_MASK_PX(x + 1) 6bbe: 787a ldrb r2, [r7, #1] 6bc0: b12a cbz r2, 6bce <_lv_blend_map+0x3d2> 6bc2: 2aff cmp r2, #255 ; 0xff 6bc4: d120 bne.n 6c08 <_lv_blend_map+0x40c> 6bc6: f8ba 3002 ldrh.w r3, [sl, #2] 6bca: f8a9 3002 strh.w r3, [r9, #2] MAP_NORMAL_MASK_PX(x + 2) 6bce: 78ba ldrb r2, [r7, #2] 6bd0: b12a cbz r2, 6bde <_lv_blend_map+0x3e2> 6bd2: 2aff cmp r2, #255 ; 0xff 6bd4: d120 bne.n 6c18 <_lv_blend_map+0x41c> 6bd6: f8ba 3004 ldrh.w r3, [sl, #4] 6bda: f8a9 3004 strh.w r3, [r9, #4] MAP_NORMAL_MASK_PX(x + 3) 6bde: 78fa ldrb r2, [r7, #3] 6be0: 2a00 cmp r2, #0 6be2: d0dd beq.n 6ba0 <_lv_blend_map+0x3a4> 6be4: 2aff cmp r2, #255 ; 0xff 6be6: d0d7 beq.n 6b98 <_lv_blend_map+0x39c> 6be8: f8b9 1006 ldrh.w r1, [r9, #6] 6bec: f8ba 0006 ldrh.w r0, [sl, #6] 6bf0: 47c0 blx r8 6bf2: f8a9 0006 strh.w r0, [r9, #6] 6bf6: e7d3 b.n 6ba0 <_lv_blend_map+0x3a4> MAP_NORMAL_MASK_PX(x) 6bf8: f8b9 1000 ldrh.w r1, [r9] 6bfc: f8ba 0000 ldrh.w r0, [sl] 6c00: 47c0 blx r8 6c02: f8a9 0000 strh.w r0, [r9] 6c06: e7da b.n 6bbe <_lv_blend_map+0x3c2> MAP_NORMAL_MASK_PX(x + 1) 6c08: f8b9 1002 ldrh.w r1, [r9, #2] 6c0c: f8ba 0002 ldrh.w r0, [sl, #2] 6c10: 47c0 blx r8 6c12: f8a9 0002 strh.w r0, [r9, #2] 6c16: e7da b.n 6bce <_lv_blend_map+0x3d2> MAP_NORMAL_MASK_PX(x + 2) 6c18: f8b9 1004 ldrh.w r1, [r9, #4] 6c1c: f8ba 0004 ldrh.w r0, [sl, #4] 6c20: 47c0 blx r8 6c22: f8a9 0004 strh.w r0, [r9, #4] 6c26: e7da b.n 6bde <_lv_blend_map+0x3e2> MAP_NORMAL_MASK_PX(x) 6c28: f817 2f01 ldrb.w r2, [r7, #1]! 6c2c: b12a cbz r2, 6c3a <_lv_blend_map+0x43e> 6c2e: 2aff cmp r2, #255 ; 0xff 6c30: d109 bne.n 6c46 <_lv_blend_map+0x44a> 6c32: f8ba 3000 ldrh.w r3, [sl] 6c36: f8a9 3000 strh.w r3, [r9] for(; x < draw_area_w ; x++) { 6c3a: 3601 adds r6, #1 6c3c: f10a 0a02 add.w sl, sl, #2 6c40: f109 0902 add.w r9, r9, #2 6c44: e78a b.n 6b5c <_lv_blend_map+0x360> MAP_NORMAL_MASK_PX(x) 6c46: f8b9 1000 ldrh.w r1, [r9] 6c4a: f8ba 0000 ldrh.w r0, [sl] 6c4e: 47c0 blx r8 6c50: f8a9 0000 strh.w r0, [r9] 6c54: e7f1 b.n 6c3a <_lv_blend_map+0x43e> if(mask[x]) { 6c56: 9b06 ldr r3, [sp, #24] 6c58: 5d9a ldrb r2, [r3, r6] 6c5a: b172 cbz r2, 6c7a <_lv_blend_map+0x47e> lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 6c5c: 2af9 cmp r2, #249 ; 0xf9 6c5e: bf98 it ls 6c60: 9b05 ldrls r3, [sp, #20] disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 6c62: f834 1016 ldrh.w r1, [r4, r6, lsl #1] 6c66: f835 0016 ldrh.w r0, [r5, r6, lsl #1] 6c6a: bf8e itee hi 6c6c: 9a05 ldrhi r2, [sp, #20] lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 6c6e: fb13 f202 smulbbls r2, r3, r2 6c72: 0a12 lsrls r2, r2, #8 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 6c74: 47b8 blx r7 6c76: f824 0016 strh.w r0, [r4, r6, lsl #1] for(x = 0; x < draw_area_w; x++) { 6c7a: 3601 adds r6, #1 6c7c: 9b07 ldr r3, [sp, #28] 6c7e: 42b3 cmp r3, r6 6c80: dce9 bgt.n 6c56 <_lv_blend_map+0x45a> mask += draw_area_w; 6c82: e9dd 3206 ldrd r3, r2, [sp, #24] 6c86: 4413 add r3, r2 6c88: 9306 str r3, [sp, #24] map_buf_first += map_w; 6c8a: 9b08 ldr r3, [sp, #32] disp_buf_first += disp_w; 6c8c: 445c add r4, fp map_buf_first += map_w; 6c8e: 441d add r5, r3 for(y = 0; y < draw_area_h; y++) { 6c90: f10a 0a01 add.w sl, sl, #1 6c94: 9b09 ldr r3, [sp, #36] ; 0x24 6c96: 4553 cmp r3, sl 6c98: f77f ae98 ble.w 69cc <_lv_blend_map+0x1d0> for(x = 0; x < draw_area_w; x++) { 6c9c: 2600 movs r6, #0 6c9e: e7ed b.n 6c7c <_lv_blend_map+0x480> disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 6ca0: 4f36 ldr r7, [pc, #216] ; (6d7c <_lv_blend_map+0x580>) 6ca2: e7f7 b.n 6c94 <_lv_blend_map+0x498> switch(mode) { 6ca4: f1ba 0f01 cmp.w sl, #1 6ca8: d00c beq.n 6cc4 <_lv_blend_map+0x4c8> 6caa: f1ba 0f02 cmp.w sl, #2 6cae: d02b beq.n 6d08 <_lv_blend_map+0x50c> LV_LOG_WARN("fill_blended: unsupported blend mode"); 6cb0: 4b33 ldr r3, [pc, #204] ; (6d80 <_lv_blend_map+0x584>) 6cb2: 9300 str r3, [sp, #0] 6cb4: 4933 ldr r1, [pc, #204] ; (6d84 <_lv_blend_map+0x588>) 6cb6: 4b34 ldr r3, [pc, #208] ; (6d88 <_lv_blend_map+0x58c>) 6cb8: 4c34 ldr r4, [pc, #208] ; (6d8c <_lv_blend_map+0x590>) 6cba: f240 3253 movw r2, #851 ; 0x353 6cbe: 2002 movs r0, #2 6cc0: 47a0 blx r4 return; 6cc2: e683 b.n 69cc <_lv_blend_map+0x1d0> blend_fp = color_blend_true_color_additive; 6cc4: f8df b0c8 ldr.w fp, [pc, #200] ; 6d90 <_lv_blend_map+0x594> lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 6cc8: 9808 ldr r0, [sp, #32] 6cca: eb00 0444 add.w r4, r0, r4, lsl #1 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 6cce: 980b ldr r0, [sp, #44] ; 0x2c 6cd0: eb00 0949 add.w r9, r0, r9, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6cd4: 980a ldr r0, [sp, #40] ; 0x28 6cd6: 2801 cmp r0, #1 disp_buf_first += disp_w; 6cd8: ea4f 0646 mov.w r6, r6, lsl #1 map_buf_first += map_w; 6cdc: ea4f 0747 mov.w r7, r7, lsl #1 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 6ce0: d120 bne.n 6d24 <_lv_blend_map+0x528> map_buf_tmp -= draw_area->x1; 6ce2: 1a9b subs r3, r3, r2 6ce4: eb09 0543 add.w r5, r9, r3, lsl #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6ce8: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6cec: 4598 cmp r8, r3 6cee: f73f ae6d bgt.w 69cc <_lv_blend_map+0x1d0> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6cf2: f9bd 9030 ldrsh.w r9, [sp, #48] ; 0x30 6cf6: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 6cfa: 4599 cmp r9, r3 6cfc: dd07 ble.n 6d0e <_lv_blend_map+0x512> disp_buf_tmp += disp_w; 6cfe: 4434 add r4, r6 map_buf_tmp += map_w; 6d00: 443d add r5, r7 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6d02: f108 0801 add.w r8, r8, #1 6d06: e7ef b.n 6ce8 <_lv_blend_map+0x4ec> switch(mode) { 6d08: f8df b088 ldr.w fp, [pc, #136] ; 6d94 <_lv_blend_map+0x598> 6d0c: e7dc b.n 6cc8 <_lv_blend_map+0x4cc> disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa); 6d0e: f834 1019 ldrh.w r1, [r4, r9, lsl #1] 6d12: f835 0019 ldrh.w r0, [r5, r9, lsl #1] 6d16: 9a05 ldr r2, [sp, #20] 6d18: 47d8 blx fp 6d1a: f824 0019 strh.w r0, [r4, r9, lsl #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 6d1e: f109 0901 add.w r9, r9, #1 6d22: e7e8 b.n 6cf6 <_lv_blend_map+0x4fa> const lv_opa_t * mask_tmp = mask - draw_area->x1; 6d24: 9b06 ldr r3, [sp, #24] map_buf_tmp -= draw_area->x1; 6d26: eba9 0941 sub.w r9, r9, r1, lsl #1 const lv_opa_t * mask_tmp = mask - draw_area->x1; 6d2a: 1a5d subs r5, r3, r1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6d2c: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 6d30: 4598 cmp r8, r3 6d32: f73f ae4b bgt.w 69cc <_lv_blend_map+0x1d0> for(x = draw_area->x1; x <= draw_area->x2; x++) { 6d36: f9bd a030 ldrsh.w sl, [sp, #48] ; 0x30 6d3a: f9bd 3034 ldrsh.w r3, [sp, #52] ; 0x34 6d3e: 459a cmp sl, r3 6d40: dd06 ble.n 6d50 <_lv_blend_map+0x554> mask_tmp += draw_area_w; 6d42: 9b07 ldr r3, [sp, #28] disp_buf_tmp += disp_w; 6d44: 4434 add r4, r6 mask_tmp += draw_area_w; 6d46: 441d add r5, r3 map_buf_tmp += map_w; 6d48: 44b9 add r9, r7 for(y = draw_area->y1; y <= draw_area->y2; y++) { 6d4a: f108 0801 add.w r8, r8, #1 6d4e: e7ed b.n 6d2c <_lv_blend_map+0x530> if(mask_tmp[x] == 0) continue; 6d50: f815 200a ldrb.w r2, [r5, sl] 6d54: b172 cbz r2, 6d74 <_lv_blend_map+0x578> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 6d56: 2af9 cmp r2, #249 ; 0xf9 6d58: bf94 ite ls 6d5a: 9b05 ldrls r3, [sp, #20] 6d5c: 9a05 ldrhi r2, [sp, #20] disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 6d5e: f834 101a ldrh.w r1, [r4, sl, lsl #1] 6d62: f839 001a ldrh.w r0, [r9, sl, lsl #1] lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 6d66: bf9c itt ls 6d68: fb13 f202 smulbbls r2, r3, r2 6d6c: 0a12 lsrls r2, r2, #8 disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 6d6e: 47d8 blx fp 6d70: f824 001a strh.w r0, [r4, sl, lsl #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 6d74: f10a 0a01 add.w sl, sl, #1 6d78: e7df b.n 6d3a <_lv_blend_map+0x53e> 6d7a: bf00 nop 6d7c: 000060a5 .word 0x000060a5 6d80: 0001f9d9 .word 0x0001f9d9 6d84: 0001f9a3 .word 0x0001f9a3 6d88: 0001fa0b .word 0x0001fa0b 6d8c: 0000e8e9 .word 0x0000e8e9 6d90: 000060f5 .word 0x000060f5 6d94: 00006175 .word 0x00006175 00006d98 : } } } static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg) { 6d98: b530 push {r4, r5, lr} 6d9a: b0a1 sub sp, #132 ; 0x84 6d9c: 4604 mov r4, r0 6d9e: 9203 str r2, [sp, #12] lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); 6da0: a80b add r0, sp, #44 ; 0x2c 6da2: 4a0c ldr r2, [pc, #48] ; (6dd4 ) { 6da4: 9102 str r1, [sp, #8] lv_draw_rect_dsc_init(&rect_dsc); 6da6: 4790 blx r2 rect_dsc.bg_color = LV_COLOR_WHITE; 6da8: 4a0b ldr r2, [pc, #44] ; (6dd8 ) lv_draw_rect(coords, clip_area, &rect_dsc); 6daa: 9902 ldr r1, [sp, #8] rect_dsc.bg_color = LV_COLOR_WHITE; 6dac: 8812 ldrh r2, [r2, #0] 6dae: f8ad 202e strh.w r2, [sp, #46] ; 0x2e lv_draw_rect(coords, clip_area, &rect_dsc); 6db2: 4620 mov r0, r4 6db4: aa0b add r2, sp, #44 ; 0x2c 6db6: 4d09 ldr r5, [pc, #36] ; (6ddc ) 6db8: 47a8 blx r5 lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); 6dba: a804 add r0, sp, #16 6dbc: 4a08 ldr r2, [pc, #32] ; (6de0 ) 6dbe: 4790 blx r2 lv_draw_label(coords, clip_area, &label_dsc, msg, NULL); 6dc0: 2200 movs r2, #0 6dc2: 9200 str r2, [sp, #0] 6dc4: 4620 mov r0, r4 6dc6: 9b03 ldr r3, [sp, #12] 6dc8: 9902 ldr r1, [sp, #8] 6dca: 4c06 ldr r4, [pc, #24] ; (6de4 ) 6dcc: aa04 add r2, sp, #16 6dce: 47a0 blx r4 } 6dd0: b021 add sp, #132 ; 0x84 6dd2: bd30 pop {r4, r5, pc} 6dd4: 00009ba1 .word 0x00009ba1 6dd8: 0001fa9c .word 0x0001fa9c 6ddc: 00009bed .word 0x00009bed 6de0: 00007845 .word 0x00007845 6de4: 00007875 .word 0x00007875 00006de8 : 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) { 6de8: 3901 subs r1, #1 6dea: f100 0308 add.w r3, r0, #8 *d8 = *s8; 6dee: f811 2f01 ldrb.w r2, [r1, #1]! 6df2: f800 2b01 strb.w r2, [r0], #1 while(len) { 6df6: 4298 cmp r0, r3 6df8: d1f9 bne.n 6dee } 6dfa: 4770 bx lr 00006dfc : { 6dfc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 6e00: ed2d 8b02 vpush {d8} 6e04: b0b9 sub sp, #228 ; 0xe4 6e06: 461c mov r4, r3 6e08: f89d 3110 ldrb.w r3, [sp, #272] ; 0x110 6e0c: 930c str r3, [sp, #48] ; 0x30 6e0e: f89d 3114 ldrb.w r3, [sp, #276] ; 0x114 6e12: 9307 str r3, [sp, #28] 6e14: 4682 mov sl, r0 lv_area_copy(&draw_area, clip_area); 6e16: 4b9c ldr r3, [pc, #624] ; (7088 ) 6e18: a822 add r0, sp, #136 ; 0x88 { 6e1a: 4689 mov r9, r1 6e1c: 4615 mov r5, r2 lv_area_copy(&draw_area, clip_area); 6e1e: 4798 blx r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 6e20: 4b9a ldr r3, [pc, #616] ; (708c ) 6e22: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6e24: 4b9a ldr r3, [pc, #616] ; (7090 ) 6e26: 4798 blx r3 draw_area.x1 -= disp_area->x1; 6e28: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 6e2c: 8a01 ldrh r1, [r0, #16] draw_area.y1 -= disp_area->y1; 6e2e: 8a42 ldrh r2, [r0, #18] lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 6e30: 9004 str r0, [sp, #16] draw_area.x1 -= disp_area->x1; 6e32: 1a5b subs r3, r3, r1 6e34: f8ad 3088 strh.w r3, [sp, #136] ; 0x88 draw_area.y1 -= disp_area->y1; 6e38: f8bd 308a ldrh.w r3, [sp, #138] ; 0x8a 6e3c: 1a9b subs r3, r3, r2 6e3e: f8ad 308a strh.w r3, [sp, #138] ; 0x8a draw_area.x2 -= disp_area->x1; 6e42: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c 6e46: 1a5b subs r3, r3, r1 6e48: f8ad 308c strh.w r3, [sp, #140] ; 0x8c draw_area.y2 -= disp_area->y1; 6e4c: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e 6e50: 1a9b subs r3, r3, r2 6e52: f8ad 308e strh.w r3, [sp, #142] ; 0x8e uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 6e56: 4b8f ldr r3, [pc, #572] ; (7094 ) 6e58: 4798 blx r3 if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 6e5a: 900b str r0, [sp, #44] ; 0x2c 6e5c: b9f8 cbnz r0, 6e9e 6e5e: 8863 ldrh r3, [r4, #2] 6e60: b9eb cbnz r3, 6e9e 6e62: 8923 ldrh r3, [r4, #8] 6e64: f5b3 7f80 cmp.w r3, #256 ; 0x100 6e68: d119 bne.n 6e9e 6e6a: 9b0c ldr r3, [sp, #48] ; 0x30 6e6c: b9bb cbnz r3, 6e9e chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 6e6e: 9b07 ldr r3, [sp, #28] 6e70: 2b00 cmp r3, #0 6e72: f040 8099 bne.w 6fa8 6e76: 7aa3 ldrb r3, [r4, #10] 6e78: 2b00 cmp r3, #0 6e7a: f040 8097 bne.w 6fac _lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa, 6e7e: 7ba2 ldrb r2, [r4, #14] 6e80: 9202 str r2, [sp, #8] 6e82: 7822 ldrb r2, [r4, #0] 6e84: 9201 str r2, [sp, #4] 6e86: 2201 movs r2, #1 6e88: 9200 str r2, [sp, #0] 6e8a: 4c83 ldr r4, [pc, #524] ; (7098 ) 6e8c: 462a mov r2, r5 6e8e: 4651 mov r1, sl 6e90: 4648 mov r0, r9 6e92: 47a0 blx r4 } 6e94: b039 add sp, #228 ; 0xe4 6e96: ecbd 8b02 vpop {d8} 6e9a: 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); 6e9e: 9b07 ldr r3, [sp, #28] 6ea0: 3302 adds r3, #2 6ea2: b2db uxtb r3, r3 6ea4: 9305 str r3, [sp, #20] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6ea6: 9b04 ldr r3, [sp, #16] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6ea8: f8ba 8004 ldrh.w r8, [sl, #4] 6eac: f9b3 1012 ldrsh.w r1, [r3, #18] 6eb0: f9ba 2000 ldrsh.w r2, [sl] map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6eb4: f9b3 3010 ldrsh.w r3, [r3, #16] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6eb8: f9ba 7002 ldrsh.w r7, [sl, #2] map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6ebc: f9bd 6088 ldrsh.w r6, [sp, #136] ; 0x88 map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6ec0: f9bd 008a ldrsh.w r0, [sp, #138] ; 0x8a 6ec4: f108 0801 add.w r8, r8, #1 6ec8: eba8 0802 sub.w r8, r8, r2 6ecc: 1a7f subs r7, r7, r1 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6ece: 1ad2 subs r2, r2, r3 map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 6ed0: 1bc7 subs r7, r0, r7 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 6ed2: 1ab2 subs r2, r6, r2 6ed4: fa0f f888 sxth.w r8, r8 6ed8: fb08 2207 mla r2, r8, r7, r2 6edc: 9f05 ldr r7, [sp, #20] 6ede: fb02 5207 mla r2, r2, r7, r5 6ee2: 9208 str r2, [sp, #32] 6ee4: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c 6ee8: 3201 adds r2, #1 6eea: 1b92 subs r2, r2, r6 blend_area.x1 = draw_area.x1 + disp_area->x1; 6eec: fa13 f386 uxtah r3, r3, r6 6ef0: b296 uxth r6, r2 6ef2: b212 sxth r2, r2 6ef4: b29b uxth r3, r3 6ef6: 9211 str r2, [sp, #68] ; 0x44 blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 6ef8: 1e72 subs r2, r6, #1 blend_area.x1 = draw_area.x1 + disp_area->x1; 6efa: f8ad 3090 strh.w r3, [sp, #144] ; 0x90 blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 6efe: 4413 add r3, r2 6f00: f8ad 3094 strh.w r3, [sp, #148] ; 0x94 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 6f04: f8bd 308e ldrh.w r3, [sp, #142] ; 0x8e 6f08: 3301 adds r3, #1 6f0a: 1a1b subs r3, r3, r0 6f0c: b21b sxth r3, r3 blend_area.y1 = disp_area->y1 + draw_area.y1; 6f0e: fa11 f180 uxtah r1, r1, r0 6f12: 9317 str r3, [sp, #92] ; 0x5c bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 6f14: 8863 ldrh r3, [r4, #2] blend_area.y1 = disp_area->y1 + draw_area.y1; 6f16: b209 sxth r1, r1 6f18: f8ad 1092 strh.w r1, [sp, #146] ; 0x92 blend_area.y2 = blend_area.y1; 6f1c: f8ad 1096 strh.w r1, [sp, #150] ; 0x96 bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 6f20: 2b00 cmp r3, #0 6f22: f040 8264 bne.w 73ee 6f26: 8923 ldrh r3, [r4, #8] 6f28: f5b3 7280 subs.w r2, r3, #256 ; 0x100 6f2c: bf18 it ne 6f2e: 2201 movne r2, #1 6f30: 9215 str r2, [sp, #84] ; 0x54 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 6f32: 9a0b ldr r2, [sp, #44] ; 0x2c 6f34: 2a00 cmp r2, #0 6f36: f040 825c bne.w 73f2 6f3a: f5b3 7f80 cmp.w r3, #256 ; 0x100 6f3e: f040 8258 bne.w 73f2 6f42: 9b0c ldr r3, [sp, #48] ; 0x30 6f44: 2b00 cmp r3, #0 6f46: f040 8254 bne.w 73f2 6f4a: 7aa3 ldrb r3, [r4, #10] 6f4c: 2b00 cmp r3, #0 6f4e: f040 8250 bne.w 73f2 6f52: 9b07 ldr r3, [sp, #28] 6f54: 2b00 cmp r3, #0 6f56: f000 824c beq.w 73f2 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); 6f5a: 4d50 ldr r5, [pc, #320] ; (709c ) 6f5c: a822 add r0, sp, #136 ; 0x88 6f5e: 47a8 blx r5 6f60: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 6f64: d824 bhi.n 6fb0 6f66: a822 add r0, sp, #136 ; 0x88 6f68: 47a8 blx r5 6f6a: 4607 mov r7, r0 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 6f6c: 4e4c ldr r6, [pc, #304] ; (70a0 ) 6f6e: 0078 lsls r0, r7, #1 6f70: 47b0 blx r6 6f72: ee08 0a10 vmov s16, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 6f76: 4638 mov r0, r7 6f78: 47b0 blx r6 map_buf_tmp += map_w * px_size_byte; 6f7a: 9b05 ldr r3, [sp, #20] 6f7c: 9a11 ldr r2, [sp, #68] ; 0x44 6f7e: fb13 fa08 smulbb sl, r3, r8 6f82: ea22 72e2 bic.w r2, r2, r2, asr #31 for(y = 0; y < draw_area_h; y++) { 6f86: f04f 0800 mov.w r8, #0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 6f8a: 4606 mov r6, r0 uint32_t px_i = 0; 6f8c: 4643 mov r3, r8 6f8e: 9204 str r2, [sp, #16] for(y = 0; y < draw_area_h; y++) { 6f90: 9a17 ldr r2, [sp, #92] ; 0x5c 6f92: 4542 cmp r2, r8 6f94: dd4d ble.n 7032 6f96: ee18 2a10 vmov r2, s16 6f9a: eb06 0c03 add.w ip, r6, r3 6f9e: eb02 0e43 add.w lr, r2, r3, lsl #1 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 6fa2: 2100 movs r1, #0 map_px = map_buf_tmp; 6fa4: 9a08 ldr r2, [sp, #32] 6fa6: e014 b.n 6fd2 uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 6fa8: 2303 movs r3, #3 6faa: e77b b.n 6ea4 6fac: 2302 movs r3, #2 6fae: e779 b.n 6ea4 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); 6fb0: f44f 77f0 mov.w r7, #480 ; 0x1e0 6fb4: e7da b.n 6f6c lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 6fb6: 7890 ldrb r0, [r2, #2] mask_buf[px_i] = px_opa; 6fb8: f80c 0b01 strb.w r0, [ip], #1 if(px_opa) { 6fbc: b130 cbz r0, 6fcc map2[px_i].full = map_px[0] + (map_px[1] << 8); 6fbe: f892 b001 ldrb.w fp, [r2, #1] 6fc2: 7810 ldrb r0, [r2, #0] 6fc4: eb00 200b add.w r0, r0, fp, lsl #8 6fc8: f82e 0011 strh.w r0, [lr, r1, lsl #1] for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 6fcc: 9805 ldr r0, [sp, #20] 6fce: 3101 adds r1, #1 6fd0: 4402 add r2, r0 6fd2: 9811 ldr r0, [sp, #68] ; 0x44 6fd4: 4288 cmp r0, r1 6fd6: dcee bgt.n 6fb6 6fd8: 9a04 ldr r2, [sp, #16] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 6fda: f8bd 1088 ldrh.w r1, [sp, #136] ; 0x88 6fde: 4413 add r3, r2 map_buf_tmp += map_w * px_size_byte; 6fe0: 9a08 ldr r2, [sp, #32] 6fe2: 4452 add r2, sl 6fe4: 9208 str r2, [sp, #32] 6fe6: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c 6fea: 3201 adds r2, #1 6fec: 1a52 subs r2, r2, r1 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 6fee: fa03 f282 sxtah r2, r3, r2 6ff2: 42ba cmp r2, r7 6ff4: d208 bcs.n 7008 blend_area.y2 ++; 6ff6: f8bd 2096 ldrh.w r2, [sp, #150] ; 0x96 6ffa: 3201 adds r2, #1 6ffc: b212 sxth r2, r2 6ffe: f8ad 2096 strh.w r2, [sp, #150] ; 0x96 for(y = 0; y < draw_area_h; y++) { 7002: f108 0801 add.w r8, r8, #1 7006: e7c3 b.n 6f90 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 7008: 7ba3 ldrb r3, [r4, #14] 700a: 9302 str r3, [sp, #8] 700c: 7823 ldrb r3, [r4, #0] 700e: 9301 str r3, [sp, #4] 7010: 2302 movs r3, #2 7012: ee18 2a10 vmov r2, s16 7016: 9300 str r3, [sp, #0] 7018: 4d1f ldr r5, [pc, #124] ; (7098 ) 701a: 4633 mov r3, r6 701c: a924 add r1, sp, #144 ; 0x90 701e: 4648 mov r0, r9 7020: 47a8 blx r5 blend_area.y1 = blend_area.y2 + 1; 7022: f8bd 2096 ldrh.w r2, [sp, #150] ; 0x96 7026: 3201 adds r2, #1 7028: b212 sxth r2, r2 702a: f8ad 2092 strh.w r2, [sp, #146] ; 0x92 px_i = 0; 702e: 2300 movs r3, #0 7030: e7e5 b.n 6ffe if(blend_area.y1 != blend_area.y2) { 7032: f9bd 3096 ldrsh.w r3, [sp, #150] ; 0x96 7036: f9bd 2092 ldrsh.w r2, [sp, #146] ; 0x92 703a: 429a cmp r2, r3 703c: d00f beq.n 705e blend_area.y2--; 703e: 3b01 subs r3, #1 7040: 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); 7044: 7ba3 ldrb r3, [r4, #14] 7046: 9302 str r3, [sp, #8] 7048: 7823 ldrb r3, [r4, #0] 704a: 9301 str r3, [sp, #4] 704c: 2302 movs r3, #2 704e: 9300 str r3, [sp, #0] 7050: ee18 2a10 vmov r2, s16 7054: 4c10 ldr r4, [pc, #64] ; (7098 ) 7056: 4633 mov r3, r6 7058: a924 add r1, sp, #144 ; 0x90 705a: 4648 mov r0, r9 705c: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 705e: 4630 mov r0, r6 _lv_mem_buf_release(mask_buf); 7060: 4c10 ldr r4, [pc, #64] ; (70a4 ) 7062: 47a0 blx r4 _lv_mem_buf_release(map2); 7064: ee18 0a10 vmov r0, s16 7068: 47a0 blx r4 } 706a: e713 b.n 6e94 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); 706c: f44f 73f0 mov.w r3, #480 ; 0x1e0 7070: 930a str r3, [sp, #40] ; 0x28 7072: e1c8 b.n 7406 if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 7074: 2205 movs r2, #5 7076: e1de b.n 7436 uint16_t recolor_premult[3] = {0}; 7078: 9310 str r3, [sp, #64] ; 0x40 707a: 9316 str r3, [sp, #88] ; 0x58 707c: 9319 str r3, [sp, #100] ; 0x64 707e: e213 b.n 74a8 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 7080: f04f 0b02 mov.w fp, #2 7084: e224 b.n 74d0 7086: bf00 nop 7088: 00006de9 .word 0x00006de9 708c: 00004fe9 .word 0x00004fe9 7090: 0000d9e1 .word 0x0000d9e1 7094: 000097f1 .word 0x000097f1 7098: 000067fd .word 0x000067fd 709c: 0000de71 .word 0x0000de71 70a0: 0000eeb5 .word 0x0000eeb5 70a4: 0000eb69 .word 0x0000eb69 int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1; 70a8: 9b04 ldr r3, [sp, #16] 70aa: f9bd 2088 ldrsh.w r2, [sp, #136] ; 0x88 70ae: f9b3 3010 ldrsh.w r3, [r3, #16] 70b2: 4413 add r3, r2 70b4: f9ba 2000 ldrsh.w r2, [sl] 70b8: 1a9b subs r3, r3, r2 70ba: 931b str r3, [sp, #108] ; 0x6c for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 70bc: eb07 0308 add.w r3, r7, r8 70c0: ee08 3a90 vmov s17, r3 70c4: 9306 str r3, [sp, #24] 70c6: ee18 3a10 vmov r3, s16 70ca: eb03 0348 add.w r3, r3, r8, lsl #1 70ce: 931d str r3, [sp, #116] ; 0x74 map_px = map_buf_tmp; 70d0: 9b08 ldr r3, [sp, #32] 70d2: 930d str r3, [sp, #52] ; 0x34 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 70d4: 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; 70d6: 9a09 ldr r2, [sp, #36] ; 0x24 70d8: 930e str r3, [sp, #56] ; 0x38 70da: 9b1a ldr r3, [sp, #104] ; 0x68 70dc: 4413 add r3, r2 70de: b21b sxth r3, r3 70e0: 931e str r3, [sp, #120] ; 0x78 70e2: 9b11 ldr r3, [sp, #68] ; 0x44 70e4: 9a0e ldr r2, [sp, #56] ; 0x38 70e6: 4293 cmp r3, r2 70e8: dc43 bgt.n 7172 70ea: 9b1f ldr r3, [sp, #124] ; 0x7c 70ec: 4498 add r8, r3 if(other_mask_cnt) { 70ee: 9b0b ldr r3, [sp, #44] ; 0x2c 70f0: b333 cbz r3, 7140 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, 70f2: 9804 ldr r0, [sp, #16] 70f4: f8bd 208a ldrh.w r2, [sp, #138] ; 0x8a 70f8: 8a40 ldrh r0, [r0, #18] 70fa: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c 70fe: f8bd 1088 ldrh.w r1, [sp, #136] ; 0x88 7102: 4d9d ldr r5, [pc, #628] ; (7378 ) 7104: 4402 add r2, r0 7106: 9809 ldr r0, [sp, #36] ; 0x24 7108: 4402 add r2, r0 710a: 9804 ldr r0, [sp, #16] 710c: 8a00 ldrh r0, [r0, #16] 710e: 3301 adds r3, #1 7110: 1a5b subs r3, r3, r1 7112: 4401 add r1, r0 7114: b21b sxth r3, r3 7116: ee18 0a90 vmov r0, s17 711a: b212 sxth r2, r2 711c: b209 sxth r1, r1 711e: 47a8 blx r5 if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) { 7120: 2800 cmp r0, #0 7122: f040 8123 bne.w 736c 7126: f8bd 108c ldrh.w r1, [sp, #140] ; 0x8c 712a: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 712e: 3101 adds r1, #1 7130: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area)); 7132: ee18 0a90 vmov r0, s17 7136: 4b91 ldr r3, [pc, #580] ; (737c ) 7138: b209 sxth r1, r1 713a: 4798 blx r3 mask_res = LV_DRAW_MASK_RES_CHANGED; 713c: f04f 0b02 mov.w fp, #2 map_buf_tmp += map_w * px_size_byte; 7140: 9b08 ldr r3, [sp, #32] 7142: 9a1c ldr r2, [sp, #112] ; 0x70 7144: 4413 add r3, r2 7146: 9308 str r3, [sp, #32] 7148: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c 714c: f8bd 2088 ldrh.w r2, [sp, #136] ; 0x88 7150: 3301 adds r3, #1 7152: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 7154: 9a0a ldr r2, [sp, #40] ; 0x28 7156: fa08 f383 sxtah r3, r8, r3 715a: 4293 cmp r3, r2 715c: f080 8116 bcs.w 738c blend_area.y2 ++; 7160: f8bd 3096 ldrh.w r3, [sp, #150] ; 0x96 7164: 3301 adds r3, #1 7166: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 for(y = 0; y < draw_area_h; y++) { 716a: 9b09 ldr r3, [sp, #36] ; 0x24 716c: 3301 adds r3, #1 716e: 9309 str r3, [sp, #36] ; 0x24 7170: e1c9 b.n 7506 if(transform) { 7172: 9b15 ldr r3, [sp, #84] ; 0x54 7174: 2b00 cmp r3, #0 7176: f000 80d7 beq.w 7328 int32_t xt = x - dsc->cfg.pivot_x; 717a: 9a0e ldr r2, [sp, #56] ; 0x38 717c: 9b1b ldr r3, [sp, #108] ; 0x6c int32_t yt = y - dsc->cfg.pivot_y; 717e: 991e ldr r1, [sp, #120] ; 0x78 const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; 7180: 9826 ldr r0, [sp, #152] ; 0x98 int32_t xt = x - dsc->cfg.pivot_x; 7182: 4413 add r3, r2 7184: f9bd 20a0 ldrsh.w r2, [sp, #160] ; 0xa0 7188: b21b sxth r3, r3 718a: 1a9b subs r3, r3, r2 int32_t yt = y - dsc->cfg.pivot_y; 718c: f9bd 20a2 ldrsh.w r2, [sp, #162] ; 0xa2 7190: 1a8a subs r2, r1, r2 int32_t xs; int32_t ys; if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 7192: f8bd 10a6 ldrh.w r1, [sp, #166] ; 0xa6 7196: f5b1 7f80 cmp.w r1, #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; 719a: e9dd 652f ldrd r6, r5, [sp, #188] ; 0xbc if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 719e: d119 bne.n 71d4 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 71a0: e9dd e131 ldrd lr, r1, [sp, #196] ; 0xc4 71a4: fb01 fc03 mul.w ip, r1, r3 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 71a8: 4351 muls r1, r2 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 71aa: fb0e cc12 mls ip, lr, r2, ip ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 71ae: fb0e 1103 mla r1, lr, r3, r1 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 71b2: eb06 16ec add.w r6, r6, ip, asr #7 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 71b6: eb05 13e1 add.w r3, r5, r1, 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; 71ba: 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; 71be: 930f str r3, [sp, #60] ; 0x3c if(xs_int >= dsc->cfg.src_w) return false; 71c0: ebb2 2f26 cmp.w r2, r6, asr #8 int32_t xs_int = xs >> 8; 71c4: ea4f 2326 mov.w r3, r6, asr #8 71c8: 9318 str r3, [sp, #96] ; 0x60 if(xs_int >= dsc->cfg.src_w) return false; 71ca: dc1b bgt.n 7204 mask_buf[px_i] = LV_OPA_TRANSP; 71cc: 9a06 ldr r2, [sp, #24] 71ce: 2300 movs r3, #0 71d0: 7013 strb r3, [r2, #0] continue; 71d2: e0b0 b.n 7336 xt *= dsc->tmp.zoom_inv; 71d4: f8bd 10ce ldrh.w r1, [sp, #206] ; 0xce 71d8: 434b muls r3, r1 yt *= dsc->tmp.zoom_inv; 71da: 434a muls r2, r1 else if(dsc->cfg.angle == 0) { 71dc: f9bd 10a4 ldrsh.w r1, [sp, #164] ; 0xa4 71e0: b911 cbnz r1, 71e8 xs = xt + dsc->tmp.pivot_x_256; 71e2: 441e add r6, r3 ys = yt + dsc->tmp.pivot_y_256; 71e4: 18ab adds r3, r5, r2 71e6: e7e8 b.n 71ba xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 71e8: e9dd e131 ldrd lr, r1, [sp, #196] ; 0xc4 71ec: fb03 fc01 mul.w ip, r3, r1 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 71f0: 4351 muls r1, r2 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 71f2: fb02 cc1e mls ip, r2, lr, ip ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 71f6: fb03 110e mla r1, r3, lr, r1 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 71fa: eb06 36ec add.w r6, r6, ip, asr #15 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 71fe: eb05 33e1 add.w r3, r5, r1, asr #15 7202: e7da b.n 71ba else if(xs_int < 0) return false; 7204: 1233 asrs r3, r6, #8 7206: 2b00 cmp r3, #0 7208: dbe0 blt.n 71cc int32_t ys_int = ys >> 8; 720a: 9b0f ldr r3, [sp, #60] ; 0x3c if(ys_int >= dsc->cfg.src_h) return false; 720c: 990f ldr r1, [sp, #60] ; 0x3c int32_t ys_int = ys >> 8; 720e: 121b asrs r3, r3, #8 7210: 9312 str r3, [sp, #72] ; 0x48 if(ys_int >= dsc->cfg.src_h) return false; 7212: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 7216: ebb3 2f21 cmp.w r3, r1, asr #8 721a: ddd7 ble.n 71cc else if(ys_int < 0) return false; 721c: 9b12 ldr r3, [sp, #72] ; 0x48 721e: 2b00 cmp r3, #0 7220: dbd4 blt.n 71cc uint8_t px_size; uint32_t pxi; if(dsc->tmp.native_color) { 7222: f89d 50cc ldrb.w r5, [sp, #204] ; 0xcc 7226: f015 0104 ands.w r1, r5, #4 722a: 9113 str r1, [sp, #76] ; 0x4c 722c: d066 beq.n 72fc if(dsc->tmp.has_alpha == 0) { 722e: 1231 asrs r1, r6, #8 7230: fb02 1203 mla r2, r2, r3, r1 7234: f015 0f02 tst.w r5, #2 7238: ea4f 0342 mov.w r3, r2, lsl #1 723c: d151 bne.n 72e2 *d8 = *s8; 723e: f810 2012 ldrb.w r2, [r0, r2, lsl #1] 7242: 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); 7246: 18c1 adds r1, r0, r3 7248: 784a ldrb r2, [r1, #1] 724a: f88d 20ad strb.w r2, [sp, #173] ; 0xad px_size = LV_COLOR_SIZE >> 3; 724e: 2202 movs r2, #2 } else { px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 7250: 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) { 7252: f89d 20cc ldrb.w r2, [sp, #204] ; 0xcc 7256: 07d2 lsls r2, r2, #31 7258: d504 bpl.n 7264 lv_color_t ct = LV_COLOR_TRANSP; if(dsc->res.color.full == ct.full) return false; 725a: f8bd 20ac ldrh.w r2, [sp, #172] ; 0xac 725e: f5b2 6ffc cmp.w r2, #2016 ; 0x7e0 7262: d0b3 beq.n 71cc } if(dsc->cfg.antialias == false) return true; 7264: f89d 20ab ldrb.w r2, [sp, #171] ; 0xab 7268: b19a cbz r2, 7292 dsc->tmp.xs = xs; dsc->tmp.ys = ys; 726a: 9a0f ldr r2, [sp, #60] ; 0x3c 726c: f8ad 20d2 strh.w r2, [sp, #210] ; 0xd2 dsc->tmp.xs_int = xs_int; dsc->tmp.ys_int = ys_int; dsc->tmp.pxi = pxi; 7270: 9336 str r3, [sp, #216] ; 0xd8 dsc->tmp.xs_int = xs_int; 7272: 9a18 ldr r2, [sp, #96] ; 0x60 dsc->tmp.px_size = px_size; 7274: 9b13 ldr r3, [sp, #76] ; 0x4c dsc->tmp.xs_int = xs_int; 7276: f8ad 20d4 strh.w r2, [sp, #212] ; 0xd4 dsc->tmp.px_size = px_size; 727a: f88d 30dc strb.w r3, [sp, #220] ; 0xdc dsc->tmp.ys_int = ys_int; 727e: 9a12 ldr r2, [sp, #72] ; 0x48 bool ret; ret = _lv_img_buf_transform_anti_alias(dsc); 7280: 4b3f ldr r3, [pc, #252] ; (7380 ) dsc->tmp.xs = xs; 7282: f8ad 60d0 strh.w r6, [sp, #208] ; 0xd0 ret = _lv_img_buf_transform_anti_alias(dsc); 7286: a826 add r0, sp, #152 ; 0x98 dsc->tmp.ys_int = ys_int; 7288: f8ad 20d6 strh.w r2, [sp, #214] ; 0xd6 ret = _lv_img_buf_transform_anti_alias(dsc); 728c: 4798 blx r3 if(ret == false) { 728e: 2800 cmp r0, #0 7290: d09c beq.n 71cc mask_buf[px_i] = trans_dsc.res.opa; 7292: 9a06 ldr r2, [sp, #24] 7294: f89d 30ae ldrb.w r3, [sp, #174] ; 0xae 7298: 7013 strb r3, [r2, #0] c.full = trans_dsc.res.color.full; 729a: f8bd 30ac ldrh.w r3, [sp, #172] ; 0xac if(draw_dsc->recolor_opa != 0) { 729e: 7aa2 ldrb r2, [r4, #10] 72a0: b1d2 cbz r2, 72d8 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 72a2: 9916 ldr r1, [sp, #88] ; 0x58 72a4: 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); 72a6: 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); 72a8: f3c3 1245 ubfx r2, r3, #5, #6 72ac: 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); 72b0: 9810 ldr r0, [sp, #64] ; 0x40 72b2: f003 011f and.w r1, r3, #31 72b6: 08d2 lsrs r2, r2, #3 72b8: fb01 0105 mla r1, r1, r5, r0 72bc: f3c1 2104 ubfx r1, r1, #8, #5 72c0: f402 62fc and.w r2, r2, #2016 ; 0x7e0 72c4: 430a orrs r2, r1 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 72c6: 9919 ldr r1, [sp, #100] ; 0x64 72c8: 0adb lsrs r3, r3, #11 72ca: fb03 1305 mla r3, r3, r5, r1 72ce: f3c3 2307 ubfx r3, r3, #8, #8 72d2: ea42 23c3 orr.w r3, r2, r3, lsl #11 72d6: b29b uxth r3, r3 map2[px_i].full = c.full; 72d8: 9a1d ldr r2, [sp, #116] ; 0x74 72da: 990e ldr r1, [sp, #56] ; 0x38 72dc: f822 3011 strh.w r3, [r2, r1, lsl #1] 72e0: e029 b.n 7336 pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 72e2: 4413 add r3, r2 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1); 72e4: 18c2 adds r2, r0, r3 72e6: 5cc1 ldrb r1, [r0, r3] 72e8: f88d 10ac strb.w r1, [sp, #172] ; 0xac 72ec: 7851 ldrb r1, [r2, #1] 72ee: f88d 10ad strb.w r1, [sp, #173] ; 0xad dsc->res.opa = src_u8[pxi + px_size - 1]; 72f2: 7892 ldrb r2, [r2, #2] 72f4: f88d 20ae strb.w r2, [sp, #174] ; 0xae px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 72f8: 2203 movs r2, #3 72fa: e7a9 b.n 7250 dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 72fc: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 7300: f9bd 2048 ldrsh.w r2, [sp, #72] ; 0x48 7304: f8bd 30a8 ldrh.w r3, [sp, #168] ; 0xa8 7308: 4d1e ldr r5, [pc, #120] ; (7384 ) 730a: a82c add r0, sp, #176 ; 0xb0 730c: e9cd 1220 strd r1, r2, [sp, #128] ; 0x80 7310: 47a8 blx r5 dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 7312: 4b1d ldr r3, [pc, #116] ; (7388 ) dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 7314: 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); 7318: e9dd 1220 ldrd r1, r2, [sp, #128] ; 0x80 731c: a82c add r0, sp, #176 ; 0xb0 731e: 4798 blx r3 pxi = 0; /*unused*/ 7320: 9b13 ldr r3, [sp, #76] ; 0x4c dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 7322: f88d 00ae strb.w r0, [sp, #174] ; 0xae 7326: e794 b.n 7252 if(alpha_byte) { 7328: 9b07 ldr r3, [sp, #28] 732a: b17b cbz r3, 734c lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 732c: 9b0d ldr r3, [sp, #52] ; 0x34 mask_buf[px_i] = px_opa; 732e: 9a06 ldr r2, [sp, #24] lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 7330: 789b ldrb r3, [r3, #2] mask_buf[px_i] = px_opa; 7332: 7013 strb r3, [r2, #0] if(px_opa == 0) { 7334: b96b cbnz r3, 7352 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 7336: 9b0e ldr r3, [sp, #56] ; 0x38 7338: 9a05 ldr r2, [sp, #20] 733a: 3301 adds r3, #1 733c: 930e str r3, [sp, #56] ; 0x38 733e: 9b0d ldr r3, [sp, #52] ; 0x34 7340: 4413 add r3, r2 7342: 930d str r3, [sp, #52] ; 0x34 7344: 9b06 ldr r3, [sp, #24] 7346: 3301 adds r3, #1 7348: 9306 str r3, [sp, #24] 734a: e6ca b.n 70e2 mask_buf[px_i] = 0xFF; 734c: 9a06 ldr r2, [sp, #24] 734e: 23ff movs r3, #255 ; 0xff 7350: 7013 strb r3, [r2, #0] c.full = map_px[0] + (map_px[1] << 8); 7352: 9b0d ldr r3, [sp, #52] ; 0x34 7354: 785a ldrb r2, [r3, #1] 7356: 781b ldrb r3, [r3, #0] 7358: eb03 2302 add.w r3, r3, r2, lsl #8 if(chroma_key) { 735c: 9a0c ldr r2, [sp, #48] ; 0x30 c.full = map_px[0] + (map_px[1] << 8); 735e: b29b uxth r3, r3 if(chroma_key) { 7360: 2a00 cmp r2, #0 7362: d09c beq.n 729e if(c.full == chroma_keyed_color.full) { 7364: f5b3 6ffc cmp.w r3, #2016 ; 0x7e0 7368: d199 bne.n 729e 736a: e72f b.n 71cc mask_res = LV_DRAW_MASK_RES_CHANGED; 736c: 2802 cmp r0, #2 736e: bf08 it eq 7370: f04f 0b02 moveq.w fp, #2 7374: e6e4 b.n 7140 7376: bf00 nop 7378: 00009761 .word 0x00009761 737c: 0000f019 .word 0x0000f019 7380: 0000c1e5 .word 0x0000c1e5 7384: 0000bd89 .word 0x0000bd89 7388: 0000be79 .word 0x0000be79 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 738c: 7ba3 ldrb r3, [r4, #14] 738e: 9302 str r3, [sp, #8] 7390: 7823 ldrb r3, [r4, #0] 7392: 4d6b ldr r5, [pc, #428] ; (7540 ) 7394: e9cd b300 strd fp, r3, [sp] 7398: ee18 2a10 vmov r2, s16 739c: 463b mov r3, r7 739e: a924 add r1, sp, #144 ; 0x90 73a0: 4648 mov r0, r9 73a2: 47a8 blx r5 blend_area.y1 = blend_area.y2 + 1; 73a4: f8bd 3096 ldrh.w r3, [sp, #150] ; 0x96 73a8: 3301 adds r3, #1 73aa: b21b sxth r3, r3 73ac: f8ad 3092 strh.w r3, [sp, #146] ; 0x92 blend_area.y2 = blend_area.y1; 73b0: f8ad 3096 strh.w r3, [sp, #150] ; 0x96 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 73b4: 9b07 ldr r3, [sp, #28] 73b6: b9a3 cbnz r3, 73e2 73b8: 9b0c ldr r3, [sp, #48] ; 0x30 73ba: b993 cbnz r3, 73e2 73bc: 8863 ldrh r3, [r4, #2] 73be: b983 cbnz r3, 73e2 73c0: 8923 ldrh r3, [r4, #8] 73c2: f5b3 7f80 cmp.w r3, #256 ; 0x100 73c6: bf14 ite ne 73c8: f04f 0b02 movne.w fp, #2 73cc: f04f 0b01 moveq.w fp, #1 if(other_mask_cnt) { 73d0: 9b0b ldr r3, [sp, #44] ; 0x2c 73d2: b14b cbz r3, 73e8 _lv_memset_ff(mask_buf, mask_buf_size); 73d4: 990a ldr r1, [sp, #40] ; 0x28 73d6: 4b5b ldr r3, [pc, #364] ; (7544 ) 73d8: 4638 mov r0, r7 73da: 4798 blx r3 px_i = 0; 73dc: f04f 0800 mov.w r8, #0 73e0: e6c3 b.n 716a mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 73e2: f04f 0b02 mov.w fp, #2 73e6: e7f3 b.n 73d0 px_i = 0; 73e8: f8dd 802c ldr.w r8, [sp, #44] ; 0x2c 73ec: e6bd b.n 716a bool transform = draw_dsc->angle != 0 || draw_dsc->zoom != LV_IMG_ZOOM_NONE ? true : false; 73ee: 2301 movs r3, #1 73f0: 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); 73f2: 4e55 ldr r6, [pc, #340] ; (7548 ) 73f4: a822 add r0, sp, #136 ; 0x88 73f6: 47b0 blx r6 73f8: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 73fc: f63f ae36 bhi.w 706c 7400: a822 add r0, sp, #136 ; 0x88 7402: 47b0 blx r6 7404: 900a str r0, [sp, #40] ; 0x28 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7406: 9b0a ldr r3, [sp, #40] ; 0x28 7408: 4e50 ldr r6, [pc, #320] ; (754c ) 740a: 0058 lsls r0, r3, #1 740c: 47b0 blx r6 740e: ee08 0a10 vmov s16, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7412: 980a ldr r0, [sp, #40] ; 0x28 7414: 47b0 blx r6 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 7416: 4b4e ldr r3, [pc, #312] ; (7550 ) lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7418: 4607 mov r7, r0 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 741a: 2148 movs r1, #72 ; 0x48 741c: a826 add r0, sp, #152 ; 0x98 741e: 4798 blx r3 if(transform) { 7420: 9b15 ldr r3, [sp, #84] ; 0x54 7422: b363 cbz r3, 747e if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 7424: 9b07 ldr r3, [sp, #28] 7426: 2b00 cmp r3, #0 7428: f47f ae24 bne.w 7074 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; 742c: 9b0c ldr r3, [sp, #48] ; 0x30 742e: 2b00 cmp r3, #0 7430: bf0c ite eq 7432: 2204 moveq r2, #4 7434: 2206 movne r2, #6 trans_dsc.cfg.angle = draw_dsc->angle; 7436: 8863 ldrh r3, [r4, #2] 7438: f8ad 30a4 strh.w r3, [sp, #164] ; 0xa4 trans_dsc.cfg.zoom = draw_dsc->zoom; 743c: 8923 ldrh r3, [r4, #8] 743e: f8ad 30a6 strh.w r3, [sp, #166] ; 0xa6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 7442: f8ba 3006 ldrh.w r3, [sl, #6] 7446: f8ba 1002 ldrh.w r1, [sl, #2] trans_dsc.cfg.src = map_p; 744a: 9526 str r5, [sp, #152] ; 0x98 744c: 3301 adds r3, #1 744e: 1a5b subs r3, r3, r1 trans_dsc.cfg.src_h = lv_area_get_height(map_area);; 7450: f8ad 309e strh.w r3, [sp, #158] ; 0x9e trans_dsc.cfg.pivot_x = draw_dsc->pivot.x; 7454: 88a3 ldrh r3, [r4, #4] 7456: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0 trans_dsc.cfg.pivot_y = draw_dsc->pivot.y; 745a: 88e3 ldrh r3, [r4, #6] 745c: f8ad 30a2 strh.w r3, [sp, #162] ; 0xa2 trans_dsc.cfg.color = draw_dsc->recolor; 7460: 89a3 ldrh r3, [r4, #12] 7462: f8ad 30a8 strh.w r3, [sp, #168] ; 0xa8 trans_dsc.cfg.antialias = draw_dsc->antialias; 7466: 7be3 ldrb r3, [r4, #15] trans_dsc.cfg.src_w = map_w; 7468: f8ad 809c strh.w r8, [sp, #156] ; 0x9c trans_dsc.cfg.antialias = draw_dsc->antialias; 746c: f3c3 0300 ubfx r3, r3, #0, #1 7470: f88d 30ab strb.w r3, [sp, #171] ; 0xab _lv_img_buf_transform_init(&trans_dsc); 7474: a826 add r0, sp, #152 ; 0x98 7476: 4b37 ldr r3, [pc, #220] ; (7554 ) trans_dsc.cfg.cf = cf; 7478: f88d 20aa strb.w r2, [sp, #170] ; 0xaa _lv_img_buf_transform_init(&trans_dsc); 747c: 4798 blx r3 lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa; 747e: 7aa3 ldrb r3, [r4, #10] 7480: 43da mvns r2, r3 7482: b2d2 uxtb r2, r2 7484: 9214 str r2, [sp, #80] ; 0x50 if(draw_dsc->recolor_opa != 0) { 7486: 2b00 cmp r3, #0 7488: f43f adf6 beq.w 7078 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 748c: 7b62 ldrb r2, [r4, #13] 748e: 08d2 lsrs r2, r2, #3 7490: 435a muls r2, r3 7492: 9219 str r2, [sp, #100] ; 0x64 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 7494: 89a2 ldrh r2, [r4, #12] 7496: f3c2 1245 ubfx r2, r2, #5, #6 749a: 435a muls r2, r3 749c: 9216 str r2, [sp, #88] ; 0x58 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 749e: 7b22 ldrb r2, [r4, #12] 74a0: f002 021f and.w r2, r2, #31 74a4: 4353 muls r3, r2 74a6: 9310 str r3, [sp, #64] ; 0x40 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 74a8: 9b07 ldr r3, [sp, #28] 74aa: 2b00 cmp r3, #0 74ac: f47f ade8 bne.w 7080 74b0: 9b0c ldr r3, [sp, #48] ; 0x30 74b2: 2b00 cmp r3, #0 74b4: f47f ade4 bne.w 7080 74b8: 8863 ldrh r3, [r4, #2] 74ba: 2b00 cmp r3, #0 74bc: f47f ade0 bne.w 7080 74c0: 8923 ldrh r3, [r4, #8] 74c2: f5b3 7f80 cmp.w r3, #256 ; 0x100 74c6: bf14 ite ne 74c8: f04f 0b02 movne.w fp, #2 74cc: f04f 0b01 moveq.w fp, #1 if(other_mask_cnt) { 74d0: 9b0b ldr r3, [sp, #44] ; 0x2c 74d2: b11b cbz r3, 74dc _lv_memset_ff(mask_buf, mask_buf_size); 74d4: 990a ldr r1, [sp, #40] ; 0x28 74d6: 4b1b ldr r3, [pc, #108] ; (7544 ) 74d8: 4638 mov r0, r7 74da: 4798 blx r3 int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1; 74dc: 9b04 ldr r3, [sp, #16] 74de: f9bd 208a ldrsh.w r2, [sp, #138] ; 0x8a 74e2: f9b3 3012 ldrsh.w r3, [r3, #18] 74e6: 4413 add r3, r2 74e8: f9ba 2002 ldrsh.w r2, [sl, #2] 74ec: 1a9b subs r3, r3, r2 74ee: 931a str r3, [sp, #104] ; 0x68 map_buf_tmp += map_w * px_size_byte; 74f0: 9b05 ldr r3, [sp, #20] 74f2: fb13 f308 smulbb r3, r3, r8 74f6: 931c str r3, [sp, #112] ; 0x70 for(y = 0; y < draw_area_h; y++) { 74f8: 2300 movs r3, #0 74fa: 9309 str r3, [sp, #36] ; 0x24 uint32_t px_i = 0; 74fc: 4698 mov r8, r3 74fe: 9b11 ldr r3, [sp, #68] ; 0x44 7500: ea23 73e3 bic.w r3, r3, r3, asr #31 7504: 931f str r3, [sp, #124] ; 0x7c for(y = 0; y < draw_area_h; y++) { 7506: 9b17 ldr r3, [sp, #92] ; 0x5c 7508: 9a09 ldr r2, [sp, #36] ; 0x24 750a: 4293 cmp r3, r2 750c: f73f adcc bgt.w 70a8 if(blend_area.y1 != blend_area.y2) { 7510: f9bd 3096 ldrsh.w r3, [sp, #150] ; 0x96 7514: f9bd 2092 ldrsh.w r2, [sp, #146] ; 0x92 7518: 429a cmp r2, r3 751a: d00e beq.n 753a blend_area.y2--; 751c: 3b01 subs r3, #1 751e: 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); 7522: 7ba3 ldrb r3, [r4, #14] 7524: 9302 str r3, [sp, #8] 7526: 7823 ldrb r3, [r4, #0] 7528: 4c05 ldr r4, [pc, #20] ; (7540 ) 752a: e9cd b300 strd fp, r3, [sp] 752e: ee18 2a10 vmov r2, s16 7532: 463b mov r3, r7 7534: a924 add r1, sp, #144 ; 0x90 7536: 4648 mov r0, r9 7538: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 753a: 4638 mov r0, r7 753c: e590 b.n 7060 753e: bf00 nop 7540: 000067fd .word 0x000067fd 7544: 0000f075 .word 0x0000f075 7548: 0000de71 .word 0x0000de71 754c: 0000eeb5 .word 0x0000eeb5 7550: 0000f019 .word 0x0000f019 7554: 0000bf65 .word 0x0000bf65 00007558 : { 7558: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 755a: 4b08 ldr r3, [pc, #32] ; (757c ) { 755c: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 755e: 2110 movs r1, #16 7560: 4798 blx r3 dsc->recolor = LV_COLOR_BLACK; 7562: 2300 movs r3, #0 7564: 81a3 strh r3, [r4, #12] dsc->opa = LV_OPA_COVER; 7566: 23ff movs r3, #255 ; 0xff 7568: 7023 strb r3, [r4, #0] dsc->zoom = LV_IMG_ZOOM_NONE; 756a: f44f 7380 mov.w r3, #256 ; 0x100 756e: 8123 strh r3, [r4, #8] dsc->antialias = LV_ANTIALIAS; 7570: 7be3 ldrb r3, [r4, #15] 7572: f043 0301 orr.w r3, r3, #1 7576: 73e3 strb r3, [r4, #15] } 7578: bd10 pop {r4, pc} 757a: bf00 nop 757c: 0000f019 .word 0x0000f019 00007580 : switch(cf) { 7580: 3804 subs r0, #4 7582: b2c0 uxtb r0, r0 7584: 280a cmp r0, #10 7586: bf9d ittte ls 7588: 4b02 ldrls r3, [pc, #8] ; (7594 ) 758a: 181b addls r3, r3, r0 758c: 7898 ldrbls r0, [r3, #2] { 758e: 2000 movhi r0, #0 } 7590: 4770 bx lr 7592: bf00 nop 7594: 0001fa9c .word 0x0001fa9c 00007598 : switch(cf) { 7598: 2803 cmp r0, #3 759a: d005 beq.n 75a8 759c: 3806 subs r0, #6 759e: 2804 cmp r0, #4 75a0: bf8c ite hi 75a2: 2000 movhi r0, #0 75a4: 2001 movls r0, #1 75a6: 4770 bx lr is_chroma_keyed = true; 75a8: 2001 movs r0, #1 } 75aa: 4770 bx lr 000075ac : switch(cf) { 75ac: 280e cmp r0, #14 75ae: bf9d ittte ls 75b0: f647 73a4 movwls r3, #32676 ; 0x7fa4 75b4: fa23 f000 lsrls.w r0, r3, r0 75b8: f000 0001 andls.w r0, r0, #1 { 75bc: 2000 movhi 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: 4b76 ldr r3, [pc, #472] ; (77b0 ) 75d6: 9300 str r3, [sp, #0] 75d8: 4b76 ldr r3, [pc, #472] ; (77b4 ) 75da: 224d movs r2, #77 ; 0x4d LV_LOG_WARN("Image draw error"); 75dc: 4976 ldr r1, [pc, #472] ; (77b8 ) 75de: 4d77 ldr r5, [pc, #476] ; (77bc ) 75e0: 2002 movs r0, #2 75e2: 47a8 blx r5 show_error(coords, mask, "No\ndata"); 75e4: 4a76 ldr r2, [pc, #472] ; (77c0 ) 75e6: e017 b.n 7618 if(dsc->opa <= LV_OPA_MIN) return; 75e8: 781b ldrb r3, [r3, #0] 75ea: 2b05 cmp r3, #5 75ec: d969 bls.n 76c2 lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor); 75ee: 89b9 ldrh r1, [r7, #12] 75f0: 4b74 ldr r3, [pc, #464] ; (77c4 ) 75f2: 4798 blx r3 if(cdsc == NULL) return LV_RES_INV; 75f4: 4605 mov r5, r0 75f6: 2800 cmp r0, #0 75f8: f000 80bc beq.w 7774 bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 75fc: 7b03 ldrb r3, [r0, #12] if(cdsc->dec_dsc.error_msg != NULL) { 75fe: 6982 ldr r2, [r0, #24] bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 7600: f003 031f and.w r3, r3, #31 if(cdsc->dec_dsc.error_msg != NULL) { 7604: b18a cbz r2, 762a LV_LOG_WARN("Image draw error"); 7606: 4b70 ldr r3, [pc, #448] ; (77c8 ) 7608: 9300 str r3, [sp, #0] 760a: 22f7 movs r2, #247 ; 0xf7 760c: 4b6f ldr r3, [pc, #444] ; (77cc ) 760e: 496a ldr r1, [pc, #424] ; (77b8 ) 7610: 4e6a ldr r6, [pc, #424] ; (77bc ) 7612: 2002 movs r0, #2 7614: 47b0 blx r6 show_error(coords, clip_area, cdsc->dec_dsc.error_msg); 7616: 69aa ldr r2, [r5, #24] show_error(coords, mask, "No\ndata"); 7618: 4b6d ldr r3, [pc, #436] ; (77d0 ) 761a: 4641 mov r1, r8 761c: 4620 mov r0, r4 } 761e: b00d add sp, #52 ; 0x34 7620: ecbd 8b02 vpop {d8} 7624: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} show_error(coords, mask, "No\ndata"); 7628: 4718 bx r3 bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 762a: 4618 mov r0, r3 762c: 4a69 ldr r2, [pc, #420] ; (77d4 ) 762e: 4790 blx r2 7630: 9003 str r0, [sp, #12] bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 7632: 4618 mov r0, r3 7634: 4b68 ldr r3, [pc, #416] ; (77d8 ) 7636: 4798 blx r3 else if(cdsc->dec_dsc.img_data) { 7638: 692b ldr r3, [r5, #16] bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 763a: 9004 str r0, [sp, #16] else if(cdsc->dec_dsc.img_data) { 763c: 2b00 cmp r3, #0 763e: d045 beq.n 76cc lv_area_copy(&map_area_rot, coords); 7640: 4b66 ldr r3, [pc, #408] ; (77dc ) 7642: a808 add r0, sp, #32 7644: 4621 mov r1, r4 7646: 4798 blx r3 if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) { 7648: 887b ldrh r3, [r7, #2] 764a: 8938 ldrh r0, [r7, #8] 764c: b913 cbnz r3, 7654 764e: f5b0 7f80 cmp.w r0, #256 ; 0x100 7652: d026 beq.n 76a2 7654: 88e2 ldrh r2, [r4, #6] 7656: 8861 ldrh r1, [r4, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 7658: 8826 ldrh r6, [r4, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 765a: 3201 adds r2, #1 765c: 1a52 subs r2, r2, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 765e: 88a1 ldrh r1, [r4, #4] 7660: 3101 adds r1, #1 7662: 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); 7664: 1d3e adds r6, r7, #4 7666: e9cd 0600 strd r0, r6, [sp] 766a: b21b sxth r3, r3 766c: b212 sxth r2, r2 766e: b209 sxth r1, r1 7670: 4e5b ldr r6, [pc, #364] ; (77e0 ) 7672: a808 add r0, sp, #32 7674: 47b0 blx r6 map_area_rot.x1 += coords->x1; 7676: 8822 ldrh r2, [r4, #0] 7678: f8bd 3020 ldrh.w r3, [sp, #32] map_area_rot.y1 += coords->y1; 767c: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 map_area_rot.x1 += coords->x1; 7680: 4413 add r3, r2 7682: f8ad 3020 strh.w r3, [sp, #32] map_area_rot.y1 += coords->y1; 7686: 8863 ldrh r3, [r4, #2] 7688: 4419 add r1, r3 768a: f8ad 1022 strh.w r1, [sp, #34] ; 0x22 map_area_rot.x2 += coords->x1; 768e: f8bd 1024 ldrh.w r1, [sp, #36] ; 0x24 7692: 440a add r2, r1 7694: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 map_area_rot.y2 += coords->y1; 7698: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 769c: 4413 add r3, r2 769e: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot); 76a2: 4b50 ldr r3, [pc, #320] ; (77e4 ) 76a4: aa08 add r2, sp, #32 76a6: 4641 mov r1, r8 76a8: a80a add r0, sp, #40 ; 0x28 76aa: 4798 blx r3 if(union_ok == false) { 76ac: b148 cbz r0, 76c2 lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte); 76ae: 9b04 ldr r3, [sp, #16] 76b0: 9301 str r3, [sp, #4] 76b2: 9b03 ldr r3, [sp, #12] 76b4: 9300 str r3, [sp, #0] 76b6: 4620 mov r0, r4 76b8: 692a ldr r2, [r5, #16] 76ba: 4c4b ldr r4, [pc, #300] ; (77e8 ) 76bc: 463b mov r3, r7 76be: a90a add r1, sp, #40 ; 0x28 76c0: 47a0 blx r4 } 76c2: b00d add sp, #52 ; 0x34 76c4: ecbd 8b02 vpop {d8} 76c8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} union_ok = _lv_area_intersect(&mask_com, clip_area, coords); 76cc: 4b45 ldr r3, [pc, #276] ; (77e4 ) 76ce: 4622 mov r2, r4 76d0: 4641 mov r1, r8 76d2: a806 add r0, sp, #24 76d4: 4798 blx r3 if(union_ok == false) { 76d6: 2800 cmp r0, #0 76d8: d0f3 beq.n 76c2 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: b233 sxth r3, r6 76e8: 9305 str r3, [sp, #20] uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 76ea: eb03 0043 add.w r0, r3, r3, lsl #1 76ee: 4b3f ldr r3, [pc, #252] ; (77ec ) 76f0: 4798 blx r3 lv_area_copy(&line, &mask_com); 76f2: 4b3a ldr r3, [pc, #232] ; (77dc ) 76f4: a906 add r1, sp, #24 uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 76f6: 4681 mov r9, r0 lv_area_copy(&line, &mask_com); 76f8: a808 add r0, sp, #32 76fa: 4798 blx r3 lv_area_set_height(&line, 1); 76fc: 4b3c ldr r3, [pc, #240] ; (77f0 ) 76fe: 2101 movs r1, #1 7700: a808 add r0, sp, #32 7702: 4798 blx r3 int32_t x = mask_com.x1 - coords->x1; 7704: f9bd 3018 ldrsh.w r3, [sp, #24] 7708: f9b4 2000 ldrsh.w r2, [r4] int32_t y = mask_com.y1 - coords->y1; 770c: f9bd a01a ldrsh.w sl, [sp, #26] 7710: f9b4 1002 ldrsh.w r1, [r4, #2] read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 7714: 1a9b subs r3, r3, r2 7716: b21b sxth r3, r3 7718: ee08 3a10 vmov s16, r3 int32_t y = mask_com.y1 - coords->y1; 771c: ebaa 0b01 sub.w fp, sl, r1 for(row = mask_com.y1; row <= mask_com.y2; row++) { 7720: f9bd 301e ldrsh.w r3, [sp, #30] 7724: 459a cmp sl, r3 7726: dd03 ble.n 7730 _lv_mem_buf_release(buf); 7728: 4b32 ldr r3, [pc, #200] ; (77f4 ) 772a: 4648 mov r0, r9 772c: 4798 blx r3 if(res == LV_RES_INV) { 772e: e7c8 b.n 76c2 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 7730: 4b2c ldr r3, [pc, #176] ; (77e4 ) 7732: aa08 add r2, sp, #32 7734: 4641 mov r1, r8 7736: a80a add r0, sp, #40 ; 0x28 7738: 4798 blx r3 if(union_ok == false) continue; 773a: 2800 cmp r0, #0 773c: d035 beq.n 77aa read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 773e: 9b05 ldr r3, [sp, #20] 7740: 4e2d ldr r6, [pc, #180] ; (77f8 ) 7742: f8cd 9000 str.w r9, [sp] 7746: ee18 1a10 vmov r1, s16 774a: fa0f f28b sxth.w r2, fp 774e: 4628 mov r0, r5 7750: 47b0 blx r6 if(read_res != LV_RES_OK) { 7752: 2801 cmp r0, #1 7754: d013 beq.n 777e lv_img_decoder_close(&cdsc->dec_dsc); 7756: 4628 mov r0, r5 7758: 4b28 ldr r3, [pc, #160] ; (77fc ) LV_LOG_WARN("Image draw can't read the line"); 775a: 4d18 ldr r5, [pc, #96] ; (77bc ) lv_img_decoder_close(&cdsc->dec_dsc); 775c: 4798 blx r3 LV_LOG_WARN("Image draw can't read the line"); 775e: 4b28 ldr r3, [pc, #160] ; (7800 ) 7760: 9300 str r3, [sp, #0] 7762: 2002 movs r0, #2 7764: 4b19 ldr r3, [pc, #100] ; (77cc ) 7766: 4914 ldr r1, [pc, #80] ; (77b8 ) 7768: f44f 729a mov.w r2, #308 ; 0x134 776c: 47a8 blx r5 _lv_mem_buf_release(buf); 776e: 4b21 ldr r3, [pc, #132] ; (77f4 ) 7770: 4648 mov r0, r9 7772: 4798 blx r3 LV_LOG_WARN("Image draw error"); 7774: 4b14 ldr r3, [pc, #80] ; (77c8 ) 7776: 9300 str r3, [sp, #0] 7778: 2258 movs r2, #88 ; 0x58 777a: 4b0e ldr r3, [pc, #56] ; (77b4 ) 777c: e72e b.n 75dc lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte); 777e: 9b04 ldr r3, [sp, #16] 7780: 9301 str r3, [sp, #4] 7782: 9b03 ldr r3, [sp, #12] 7784: 9300 str r3, [sp, #0] 7786: 4e18 ldr r6, [pc, #96] ; (77e8 ) 7788: 463b mov r3, r7 778a: 464a mov r2, r9 778c: a90a add r1, sp, #40 ; 0x28 778e: a808 add r0, sp, #32 7790: 47b0 blx r6 line.y1++; 7792: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 7796: 3301 adds r3, #1 7798: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 line.y2++; 779c: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 77a0: 3301 adds r3, #1 77a2: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 y++; 77a6: f10b 0b01 add.w fp, fp, #1 for(row = mask_com.y1; row <= mask_com.y2; row++) { 77aa: f10a 0a01 add.w sl, sl, #1 77ae: e7b7 b.n 7720 77b0: 0001fa4b .word 0x0001fa4b 77b4: 0001faa9 .word 0x0001faa9 77b8: 0001fa17 .word 0x0001fa17 77bc: 0000e8e9 .word 0x0000e8e9 77c0: 0001fa63 .word 0x0001fa63 77c4: 0000c4a5 .word 0x0000c4a5 77c8: 0001fa6b .word 0x0001fa6b 77cc: 0001fab5 .word 0x0001fab5 77d0: 00006d99 .word 0x00006d99 77d4: 00007599 .word 0x00007599 77d8: 000075ad .word 0x000075ad 77dc: 00006de9 .word 0x00006de9 77e0: 0000c061 .word 0x0000c061 77e4: 0000de8d .word 0x0000de8d 77e8: 00006dfd .word 0x00006dfd 77ec: 0000eeb5 .word 0x0000eeb5 77f0: 0000de67 .word 0x0000de67 77f4: 0000eb69 .word 0x0000eb69 77f8: 0000d02d .word 0x0000d02d 77fc: 0000d04d .word 0x0000d04d 7800: 0001fa7c .word 0x0001fa7c 00007804 : if(src == NULL) return img_src_type; 7804: b138 cbz r0, 7816 if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 7806: 7800 ldrb r0, [r0, #0] 7808: f1a0 0320 sub.w r3, r0, #32 780c: 2b5f cmp r3, #95 ; 0x5f 780e: d904 bls.n 781a else if(u8_p[0] >= 0x80) { 7810: 09c0 lsrs r0, r0, #7 7812: 0040 lsls r0, r0, #1 7814: 4770 bx lr if(src == NULL) return img_src_type; 7816: 2003 movs r0, #3 7818: 4770 bx lr img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/ 781a: 2001 movs r0, #1 } 781c: 4770 bx lr 0000781e : */ static uint8_t hex_char_to_num(char hex) { uint8_t result = 0; if(hex >= '0' && hex <= '9') { 781e: f1a0 0330 sub.w r3, r0, #48 ; 0x30 7822: b2db uxtb r3, r3 7824: 2b09 cmp r3, #9 7826: d90a bls.n 783e result = hex - '0'; } else { if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/ 7828: 2860 cmp r0, #96 ; 0x60 782a: bf84 itt hi 782c: 3820 subhi r0, #32 782e: b2c0 uxtbhi r0, r0 switch(hex) { 7830: f1a0 0341 sub.w r3, r0, #65 ; 0x41 7834: 2b05 cmp r3, #5 7836: bf9a itte ls 7838: 3837 subls r0, #55 ; 0x37 783a: b2c3 uxtbls r3, r0 { 783c: 2300 movhi r3, #0 break; } } return result; } 783e: 4618 mov r0, r3 7840: 4770 bx lr ... 00007844 : { 7844: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 7846: 4b09 ldr r3, [pc, #36] ; (786c ) { 7848: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 784a: 211c movs r1, #28 784c: 4798 blx r3 dsc->opa = LV_OPA_COVER; 784e: 23ff movs r3, #255 ; 0xff 7850: 7223 strb r3, [r4, #8] dsc->font = LV_THEME_DEFAULT_FONT_NORMAL; 7852: 4b07 ldr r3, [pc, #28] ; (7870 ) 7854: 6063 str r3, [r4, #4] dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL; 7856: f64f 73ff movw r3, #65535 ; 0xffff 785a: 81e3 strh r3, [r4, #14] dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; 785c: 8223 strh r3, [r4, #16] dsc->color = LV_COLOR_BLACK; 785e: f44f 13f8 mov.w r3, #2031616 ; 0x1f0000 7862: 6023 str r3, [r4, #0] dsc->bidi_dir = LV_BIDI_DIR_LTR; 7864: 2300 movs r3, #0 7866: 75a3 strb r3, [r4, #22] } 7868: bd10 pop {r4, pc} 786a: bf00 nop 786c: 0000f019 .word 0x0000f019 7870: 20000010 .word 0x20000010 00007874 : { 7874: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 7878: ed2d 8b04 vpush {d8-d9} 787c: b0d1 sub sp, #324 ; 0x144 787e: 468a mov sl, r1 7880: 930a str r3, [sp, #40] ; 0x28 7882: 2300 movs r3, #0 7884: 9321 str r3, [sp, #132] ; 0x84 if(dsc->opa <= LV_OPA_MIN) return; 7886: 7a13 ldrb r3, [r2, #8] { 7888: 9c5e ldr r4, [sp, #376] ; 0x178 788a: 9005 str r0, [sp, #20] if(dsc->opa <= LV_OPA_MIN) return; 788c: 2b05 cmp r3, #5 { 788e: 4693 mov fp, r2 if(dsc->opa <= LV_OPA_MIN) return; 7890: f240 80db bls.w 7a4a const lv_font_t * font = dsc->font; 7894: 6853 ldr r3, [r2, #4] 7896: ee08 3a10 vmov s16, r3 if(txt[0] == '\0') return; 789a: 9b0a ldr r3, [sp, #40] ; 0x28 789c: 781b ldrb r3, [r3, #0] 789e: 2b00 cmp r3, #0 78a0: f000 80d3 beq.w 7a4a bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 78a4: 460a mov r2, r1 78a6: 4b9c ldr r3, [pc, #624] ; (7b18 ) 78a8: 4601 mov r1, r0 78aa: a831 add r0, sp, #196 ; 0xc4 78ac: 4798 blx r3 if(!clip_ok) return; 78ae: 2800 cmp r0, #0 78b0: f000 80cb beq.w 7a4a if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) { 78b4: f89b 3017 ldrb.w r3, [fp, #23] 78b8: 079f lsls r7, r3, #30 78ba: f100 80cb bmi.w 7a54 78be: 9b05 ldr r3, [sp, #20] 78c0: 9a05 ldr r2, [sp, #20] 78c2: 889b ldrh r3, [r3, #4] 78c4: 8812 ldrh r2, [r2, #0] 78c6: 3301 adds r3, #1 78c8: 1a9b subs r3, r3, r2 w = lv_area_get_width(coords); 78ca: b21b sxth r3, r3 int32_t line_height_font = lv_font_get_line_height(font); 78cc: ee18 2a10 vmov r2, s16 78d0: f9b2 6008 ldrsh.w r6, [r2, #8] pos.x = coords->x1; 78d4: 9a05 ldr r2, [sp, #20] int32_t line_height = line_height_font + dsc->line_space; 78d6: f9bb 500a ldrsh.w r5, [fp, #10] pos.x = coords->x1; 78da: f9b2 2000 ldrsh.w r2, [r2] 78de: 920b str r2, [sp, #44] ; 0x2c pos.y = coords->y1; 78e0: 9a05 ldr r2, [sp, #20] 78e2: f9b2 0002 ldrsh.w r0, [r2, #2] x_ofs = dsc->ofs_x; 78e6: f9bb 2012 ldrsh.w r2, [fp, #18] 78ea: 9224 str r2, [sp, #144] ; 0x90 y_ofs = dsc->ofs_y; 78ec: f9bb 2014 ldrsh.w r2, [fp, #20] pos.y += y_ofs; 78f0: 1887 adds r7, r0, r2 78f2: b2b9 uxth r1, r7 78f4: b23f sxth r7, r7 int32_t line_height = line_height_font + dsc->line_space; 78f6: 4435 add r5, r6 pos.y += y_ofs; 78f8: 9706 str r7, [sp, #24] if(hint && y_ofs == 0 && coords->y1 < 0) { 78fa: 2c00 cmp r4, #0 78fc: f000 80bc beq.w 7a78 7900: 2a00 cmp r2, #0 7902: f040 80bb bne.w 7a7c 7906: 2800 cmp r0, #0 7908: f280 80b9 bge.w 7a7e if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) { 790c: 68a2 ldr r2, [r4, #8] 790e: 1a12 subs r2, r2, r0 7910: 2a00 cmp r2, #0 7912: bfb8 it lt 7914: 4252 neglt r2, r2 7916: f5c5 7000 rsb r0, r5, #512 ; 0x200 791a: ebb2 0f40 cmp.w r2, r0, lsl #1 hint->line_start = -1; 791e: bfc4 itt gt 7920: f04f 32ff movgt.w r2, #4294967295 ; 0xffffffff 7924: 6022 strgt r2, [r4, #0] last_line_start = hint->line_start; 7926: 6822 ldr r2, [r4, #0] if(hint && last_line_start >= 0) { 7928: 2a00 cmp r2, #0 792a: f2c0 80a7 blt.w 7a7c line_start = last_line_start; 792e: 9204 str r2, [sp, #16] pos.y += hint->y; 7930: 6862 ldr r2, [r4, #4] 7932: 440a add r2, r1 7934: b212 sxth r2, r2 7936: 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); 7938: b21b sxth r3, r3 793a: 9f04 ldr r7, [sp, #16] 793c: 980a ldr r0, [sp, #40] ; 0x28 793e: f9bb 200c ldrsh.w r2, [fp, #12] 7942: ee09 3a10 vmov s18, r3 7946: f89b 3017 ldrb.w r3, [fp, #23] 794a: 9300 str r3, [sp, #0] 794c: 4438 add r0, r7 794e: ee19 3a10 vmov r3, s18 7952: ee18 1a10 vmov r1, s16 7956: 4f71 ldr r7, [pc, #452] ; (7b1c ) 7958: 47b8 blx r7 795a: 9b04 ldr r3, [sp, #16] 795c: 18c3 adds r3, r0, r3 795e: 9307 str r3, [sp, #28] while(pos.y + line_height_font < mask->y1) { 7960: 9a06 ldr r2, [sp, #24] 7962: f9ba 1002 ldrsh.w r1, [sl, #2] line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7966: f89b 3017 ldrb.w r3, [fp, #23] while(pos.y + line_height_font < mask->y1) { 796a: 4432 add r2, r6 796c: 428a cmp r2, r1 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 796e: 9a0a ldr r2, [sp, #40] ; 0x28 while(pos.y + line_height_font < mask->y1) { 7970: f2c0 8087 blt.w 7a82 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7974: 9904 ldr r1, [sp, #16] if(dsc->flag & LV_TXT_FLAG_CENTER) { 7976: 075e lsls r6, r3, #29 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7978: eb02 0001 add.w r0, r2, r1 if(dsc->flag & LV_TXT_FLAG_CENTER) { 797c: f140 80ab bpl.w 7ad6 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7980: 9a07 ldr r2, [sp, #28] 7982: 9300 str r3, [sp, #0] 7984: 1a51 subs r1, r2, r1 7986: f9bb 300c ldrsh.w r3, [fp, #12] 798a: 4c65 ldr r4, [pc, #404] ; (7b20 ) 798c: ee18 2a10 vmov r2, s16 7990: b289 uxth r1, r1 7992: 47a0 blx r4 7994: 9b05 ldr r3, [sp, #20] 7996: 9a05 ldr r2, [sp, #20] 7998: 889b ldrh r3, [r3, #4] 799a: 8812 ldrh r2, [r2, #0] 799c: 3301 adds r3, #1 799e: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 79a0: b21b sxth r3, r3 79a2: 1a18 subs r0, r3, r0 79a4: 9b0b ldr r3, [sp, #44] ; 0x2c 79a6: eb00 70d0 add.w r0, r0, r0, lsr #31 79aa: eb03 0060 add.w r0, r3, r0, asr #1 pos.x += lv_area_get_width(coords) - line_width; 79ae: b203 sxth r3, r0 79b0: 930b str r3, [sp, #44] ; 0x2c lv_opa_t opa = dsc->opa; 79b2: f89b 3008 ldrb.w r3, [fp, #8] 79b6: 9320 str r3, [sp, #128] ; 0x80 uint16_t sel_start = dsc->sel_start; 79b8: f8bb 300e ldrh.w r3, [fp, #14] 79bc: 9310 str r3, [sp, #64] ; 0x40 uint16_t sel_end = dsc->sel_end; 79be: f8bb 3010 ldrh.w r3, [fp, #16] 79c2: 9311 str r3, [sp, #68] ; 0x44 if(sel_start > sel_end) { 79c4: e9dd 3210 ldrd r3, r2, [sp, #64] ; 0x40 79c8: 4293 cmp r3, r2 79ca: bf88 it hi 79cc: e9cd 2310 strdhi r2, r3, [sp, #64] ; 0x40 if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) { 79d0: f89b 3018 ldrb.w r3, [fp, #24] 79d4: 0799 lsls r1, r3, #30 79d6: d01c beq.n 7a12 lv_draw_line_dsc_init(&line_dsc); 79d8: 4b52 ldr r3, [pc, #328] ; (7b24 ) 79da: a835 add r0, sp, #212 ; 0xd4 79dc: 4798 blx r3 line_dsc.color = dsc->color; 79de: f8bb 3000 ldrh.w r3, [fp] 79e2: f8ad 30d4 strh.w r3, [sp, #212] ; 0xd4 line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/ 79e6: f8db 3004 ldr.w r3, [fp, #4] 79ea: f9b3 3008 ldrsh.w r3, [r3, #8] 79ee: 220a movs r2, #10 79f0: 3305 adds r3, #5 79f2: fb93 f3f2 sdiv r3, r3, r2 79f6: f8ad 30d6 strh.w r3, [sp, #214] ; 0xd6 line_dsc.opa = dsc->opa; 79fa: f89b 3008 ldrb.w r3, [fp, #8] line_dsc.blend_mode = dsc->blend_mode; 79fe: f89b 2019 ldrb.w r2, [fp, #25] line_dsc.opa = dsc->opa; 7a02: f88d 30dc strb.w r3, [sp, #220] ; 0xdc line_dsc.blend_mode = dsc->blend_mode; 7a06: f89d 30dd ldrb.w r3, [sp, #221] ; 0xdd 7a0a: f362 0301 bfi r3, r2, #0, #2 7a0e: f88d 30dd strb.w r3, [sp, #221] ; 0xdd lv_draw_rect_dsc_init(&draw_dsc_sel); 7a12: 4b45 ldr r3, [pc, #276] ; (7b28 ) 7a14: a83b add r0, sp, #236 ; 0xec 7a16: 4798 blx r3 draw_dsc_sel.bg_color = dsc->sel_color; 7a18: f8bb 3002 ldrh.w r3, [fp, #2] 7a1c: f8ad 30ee strh.w r3, [sp, #238] ; 0xee while(txt[line_start] != '\0') { 7a20: 9b20 ldr r3, [sp, #128] ; 0x80 7a22: 9c0b ldr r4, [sp, #44] ; 0x2c 7a24: 2bfa cmp r3, #250 ; 0xfa 7a26: bf88 it hi 7a28: 23ff movhi r3, #255 ; 0xff 7a2a: 9309 str r3, [sp, #36] ; 0x24 7a2c: b2ab uxth r3, r5 7a2e: 9322 str r3, [sp, #136] ; 0x88 7a30: f8bd 3018 ldrh.w r3, [sp, #24] 7a34: 931e str r3, [sp, #120] ; 0x78 uint16_t par_start = 0; 7a36: 2300 movs r3, #0 7a38: 931d str r3, [sp, #116] ; 0x74 while(txt[line_start] != '\0') { 7a3a: 9a04 ldr r2, [sp, #16] 7a3c: 9b0a ldr r3, [sp, #40] ; 0x28 7a3e: 4413 add r3, r2 7a40: 931c str r3, [sp, #112] ; 0x70 7a42: 9b0a ldr r3, [sp, #40] ; 0x28 7a44: 5c9b ldrb r3, [r3, r2] 7a46: 2b00 cmp r3, #0 7a48: d15e bne.n 7b08 } 7a4a: b051 add sp, #324 ; 0x144 7a4c: ecbd 8b04 vpop {d8-d9} 7a50: 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, 7a54: 9302 str r3, [sp, #8] 7a56: f647 4318 movw r3, #31768 ; 0x7c18 7a5a: 9301 str r3, [sp, #4] 7a5c: f9bb 300a ldrsh.w r3, [fp, #10] 7a60: 9300 str r3, [sp, #0] 7a62: f8db 2004 ldr.w r2, [fp, #4] 7a66: f9bb 300c ldrsh.w r3, [fp, #12] 7a6a: 990a ldr r1, [sp, #40] ; 0x28 7a6c: 4d2f ldr r5, [pc, #188] ; (7b2c ) 7a6e: a83b add r0, sp, #236 ; 0xec 7a70: 47a8 blx r5 w = p.x; 7a72: f9bd 30ec ldrsh.w r3, [sp, #236] ; 0xec 7a76: e729 b.n 78cc uint32_t line_start = 0; 7a78: 9404 str r4, [sp, #16] 7a7a: e75d b.n 7938 7a7c: 2200 movs r2, #0 7a7e: 9204 str r2, [sp, #16] 7a80: e75a b.n 7938 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7a82: 9907 ldr r1, [sp, #28] 7a84: 9300 str r3, [sp, #0] 7a86: eb02 0801 add.w r8, r2, r1 7a8a: ee19 3a10 vmov r3, s18 7a8e: f9bb 200c ldrsh.w r2, [fp, #12] 7a92: ee18 1a10 vmov r1, s16 7a96: 4640 mov r0, r8 7a98: 47b8 blx r7 7a9a: 9b07 ldr r3, [sp, #28] 7a9c: 4418 add r0, r3 pos.y += line_height; 7a9e: 9b06 ldr r3, [sp, #24] 7aa0: 442b add r3, r5 7aa2: b21b sxth r3, r3 7aa4: 9306 str r3, [sp, #24] if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 7aa6: b174 cbz r4, 7ac6 7aa8: f513 6f80 cmn.w r3, #1024 ; 0x400 7aac: db0b blt.n 7ac6 7aae: 6823 ldr r3, [r4, #0] 7ab0: 2b00 cmp r3, #0 7ab2: da08 bge.n 7ac6 hint->line_start = line_start; 7ab4: 9b07 ldr r3, [sp, #28] 7ab6: 6023 str r3, [r4, #0] hint->y = pos.y - coords->y1; 7ab8: 9b05 ldr r3, [sp, #20] 7aba: 9a06 ldr r2, [sp, #24] 7abc: f9b3 3002 ldrsh.w r3, [r3, #2] 7ac0: 1ad2 subs r2, r2, r3 hint->coord_y = coords->y1; 7ac2: e9c4 2301 strd r2, r3, [r4, #4] if(txt[line_start] == '\0') return; 7ac6: 9b07 ldr r3, [sp, #28] 7ac8: 9304 str r3, [sp, #16] 7aca: f898 3000 ldrb.w r3, [r8] 7ace: 2b00 cmp r3, #0 7ad0: d0bb beq.n 7a4a line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7ad2: 9007 str r0, [sp, #28] 7ad4: e744 b.n 7960 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 7ad6: 071c lsls r4, r3, #28 7ad8: f57f af6b bpl.w 79b2 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7adc: 9a07 ldr r2, [sp, #28] 7ade: 9904 ldr r1, [sp, #16] 7ae0: 9300 str r3, [sp, #0] 7ae2: 1a51 subs r1, r2, r1 7ae4: f9bb 300c ldrsh.w r3, [fp, #12] 7ae8: 4c0d ldr r4, [pc, #52] ; (7b20 ) 7aea: ee18 2a10 vmov r2, s16 7aee: b289 uxth r1, r1 7af0: 47a0 blx r4 7af2: 9b05 ldr r3, [sp, #20] 7af4: 9a05 ldr r2, [sp, #20] 7af6: 889b ldrh r3, [r3, #4] 7af8: 8812 ldrh r2, [r2, #0] 7afa: 3301 adds r3, #1 7afc: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 7afe: b21b sxth r3, r3 7b00: 1a18 subs r0, r3, r0 7b02: 9b0b ldr r3, [sp, #44] ; 0x2c 7b04: 4418 add r0, r3 7b06: e752 b.n 79ae pos.x += x_ofs; 7b08: 9b24 ldr r3, [sp, #144] ; 0x90 7b0a: 441c add r4, r3 7b0c: b223 sxth r3, r4 7b0e: 930c str r3, [sp, #48] ; 0x30 i = 0; 7b10: 2300 movs r3, #0 7b12: 9330 str r3, [sp, #192] ; 0xc0 cmd_state = CMD_STATE_WAIT; 7b14: 9308 str r3, [sp, #32] 7b16: e0c2 b.n 7c9e 7b18: 0000de8d .word 0x0000de8d 7b1c: 0000ffc5 .word 0x0000ffc5 7b20: 0000ff1d .word 0x0000ff1d 7b24: 000085e1 .word 0x000085e1 7b28: 00009ba1 .word 0x00009ba1 7b2c: 0001019d .word 0x0001019d if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 7b30: 9a10 ldr r2, [sp, #64] ; 0x40 7b32: f64f 73ff movw r3, #65535 ; 0xffff 7b36: 429a cmp r2, r3 7b38: d024 beq.n 7b84 7b3a: 9a11 ldr r2, [sp, #68] ; 0x44 7b3c: 429a cmp r2, r3 7b3e: d021 beq.n 7b84 logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 7b40: 9a04 ldr r2, [sp, #16] 7b42: 4ba3 ldr r3, [pc, #652] ; (7dd0 ) 7b44: 980a ldr r0, [sp, #40] ; 0x28 7b46: 681b ldr r3, [r3, #0] 7b48: 4411 add r1, r2 7b4a: 4798 blx r3 7b4c: b286 uxth r6, r0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 7b4e: 4ca1 ldr r4, [pc, #644] ; (7dd4 ) 7b50: 981c ldr r0, [sp, #112] ; 0x70 7b52: 6823 ldr r3, [r4, #0] 7b54: a930 add r1, sp, #192 ; 0xc0 7b56: 4798 blx r3 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 7b58: 9a1c ldr r2, [sp, #112] ; 0x70 7b5a: 6823 ldr r3, [r4, #0] uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 7b5c: 4605 mov r5, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 7b5e: 9830 ldr r0, [sp, #192] ; 0xc0 7b60: 2100 movs r1, #0 7b62: 4410 add r0, r2 7b64: 4798 blx r3 7b66: f89b 3017 ldrb.w r3, [fp, #23] if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 7b6a: f013 0301 ands.w r3, r3, #1 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 7b6e: 4602 mov r2, r0 if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 7b70: f000 8125 beq.w 7dbe if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) { 7b74: 2d23 cmp r5, #35 ; 0x23 7b76: d10f bne.n 7b98 if(cmd_state == CMD_STATE_WAIT) { /*Start char*/ 7b78: 9908 ldr r1, [sp, #32] 7b7a: b929 cbnz r1, 7b88 par_start = i; 7b7c: f8bd 20c0 ldrh.w r2, [sp, #192] ; 0xc0 7b80: 921d str r2, [sp, #116] ; 0x74 continue; 7b82: e7c7 b.n 7b14 uint16_t logical_char_pos = 0; 7b84: 2600 movs r6, #0 7b86: e7e2 b.n 7b4e else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */ 7b88: 9b08 ldr r3, [sp, #32] 7b8a: 2b01 cmp r3, #1 7b8c: d045 beq.n 7c1a else if(cmd_state == CMD_STATE_IN) { /*Command end */ 7b8e: 2b02 cmp r3, #2 7b90: f040 8118 bne.w 7dc4 cmd_state = CMD_STATE_WAIT; 7b94: 2300 movs r3, #0 7b96: e7bd b.n 7b14 if(cmd_state == CMD_STATE_PAR) { 7b98: 9b08 ldr r3, [sp, #32] 7b9a: 2b01 cmp r3, #1 7b9c: f040 810f bne.w 7dbe if(letter == ' ') { 7ba0: 2d20 cmp r5, #32 7ba2: d17c bne.n 7c9e if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) { 7ba4: 9b30 ldr r3, [sp, #192] ; 0xc0 7ba6: 9a1d ldr r2, [sp, #116] ; 0x74 7ba8: 1a9b subs r3, r3, r2 7baa: 2b07 cmp r3, #7 7bac: d132 bne.n 7c14 _lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH); 7bae: 9b1c ldr r3, [sp, #112] ; 0x70 7bb0: 991d ldr r1, [sp, #116] ; 0x74 7bb2: 189a adds r2, r3, r2 7bb4: 5858 ldr r0, [r3, r1] 7bb6: 8893 ldrh r3, [r2, #4] 7bb8: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]); 7bbc: 4a86 ldr r2, [pc, #536] ; (7dd8 ) 7bbe: 9038 str r0, [sp, #224] ; 0xe0 7bc0: f3c0 4507 ubfx r5, r0, #16, #8 7bc4: f3c0 6407 ubfx r4, r0, #24, #8 7bc8: f3c0 2607 ubfx r6, r0, #8, #8 7bcc: b2c0 uxtb r0, r0 7bce: 4790 blx r2 7bd0: 4601 mov r1, r0 7bd2: b2f0 uxtb r0, r6 7bd4: 4790 blx r2 7bd6: eb00 1101 add.w r1, r0, r1, lsl #4 g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]); 7bda: b2e8 uxtb r0, r5 7bdc: 4790 blx r2 7bde: 4605 mov r5, r0 7be0: b2e0 uxtb r0, r4 7be2: 4790 blx r2 7be4: eb00 1405 add.w r4, r0, r5, lsl #4 b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]); 7be8: f89d 00e4 ldrb.w r0, [sp, #228] ; 0xe4 7bec: 4790 blx r2 7bee: 4605 mov r5, r0 7bf0: f89d 00e5 ldrb.w r0, [sp, #229] ; 0xe5 7bf4: 4790 blx r2 7bf6: eb00 1005 add.w r0, r0, r5, lsl #4 7bfa: f3c0 00c4 ubfx r0, r0, #3, #5 7bfe: f3c4 0485 ubfx r4, r4, #2, #6 7c02: ea40 1044 orr.w r0, r0, r4, lsl #5 7c06: f3c1 01c4 ubfx r1, r1, #3, #5 7c0a: ea40 23c1 orr.w r3, r0, r1, lsl #11 recolor.full = dsc->color.full; 7c0e: 9321 str r3, [sp, #132] ; 0x84 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 7c10: 2302 movs r3, #2 7c12: e77f b.n 7b14 recolor.full = dsc->color.full; 7c14: f8bb 3000 ldrh.w r3, [fp] 7c18: e7f9 b.n 7c0e cmd_state = CMD_STATE_WAIT; 7c1a: 2300 movs r3, #0 lv_color_t color = dsc->color; 7c1c: f8bb 4000 ldrh.w r4, [fp] cmd_state = CMD_STATE_WAIT; 7c20: 9308 str r3, [sp, #32] letter_w = lv_font_get_glyph_width(font, letter, letter_next); 7c22: 4b6e ldr r3, [pc, #440] ; (7ddc ) 7c24: ee18 0a10 vmov r0, s16 7c28: 4629 mov r1, r5 7c2a: 4798 blx r3 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 7c2c: 9a10 ldr r2, [sp, #64] ; 0x40 letter_w = lv_font_get_glyph_width(font, letter, letter_next); 7c2e: 901f str r0, [sp, #124] ; 0x7c if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 7c30: f64f 73ff movw r3, #65535 ; 0xffff 7c34: 429a cmp r2, r3 7c36: d020 beq.n 7c7a 7c38: 9a11 ldr r2, [sp, #68] ; 0x44 7c3a: 429a cmp r2, r3 7c3c: d01d beq.n 7c7a if(logical_char_pos >= sel_start && logical_char_pos < sel_end) { 7c3e: 9b10 ldr r3, [sp, #64] ; 0x40 7c40: 42b3 cmp r3, r6 7c42: d81a bhi.n 7c7a 7c44: 42b2 cmp r2, r6 7c46: d918 bls.n 7c7a sel_coords.x1 = pos.x; 7c48: 9b0c ldr r3, [sp, #48] ; 0x30 7c4a: f8ad 30e0 strh.w r3, [sp, #224] ; 0xe0 sel_coords.y1 = pos.y; 7c4e: 9b06 ldr r3, [sp, #24] 7c50: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; 7c54: f8bb 300c ldrh.w r3, [fp, #12] 7c58: 9a0c ldr r2, [sp, #48] ; 0x30 7c5a: 3b01 subs r3, #1 7c5c: 4413 add r3, r2 7c5e: 4403 add r3, r0 7c60: f8ad 30e4 strh.w r3, [sp, #228] ; 0xe4 sel_coords.y2 = pos.y + line_height - 1; 7c64: 9b22 ldr r3, [sp, #136] ; 0x88 7c66: 9a06 ldr r2, [sp, #24] 7c68: 3b01 subs r3, #1 7c6a: 4413 add r3, r2 7c6c: f8ad 30e6 strh.w r3, [sp, #230] ; 0xe6 lv_draw_rect(&sel_coords, mask, &draw_dsc_sel); 7c70: aa3b add r2, sp, #236 ; 0xec 7c72: 4b5b ldr r3, [pc, #364] ; (7de0 ) 7c74: 4651 mov r1, sl 7c76: a838 add r0, sp, #224 ; 0xe0 7c78: 4798 blx r3 lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode); 7c7a: f89b 3019 ldrb.w r3, [fp, #25] 7c7e: 931b str r3, [sp, #108] ; 0x6c if(opa < LV_OPA_MIN) return; 7c80: 9b20 ldr r3, [sp, #128] ; 0x80 7c82: 2b04 cmp r3, #4 7c84: f200 8485 bhi.w 8592 if(letter_w > 0) { 7c88: 9b1f ldr r3, [sp, #124] ; 0x7c 7c8a: b143 cbz r3, 7c9e pos.x += letter_w + dsc->letter_space; 7c8c: f8bb 300c ldrh.w r3, [fp, #12] 7c90: 9a0c ldr r2, [sp, #48] ; 0x30 7c92: 441a add r2, r3 7c94: 4613 mov r3, r2 7c96: 9a1f ldr r2, [sp, #124] ; 0x7c 7c98: 441a add r2, r3 7c9a: b213 sxth r3, r2 7c9c: 930c str r3, [sp, #48] ; 0x30 while(i < line_end - line_start) { 7c9e: 9b07 ldr r3, [sp, #28] 7ca0: 9a04 ldr r2, [sp, #16] 7ca2: 9930 ldr r1, [sp, #192] ; 0xc0 7ca4: 1a9b subs r3, r3, r2 7ca6: 428b cmp r3, r1 7ca8: f63f af42 bhi.w 7b30 if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) { 7cac: f89b 3018 ldrb.w r3, [fp, #24] 7cb0: 079d lsls r5, r3, #30 7cb2: d51f bpl.n 7cf4 p1.x = pos_x_start; 7cb4: 9b0b ldr r3, [sp, #44] ; 0x2c 7cb6: f8ad 30cc strh.w r3, [sp, #204] ; 0xcc p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 7cba: f8db 3004 ldr.w r3, [fp, #4] lv_draw_line(&p1, &p2, mask, &line_dsc); 7cbe: 4c49 ldr r4, [pc, #292] ; (7de4 ) p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 7cc0: f9b3 3008 ldrsh.w r3, [r3, #8] 7cc4: eb03 72d3 add.w r2, r3, r3, lsr #31 7cc8: f9bd 30d6 ldrsh.w r3, [sp, #214] ; 0xd6 7ccc: eb03 73d3 add.w r3, r3, r3, lsr #31 7cd0: 105b asrs r3, r3, #1 7cd2: eb03 0362 add.w r3, r3, r2, asr #1 7cd6: 9a1e ldr r2, [sp, #120] ; 0x78 7cd8: 4413 add r3, r2 7cda: b21b sxth r3, r3 p2.x = pos.x; 7cdc: 9a0c ldr r2, [sp, #48] ; 0x30 p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; 7cde: f8ad 30ce strh.w r3, [sp, #206] ; 0xce p2.x = pos.x; 7ce2: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0 p2.y = p1.y; 7ce6: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 lv_draw_line(&p1, &p2, mask, &line_dsc); 7cea: 4652 mov r2, sl 7cec: ab35 add r3, sp, #212 ; 0xd4 7cee: a938 add r1, sp, #224 ; 0xe0 7cf0: a833 add r0, sp, #204 ; 0xcc 7cf2: 47a0 blx r4 if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) { 7cf4: f89b 3018 ldrb.w r3, [fp, #24] 7cf8: 07dc lsls r4, r3, #31 7cfa: d51e bpl.n 7d3a p1.x = pos_x_start; 7cfc: 9b0b ldr r3, [sp, #44] ; 0x2c 7cfe: 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; 7d02: f9bd 30d6 ldrsh.w r3, [sp, #214] ; 0xd6 7d06: f8db 2004 ldr.w r2, [fp, #4] lv_draw_line(&p1, &p2, mask, &line_dsc); 7d0a: 4c36 ldr r4, [pc, #216] ; (7de4 ) p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; 7d0c: 8911 ldrh r1, [r2, #8] 7d0e: 8952 ldrh r2, [r2, #10] 7d10: eb03 73d3 add.w r3, r3, r3, lsr #31 7d14: 105b asrs r3, r3, #1 7d16: 3301 adds r3, #1 7d18: 440b add r3, r1 7d1a: 1a9b subs r3, r3, r2 7d1c: 9a1e ldr r2, [sp, #120] ; 0x78 7d1e: 4413 add r3, r2 7d20: b21b sxth r3, r3 p2.x = pos.x; 7d22: 9a0c ldr r2, [sp, #48] ; 0x30 p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; 7d24: f8ad 30ce strh.w r3, [sp, #206] ; 0xce p2.x = pos.x; 7d28: f8ad 20e0 strh.w r2, [sp, #224] ; 0xe0 p2.y = p1.y; 7d2c: f8ad 30e2 strh.w r3, [sp, #226] ; 0xe2 lv_draw_line(&p1, &p2, mask, &line_dsc); 7d30: 4652 mov r2, sl 7d32: ab35 add r3, sp, #212 ; 0xd4 7d34: a938 add r1, sp, #224 ; 0xe0 7d36: a833 add r0, sp, #204 ; 0xcc 7d38: 47a0 blx r4 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7d3a: 9b0a ldr r3, [sp, #40] ; 0x28 7d3c: 9a07 ldr r2, [sp, #28] 7d3e: 4c2a ldr r4, [pc, #168] ; (7de8 ) 7d40: 189e adds r6, r3, r2 7d42: f89b 3017 ldrb.w r3, [fp, #23] 7d46: 9300 str r3, [sp, #0] 7d48: ee18 1a10 vmov r1, s16 7d4c: ee19 3a10 vmov r3, s18 7d50: f9bb 200c ldrsh.w r2, [fp, #12] 7d54: 4630 mov r0, r6 7d56: 47a0 blx r4 7d58: 9b07 ldr r3, [sp, #28] 7d5a: 18c5 adds r5, r0, r3 pos.x = coords->x1; 7d5c: 9b05 ldr r3, [sp, #20] 7d5e: f9b3 4000 ldrsh.w r4, [r3] if(dsc->flag & LV_TXT_FLAG_CENTER) { 7d62: f89b 3017 ldrb.w r3, [fp, #23] line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7d66: 4601 mov r1, r0 if(dsc->flag & LV_TXT_FLAG_CENTER) { 7d68: 0758 lsls r0, r3, #29 7d6a: f140 83fd bpl.w 8568 _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 7d6e: ee18 2a10 vmov r2, s16 7d72: 9300 str r3, [sp, #0] 7d74: 4630 mov r0, r6 7d76: f9bb 300c ldrsh.w r3, [fp, #12] 7d7a: 4e1c ldr r6, [pc, #112] ; (7dec ) 7d7c: 47b0 blx r6 7d7e: 9b05 ldr r3, [sp, #20] 7d80: 9a05 ldr r2, [sp, #20] 7d82: 889b ldrh r3, [r3, #4] 7d84: 8812 ldrh r2, [r2, #0] 7d86: 3301 adds r3, #1 7d88: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 7d8a: b21b sxth r3, r3 7d8c: 1a18 subs r0, r3, r0 7d8e: eb00 70d0 add.w r0, r0, r0, lsr #31 7d92: eb04 0060 add.w r0, r4, r0, asr #1 pos.x += lv_area_get_width(coords) - line_width; 7d96: b204 sxth r4, r0 pos.y += line_height; 7d98: 9a22 ldr r2, [sp, #136] ; 0x88 7d9a: 9b06 ldr r3, [sp, #24] 7d9c: 4413 add r3, r2 7d9e: b21b sxth r3, r3 7da0: 9306 str r3, [sp, #24] if(pos.y > mask->y2) return; 7da2: 9b1e ldr r3, [sp, #120] ; 0x78 7da4: 4413 add r3, r2 7da6: b29b uxth r3, r3 7da8: 931e str r3, [sp, #120] ; 0x78 line_start = line_end; 7daa: 9b07 ldr r3, [sp, #28] if(pos.y > mask->y2) return; 7dac: 9a06 ldr r2, [sp, #24] line_start = line_end; 7dae: 9304 str r3, [sp, #16] if(pos.y > mask->y2) return; 7db0: f9ba 3006 ldrsh.w r3, [sl, #6] 7db4: 4293 cmp r3, r2 7db6: f6ff ae48 blt.w 7a4a line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 7dba: 9507 str r5, [sp, #28] 7dbc: e63d b.n 7a3a if(cmd_state == CMD_STATE_IN) color = recolor; 7dbe: 9b08 ldr r3, [sp, #32] 7dc0: 2b02 cmp r3, #2 7dc2: d002 beq.n 7dca lv_color_t color = dsc->color; 7dc4: f8bb 4000 ldrh.w r4, [fp] 7dc8: e72b b.n 7c22 7dca: 9c21 ldr r4, [sp, #132] ; 0x84 7dcc: e729 b.n 7c22 7dce: bf00 nop 7dd0: 20000064 .word 0x20000064 7dd4: 20000058 .word 0x20000058 7dd8: 0000781f .word 0x0000781f 7ddc: 0000d175 .word 0x0000d175 7de0: 00009bed .word 0x00009bed 7de4: 000085fd .word 0x000085fd 7de8: 0000ffc5 .word 0x0000ffc5 7dec: 0000ff1d .word 0x0000ff1d if((g.box_h == 0) && (g.box_w == 0)) return; 7df0: f8bd 20e4 ldrh.w r2, [sp, #228] ; 0xe4 7df4: f8bd 10e2 ldrh.w r1, [sp, #226] ; 0xe2 7df8: ea52 0301 orrs.w r3, r2, r1 7dfc: f43f af44 beq.w 7c88 int32_t pos_x = pos_p->x + g.ofs_x; 7e00: 980c ldr r0, [sp, #48] ; 0x30 7e02: f9bd 30e6 ldrsh.w r3, [sp, #230] ; 0xe6 7e06: 4403 add r3, r0 7e08: 930d str r3, [sp, #52] ; 0x34 if(pos_x + g.box_w < clip_area->x1 || 7e0a: 9f0d ldr r7, [sp, #52] ; 0x34 7e0c: 4439 add r1, r7 7e0e: f9ba 7000 ldrsh.w r7, [sl] int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 7e12: ee18 0a10 vmov r0, s16 7e16: ee18 3a10 vmov r3, s16 if(pos_x + g.box_w < clip_area->x1 || 7e1a: 42b9 cmp r1, r7 int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 7e1c: f9b0 600a ldrsh.w r6, [r0, #10] 7e20: f9b3 3008 ldrsh.w r3, [r3, #8] 7e24: f9bd 00e8 ldrsh.w r0, [sp, #232] ; 0xe8 if(pos_x + g.box_w < clip_area->x1 || 7e28: f6ff af2e blt.w 7c88 pos_x > clip_area->x2 || 7e2c: f9ba 1004 ldrsh.w r1, [sl, #4] if(pos_x + g.box_w < clip_area->x1 || 7e30: 9f0d ldr r7, [sp, #52] ; 0x34 7e32: 428f cmp r7, r1 7e34: f73f af28 bgt.w 7c88 int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 7e38: 9906 ldr r1, [sp, #24] 7e3a: 1b9b subs r3, r3, r6 7e3c: 440b add r3, r1 7e3e: 1a9b subs r3, r3, r2 7e40: 1a1b subs r3, r3, r0 pos_y + g.box_h < clip_area->y1 || 7e42: 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; 7e44: 9316 str r3, [sp, #88] ; 0x58 pos_y + g.box_h < clip_area->y1 || 7e46: f9ba 3002 ldrsh.w r3, [sl, #2] pos_x > clip_area->x2 || 7e4a: 429a cmp r2, r3 7e4c: f6ff af1c blt.w 7c88 pos_y > clip_area->y2) { 7e50: f9ba 3006 ldrsh.w r3, [sl, #6] pos_y + g.box_h < clip_area->y1 || 7e54: 9a16 ldr r2, [sp, #88] ; 0x58 7e56: 429a cmp r2, r3 7e58: f73f af16 bgt.w 7c88 const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); 7e5c: ee18 0a10 vmov r0, s16 7e60: 4ba9 ldr r3, [pc, #676] ; (8108 ) 7e62: 4629 mov r1, r5 7e64: 4798 blx r3 if(map_p == NULL) { 7e66: 4607 mov r7, r0 7e68: b928 cbnz r0, 7e76 LV_LOG_WARN("lv_draw_letter: character's bitmap not found"); 7e6a: 4ba8 ldr r3, [pc, #672] ; (810c ) 7e6c: 9300 str r3, [sp, #0] 7e6e: f240 12b7 movw r2, #439 ; 0x1b7 7e72: 4ba7 ldr r3, [pc, #668] ; (8110 ) 7e74: e39f b.n 85b6 if(font_p->subpx) { 7e76: ee18 3a10 vmov r3, s16 7e7a: 7b1a ldrb r2, [r3, #12] draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 7e7c: f9bd 6034 ldrsh.w r6, [sp, #52] ; 0x34 7e80: f9bd 8058 ldrsh.w r8, [sp, #88] ; 0x58 uint32_t bpp = g->bpp; 7e84: f89d 30ea ldrb.w r3, [sp, #234] ; 0xea if(font_p->subpx) { 7e88: 0792 lsls r2, r2, #30 7e8a: f000 81fa beq.w 8282 draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 7e8e: f004 021f and.w r2, r4, #31 7e92: 922a str r2, [sp, #168] ; 0xa8 7e94: f3c4 1245 ubfx r2, r4, #5, #6 7e98: 9226 str r2, [sp, #152] ; 0x98 if(bpp == 3) bpp = 4; 7e9a: 2b03 cmp r3, #3 7e9c: f3c4 22c4 ubfx r2, r4, #11, #5 7ea0: 9225 str r2, [sp, #148] ; 0x94 7ea2: f000 80e6 beq.w 8072 switch(bpp) { 7ea6: 3b01 subs r3, #1 7ea8: 2b07 cmp r3, #7 7eaa: f200 80d7 bhi.w 805c 7eae: e8df f013 tbh [pc, r3, lsl #1] 7eb2: 00db .short 0x00db 7eb4: 00d50008 .word 0x00d50008 7eb8: 00d500e0 .word 0x00d500e0 7ebc: 00d500d5 .word 0x00d500d5 7ec0: 00d0 .short 0x00d0 7ec2: 23c0 movs r3, #192 ; 0xc0 7ec4: 9313 str r3, [sp, #76] ; 0x4c 7ec6: 4b93 ldr r3, [pc, #588] ; (8114 ) 7ec8: 2402 movs r4, #2 bpp_opa_table = _lv_bpp4_opa_table; 7eca: 9314 str r3, [sp, #80] ; 0x50 int32_t box_w = g->box_w; 7ecc: f8bd 30e2 ldrh.w r3, [sp, #226] ; 0xe2 7ed0: 9317 str r3, [sp, #92] ; 0x5c int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 7ed2: fb04 f103 mul.w r1, r4, r3 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 7ed6: 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; 7eda: 9d17 ldr r5, [sp, #92] ; 0x5c int32_t box_h = g->box_h; 7edc: f8bd 20e4 ldrh.w r2, [sp, #228] ; 0xe4 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 7ee0: 42b3 cmp r3, r6 7ee2: bfc6 itte gt 7ee4: 1b9b subgt r3, r3, r6 7ee6: eb03 0343 addgt.w r3, r3, r3, lsl #1 7eea: 2300 movle r3, #0 7eec: 9312 str r3, [sp, #72] ; 0x48 int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3; 7eee: f9ba 3004 ldrsh.w r3, [sl, #4] 7ef2: 2003 movs r0, #3 7ef4: fbb5 f0f0 udiv r0, r5, r0 7ef8: 4430 add r0, r6 7efa: 4298 cmp r0, r3 7efc: bfc5 ittet gt 7efe: 1b9b subgt r3, r3, r6 7f00: 3301 addgt r3, #1 7f02: 9b17 ldrle r3, [sp, #92] ; 0x5c 7f04: eb03 0343 addgt.w r3, r3, r3, lsl #1 7f08: 9319 str r3, [sp, #100] ; 0x64 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 7f0a: f9ba 3002 ldrsh.w r3, [sl, #2] 7f0e: 4543 cmp r3, r8 7f10: bfcc ite gt 7f12: eba3 0308 subgt.w r3, r3, r8 7f16: 2300 movle r3, #0 7f18: 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; 7f1a: f9ba 3006 ldrsh.w r3, [sl, #6] 7f1e: eb02 0008 add.w r0, r2, r8 7f22: 4298 cmp r0, r3 7f24: bfc2 ittt gt 7f26: eba3 0308 subgt.w r3, r3, r8 7f2a: 3301 addgt r3, #1 7f2c: 9323 strgt r3, [sp, #140] ; 0x8c int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 7f2e: 9b12 ldr r3, [sp, #72] ; 0x48 7f30: 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; 7f32: bfd8 it le 7f34: 9223 strle r2, [sp, #140] ; 0x8c int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 7f36: 4363 muls r3, r4 7f38: fb00 3301 mla r3, r0, r1, r3 map_p += bit_ofs >> 3; 7f3c: eb07 01e3 add.w r1, r7, r3, asr #3 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 7f40: f003 0307 and.w r3, r3, #7 7f44: 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; 7f46: 9b17 ldr r3, [sp, #92] ; 0x5c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7f48: 4f73 ldr r7, [pc, #460] ; (8118 ) map_p += bit_ofs >> 3; 7f4a: 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; 7f4c: 4353 muls r3, r2 7f4e: f5b3 7ff0 cmp.w r3, #480 ; 0x1e0 7f52: bfa8 it ge 7f54: f44f 73f0 movge.w r3, #480 ; 0x1e0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7f58: 4618 mov r0, r3 7f5a: 9318 str r3, [sp, #96] ; 0x60 7f5c: 47b8 blx r7 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7f5e: 9b18 ldr r3, [sp, #96] ; 0x60 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 7f60: 4605 mov r5, r0 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7f62: 0058 lsls r0, r3, #1 7f64: 47b8 blx r7 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7f66: 4b6d ldr r3, [pc, #436] ; (811c ) lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 7f68: ee08 0a90 vmov s17, r0 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7f6c: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 7f6e: 4b6c ldr r3, [pc, #432] ; (8120 ) 7f70: 4798 blx r3 7f72: f8b0 9014 ldrh.w r9, [r0, #20] 7f76: f9b0 c010 ldrsh.w ip, [r0, #16] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7f7a: 9b12 ldr r3, [sp, #72] ; 0x48 lv_color_t * vdb_buf_tmp = vdb->buf_act; 7f7c: f8d0 e008 ldr.w lr, [r0, #8] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7f80: 2203 movs r2, #3 7f82: f109 0901 add.w r9, r9, #1 7f86: fb93 f1f2 sdiv r1, r3, r2 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 7f8a: f9b0 3012 ldrsh.w r3, [r0, #18] vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7f8e: 980e ldr r0, [sp, #56] ; 0x38 7f90: eba9 090c sub.w r9, r9, ip 7f94: fa0f f989 sxth.w r9, r9 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 7f98: eba8 0303 sub.w r3, r8, r3 7f9c: fb09 6303 mla r3, r9, r3, r6 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7fa0: fb09 1000 mla r0, r9, r0, r1 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 7fa4: eba3 030c sub.w r3, r3, ip vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7fa8: 4403 add r3, r0 7faa: eb0e 0343 add.w r3, lr, r3, lsl #1 map_area.x1 = col_start / 3 + pos_x; 7fae: 980d ldr r0, [sp, #52] ; 0x34 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 7fb0: 9315 str r3, [sp, #84] ; 0x54 map_area.x1 = col_start / 3 + pos_x; 7fb2: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 7fb6: fa11 f180 uxtah r1, r1, r0 map_area.x2 = col_end / 3 + pos_x - 1; 7fba: 3b01 subs r3, #1 map_area.x1 = col_start / 3 + pos_x; 7fbc: f8ad 10cc strh.w r1, [sp, #204] ; 0xcc map_area.x2 = col_end / 3 + pos_x - 1; 7fc0: 9919 ldr r1, [sp, #100] ; 0x64 7fc2: fb91 f2f2 sdiv r2, r1, r2 7fc6: 441a add r2, r3 7fc8: f8ad 20d0 strh.w r2, [sp, #208] ; 0xd0 map_area.y1 = row_start + pos_y; 7fcc: 9b16 ldr r3, [sp, #88] ; 0x58 7fce: 9a0e ldr r2, [sp, #56] ; 0x38 7fd0: 4413 add r3, r2 7fd2: b21b sxth r3, r3 7fd4: f8ad 30ce strh.w r3, [sp, #206] ; 0xce map_area.y2 = map_area.y1; 7fd8: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 7fdc: 4b51 ldr r3, [pc, #324] ; (8124 ) 7fde: 4798 blx r3 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { 7fe0: 9a12 ldr r2, [sp, #72] ; 0x48 7fe2: 9b19 ldr r3, [sp, #100] ; 0x64 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 7fe4: 9027 str r0, [sp, #156] ; 0x9c if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { 7fe6: 1a9b subs r3, r3, r2 7fe8: 9316 str r3, [sp, #88] ; 0x58 col_bit += ((box_w - col_end) + col_start) * bpp; 7fea: 9b17 ldr r3, [sp, #92] ; 0x5c 7fec: 4413 add r3, r2 7fee: 9a19 ldr r2, [sp, #100] ; 0x64 7ff0: 1a9b subs r3, r3, r2 7ff2: 4363 muls r3, r4 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 7ff4: 9a16 ldr r2, [sp, #88] ; 0x58 col_bit += ((box_w - col_end) + col_start) * bpp; 7ff6: 9328 str r3, [sp, #160] ; 0xa0 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 7ff8: f06f 0302 mvn.w r3, #2 7ffc: fb92 f3f3 sdiv r3, r2, r3 8000: 444b add r3, r9 8002: 005b lsls r3, r3, #1 8004: 9329 str r3, [sp, #164] ; 0xa4 int32_t mask_p = 0; 8006: 2300 movs r3, #0 8008: 461f mov r7, r3 if(col_bit < (int32_t) (8 - bpp)) { 800a: f1c4 0308 rsb r3, r4, #8 800e: 932d str r3, [sp, #180] ; 0xb4 for(row = row_start ; row < row_end; row++) { 8010: 9b0e ldr r3, [sp, #56] ; 0x38 8012: 9a23 ldr r2, [sp, #140] ; 0x8c 8014: 4293 cmp r3, r2 8016: db31 blt.n 807c if(map_area.y1 != map_area.y2) { 8018: f9bd 30d2 ldrsh.w r3, [sp, #210] ; 0xd2 801c: f9bd 20ce ldrsh.w r2, [sp, #206] ; 0xce 8020: 429a cmp r2, r3 8022: d00f beq.n 8044 map_area.y2--; 8024: 3b01 subs r3, #1 8026: 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); 802a: 9b1b ldr r3, [sp, #108] ; 0x6c 802c: 9302 str r3, [sp, #8] 802e: 9b09 ldr r3, [sp, #36] ; 0x24 8030: 9301 str r3, [sp, #4] 8032: 2302 movs r3, #2 8034: 9300 str r3, [sp, #0] 8036: ee18 2a90 vmov r2, s17 803a: 4c3b ldr r4, [pc, #236] ; (8128 ) 803c: 462b mov r3, r5 803e: a933 add r1, sp, #204 ; 0xcc 8040: 4650 mov r0, sl 8042: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 8044: 4628 mov r0, r5 8046: 4c39 ldr r4, [pc, #228] ; (812c ) 8048: 47a0 blx r4 _lv_mem_buf_release(color_buf); 804a: ee18 0a90 vmov r0, s17 804e: 47a0 blx r4 8050: e61a b.n 7c88 bitmask_init = 0xFF; 8052: 23ff movs r3, #255 ; 0xff 8054: 9313 str r3, [sp, #76] ; 0x4c uint32_t bpp = g->bpp; 8056: 2408 movs r4, #8 bpp_opa_table = _lv_bpp8_opa_table; 8058: 4b35 ldr r3, [pc, #212] ; (8130 ) 805a: e736 b.n 7eca LV_LOG_WARN("lv_draw_letter: invalid bpp not found"); 805c: 4b35 ldr r3, [pc, #212] ; (8134 ) 805e: 9300 str r3, [sp, #0] 8060: f240 227a movw r2, #634 ; 0x27a 8064: 4b34 ldr r3, [pc, #208] ; (8138 ) 8066: e2a6 b.n 85b6 bitmask_init = 0x80; 8068: 2380 movs r3, #128 ; 0x80 806a: 9313 str r3, [sp, #76] ; 0x4c uint32_t bpp = g->bpp; 806c: 2401 movs r4, #1 bpp_opa_table = _lv_bpp1_opa_table; 806e: 4b33 ldr r3, [pc, #204] ; (813c ) 8070: e72b b.n 7eca bitmask_init = 0xF0; 8072: 23f0 movs r3, #240 ; 0xf0 8074: 9313 str r3, [sp, #76] ; 0x4c switch(bpp) { 8076: 2404 movs r4, #4 bpp_opa_table = _lv_bpp4_opa_table; 8078: 4b31 ldr r3, [pc, #196] ; (8140 ) 807a: e726 b.n 7eca bitmask = bitmask_init >> col_bit; 807c: 9a0f ldr r2, [sp, #60] ; 0x3c 807e: 9b13 ldr r3, [sp, #76] ; 0x4c for(col = col_start; col < col_end; col++) { 8080: f8dd e048 ldr.w lr, [sp, #72] ; 0x48 bitmask = bitmask_init >> col_bit; 8084: fa23 fc02 lsr.w ip, r3, r2 for(col = col_start; col < col_end; col++) { 8088: 463e mov r6, r7 uint32_t subpx_cnt = 0; 808a: 2200 movs r2, #0 for(col = col_start; col < col_end; col++) { 808c: 9b19 ldr r3, [sp, #100] ; 0x64 808e: 4573 cmp r3, lr 8090: dc5c bgt.n 814c if(other_mask_cnt) { 8092: 9b27 ldr r3, [sp, #156] ; 0x9c 8094: b1cb cbz r3, 80ca lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2, 8096: 463b mov r3, r7 8098: 442b add r3, r5 809a: 4698 mov r8, r3 809c: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 80a0: f9bd 10cc ldrsh.w r1, [sp, #204] ; 0xcc 80a4: f9bd 20d2 ldrsh.w r2, [sp, #210] ; 0xd2 80a8: 4f26 ldr r7, [pc, #152] ; (8144 ) 80aa: 3301 adds r3, #1 80ac: 1a5b subs r3, r3, r1 80ae: b21b sxth r3, r3 80b0: 4640 mov r0, r8 80b2: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 80b4: b948 cbnz r0, 80ca 80b6: f8bd 10d0 ldrh.w r1, [sp, #208] ; 0xd0 80ba: f8bd 30cc ldrh.w r3, [sp, #204] ; 0xcc 80be: 3101 adds r1, #1 80c0: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area)); 80c2: b209 sxth r1, r1 80c4: 4b20 ldr r3, [pc, #128] ; (8148 ) 80c6: 4640 mov r0, r8 80c8: 4798 blx r3 if((int32_t) mask_p + (col_end - col_start) < mask_buf_size) { 80ca: 9b16 ldr r3, [sp, #88] ; 0x58 80cc: 9a18 ldr r2, [sp, #96] ; 0x60 80ce: 18f3 adds r3, r6, r3 80d0: 429a cmp r2, r3 80d2: f340 80c1 ble.w 8258 map_area.y2 ++; 80d6: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 80da: 3301 adds r3, #1 80dc: b21b sxth r3, r3 col_bit += ((box_w - col_end) + col_start) * bpp; 80de: 9a28 ldr r2, [sp, #160] ; 0xa0 map_area.y2 ++; 80e0: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 col_bit += ((box_w - col_end) + col_start) * bpp; 80e4: 9b0f ldr r3, [sp, #60] ; 0x3c 80e6: 4413 add r3, r2 map_p += (col_bit >> 3); 80e8: 9a1a ldr r2, [sp, #104] ; 0x68 80ea: eb02 02e3 add.w r2, r2, r3, asr #3 col_bit = col_bit & 0x7; 80ee: f003 0307 and.w r3, r3, #7 map_p += (col_bit >> 3); 80f2: 921a str r2, [sp, #104] ; 0x68 col_bit = col_bit & 0x7; 80f4: 930f str r3, [sp, #60] ; 0x3c vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 80f6: 9a29 ldr r2, [sp, #164] ; 0xa4 80f8: 9b15 ldr r3, [sp, #84] ; 0x54 80fa: 4413 add r3, r2 80fc: 9315 str r3, [sp, #84] ; 0x54 for(row = row_start ; row < row_end; row++) { 80fe: 9b0e ldr r3, [sp, #56] ; 0x38 8100: 3301 adds r3, #1 8102: 930e str r3, [sp, #56] ; 0x38 8104: 4637 mov r7, r6 8106: e783 b.n 8010 8108: 0000d165 .word 0x0000d165 810c: 0001fb21 .word 0x0001fb21 8110: 0001fca6 .word 0x0001fca6 8114: 0001fb92 .word 0x0001fb92 8118: 0000eeb5 .word 0x0000eeb5 811c: 00004fe9 .word 0x00004fe9 8120: 0000d9e1 .word 0x0000d9e1 8124: 000097f1 .word 0x000097f1 8128: 000067fd .word 0x000067fd 812c: 0000eb69 .word 0x0000eb69 8130: 0001fba6 .word 0x0001fba6 8134: 0001fb4e .word 0x0001fb4e 8138: 0001fcb5 .word 0x0001fcb5 813c: 0001fb90 .word 0x0001fb90 8140: 0001fb96 .word 0x0001fb96 8144: 00009761 .word 0x00009761 8148: 0000f019 .word 0x0000f019 letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); 814c: 9b0f ldr r3, [sp, #60] ; 0x3c 814e: 18e3 adds r3, r4, r3 8150: 930d str r3, [sp, #52] ; 0x34 8152: 9b1a ldr r3, [sp, #104] ; 0x68 8154: 990d ldr r1, [sp, #52] ; 0x34 8156: 781b ldrb r3, [r3, #0] 8158: f1c1 0108 rsb r1, r1, #8 815c: ea03 030c and.w r3, r3, ip if(letter_px != 0) { 8160: 40cb lsrs r3, r1 8162: d007 beq.n 8174 if(opa == LV_OPA_COVER) { 8164: 9909 ldr r1, [sp, #36] ; 0x24 8166: 29ff cmp r1, #255 ; 0xff 8168: d160 bne.n 822c px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; 816a: 2c08 cmp r4, #8 816c: bf1a itte ne 816e: 9914 ldrne r1, [sp, #80] ; 0x50 8170: 5ccb ldrbne r3, [r1, r3] letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); 8172: b2db uxtbeq r3, r3 font_rgb[subpx_cnt] = px_opa; 8174: f502 71a0 add.w r1, r2, #320 ; 0x140 8178: 4469 add r1, sp subpx_cnt ++; 817a: 3201 adds r2, #1 if(subpx_cnt == 3) { 817c: 2a03 cmp r2, #3 font_rgb[subpx_cnt] = px_opa; 817e: f801 3c84 strb.w r3, [r1, #-132] if(subpx_cnt == 3) { 8182: d148 bne.n 8216 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 8184: 9a15 ldr r2, [sp, #84] ; 0x54 res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 8186: f89d 30bc ldrb.w r3, [sp, #188] ; 0xbc uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 818a: 7851 ldrb r1, [r2, #1] res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 818c: 9a25 ldr r2, [sp, #148] ; 0x94 res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 818e: f89d 90be ldrb.w r9, [sp, #190] ; 0xbe res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 8192: f1c3 00ff rsb r0, r3, #255 ; 0xff 8196: 08c9 lsrs r1, r1, #3 8198: fb13 f202 smulbb r2, r3, r2 819c: fb00 2201 mla r2, r0, r1, r2 81a0: 0a12 lsrs r2, r2, #8 81a2: 9217 str r2, [sp, #92] ; 0x5c uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 81a4: 9a15 ldr r2, [sp, #84] ; 0x54 81a6: 7810 ldrb r0, [r2, #0] res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 81a8: 9a2a ldr r2, [sp, #168] ; 0xa8 81aa: f000 001f and.w r0, r0, #31 81ae: f1c9 08ff rsb r8, r9, #255 ; 0xff 81b2: fb19 f102 smulbb r1, r9, r2 81b6: fb08 1200 mla r2, r8, r0, r1 81ba: 922b str r2, [sp, #172] ; 0xac uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 81bc: 9a15 ldr r2, [sp, #84] ; 0x54 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81be: f89d 80bd ldrb.w r8, [sp, #189] ; 0xbd uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 81c2: f832 0b02 ldrh.w r0, [r2], #2 81c6: 9215 str r2, [sp, #84] ; 0x54 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81c8: f3c0 1245 ubfx r2, r0, #5, #6 81cc: 4611 mov r1, r2 81ce: f1c8 02ff rsb r2, r8, #255 ; 0xff if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81d2: ea43 0309 orr.w r3, r3, r9 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81d6: 922c str r2, [sp, #176] ; 0xb0 81d8: 9a26 ldr r2, [sp, #152] ; 0x98 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81da: ea58 0303 orrs.w r3, r8, r3 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81de: fb18 f002 smulbb r0, r8, r2 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81e2: bf18 it ne 81e4: f04f 33ff movne.w r3, #4294967295 ; 0xffffffff res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81e8: 460a mov r2, r1 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81ea: bf08 it eq 81ec: 2300 moveq r3, #0 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81ee: 992c ldr r1, [sp, #176] ; 0xb0 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 81f0: 55ab strb r3, [r5, r6] color_buf[mask_p] = res_color; 81f2: 9b2b ldr r3, [sp, #172] ; 0xac res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 81f4: fb01 0002 mla r0, r1, r2, r0 color_buf[mask_p] = res_color; 81f8: f3c0 2005 ubfx r0, r0, #8, #6 81fc: f3c3 2104 ubfx r1, r3, #8, #5 8200: 9b17 ldr r3, [sp, #92] ; 0x5c 8202: ea41 1140 orr.w r1, r1, r0, lsl #5 8206: ea41 21c3 orr.w r1, r1, r3, lsl #11 820a: ee18 3a90 vmov r3, s17 subpx_cnt = 0; 820e: 2200 movs r2, #0 color_buf[mask_p] = res_color; 8210: f823 1016 strh.w r1, [r3, r6, lsl #1] mask_p++; 8214: 3601 adds r6, #1 if(col_bit < (int32_t) (8 - bpp)) { 8216: 9b0f ldr r3, [sp, #60] ; 0x3c 8218: 992d ldr r1, [sp, #180] ; 0xb4 821a: 428b cmp r3, r1 821c: da14 bge.n 8248 col_bit += bpp; 821e: 9b0d ldr r3, [sp, #52] ; 0x34 8220: 930f str r3, [sp, #60] ; 0x3c bitmask = bitmask >> bpp; 8222: fa2c fc04 lsr.w ip, ip, r4 for(col = col_start; col < col_end; col++) { 8226: f10e 0e01 add.w lr, lr, #1 822a: e72f b.n 808c px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 822c: 2c08 cmp r4, #8 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 822e: bf17 itett ne 8230: 9914 ldrne r1, [sp, #80] ; 0x50 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8232: 9909 ldreq r1, [sp, #36] ; 0x24 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 8234: 5ccb ldrbne r3, [r1, r3] 8236: 9909 ldrne r1, [sp, #36] ; 0x24 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8238: bf0b itete eq 823a: 434b muleq r3, r1 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 823c: fb13 f301 smulbbne r3, r3, r1 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 8240: f3c3 2307 ubfxeq r3, r3, #8, #8 8244: 0a1b lsrne r3, r3, #8 8246: e795 b.n 8174 map_p++; 8248: 9b1a ldr r3, [sp, #104] ; 0x68 bitmask = bitmask_init; 824a: f8dd c04c ldr.w ip, [sp, #76] ; 0x4c map_p++; 824e: 3301 adds r3, #1 8250: 931a str r3, [sp, #104] ; 0x68 col_bit = 0; 8252: 2300 movs r3, #0 8254: 930f str r3, [sp, #60] ; 0x3c 8256: e7e6 b.n 8226 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); 8258: 9b1b ldr r3, [sp, #108] ; 0x6c 825a: 9302 str r3, [sp, #8] 825c: 9b09 ldr r3, [sp, #36] ; 0x24 825e: 9301 str r3, [sp, #4] 8260: 2302 movs r3, #2 8262: 4ea7 ldr r6, [pc, #668] ; (8500 ) 8264: 9300 str r3, [sp, #0] 8266: ee18 2a90 vmov r2, s17 826a: 462b mov r3, r5 826c: a933 add r1, sp, #204 ; 0xcc 826e: 4650 mov r0, sl 8270: 47b0 blx r6 map_area.y1 = map_area.y2 + 1; 8272: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 8276: 3301 adds r3, #1 8278: b21b sxth r3, r3 827a: f8ad 30ce strh.w r3, [sp, #206] ; 0xce mask_p = 0; 827e: 2600 movs r6, #0 8280: e72d b.n 80de if(bpp == 3) bpp = 4; 8282: 2b03 cmp r3, #3 8284: ee09 4a90 vmov s19, r4 8288: f000 80c0 beq.w 840c switch(bpp) { 828c: 3b01 subs r3, #1 828e: 2b07 cmp r3, #7 8290: f200 80b0 bhi.w 83f4 8294: e8df f003 tbb [pc, r3] 8298: baae04b4 .word 0xbaae04b4 829c: a7aeaeae .word 0xa7aeaeae 82a0: 22c0 movs r2, #192 ; 0xc0 82a2: 9213 str r2, [sp, #76] ; 0x4c 82a4: 4a97 ldr r2, [pc, #604] ; (8504 ) 82a6: 2502 movs r5, #2 82a8: 2304 movs r3, #4 bpp_opa_table_p = _lv_bpp4_opa_table; 82aa: 920e str r2, [sp, #56] ; 0x38 if(opa < LV_OPA_MAX) { 82ac: 9a09 ldr r2, [sp, #36] ; 0x24 82ae: 2af9 cmp r2, #249 ; 0xf9 82b0: d812 bhi.n 82d8 if(prev_opa != opa || prev_bpp != bpp) { 82b2: 4a95 ldr r2, [pc, #596] ; (8508 ) 82b4: 9809 ldr r0, [sp, #36] ; 0x24 82b6: f892 1100 ldrb.w r1, [r2, #256] ; 0x100 82ba: 4281 cmp r1, r0 82bc: f040 80ac bne.w 8418 82c0: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 82c4: 42aa cmp r2, r5 82c6: f040 80a7 bne.w 8418 prev_opa = opa; 82ca: 4b8f ldr r3, [pc, #572] ; (8508 ) 82cc: 9a09 ldr r2, [sp, #36] ; 0x24 82ce: f883 2100 strb.w r2, [r3, #256] ; 0x100 prev_bpp = bpp; 82d2: f8c3 5104 str.w r5, [r3, #260] ; 0x104 bpp_opa_table_p = opa_table; 82d6: 930e str r3, [sp, #56] ; 0x38 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; 82d8: f9ba 3000 ldrsh.w r3, [sl] int32_t box_w = g->box_w; 82dc: f8bd 90e2 ldrh.w r9, [sp, #226] ; 0xe2 int32_t box_h = g->box_h; 82e0: f8bd 20e4 ldrh.w r2, [sp, #228] ; 0xe4 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; 82e4: 42b3 cmp r3, r6 82e6: bfcc ite gt 82e8: 1b9b subgt r3, r3, r6 82ea: 2300 movle r3, #0 82ec: 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; 82ee: f9ba 3004 ldrsh.w r3, [sl, #4] 82f2: eb09 0006 add.w r0, r9, r6 82f6: 4298 cmp r0, r3 82f8: bfc4 itt gt 82fa: 1b9b subgt r3, r3, r6 82fc: 3301 addgt r3, #1 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 82fe: 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; 8302: bfc8 it gt 8304: 9312 strgt r3, [sp, #72] ; 0x48 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 8306: 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; 830a: bfd8 it le 830c: f8cd 9048 strle.w r9, [sp, #72] ; 0x48 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 8310: eb02 0008 add.w r0, r2, r8 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 8314: 4546 cmp r6, r8 8316: bfcc ite gt 8318: eba6 0608 subgt.w r6, r6, r8 831c: 2600 movle r6, #0 int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 831e: 4298 cmp r0, r3 8320: bfc2 ittt gt 8322: eba3 0308 subgt.w r3, r3, r8 8326: 3301 addgt r3, #1 8328: 9317 strgt r3, [sp, #92] ; 0x5c uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 832a: 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; 832c: bfd8 it le 832e: 9217 strle r2, [sp, #92] ; 0x5c int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 8330: fb05 f109 mul.w r1, r5, r9 uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 8334: fb03 f405 mul.w r4, r3, r5 8338: fb06 4401 mla r4, r6, r1, r4 map_p += bit_ofs >> 3; 833c: eb07 03d4 add.w r3, r7, r4, lsr #3 8340: 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; 8342: fb02 f309 mul.w r3, r2, r9 8346: f5b3 7ff0 cmp.w r3, #480 ; 0x1e0 834a: bfa8 it ge 834c: f44f 73f0 movge.w r3, #480 ; 0x1e0 8350: 9315 str r3, [sp, #84] ; 0x54 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8352: 4618 mov r0, r3 8354: 4b6d ldr r3, [pc, #436] ; (850c ) 8356: 4798 blx r3 fill_area.x1 = col_start + pos_x; 8358: 9a0d ldr r2, [sp, #52] ; 0x34 835a: 990f ldr r1, [sp, #60] ; 0x3c 835c: f8bd 3034 ldrh.w r3, [sp, #52] ; 0x34 8360: fa11 f282 uxtah r2, r1, r2 8364: f8ad 20cc strh.w r2, [sp, #204] ; 0xcc fill_area.x2 = col_end + pos_x - 1; 8368: 9a12 ldr r2, [sp, #72] ; 0x48 836a: 3b01 subs r3, #1 836c: 4413 add r3, r2 836e: f8ad 30d0 strh.w r3, [sp, #208] ; 0xd0 fill_area.y1 = row_start + pos_y; 8372: 9b16 ldr r3, [sp, #88] ; 0x58 8374: 4433 add r3, r6 8376: b21b sxth r3, r3 8378: f8ad 30ce strh.w r3, [sp, #206] ; 0xce fill_area.y2 = fill_area.y1; 837c: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8380: 4b63 ldr r3, [pc, #396] ; (8510 ) lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8382: ee08 0a90 vmov s17, r0 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8386: 4798 blx r3 uint32_t col_bit_max = 8 - bpp; 8388: f1c5 0308 rsb r3, r5, #8 838c: 930d str r3, [sp, #52] ; 0x34 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 838e: 9b0f ldr r3, [sp, #60] ; 0x3c uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 8390: 9019 str r0, [sp, #100] ; 0x64 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 8392: 4499 add r9, r3 8394: 9b12 ldr r3, [sp, #72] ; 0x48 8396: eba9 0903 sub.w r9, r9, r3 839a: fb05 f309 mul.w r3, r5, r9 col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 839e: f004 0407 and.w r4, r4, #7 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; 83a2: 931a str r3, [sp, #104] ; 0x68 int32_t mask_p = 0; 83a4: f04f 0900 mov.w r9, #0 for(row = row_start ; row < row_end; row++) { 83a8: 9b17 ldr r3, [sp, #92] ; 0x5c 83aa: 429e cmp r6, r3 83ac: db45 blt.n 843a if(fill_area.y1 != fill_area.y2) { 83ae: f9bd 30d2 ldrsh.w r3, [sp, #210] ; 0xd2 83b2: f9bd 20ce ldrsh.w r2, [sp, #206] ; 0xce 83b6: 429a cmp r2, r3 83b8: d010 beq.n 83dc fill_area.y2--; 83ba: 3b01 subs r3, #1 83bc: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 _lv_blend_fill(clip_area, &fill_area, 83c0: 9b1b ldr r3, [sp, #108] ; 0x6c 83c2: 9302 str r3, [sp, #8] 83c4: 26ff movs r6, #255 ; 0xff 83c6: 2302 movs r3, #2 83c8: e9cd 3600 strd r3, r6, [sp] 83cc: ee19 2a90 vmov r2, s19 83d0: ee18 3a90 vmov r3, s17 83d4: 4c4f ldr r4, [pc, #316] ; (8514 ) 83d6: a933 add r1, sp, #204 ; 0xcc 83d8: 4650 mov r0, sl 83da: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 83dc: ee18 0a90 vmov r0, s17 83e0: 4b4d ldr r3, [pc, #308] ; (8518 ) 83e2: 4798 blx r3 83e4: e450 b.n 7c88 bitmask_init = 0xFF; 83e6: 22ff movs r2, #255 ; 0xff 83e8: 9213 str r2, [sp, #76] ; 0x4c uint32_t bpp = g->bpp; 83ea: 2508 movs r5, #8 bpp_opa_table_p = _lv_bpp8_opa_table; 83ec: 4a4b ldr r2, [pc, #300] ; (851c ) shades = 256; 83ee: f44f 7380 mov.w r3, #256 ; 0x100 83f2: e75a b.n 82aa LV_LOG_WARN("lv_draw_letter: invalid bpp"); 83f4: 4b4a ldr r3, [pc, #296] ; (8520 ) 83f6: 9300 str r3, [sp, #0] 83f8: f240 12e5 movw r2, #485 ; 0x1e5 83fc: 4b49 ldr r3, [pc, #292] ; (8524 ) 83fe: e0da b.n 85b6 bitmask_init = 0x80; 8400: 2280 movs r2, #128 ; 0x80 8402: 9213 str r2, [sp, #76] ; 0x4c uint32_t bpp = g->bpp; 8404: 2501 movs r5, #1 bpp_opa_table_p = _lv_bpp1_opa_table; 8406: 4a48 ldr r2, [pc, #288] ; (8528 ) shades = 2; 8408: 2302 movs r3, #2 840a: e74e b.n 82aa bitmask_init = 0xF0; 840c: 22f0 movs r2, #240 ; 0xf0 840e: 9213 str r2, [sp, #76] ; 0x4c switch(bpp) { 8410: 2504 movs r5, #4 bpp_opa_table_p = _lv_bpp4_opa_table; 8412: 4a46 ldr r2, [pc, #280] ; (852c ) shades = 16; 8414: 2310 movs r3, #16 8416: e748 b.n 82aa 8418: 990e ldr r1, [sp, #56] ; 0x38 841a: 483b ldr r0, [pc, #236] ; (8508 ) 841c: 440b add r3, r1 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 841e: f811 2b01 ldrb.w r2, [r1], #1 8422: 2aff cmp r2, #255 ; 0xff 8424: bf17 itett ne 8426: 9c09 ldrne r4, [sp, #36] ; 0x24 8428: 9a09 ldreq r2, [sp, #36] ; 0x24 842a: fb12 f204 smulbbne r2, r2, r4 842e: 0a12 lsrne r2, r2, #8 for(i = 0; i < shades; i++) { 8430: 4299 cmp r1, r3 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); 8432: f800 2b01 strb.w r2, [r0], #1 for(i = 0; i < shades; i++) { 8436: d1f2 bne.n 841e 8438: e747 b.n 82ca bitmask = bitmask_init >> col_bit; 843a: 9b13 ldr r3, [sp, #76] ; 0x4c for(col = col_start; col < col_end; col++) { 843c: 990f ldr r1, [sp, #60] ; 0x3c 843e: f8cd 908c str.w r9, [sp, #140] ; 0x8c bitmask = bitmask_init >> col_bit; 8442: fa23 f204 lsr.w r2, r3, r4 for(col = col_start; col < col_end; col++) { 8446: ee18 3a90 vmov r3, s17 844a: eb03 0809 add.w r8, r3, r9 844e: 4647 mov r7, r8 8450: 9b12 ldr r3, [sp, #72] ; 0x48 8452: 428b cmp r3, r1 8454: dc3a bgt.n 84cc 8456: 9a0f ldr r2, [sp, #60] ; 0x3c 8458: 9912 ldr r1, [sp, #72] ; 0x48 845a: 1a9b subs r3, r3, r2 845c: 9316 str r3, [sp, #88] ; 0x58 845e: 428a cmp r2, r1 8460: bfc8 it gt 8462: 2300 movgt r3, #0 8464: 9318 str r3, [sp, #96] ; 0x60 8466: 4499 add r9, r3 if(other_mask_cnt) { 8468: 9b19 ldr r3, [sp, #100] ; 0x64 846a: b1b3 cbz r3, 849a 846c: 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, 8470: f9bd 10cc ldrsh.w r1, [sp, #204] ; 0xcc 8474: f9bd 20d2 ldrsh.w r2, [sp, #210] ; 0xd2 8478: 4f2d ldr r7, [pc, #180] ; (8530 ) 847a: 3301 adds r3, #1 847c: 1a5b subs r3, r3, r1 847e: b21b sxth r3, r3 8480: 4640 mov r0, r8 8482: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 8484: b948 cbnz r0, 849a 8486: f8bd 10d0 ldrh.w r1, [sp, #208] ; 0xd0 848a: f8bd 30cc ldrh.w r3, [sp, #204] ; 0xcc 848e: 3101 adds r1, #1 8490: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area)); 8492: b209 sxth r1, r1 8494: 4b27 ldr r3, [pc, #156] ; (8534 ) 8496: 4640 mov r0, r8 8498: 4798 blx r3 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 849a: 9b18 ldr r3, [sp, #96] ; 0x60 849c: 9a16 ldr r2, [sp, #88] ; 0x58 849e: 4413 add r3, r2 84a0: 4698 mov r8, r3 84a2: 9b23 ldr r3, [sp, #140] ; 0x8c 84a4: 4498 add r8, r3 84a6: 9b15 ldr r3, [sp, #84] ; 0x54 84a8: 4543 cmp r3, r8 84aa: d945 bls.n 8538 fill_area.y2 ++; 84ac: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 84b0: 3301 adds r3, #1 84b2: b21b sxth r3, r3 84b4: f8ad 30d2 strh.w r3, [sp, #210] ; 0xd2 col_bit += col_bit_row_ofs; 84b8: 9b1a ldr r3, [sp, #104] ; 0x68 84ba: 441c add r4, r3 map_p += (col_bit >> 3); 84bc: 9b14 ldr r3, [sp, #80] ; 0x50 84be: eb03 03d4 add.w r3, r3, r4, lsr #3 84c2: 9314 str r3, [sp, #80] ; 0x50 col_bit = col_bit & 0x7; 84c4: f004 0407 and.w r4, r4, #7 for(row = row_start ; row < row_end; row++) { 84c8: 3601 adds r6, #1 84ca: e76d b.n 83a8 letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit); 84cc: 9b14 ldr r3, [sp, #80] ; 0x50 84ce: 980d ldr r0, [sp, #52] ; 0x34 84d0: 781b ldrb r3, [r3, #0] 84d2: eba0 0c04 sub.w ip, r0, r4 84d6: 4013 ands r3, r2 if(letter_px) { 84d8: fa33 f30c lsrs.w r3, r3, ip mask_buf[mask_p] = bpp_opa_table_p[letter_px]; 84dc: bf1c itt ne 84de: 980e ldrne r0, [sp, #56] ; 0x38 84e0: 5cc3 ldrbne r3, [r0, r3] 84e2: f807 3b01 strb.w r3, [r7], #1 if(col_bit < col_bit_max) { 84e6: 9b0d ldr r3, [sp, #52] ; 0x34 84e8: 42a3 cmp r3, r4 map_p++; 84ea: bf9d ittte ls 84ec: 9b14 ldrls r3, [sp, #80] ; 0x50 bitmask = bitmask_init; 84ee: 9a13 ldrls r2, [sp, #76] ; 0x4c map_p++; 84f0: 3301 addls r3, #1 col_bit += bpp; 84f2: 1964 addhi r4, r4, r5 bitmask = bitmask >> bpp; 84f4: bf8e itee hi 84f6: 40ea lsrhi r2, r5 map_p++; 84f8: 9314 strls r3, [sp, #80] ; 0x50 col_bit = 0; 84fa: 2400 movls r4, #0 for(col = col_start; col < col_end; col++) { 84fc: 3101 adds r1, #1 84fe: e7a7 b.n 8450 8500: 000067fd .word 0x000067fd 8504: 0001fb92 .word 0x0001fb92 8508: 200084c8 .word 0x200084c8 850c: 0000eeb5 .word 0x0000eeb5 8510: 000097f1 .word 0x000097f1 8514: 000061f1 .word 0x000061f1 8518: 0000eb69 .word 0x0000eb69 851c: 0001fba6 .word 0x0001fba6 8520: 0001fb74 .word 0x0001fb74 8524: 0001fcc7 .word 0x0001fcc7 8528: 0001fb90 .word 0x0001fb90 852c: 0001fb96 .word 0x0001fb96 8530: 00009761 .word 0x00009761 8534: 0000f019 .word 0x0000f019 _lv_blend_fill(clip_area, &fill_area, 8538: 9b1b ldr r3, [sp, #108] ; 0x6c 853a: 9302 str r3, [sp, #8] 853c: 27ff movs r7, #255 ; 0xff 853e: 2302 movs r3, #2 8540: e9cd 3700 strd r3, r7, [sp] 8544: ee19 2a90 vmov r2, s19 8548: ee18 3a90 vmov r3, s17 854c: f8df 808c ldr.w r8, [pc, #140] ; 85dc 8550: a933 add r1, sp, #204 ; 0xcc 8552: 4650 mov r0, sl 8554: 47c0 blx r8 fill_area.y1 = fill_area.y2 + 1; 8556: f8bd 30d2 ldrh.w r3, [sp, #210] ; 0xd2 855a: 3301 adds r3, #1 855c: b21b sxth r3, r3 855e: f8ad 30ce strh.w r3, [sp, #206] ; 0xce mask_p = 0; 8562: f04f 0900 mov.w r9, #0 8566: e7a5 b.n 84b4 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 8568: 071a lsls r2, r3, #28 856a: f57f ac15 bpl.w 7d98 _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 856e: ee18 2a10 vmov r2, s16 8572: 9300 str r3, [sp, #0] 8574: 4630 mov r0, r6 8576: f9bb 300c ldrsh.w r3, [fp, #12] 857a: 4e12 ldr r6, [pc, #72] ; (85c4 ) 857c: 47b0 blx r6 857e: 9b05 ldr r3, [sp, #20] 8580: 9a05 ldr r2, [sp, #20] 8582: 889b ldrh r3, [r3, #4] 8584: 8812 ldrh r2, [r2, #0] 8586: 3301 adds r3, #1 8588: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 858a: b21b sxth r3, r3 858c: 1a18 subs r0, r3, r0 858e: 4420 add r0, r4 8590: e401 b.n 7d96 bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0'); 8592: ee18 0a10 vmov r0, s16 8596: 4e0c ldr r6, [pc, #48] ; (85c8 ) 8598: 2300 movs r3, #0 859a: 462a mov r2, r5 859c: a938 add r1, sp, #224 ; 0xe0 859e: 47b0 blx r6 if(g_ret == false) { 85a0: 2800 cmp r0, #0 85a2: f47f ac25 bne.w 7df0 if(letter >= 0x20) { 85a6: 2d1f cmp r5, #31 85a8: f67f ab6e bls.w 7c88 LV_LOG_WARN("lv_draw_letter: glyph dsc. not found"); 85ac: 4b07 ldr r3, [pc, #28] ; (85cc ) 85ae: 9300 str r3, [sp, #0] 85b0: 4b07 ldr r3, [pc, #28] ; (85d0 ) 85b2: f240 12a1 movw r2, #417 ; 0x1a1 LV_LOG_WARN("lv_draw_letter: invalid bpp"); 85b6: 4907 ldr r1, [pc, #28] ; (85d4 ) 85b8: 4c07 ldr r4, [pc, #28] ; (85d8 ) 85ba: 2002 movs r0, #2 85bc: 47a0 blx r4 return; /*Invalid bpp. Can't render the letter*/ 85be: f7ff bb63 b.w 7c88 85c2: bf00 nop 85c4: 0000ff1d .word 0x0000ff1d 85c8: 0000d169 .word 0x0000d169 85cc: 0001fafc .word 0x0001fafc 85d0: 0001fca6 .word 0x0001fca6 85d4: 0001fac6 .word 0x0001fac6 85d8: 0000e8e9 .word 0x0000e8e9 85dc: 000061f1 .word 0x000061f1 000085e0 : /********************** * GLOBAL FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc) { 85e0: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); 85e2: 4b05 ldr r3, [pc, #20] ; (85f8 ) { 85e4: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); 85e6: 210a movs r1, #10 85e8: 4798 blx r3 dsc->width = 1; dsc->opa = LV_OPA_COVER; 85ea: 23ff movs r3, #255 ; 0xff 85ec: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 85ee: 2300 movs r3, #0 85f0: 8023 strh r3, [r4, #0] dsc->width = 1; 85f2: 2301 movs r3, #1 85f4: 8063 strh r3, [r4, #2] } 85f6: bd10 pop {r4, pc} 85f8: 0000f019 .word 0x0000f019 000085fc : * @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) { 85fc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8600: ed2d 8b04 vpush {d8-d9} 8604: 469b mov fp, r3 if(dsc->width == 0) return; 8606: f9b3 3002 ldrsh.w r3, [r3, #2] { 860a: b0c7 sub sp, #284 ; 0x11c 860c: e9cd 0105 strd r0, r1, [sp, #20] 8610: ee08 2a90 vmov s17, r2 if(dsc->width == 0) return; 8614: 2b00 cmp r3, #0 8616: f000 80e4 beq.w 87e2 if(dsc->opa <= LV_OPA_MIN) return; 861a: f89b 2008 ldrb.w r2, [fp, #8] 861e: 2a05 cmp r2, #5 8620: f240 80df bls.w 87e2 if(point1->x == point2->x && point1->y == point2->y) return; 8624: 9a05 ldr r2, [sp, #20] 8626: f9b0 4000 ldrsh.w r4, [r0] 862a: f9b1 0000 ldrsh.w r0, [r1] 862e: f9b2 1002 ldrsh.w r1, [r2, #2] 8632: 9a06 ldr r2, [sp, #24] 8634: 4284 cmp r4, r0 8636: f9b2 2002 ldrsh.w r2, [r2, #2] 863a: d102 bne.n 8642 863c: 4291 cmp r1, r2 863e: f000 80d0 beq.w 87e2 lv_area_t clip_line; clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2; 8642: eb03 73d3 add.w r3, r3, r3, lsr #31 8646: f3c3 034f ubfx r3, r3, #1, #16 864a: 4284 cmp r4, r0 864c: bfd4 ite le 864e: ebc3 0504 rsble r5, r3, r4 8652: ebc3 0500 rsbgt r5, r3, r0 8656: f8ad 5028 strh.w r5, [sp, #40] ; 0x28 clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; 865a: 4284 cmp r4, r0 865c: bfac ite ge 865e: 191d addge r5, r3, r4 8660: 181d addlt r5, r3, r0 clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; 8662: 4291 cmp r1, r2 8664: bfd4 ite le 8666: ebc3 0001 rsble r0, r3, r1 866a: ebc3 0002 rsbgt r0, r3, r2 clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; 866e: 4291 cmp r1, r2 8670: bfac ite ge 8672: 185b addge r3, r3, r1 8674: 189b addlt r3, r3, r2 bool is_common; is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 8676: a90a add r1, sp, #40 ; 0x28 clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; 8678: f8ad 002a strh.w r0, [sp, #42] ; 0x2a is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 867c: ee18 2a90 vmov r2, s17 8680: 4caa ldr r4, [pc, #680] ; (892c ) clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; 8682: f8ad 502c strh.w r5, [sp, #44] ; 0x2c is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 8686: 4608 mov r0, r1 clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; 8688: f8ad 302e strh.w r3, [sp, #46] ; 0x2e is_common = _lv_area_intersect(&clip_line, &clip_line, clip); 868c: 47a0 blx r4 if(!is_common) return; 868e: 2800 cmp r0, #0 8690: f000 80a7 beq.w 87e2 if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc); 8694: 9b05 ldr r3, [sp, #20] 8696: f9b3 9002 ldrsh.w r9, [r3, #2] 869a: 9b06 ldr r3, [sp, #24] 869c: f9b3 8002 ldrsh.w r8, [r3, #2] 86a0: 45c1 cmp r9, r8 86a2: f040 8159 bne.w 8958 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(); 86a6: 4ba2 ldr r3, [pc, #648] ; (8930 ) lv_opa_t opa = dsc->opa; 86a8: f89b 4008 ldrb.w r4, [fp, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 86ac: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 86ae: 4ba1 ldr r3, [pc, #644] ; (8934 ) 86b0: 4798 blx r3 const lv_area_t * disp_area = &vdb->area; int32_t w = dsc->width - 1; 86b2: f9bb 3002 ldrsh.w r3, [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; 86b6: f9bb 5006 ldrsh.w r5, [fp, #6] int32_t w = dsc->width - 1; 86ba: 3b01 subs r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 86bc: f003 0601 and.w r6, r3, #1 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 86c0: 4680 mov r8, r0 int32_t w_half0 = w >> 1; 86c2: 105f asrs r7, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 86c4: eb06 0663 add.w r6, r6, r3, asr #1 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 86c8: b125 cbz r5, 86d4 86ca: f9bb 5004 ldrsh.w r5, [fp, #4] 86ce: 3d00 subs r5, #0 86d0: bf18 it ne 86d2: 2501 movne r5, #1 bool simple_mode = true; if(lv_draw_mask_get_cnt()) simple_mode = false; 86d4: 4b98 ldr r3, [pc, #608] ; (8938 ) 86d6: 4798 blx r3 86d8: 2800 cmp r0, #0 86da: f040 8087 bne.w 87ec else if(dashed) simple_mode = false; 86de: f085 0201 eor.w r2, r5, #1 lv_area_t draw_area; draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); 86e2: 9b06 ldr r3, [sp, #24] 86e4: 9905 ldr r1, [sp, #20] 86e6: f9b3 3000 ldrsh.w r3, [r3] 86ea: f9b1 1000 ldrsh.w r1, [r1] 86ee: 428b cmp r3, r1 86f0: 4618 mov r0, r3 86f2: bfa8 it ge 86f4: 4608 movge r0, r1 draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1; 86f6: 428b cmp r3, r1 86f8: bfb8 it lt 86fa: 460b movlt r3, r1 86fc: 3b01 subs r3, #1 86fe: f8ad 309c strh.w r3, [sp, #156] ; 0x9c draw_area.y1 = point1->y - w_half1; 8702: 9b05 ldr r3, [sp, #20] draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); 8704: f8ad 0098 strh.w r0, [sp, #152] ; 0x98 draw_area.y1 = point1->y - w_half1; 8708: 885b ldrh r3, [r3, #2] 870a: 1b9e subs r6, r3, r6 draw_area.y2 = point1->y + w_half0; 870c: 443b add r3, r7 draw_area.y1 = point1->y - w_half1; 870e: f8ad 609a strh.w r6, [sp, #154] ; 0x9a draw_area.y2 = point1->y + w_half0; 8712: f8ad 309e strh.w r3, [sp, #158] ; 0x9e /*If there is no mask then simply draw a rectangle*/ if(simple_mode) { 8716: 2a00 cmp r2, #0 8718: d06a beq.n 87f0 _lv_blend_fill(clip, &draw_area, dsc->color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, dsc->blend_mode); 871a: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(clip, &draw_area, 871e: f003 0303 and.w r3, r3, #3 8722: 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, 8726: 2301 movs r3, #1 8728: 9300 str r3, [sp, #0] 872a: f8bb 2000 ldrh.w r2, [fp] 872e: 4c83 ldr r4, [pc, #524] ; (893c ) 8730: 2300 movs r3, #0 8732: a926 add r1, sp, #152 ; 0x98 8734: a80a add r0, sp, #40 ; 0x28 8736: 47a0 blx r4 if(dsc->round_end || dsc->round_start) { 8738: f89b 3009 ldrb.w r3, [fp, #9] 873c: f013 0f0c tst.w r3, #12 8740: d04f beq.n 87e2 lv_draw_rect_dsc_init(&cir_dsc); 8742: 4b7f ldr r3, [pc, #508] ; (8940 ) 8744: a831 add r0, sp, #196 ; 0xc4 8746: 4798 blx r3 cir_dsc.bg_color = dsc->color; 8748: f8bb 3000 ldrh.w r3, [fp] 874c: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 cir_dsc.radius = LV_RADIUS_CIRCLE; 8750: f647 73ff movw r3, #32767 ; 0x7fff 8754: f8ad 30c4 strh.w r3, [sp, #196] ; 0xc4 cir_dsc.bg_opa = dsc->opa; 8758: f89b 3008 ldrb.w r3, [fp, #8] int32_t r = (dsc->width >> 1); 875c: f9bb 5002 ldrsh.w r5, [fp, #2] cir_dsc.bg_opa = dsc->opa; 8760: f88d 30d0 strb.w r3, [sp, #208] ; 0xd0 if(dsc->round_start) { 8764: f89b 3009 ldrb.w r3, [fp, #9] int32_t r = (dsc->width >> 1); 8768: 106c asrs r4, r5, #1 if(dsc->round_start) { 876a: 075a lsls r2, r3, #29 876c: ea6f 0505 mvn.w r5, r5 8770: f005 0501 and.w r5, r5, #1 8774: d518 bpl.n 87a8 cir_area.x1 = point1->x - r; 8776: 9b05 ldr r3, [sp, #20] 8778: 881a ldrh r2, [r3, #0] 877a: b2a3 uxth r3, r4 877c: 1ad1 subs r1, r2, r3 877e: f8ad 1098 strh.w r1, [sp, #152] ; 0x98 cir_area.y1 = point1->y - r; 8782: 9905 ldr r1, [sp, #20] 8784: 8849 ldrh r1, [r1, #2] cir_area.x2 = point1->x + r - r_corr; 8786: 441a add r2, r3 cir_area.y1 = point1->y - r; 8788: 1ac8 subs r0, r1, r3 cir_area.y2 = point1->y + r - r_corr ; 878a: 440b add r3, r1 cir_area.x2 = point1->x + r - r_corr; 878c: 1b52 subs r2, r2, r5 cir_area.y2 = point1->y + r - r_corr ; 878e: 1b5b subs r3, r3, r5 cir_area.y1 = point1->y - r; 8790: f8ad 009a strh.w r0, [sp, #154] ; 0x9a cir_area.x2 = point1->x + r - r_corr; 8794: f8ad 209c strh.w r2, [sp, #156] ; 0x9c cir_area.y2 = point1->y + r - r_corr ; 8798: f8ad 309e strh.w r3, [sp, #158] ; 0x9e lv_draw_rect(&cir_area, clip, &cir_dsc); 879c: ee18 1a90 vmov r1, s17 87a0: 4b68 ldr r3, [pc, #416] ; (8944 ) 87a2: aa31 add r2, sp, #196 ; 0xc4 87a4: a826 add r0, sp, #152 ; 0x98 87a6: 4798 blx r3 if(dsc->round_end) { 87a8: f89b 3009 ldrb.w r3, [fp, #9] 87ac: 071b lsls r3, r3, #28 87ae: d518 bpl.n 87e2 cir_area.x1 = point2->x - r; 87b0: 9b06 ldr r3, [sp, #24] 87b2: 881a ldrh r2, [r3, #0] 87b4: b2a3 uxth r3, r4 87b6: 1ad1 subs r1, r2, r3 87b8: f8ad 1098 strh.w r1, [sp, #152] ; 0x98 cir_area.y1 = point2->y - r; 87bc: 9906 ldr r1, [sp, #24] 87be: 8849 ldrh r1, [r1, #2] cir_area.x2 = point2->x + r - r_corr; 87c0: 441a add r2, r3 cir_area.y1 = point2->y - r; 87c2: 1ac8 subs r0, r1, r3 cir_area.y2 = point2->y + r - r_corr ; 87c4: 440b add r3, r1 cir_area.x2 = point2->x + r - r_corr; 87c6: 1b52 subs r2, r2, r5 cir_area.y2 = point2->y + r - r_corr ; 87c8: 1b5b subs r3, r3, r5 cir_area.y1 = point2->y - r; 87ca: f8ad 009a strh.w r0, [sp, #154] ; 0x9a cir_area.x2 = point2->x + r - r_corr; 87ce: f8ad 209c strh.w r2, [sp, #156] ; 0x9c cir_area.y2 = point2->y + r - r_corr ; 87d2: f8ad 309e strh.w r3, [sp, #158] ; 0x9e lv_draw_rect(&cir_area, clip, &cir_dsc); 87d6: ee18 1a90 vmov r1, s17 87da: 4b5a ldr r3, [pc, #360] ; (8944 ) 87dc: aa31 add r2, sp, #196 ; 0xc4 87de: a826 add r0, sp, #152 ; 0x98 87e0: 4798 blx r3 } 87e2: b047 add sp, #284 ; 0x11c 87e4: ecbd 8b04 vpop {d8-d9} 87e8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(lv_draw_mask_get_cnt()) simple_mode = false; 87ec: 2200 movs r2, #0 87ee: e778 b.n 86e2 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); 87f0: aa26 add r2, sp, #152 ; 0x98 87f2: 4b4e ldr r3, [pc, #312] ; (892c ) 87f4: a90a add r1, sp, #40 ; 0x28 87f6: 4610 mov r0, r2 87f8: 4798 blx r3 if(!is_common) return; 87fa: 2800 cmp r0, #0 87fc: d09c beq.n 8738 draw_area.y1 -= disp_area->y1; 87fe: f8b8 e012 ldrh.w lr, [r8, #18] 8802: f9bd 109a ldrsh.w r1, [sp, #154] ; 0x9a draw_area.x1 -= disp_area->x1; 8806: f8b8 2010 ldrh.w r2, [r8, #16] 880a: f9b8 6010 ldrsh.w r6, [r8, #16] 880e: f8bd 0098 ldrh.w r0, [sp, #152] ; 0x98 draw_area.x2 -= disp_area->x1; 8812: f9bd 709c ldrsh.w r7, [sp, #156] ; 0x9c draw_area.x1 -= disp_area->x1; 8816: f9bd c098 ldrsh.w ip, [sp, #152] ; 0x98 fill_area.x1 = draw_area.x1 + disp_area->x1; 881a: f8ad c0c4 strh.w ip, [sp, #196] ; 0xc4 draw_area.y1 -= disp_area->y1; 881e: eba1 040e sub.w r4, r1, lr 8822: f8ad 409a strh.w r4, [sp, #154] ; 0x9a draw_area.x2 -= disp_area->x1; 8826: f8bd 409c ldrh.w r4, [sp, #156] ; 0x9c fill_area.x2 = draw_area.x2 + disp_area->x1; 882a: f8ad 70c8 strh.w r7, [sp, #200] ; 0xc8 draw_area.x1 -= disp_area->x1; 882e: 1a83 subs r3, r0, r2 draw_area.x2 -= disp_area->x1; 8830: 1aa2 subs r2, r4, r2 8832: f8ad 209c strh.w r2, [sp, #156] ; 0x9c draw_area.y2 -= disp_area->y1; 8836: f8bd 209e ldrh.w r2, [sp, #158] ; 0x9e fill_area.y1 = draw_area.y1 + disp_area->y1; 883a: f8ad 10c6 strh.w r1, [sp, #198] ; 0xc6 883e: 3401 adds r4, #1 draw_area.x1 -= disp_area->x1; 8840: b21b sxth r3, r3 draw_area.y2 -= disp_area->y1; 8842: eba2 020e sub.w r2, r2, lr 8846: 1a24 subs r4, r4, r0 draw_area.x1 -= disp_area->x1; 8848: f8ad 3098 strh.w r3, [sp, #152] ; 0x98 draw_area.y2 -= disp_area->y1; 884c: f8ad 209e strh.w r2, [sp, #158] ; 0x9e 8850: b224 sxth r4, r4 fill_area.y2 = fill_area.y1; 8852: f8ad 10ca strh.w r1, [sp, #202] ; 0xca if(dashed) { 8856: b1dd cbz r5, 8890 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); 8858: 441e add r6, r3 885a: f9bb 2004 ldrsh.w r2, [fp, #4] 885e: f9bb 3006 ldrsh.w r3, [fp, #6] 8862: 4413 add r3, r2 8864: fb96 f2f3 sdiv r2, r6, r3 8868: fb03 6612 mls r6, r3, r2, r6 886c: b233 sxth r3, r6 886e: 9307 str r3, [sp, #28] lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8870: 4b35 ldr r3, [pc, #212] ; (8948 ) _lv_blend_fill(clip, &fill_area, 8872: f8df a0c8 ldr.w sl, [pc, #200] ; 893c lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8876: 4620 mov r0, r4 8878: 4798 blx r3 for(h = draw_area.y1; h <= draw_area.y2; h++) { 887a: f9bd 909a ldrsh.w r9, [sp, #154] ; 0x9a lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 887e: 4607 mov r7, r0 for(h = draw_area.y1; h <= draw_area.y2; h++) { 8880: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 8884: 4599 cmp r9, r3 8886: dd05 ble.n 8894 _lv_mem_buf_release(mask_buf); 8888: 4638 mov r0, r7 LV_BLEND_MODE_NORMAL); fill_area.y1++; fill_area.y2++; } _lv_mem_buf_release(mask_buf); 888a: 4b30 ldr r3, [pc, #192] ; (894c ) 888c: 4798 blx r3 888e: e753 b.n 8738 lv_style_int_t dash_start = 0; 8890: 9507 str r5, [sp, #28] 8892: e7ed b.n 8870 _lv_memset_ff(mask_buf, draw_area_w); 8894: 4b2e ldr r3, [pc, #184] ; (8950 ) 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); 8896: 4e2f ldr r6, [pc, #188] ; (8954 ) _lv_memset_ff(mask_buf, draw_area_w); 8898: 4621 mov r1, r4 889a: 4638 mov r0, r7 889c: 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); 889e: f8bd 3098 ldrh.w r3, [sp, #152] ; 0x98 88a2: f8b8 2012 ldrh.w r2, [r8, #18] 88a6: f8b8 1010 ldrh.w r1, [r8, #16] 88aa: 444a add r2, r9 88ac: 4419 add r1, r3 88ae: b212 sxth r2, r2 88b0: 4623 mov r3, r4 88b2: b209 sxth r1, r1 88b4: 4638 mov r0, r7 88b6: 47b0 blx r6 88b8: 4602 mov r2, r0 if(dashed) { 88ba: b195 cbz r5, 88e2 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { 88bc: b188 cbz r0, 88e2 for(i = 0; i < draw_area_w; i++, dash_cnt++) { 88be: 2300 movs r3, #0 lv_style_int_t dash_cnt = dash_start; 88c0: 9907 ldr r1, [sp, #28] 88c2: 4618 mov r0, r3 88c4: e00a b.n 88dc if(dash_cnt <= dsc->dash_width) { 88c6: f9bb 2004 ldrsh.w r2, [fp, #4] 88ca: 428a cmp r2, r1 88cc: db25 blt.n 891a i += diff; 88ce: 4413 add r3, r2 88d0: 1a5b subs r3, r3, r1 88d2: b21b sxth r3, r3 for(i = 0; i < draw_area_w; i++, dash_cnt++) { 88d4: 3301 adds r3, #1 88d6: 3201 adds r2, #1 88d8: b21b sxth r3, r3 88da: b211 sxth r1, r2 88dc: 429c cmp r4, r3 88de: dcf2 bgt.n 88c6 mask_res = LV_DRAW_MASK_RES_CHANGED; 88e0: 2202 movs r2, #2 dsc->blend_mode); 88e2: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(clip, &fill_area, 88e6: f003 0303 and.w r3, r3, #3 88ea: 9302 str r3, [sp, #8] 88ec: f89b 3008 ldrb.w r3, [fp, #8] 88f0: a931 add r1, sp, #196 ; 0xc4 88f2: e9cd 2300 strd r2, r3, [sp] 88f6: a80a add r0, sp, #40 ; 0x28 88f8: 463b mov r3, r7 88fa: f8bb 2000 ldrh.w r2, [fp] 88fe: 47d0 blx sl fill_area.y1++; 8900: f8bd 30c6 ldrh.w r3, [sp, #198] ; 0xc6 8904: 3301 adds r3, #1 8906: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 fill_area.y2++; 890a: f8bd 30ca ldrh.w r3, [sp, #202] ; 0xca 890e: 3301 adds r3, #1 8910: f8ad 30ca strh.w r3, [sp, #202] ; 0xca for(h = draw_area.y1; h <= draw_area.y2; h++) { 8914: f109 0901 add.w r9, r9, #1 8918: e7b2 b.n 8880 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 891a: f9bb c006 ldrsh.w ip, [fp, #6] 891e: 4462 add r2, ip 8920: 4291 cmp r1, r2 mask_buf[i] = 0x00; 8922: bfba itte lt 8924: 54f8 strblt r0, [r7, r3] 8926: 460a movlt r2, r1 dash_cnt = 0; 8928: 2200 movge r2, #0 892a: e7d3 b.n 88d4 892c: 0000de8d .word 0x0000de8d 8930: 00004fe9 .word 0x00004fe9 8934: 0000d9e1 .word 0x0000d9e1 8938: 000097f1 .word 0x000097f1 893c: 000061f1 .word 0x000061f1 8940: 00009ba1 .word 0x00009ba1 8944: 00009bed .word 0x00009bed 8948: 0000eeb5 .word 0x0000eeb5 894c: 0000eb69 .word 0x0000eb69 8950: 0000f075 .word 0x0000f075 8954: 00009761 .word 0x00009761 else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc); 8958: 9b05 ldr r3, [sp, #20] 895a: f9b3 7000 ldrsh.w r7, [r3] 895e: 9b06 ldr r3, [sp, #24] 8960: f9b3 6000 ldrsh.w r6, [r3] 8964: 42b7 cmp r7, r6 8966: f040 80db bne.w 8b20 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 896a: 4b66 ldr r3, [pc, #408] ; (8b04 ) lv_opa_t opa = dsc->opa; 896c: f89b 6008 ldrb.w r6, [fp, #8] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8970: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8972: 4b65 ldr r3, [pc, #404] ; (8b08 ) 8974: 4798 blx r3 int32_t w = dsc->width - 1; 8976: f9bb 3002 ldrsh.w r3, [fp, #2] bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 897a: f9bb 5006 ldrsh.w r5, [fp, #6] int32_t w = dsc->width - 1; 897e: 3b01 subs r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 8980: f003 0801 and.w r8, r3, #1 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8984: 4607 mov r7, r0 int32_t w_half0 = w >> 1; 8986: ea4f 0963 mov.w r9, r3, asr #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 898a: eb08 0863 add.w r8, r8, r3, asr #1 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; 898e: b125 cbz r5, 899a 8990: f9bb 5004 ldrsh.w r5, [fp, #4] 8994: 3d00 subs r5, #0 8996: bf18 it ne 8998: 2501 movne r5, #1 if(lv_draw_mask_get_cnt()) simple_mode = false; 899a: 4b5c ldr r3, [pc, #368] ; (8b0c ) 899c: 4798 blx r3 899e: bb20 cbnz r0, 89ea else if(dashed) simple_mode = false; 89a0: f085 0201 eor.w r2, r5, #1 draw_area.x1 = point1->x - w_half1; 89a4: 9b05 ldr r3, [sp, #20] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89a6: 9905 ldr r1, [sp, #20] draw_area.x1 = point1->x - w_half1; 89a8: 881b ldrh r3, [r3, #0] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89aa: f9b1 1002 ldrsh.w r1, [r1, #2] draw_area.x1 = point1->x - w_half1; 89ae: eba3 0808 sub.w r8, r3, r8 draw_area.x2 = point1->x + w_half0; 89b2: 444b add r3, r9 89b4: f8ad 309c strh.w r3, [sp, #156] ; 0x9c draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89b8: 9b06 ldr r3, [sp, #24] draw_area.x1 = point1->x - w_half1; 89ba: f8ad 8098 strh.w r8, [sp, #152] ; 0x98 draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89be: f9b3 3002 ldrsh.w r3, [r3, #2] 89c2: 428b cmp r3, r1 89c4: 4618 mov r0, r3 89c6: bfa8 it ge 89c8: 4608 movge r0, r1 draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; 89ca: 428b cmp r3, r1 89cc: bfb8 it lt 89ce: 460b movlt r3, r1 89d0: 3b01 subs r3, #1 draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); 89d2: f8ad 009a strh.w r0, [sp, #154] ; 0x9a draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; 89d6: f8ad 309e strh.w r3, [sp, #158] ; 0x9e if(simple_mode) { 89da: b142 cbz r2, 89ee dsc->blend_mode); 89dc: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(clip, &draw_area, 89e0: f003 0303 and.w r3, r3, #3 89e4: e9cd 6301 strd r6, r3, [sp, #4] 89e8: e69d b.n 8726 if(lv_draw_mask_get_cnt()) simple_mode = false; 89ea: 2200 movs r2, #0 89ec: e7da b.n 89a4 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); 89ee: aa26 add r2, sp, #152 ; 0x98 89f0: a90a add r1, sp, #40 ; 0x28 89f2: 4610 mov r0, r2 89f4: 47a0 blx r4 if(!is_common) return; 89f6: 2800 cmp r0, #0 89f8: f43f ae9e beq.w 8738 draw_area.x1 -= vdb->area.x1; 89fc: 8a3b ldrh r3, [r7, #16] 89fe: f8bd 4098 ldrh.w r4, [sp, #152] ; 0x98 draw_area.y1 -= vdb->area.y1; 8a02: f8b7 c012 ldrh.w ip, [r7, #18] draw_area.x1 -= vdb->area.x1; 8a06: f9bd 0098 ldrsh.w r0, [sp, #152] ; 0x98 draw_area.x2 -= vdb->area.x1; 8a0a: f8bd 609c ldrh.w r6, [sp, #156] ; 0x9c fill_area.x1 = draw_area.x1 + disp_area->x1; 8a0e: f8ad 00c4 strh.w r0, [sp, #196] ; 0xc4 draw_area.x1 -= vdb->area.x1; 8a12: 1ae2 subs r2, r4, r3 8a14: f8ad 2098 strh.w r2, [sp, #152] ; 0x98 draw_area.y1 -= vdb->area.y1; 8a18: f9bd 209a ldrsh.w r2, [sp, #154] ; 0x9a fill_area.y1 = draw_area.y1 + disp_area->y1; 8a1c: f8ad 20c6 strh.w r2, [sp, #198] ; 0xc6 draw_area.y1 -= vdb->area.y1; 8a20: eba2 010c sub.w r1, r2, ip draw_area.x2 -= vdb->area.x1; 8a24: 1af3 subs r3, r6, r3 draw_area.y1 -= vdb->area.y1; 8a26: f8ad 109a strh.w r1, [sp, #154] ; 0x9a draw_area.x2 -= vdb->area.x1; 8a2a: f9bd 109c ldrsh.w r1, [sp, #156] ; 0x9c 8a2e: f8ad 309c strh.w r3, [sp, #156] ; 0x9c draw_area.y2 -= vdb->area.y1; 8a32: f8bd 309e ldrh.w r3, [sp, #158] ; 0x9e fill_area.x2 = draw_area.x2 + disp_area->x1; 8a36: f8ad 10c8 strh.w r1, [sp, #200] ; 0xc8 8a3a: 3601 adds r6, #1 draw_area.y2 -= vdb->area.y1; 8a3c: eba3 030c sub.w r3, r3, ip 8a40: 1b36 subs r6, r6, r4 8a42: f8ad 309e strh.w r3, [sp, #158] ; 0x9e 8a46: b233 sxth r3, r6 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8a48: 4618 mov r0, r3 8a4a: ee08 3a10 vmov s16, r3 fill_area.y2 = fill_area.y1; 8a4e: f8ad 20ca strh.w r2, [sp, #202] ; 0xca lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); 8a52: 4b2f ldr r3, [pc, #188] ; (8b10 ) 8a54: 4798 blx r3 8a56: 4680 mov r8, r0 if(dashed) { 8a58: b1c5 cbz r5, 8a8c dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); 8a5a: f9bd 3098 ldrsh.w r3, [sp, #152] ; 0x98 8a5e: f9b7 4010 ldrsh.w r4, [r7, #16] 8a62: f9bb 2004 ldrsh.w r2, [fp, #4] 8a66: 441c add r4, r3 8a68: f9bb 3006 ldrsh.w r3, [fp, #6] 8a6c: 4413 add r3, r2 8a6e: fb94 f2f3 sdiv r2, r4, r3 8a72: fb03 4412 mls r4, r3, r2, r4 8a76: b224 sxth r4, r4 for(h = draw_area.y1; h <= draw_area.y2; h++) { 8a78: f9bd 909a ldrsh.w r9, [sp, #154] ; 0x9a _lv_blend_fill(clip, &fill_area, 8a7c: f8df a09c ldr.w sl, [pc, #156] ; 8b1c for(h = draw_area.y1; h <= draw_area.y2; h++) { 8a80: f9bd 309e ldrsh.w r3, [sp, #158] ; 0x9e 8a84: 4599 cmp r9, r3 8a86: dd03 ble.n 8a90 _lv_mem_buf_release(mask_buf); 8a88: 4640 mov r0, r8 8a8a: e6fe b.n 888a lv_style_int_t dash_start = 0; 8a8c: 462c mov r4, r5 8a8e: e7f3 b.n 8a78 _lv_memset_ff(mask_buf, draw_area_w); 8a90: ee18 1a10 vmov r1, s16 8a94: 4b1f ldr r3, [pc, #124] ; (8b14 ) 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); 8a96: 4e20 ldr r6, [pc, #128] ; (8b18 ) _lv_memset_ff(mask_buf, draw_area_w); 8a98: 4640 mov r0, r8 8a9a: 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); 8a9c: f8bd 3098 ldrh.w r3, [sp, #152] ; 0x98 8aa0: 8a7a ldrh r2, [r7, #18] 8aa2: 8a39 ldrh r1, [r7, #16] 8aa4: 444a add r2, r9 8aa6: 4419 add r1, r3 8aa8: b212 sxth r2, r2 8aaa: ee18 3a10 vmov r3, s16 8aae: b209 sxth r1, r1 8ab0: 4640 mov r0, r8 8ab2: 47b0 blx r6 if(dashed) { 8ab4: b16d cbz r5, 8ad2 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { 8ab6: b150 cbz r0, 8ace if(dash_cnt > dsc->dash_width) { 8ab8: f9bb 2004 ldrsh.w r2, [fp, #4] if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { 8abc: f9bb 3006 ldrsh.w r3, [fp, #6] 8ac0: 4413 add r3, r2 mask_res = LV_DRAW_MASK_RES_TRANSP; 8ac2: 42a2 cmp r2, r4 8ac4: bfb8 it lt 8ac6: 2000 movlt r0, #0 dash_cnt = 0; 8ac8: 429c cmp r4, r3 8aca: bfa8 it ge 8acc: 2400 movge r4, #0 dash_cnt ++; 8ace: 3401 adds r4, #1 8ad0: b224 sxth r4, r4 _lv_blend_fill(clip, &fill_area, 8ad2: 2300 movs r3, #0 8ad4: 9302 str r3, [sp, #8] 8ad6: f89b 3008 ldrb.w r3, [fp, #8] 8ada: f8bb 2000 ldrh.w r2, [fp] 8ade: e9cd 0300 strd r0, r3, [sp] 8ae2: a931 add r1, sp, #196 ; 0xc4 8ae4: 4643 mov r3, r8 8ae6: a80a add r0, sp, #40 ; 0x28 8ae8: 47d0 blx sl fill_area.y1++; 8aea: f8bd 30c6 ldrh.w r3, [sp, #198] ; 0xc6 8aee: 3301 adds r3, #1 8af0: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 fill_area.y2++; 8af4: f8bd 30ca ldrh.w r3, [sp, #202] ; 0xca 8af8: 3301 adds r3, #1 8afa: f8ad 30ca strh.w r3, [sp, #202] ; 0xca for(h = draw_area.y1; h <= draw_area.y2; h++) { 8afe: f109 0901 add.w r9, r9, #1 8b02: e7bd b.n 8a80 8b04: 00004fe9 .word 0x00004fe9 8b08: 0000d9e1 .word 0x0000d9e1 8b0c: 000097f1 .word 0x000097f1 8b10: 0000eeb5 .word 0x0000eeb5 8b14: 0000f075 .word 0x0000f075 8b18: 00009761 .word 0x00009761 8b1c: 000061f1 .word 0x000061f1 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) { 8b20: 45c1 cmp r9, r8 8b22: db05 blt.n 8b30 8b24: 464b mov r3, r9 8b26: 46c1 mov r9, r8 8b28: 4698 mov r8, r3 8b2a: 463b mov r3, r7 8b2c: 4637 mov r7, r6 8b2e: 461e mov r6, r3 p2.y = point1->y; p1.x = point2->x; p2.x = point1->x; } int32_t xdiff = p2.x - p1.x; 8b30: 1bf3 subs r3, r6, r7 8b32: 9309 str r3, [sp, #36] ; 0x24 int32_t ydiff = p2.y - p1.y; 8b34: eba8 0309 sub.w r3, r8, r9 8b38: 9308 str r3, [sp, #32] bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false; 8b3a: 1bf3 subs r3, r6, r7 8b3c: ea83 72e3 eor.w r2, r3, r3, asr #31 8b40: eba2 72e3 sub.w r2, r2, r3, asr #31 8b44: 9b08 ldr r3, [sp, #32] 8b46: 9207 str r2, [sp, #28] 8b48: ea83 7ae3 eor.w sl, r3, r3, asr #31 8b4c: 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); 8b50: 4552 cmp r2, sl 8b52: 4613 mov r3, r2 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 8b54: bfd8 it le 8b56: 9b07 ldrle r3, [sp, #28] int32_t w = dsc->width; 8b58: f9bb 5002 ldrsh.w r5, [fp, #2] if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); 8b5c: bfca itet gt 8b5e: ea4f 134a movgt.w r3, sl, lsl #5 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 8b62: 015b lslle r3, r3, #5 if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); 8b64: fbb3 f3f2 udivgt r3, r3, r2 w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 8b68: 4ab3 ldr r2, [pc, #716] ; (8e38 ) else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); 8b6a: bfd8 it le 8b6c: fbb3 f3fa udivle r3, r3, sl w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 8b70: 5cd2 ldrb r2, [r2, r3] 8b72: 233f movs r3, #63 ; 0x3f 8b74: fb15 3502 smlabb r5, r5, r2, 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; 8b78: f3c5 13cf ubfx r3, r5, #7, #16 8b7c: 42be cmp r6, r7 8b7e: bfd4 ite le 8b80: ebc3 0206 rsble r2, r3, r6 8b84: ebc3 0207 rsbgt r2, r3, r7 8b88: f8ad 2030 strh.w r2, [sp, #48] ; 0x30 draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w; 8b8c: 42be cmp r6, r7 8b8e: bfac ite ge 8b90: 199a addge r2, r3, r6 8b92: 19da addlt r2, r3, r7 8b94: 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); 8b98: a90c add r1, sp, #48 ; 0x30 draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; 8b9a: 45c8 cmp r8, r9 8b9c: bfd4 ite le 8b9e: ebc3 0208 rsble r2, r3, r8 8ba2: ebc3 0209 rsbgt r2, r3, r9 draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; 8ba6: 45c8 cmp r8, r9 8ba8: bfac ite ge 8baa: 4443 addge r3, r8 8bac: 444b addlt r3, r9 draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; 8bae: f8ad 2032 strh.w r2, [sp, #50] ; 0x32 draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; 8bb2: f8ad 3036 strh.w r3, [sp, #54] ; 0x36 bool is_common = _lv_area_intersect(&draw_area, &draw_area, clip); 8bb6: aa0a add r2, sp, #40 ; 0x28 8bb8: 4ba0 ldr r3, [pc, #640] ; (8e3c ) 8bba: 4608 mov r0, r1 w = (w * wcorr[wcorr_i] + 63) >> 7; /*+ 63 for rounding*/ 8bbc: 11ec asrs r4, r5, #7 bool is_common = _lv_area_intersect(&draw_area, &draw_area, clip); 8bbe: 4798 blx r3 if(is_common == false) return; 8bc0: 2800 cmp r0, #0 8bc2: f43f adb9 beq.w 8738 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) { 8bc6: 9b07 ldr r3, [sp, #28] int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ 8bc8: f004 0401 and.w r4, r4, #1 8bcc: eb04 2425 add.w r4, r4, r5, asr #8 if(flat) { 8bd0: 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, 8bd2: 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, 8bd4: f3c5 250f ubfx r5, r5, #8, #16 if(flat) { 8bd8: f340 80ed ble.w 8db6 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8bdc: fa14 f389 uxtah r3, r4, r9 8be0: b21b sxth r3, r3 8be2: ee08 3a10 vmov s16, r3 if(xdiff > 0) { 8be6: 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, 8be8: 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, 8bec: 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, 8bf0: eba8 0505 sub.w r5, r8, r5 if(xdiff > 0) { 8bf4: 2b00 cmp r3, #0 8bf6: 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, 8bfa: 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, 8bfc: fa0f fa8a sxth.w sl, sl 8c00: b22d sxth r5, r5 8c02: 9301 str r3, [sp, #4] if(xdiff > 0) { 8c04: f340 80c6 ble.w 8d94 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8c08: 9500 str r5, [sp, #0] 8c0a: 4633 mov r3, r6 8c0c: 4652 mov r2, sl 8c0e: 4639 mov r1, r7 8c10: a810 add r0, sp, #64 ; 0x40 8c12: 4d8b ldr r5, [pc, #556] ; (8e40 ) 8c14: 47a8 blx r5 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8c16: 2301 movs r3, #1 8c18: e9cd 4300 strd r4, r3, [sp] 8c1c: ee18 2a10 vmov r2, s16 8c20: 4633 mov r3, r6 8c22: 4639 mov r1, r7 8c24: a81b add r0, sp, #108 ; 0x6c 8c26: 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); 8c28: f8df a240 ldr.w sl, [pc, #576] ; 8e6c 8c2c: 2100 movs r1, #0 8c2e: a810 add r0, sp, #64 ; 0x40 8c30: 47d0 blx sl int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 8c32: 2100 movs r1, #0 int16_t mask_left_id = lv_draw_mask_add(&mask_left_param, NULL); 8c34: ee09 0a10 vmov s18, r0 int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 8c38: a81b add r0, sp, #108 ; 0x6c 8c3a: 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) { 8c3c: f89b 5009 ldrb.w r5, [fp, #9] 8c40: f015 0510 ands.w r5, r5, #16 int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); 8c44: ee09 0a90 vmov s19, r0 if(!dsc->raw_end) { 8c48: f040 80cf bne.w 8dea 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); 8c4c: 2203 movs r2, #3 8c4e: f8bd 4020 ldrh.w r4, [sp, #32] 8c52: 9201 str r2, [sp, #4] 8c54: 1bf2 subs r2, r6, r7 8c56: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 8c5a: 9307 str r3, [sp, #28] 8c5c: fa19 f282 uxtah r2, r9, r2 8c60: 1b3b subs r3, r7, r4 8c62: b212 sxth r2, r2 8c64: 4639 mov r1, r7 8c66: 9200 str r2, [sp, #0] 8c68: 4f75 ldr r7, [pc, #468] ; (8e40 ) 8c6a: b21b sxth r3, r3 8c6c: 464a mov r2, r9 8c6e: a826 add r0, sp, #152 ; 0x98 8c70: 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); 8c72: 2202 movs r2, #2 8c74: 9201 str r2, [sp, #4] 8c76: 9a07 ldr r2, [sp, #28] 8c78: 4442 add r2, r8 8c7a: b212 sxth r2, r2 8c7c: 1b33 subs r3, r6, r4 8c7e: b21b sxth r3, r3 8c80: 9200 str r2, [sp, #0] 8c82: 4631 mov r1, r6 8c84: 4642 mov r2, r8 8c86: a831 add r0, sp, #196 ; 0xc4 8c88: 47b8 blx r7 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); 8c8a: 4629 mov r1, r5 8c8c: a826 add r0, sp, #152 ; 0x98 8c8e: 47d0 blx sl mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); 8c90: 4629 mov r1, r5 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); 8c92: 9009 str r0, [sp, #36] ; 0x24 mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); 8c94: a831 add r0, sp, #196 ; 0xc4 8c96: 47d0 blx sl 8c98: 4682 mov sl, r0 } lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8c9a: 4b6a ldr r3, [pc, #424] ; (8e44 ) * 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); 8c9c: 4e6a ldr r6, [pc, #424] ; (8e48 ) lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 8c9e: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8ca0: 4b6a ldr r3, [pc, #424] ; (8e4c ) 8ca2: 4798 blx r3 draw_area.x1 -= disp_area->x1; 8ca4: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 8ca8: 8a03 ldrh r3, [r0, #16] draw_area.x2 -= disp_area->x1; 8caa: f8bd 4034 ldrh.w r4, [sp, #52] ; 0x34 draw_area.x1 -= disp_area->x1; 8cae: 1ad1 subs r1, r2, r3 draw_area.x2 -= disp_area->x1; 8cb0: 1ae3 subs r3, r4, r3 draw_area.x1 -= disp_area->x1; 8cb2: f8ad 1030 strh.w r1, [sp, #48] ; 0x30 draw_area.x2 -= disp_area->x1; 8cb6: f8ad 3034 strh.w r3, [sp, #52] ; 0x34 draw_area.y1 -= disp_area->y1; 8cba: 8a41 ldrh r1, [r0, #18] draw_area.y2 -= disp_area->y1; 8cbc: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 8cc0: 4605 mov r5, r0 draw_area.y1 -= disp_area->y1; 8cc2: f8bd 0032 ldrh.w r0, [sp, #50] ; 0x32 8cc6: 3401 adds r4, #1 8cc8: 1a40 subs r0, r0, r1 draw_area.y2 -= disp_area->y1; 8cca: 1a5b subs r3, r3, r1 8ccc: 1aa4 subs r4, r4, r2 draw_area.y1 -= disp_area->y1; 8cce: f8ad 0032 strh.w r0, [sp, #50] ; 0x32 draw_area.y2 -= disp_area->y1; 8cd2: f8ad 3036 strh.w r3, [sp, #54] ; 0x36 size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 8cd6: a80c add r0, sp, #48 ; 0x30 8cd8: b223 sxth r3, r4 8cda: 9307 str r3, [sp, #28] 8cdc: 47b0 blx r6 8cde: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0 8ce2: f080 8087 bcs.w 8df4 8ce6: a80c add r0, sp, #48 ; 0x30 8ce8: 47b0 blx r6 8cea: 4607 mov r7, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8cec: 4b58 ldr r3, [pc, #352] ; (8e50 ) 8cee: 4638 mov r0, r7 8cf0: 4798 blx r3 lv_area_t fill_area; fill_area.x1 = draw_area.x1 + disp_area->x1; 8cf2: 8a2b ldrh r3, [r5, #16] 8cf4: f8bd 2030 ldrh.w r2, [sp, #48] ; 0x30 8cf8: 441a add r2, r3 8cfa: b212 sxth r2, r2 8cfc: 9208 str r2, [sp, #32] 8cfe: f8ad 2038 strh.w r2, [sp, #56] ; 0x38 fill_area.x2 = draw_area.x2 + disp_area->x1; 8d02: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 8d06: 4413 add r3, r2 8d08: f8ad 303c strh.w r3, [sp, #60] ; 0x3c fill_area.y1 = draw_area.y1 + disp_area->y1; 8d0c: 8a6a ldrh r2, [r5, #18] 8d0e: f8bd 3032 ldrh.w r3, [sp, #50] ; 0x32 8d12: 4413 add r3, r2 8d14: b21b sxth r3, r3 8d16: f8ad 303a strh.w r3, [sp, #58] ; 0x3a fill_area.y2 = fill_area.y1; 8d1a: 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); 8d1e: 4639 mov r1, r7 8d20: 4b4c ldr r3, [pc, #304] ; (8e54 ) lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8d22: 4606 mov r6, r0 _lv_memset_ff(mask_buf, mask_buf_size); 8d24: 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++) { 8d26: f9bd 8032 ldrsh.w r8, [sp, #50] ; 0x32 8d2a: f9b5 3012 ldrsh.w r3, [r5, #18] uint32_t mask_p = 0; 8d2e: f04f 0900 mov.w r9, #0 for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { 8d32: 4498 add r8, r3 8d34: f9bd 3036 ldrsh.w r3, [sp, #54] ; 0x36 8d38: f9b5 2012 ldrsh.w r2, [r5, #18] 8d3c: 4413 add r3, r2 8d3e: 4598 cmp r8, r3 8d40: dd5b ble.n 8dfa _lv_memset_ff(mask_buf, mask_buf_size); } } /*Flush the last part*/ if(fill_area.y1 != fill_area.y2) { 8d42: f9bd 303e ldrsh.w r3, [sp, #62] ; 0x3e 8d46: f9bd 203a ldrsh.w r2, [sp, #58] ; 0x3a 8d4a: 429a cmp r2, r3 8d4c: d013 beq.n 8d76 fill_area.y2--; 8d4e: 3b01 subs r3, #1 8d50: 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); 8d54: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(&fill_area, clip, 8d58: f8bb 2000 ldrh.w r2, [fp] 8d5c: 4c3e ldr r4, [pc, #248] ; (8e58 ) 8d5e: f003 0303 and.w r3, r3, #3 8d62: 9302 str r3, [sp, #8] 8d64: f89b 3008 ldrb.w r3, [fp, #8] 8d68: 9301 str r3, [sp, #4] 8d6a: 2302 movs r3, #2 8d6c: 9300 str r3, [sp, #0] 8d6e: a90a add r1, sp, #40 ; 0x28 8d70: 4633 mov r3, r6 8d72: a80e add r0, sp, #56 ; 0x38 8d74: 47a0 blx r4 } _lv_mem_buf_release(mask_buf); 8d76: 4b39 ldr r3, [pc, #228] ; (8e5c ) lv_draw_mask_remove_id(mask_left_id); 8d78: 4c39 ldr r4, [pc, #228] ; (8e60 ) _lv_mem_buf_release(mask_buf); 8d7a: 4630 mov r0, r6 8d7c: 4798 blx r3 lv_draw_mask_remove_id(mask_left_id); 8d7e: ee19 0a10 vmov r0, s18 8d82: 47a0 blx r4 lv_draw_mask_remove_id(mask_right_id); 8d84: ee19 0a90 vmov r0, s19 8d88: 47a0 blx r4 lv_draw_mask_remove_id(mask_top_id); 8d8a: 9809 ldr r0, [sp, #36] ; 0x24 8d8c: 47a0 blx r4 lv_draw_mask_remove_id(mask_bottom_id); 8d8e: 4650 mov r0, sl 8d90: 47a0 blx r4 8d92: e4d1 b.n 8738 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, 8d94: ee18 2a10 vmov r2, s16 8d98: 9400 str r4, [sp, #0] 8d9a: 4633 mov r3, r6 8d9c: 4639 mov r1, r7 8d9e: 4c28 ldr r4, [pc, #160] ; (8e40 ) 8da0: a810 add r0, sp, #64 ; 0x40 8da2: 47a0 blx r4 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, 8da4: 2301 movs r3, #1 8da6: e9cd 5300 strd r5, r3, [sp] 8daa: 4652 mov r2, sl 8dac: 4633 mov r3, r6 8dae: 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, 8db0: a81b add r0, sp, #108 ; 0x6c 8db2: 47a0 blx r4 8db4: e738 b.n 8c28 lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y, 8db6: fa14 f386 uxtah r3, r4, r6 8dba: 2200 movs r2, #0 8dbc: fa14 f487 uxtah r4, r4, r7 8dc0: b221 sxth r1, r4 8dc2: e9cd 8200 strd r8, r2, [sp] 8dc6: b21b sxth r3, r3 8dc8: 464a mov r2, r9 8dca: 4c1d ldr r4, [pc, #116] ; (8e40 ) 8dcc: a810 add r0, sp, #64 ; 0x40 8dce: 47a0 blx r4 8dd0: 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, 8dd4: b2ba uxth r2, r7 8dd6: 1b51 subs r1, r2, r5 8dd8: ebaa 0305 sub.w r3, sl, r5 8ddc: 2201 movs r2, #1 8dde: e9cd 8200 strd r8, r2, [sp] 8de2: b21b sxth r3, r3 8de4: 464a mov r2, r9 8de6: b209 sxth r1, r1 8de8: e7e2 b.n 8db0 int16_t mask_bottom_id = LV_MASK_ID_INV; 8dea: f04f 3aff mov.w sl, #4294967295 ; 0xffffffff int16_t mask_top_id = LV_MASK_ID_INV; 8dee: f8cd a024 str.w sl, [sp, #36] ; 0x24 8df2: e752 b.n 8c9a size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); 8df4: f44f 77f0 mov.w r7, #480 ; 0x1e0 8df8: e778 b.n 8cec lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); 8dfa: eb06 0309 add.w r3, r6, r9 8dfe: ee08 3a10 vmov s16, r3 8e02: 9908 ldr r1, [sp, #32] 8e04: 9b07 ldr r3, [sp, #28] 8e06: 4c17 ldr r4, [pc, #92] ; (8e64 ) 8e08: ee18 0a10 vmov r0, s16 8e0c: fa0f f288 sxth.w r2, r8 8e10: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 8e12: b920 cbnz r0, 8e1e _lv_memset_00(&mask_buf[mask_p], draw_area_w); 8e14: 9907 ldr r1, [sp, #28] 8e16: 4b14 ldr r3, [pc, #80] ; (8e68 ) 8e18: ee18 0a10 vmov r0, s16 8e1c: 4798 blx r3 mask_p += draw_area_w; 8e1e: 9b07 ldr r3, [sp, #28] 8e20: 4499 add r9, r3 if((uint32_t) mask_p + draw_area_w < mask_buf_size) { 8e22: 444b add r3, r9 8e24: 429f cmp r7, r3 8e26: d923 bls.n 8e70 fill_area.y2 ++; 8e28: f8bd 303e ldrh.w r3, [sp, #62] ; 0x3e 8e2c: 3301 adds r3, #1 8e2e: f8ad 303e strh.w r3, [sp, #62] ; 0x3e for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { 8e32: f108 0801 add.w r8, r8, #1 8e36: e77d b.n 8d34 8e38: 0001fce2 .word 0x0001fce2 8e3c: 0000de8d .word 0x0000de8d 8e40: 0000980d .word 0x0000980d 8e44: 00004fe9 .word 0x00004fe9 8e48: 0000de71 .word 0x0000de71 8e4c: 0000d9e1 .word 0x0000d9e1 8e50: 0000eeb5 .word 0x0000eeb5 8e54: 0000f075 .word 0x0000f075 8e58: 000061f1 .word 0x000061f1 8e5c: 0000eb69 .word 0x0000eb69 8e60: 000097a1 .word 0x000097a1 8e64: 00009761 .word 0x00009761 8e68: 0000f019 .word 0x0000f019 8e6c: 00009711 .word 0x00009711 dsc->blend_mode); 8e70: f89b 3009 ldrb.w r3, [fp, #9] _lv_blend_fill(&fill_area, clip, 8e74: f8bb 2000 ldrh.w r2, [fp] 8e78: 4c0d ldr r4, [pc, #52] ; (8eb0 ) 8e7a: f003 0303 and.w r3, r3, #3 8e7e: 9302 str r3, [sp, #8] 8e80: f89b 3008 ldrb.w r3, [fp, #8] 8e84: 9301 str r3, [sp, #4] 8e86: 2302 movs r3, #2 8e88: 9300 str r3, [sp, #0] 8e8a: a90a add r1, sp, #40 ; 0x28 8e8c: 4633 mov r3, r6 8e8e: a80e add r0, sp, #56 ; 0x38 8e90: 47a0 blx r4 fill_area.y1 = fill_area.y2 + 1; 8e92: f8bd 303e ldrh.w r3, [sp, #62] ; 0x3e 8e96: 3301 adds r3, #1 8e98: b21b sxth r3, r3 8e9a: f8ad 303a strh.w r3, [sp, #58] ; 0x3a fill_area.y2 = fill_area.y1; 8e9e: f8ad 303e strh.w r3, [sp, #62] ; 0x3e _lv_memset_ff(mask_buf, mask_buf_size); 8ea2: 4639 mov r1, r7 8ea4: 4b03 ldr r3, [pc, #12] ; (8eb4 ) 8ea6: 4630 mov r0, r6 8ea8: 4798 blx r3 mask_p = 0; 8eaa: f04f 0900 mov.w r9, #0 8eae: e7c0 b.n 8e32 8eb0: 000061f1 .word 0x000061f1 8eb4: 0000f075 .word 0x0000f075 00008eb8 : } 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; 8eb8: 29f9 cmp r1, #249 ; 0xf9 8eba: d80a bhi.n 8ed2 if(mask_new <= LV_OPA_MIN) return 0; 8ebc: 2905 cmp r1, #5 8ebe: d907 bls.n 8ed0 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); 8ec0: fb10 f001 smulbb r0, r0, r1 8ec4: f248 0381 movw r3, #32897 ; 0x8081 8ec8: 4358 muls r0, r3 8eca: f3c0 50c7 ubfx r0, r0, #23, #8 8ece: 4770 bx lr if(mask_new <= LV_OPA_MIN) return 0; 8ed0: 2000 movs r0, #0 } 8ed2: 4770 bx lr 00008ed4 : { 8ed4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 8ed8: 9e08 ldr r6, [sp, #32] 8eda: 461c mov r4, r3 abs_y -= p->origo.y; 8edc: 8ab3 ldrh r3, [r6, #20] 8ede: 1ad2 subs r2, r2, r3 abs_x -= p->origo.x; 8ee0: 8a73 ldrh r3, [r6, #18] 8ee2: 1ac9 subs r1, r1, r3 8ee4: b20f sxth r7, r1 if(p->flat) { 8ee6: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 if(p->steep == 0) { 8eea: 6a31 ldr r1, [r6, #32] { 8eec: 4605 mov r5, r0 abs_y -= p->origo.y; 8eee: b212 sxth r2, r2 if(p->flat) { 8ef0: f003 0001 and.w r0, r3, #1 if(p->steep == 0) { 8ef4: bb99 cbnz r1, 8f5e if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || 8ef6: 7c33 ldrb r3, [r6, #16] 8ef8: f003 0602 and.w r6, r3, #2 if(p->flat) { 8efc: b180 cbz r0, 8f20 if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || 8efe: b13e cbz r6, 8f10 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f00: f003 0303 and.w r3, r3, #3 8f04: 2b02 cmp r3, #2 8f06: d105 bne.n 8f14 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 8f08: 3201 adds r2, #1 8f0a: bfac ite ge 8f0c: 2000 movge r0, #0 8f0e: 2001 movlt r0, #1 } 8f10: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f14: 2b03 cmp r3, #3 8f16: d101 bne.n 8f1c 8f18: 2a00 cmp r2, #0 8f1a: dcf9 bgt.n 8f10 return LV_DRAW_MASK_RES_TRANSP; 8f1c: 2000 movs r0, #0 8f1e: e7f7 b.n 8f10 if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP || 8f20: 2e00 cmp r6, #0 8f22: f040 8187 bne.w 9234 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f26: f003 0003 and.w r0, r3, #3 8f2a: 2801 cmp r0, #1 8f2c: d10a bne.n 8f44 8f2e: 2f00 cmp r7, #0 8f30: dcee bgt.n 8f10 if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; 8f32: 42e7 cmn r7, r4 8f34: d4f2 bmi.n 8f1c if(k < 0) k = 0; 8f36: 2f00 cmp r7, #0 8f38: f300 817e bgt.w 9238 int32_t k = - abs_x; 8f3c: 4279 negs r1, r7 if(k >= len) return LV_DRAW_MASK_RES_TRANSP; 8f3e: 428c cmp r4, r1 8f40: ddec ble.n 8f1c 8f42: e09b b.n 907c else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) { 8f44: 2800 cmp r0, #0 8f46: d1f4 bne.n 8f32 if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; 8f48: 1939 adds r1, r7, r4 8f4a: f100 8173 bmi.w 9234 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; 8f4e: 2f00 cmp r7, #0 8f50: dce4 bgt.n 8f1c int32_t k = - abs_x; 8f52: 4278 negs r0, r7 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); 8f54: 42a0 cmp r0, r4 8f56: f2c0 809c blt.w 9092 return LV_DRAW_MASK_RES_CHANGED; 8f5a: 2002 movs r0, #2 8f5c: e7d8 b.n 8f10 if(p->flat) { 8f5e: f003 0c02 and.w ip, r3, #2 8f62: 2800 cmp r0, #0 8f64: f000 8097 beq.w 9096 y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; 8f68: 69f1 ldr r1, [r6, #28] 8f6a: fb07 f301 mul.w r3, r7, r1 if(p->yx_steep > 0) { 8f6e: 2900 cmp r1, #0 y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; 8f70: ea4f 23a3 mov.w r3, r3, asr #10 if(p->inv) { 8f74: fa5f f08c uxtb.w r0, ip if(p->yx_steep > 0) { 8f78: dd05 ble.n 8f86 if(y_at_x > abs_y) { 8f7a: 429a cmp r2, r3 8f7c: da05 bge.n 8f8a p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 8f7e: 3800 subs r0, #0 8f80: bf18 it ne 8f82: 2001 movne r0, #1 8f84: e7c4 b.n 8f10 if(y_at_x < abs_y) { 8f86: 429a cmp r2, r3 8f88: dcf9 bgt.n 8f7e y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; 8f8a: 193b adds r3, r7, r4 8f8c: 434b muls r3, r1 if(p->yx_steep > 0) { 8f8e: 2900 cmp r1, #0 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; 8f90: ea4f 23a3 mov.w r3, r3, asr #10 if(p->yx_steep > 0) { 8f94: dd05 ble.n 8fa2 if(y_at_x < abs_y) { 8f96: 429a cmp r2, r3 8f98: dd06 ble.n 8fa8 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; 8f9a: fab0 f080 clz r0, r0 8f9e: 0940 lsrs r0, r0, #5 8fa0: e7b6 b.n 8f10 if(y_at_x > abs_y) { 8fa2: 429a cmp r2, r3 8fa4: dbf9 blt.n 8f9a else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; 8fa6: 3201 adds r2, #1 8fa8: 69b3 ldr r3, [r6, #24] 8faa: 0212 lsls r2, r2, #8 8fac: 435a muls r2, r3 8fae: 1292 asrs r2, r2, #10 int32_t xei = xe >> 8; 8fb0: 1211 asrs r1, r2, #8 if(xef == 0) px_h = 255; 8fb2: f012 02ff ands.w r2, r2, #255 ; 0xff else px_h = 255 - (((255 - xef) * p->spx) >> 8); 8fb6: bf1f itttt ne 8fb8: 6a73 ldrne r3, [r6, #36] ; 0x24 8fba: f1c2 08ff rsbne r8, r2, #255 ; 0xff 8fbe: fb03 f808 mulne.w r8, r3, r8 8fc2: ea4f 2828 movne.w r8, r8, asr #8 8fc6: bf14 ite ne 8fc8: f1c8 08ff rsbne r8, r8, #255 ; 0xff if(xef == 0) px_h = 255; 8fcc: f04f 08ff moveq.w r8, #255 ; 0xff int32_t k = xei - abs_x; 8fd0: 1bcf subs r7, r1, r7 if(xef) { 8fd2: 2a00 cmp r2, #0 8fd4: d054 beq.n 9080 if(k >= 0 && k < len) { 8fd6: 2f00 cmp r7, #0 8fd8: db0f blt.n 8ffa 8fda: 42bc cmp r4, r7 8fdc: dd0d ble.n 8ffa m = 255 - (((255 - xef) * (255 - px_h)) >> 9); 8fde: f1c2 01ff rsb r1, r2, #255 ; 0xff 8fe2: f1c8 03ff rsb r3, r8, #255 ; 0xff 8fe6: 4359 muls r1, r3 8fe8: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 8fec: b908 cbnz r0, 8ff2 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); 8fee: 43c9 mvns r1, r1 8ff0: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 8ff2: 5de8 ldrb r0, [r5, r7] 8ff4: 4ba3 ldr r3, [pc, #652] ; (9284 ) 8ff6: 4798 blx r3 8ff8: 55e8 strb r0, [r5, r7] k++; 8ffa: 1c7a adds r2, r7, #1 mask_buf[k] = mask_mix(mask_buf[k], m); 8ffc: f8df 9284 ldr.w r9, [pc, #644] ; 9284 while(px_h > p->spx) { 9000: 6a71 ldr r1, [r6, #36] ; 0x24 if(p->inv) m = 255 - m; 9002: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 while(px_h > p->spx) { 9006: 4588 cmp r8, r1 if(p->inv) m = 255 - m; 9008: f003 0302 and.w r3, r3, #2 while(px_h > p->spx) { 900c: dc18 bgt.n 9040 if(k < len && k >= 0) { 900e: 4294 cmp r4, r2 9010: dd29 ble.n 9066 9012: 2a00 cmp r2, #0 9014: db27 blt.n 9066 int32_t x_inters = (px_h * p->xy_steep) >> 10; 9016: 69b1 ldr r1, [r6, #24] if(p->yx_steep < 0) m = 255 - m; 9018: 69f0 ldr r0, [r6, #28] int32_t x_inters = (px_h * p->xy_steep) >> 10; 901a: fb01 f108 mul.w r1, r1, r8 901e: 1289 asrs r1, r1, #10 m = (x_inters * px_h) >> 9; 9020: fb08 f101 mul.w r1, r8, r1 9024: f3c1 2147 ubfx r1, r1, #9, #8 if(p->yx_steep < 0) m = 255 - m; 9028: 2800 cmp r0, #0 902a: bfbc itt lt 902c: 43c9 mvnlt r1, r1 902e: b2c9 uxtblt r1, r1 if(p->inv) m = 255 - m; 9030: b10b cbz r3, 9036 9032: 43c9 mvns r1, r1 9034: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9036: 5ca8 ldrb r0, [r5, r2] 9038: 4b92 ldr r3, [pc, #584] ; (9284 ) 903a: 4798 blx r3 903c: 54a8 strb r0, [r5, r2] 903e: e012 b.n 9066 if(k >= 0 && k < len) { 9040: 2a00 cmp r2, #0 9042: db0a blt.n 905a 9044: 4294 cmp r4, r2 9046: dd08 ble.n 905a m = px_h - (p->spx >> 1); 9048: eba8 0161 sub.w r1, r8, r1, asr #1 904c: b2c9 uxtb r1, r1 if(p->inv) m = 255 - m; 904e: b10b cbz r3, 9054 9050: 43c9 mvns r1, r1 9052: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9054: 5ca8 ldrb r0, [r5, r2] 9056: 47c8 blx r9 9058: 54a8 strb r0, [r5, r2] px_h -= p->spx; 905a: 6a73 ldr r3, [r6, #36] ; 0x24 k++; 905c: 3201 adds r2, #1 if(k >= len) break; 905e: 4294 cmp r4, r2 px_h -= p->spx; 9060: eba8 0803 sub.w r8, r8, r3 if(k >= len) break; 9064: dccc bgt.n 9000 if(p->inv) { 9066: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 906a: 0799 lsls r1, r3, #30 906c: d50a bpl.n 9084 if(k > len) { 906e: 42bc cmp r4, r7 9070: f6ff af54 blt.w 8f1c if(k >= 0) { 9074: 2f00 cmp r7, #0 9076: f6ff af70 blt.w 8f5a _lv_memset_00(&mask_buf[0], k); 907a: 4639 mov r1, r7 if(k >= 0) _lv_memset_00(&mask_buf[0], k); 907c: 4628 mov r0, r5 907e: e083 b.n 9188 int32_t k = xei - abs_x; 9080: 463a mov r2, r7 9082: e7bb b.n 8ffc if(k < 0) { 9084: 1c50 adds r0, r2, #1 9086: f53f af49 bmi.w 8f1c if(k <= len) { 908a: 4284 cmp r4, r0 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); 908c: f6ff af65 blt.w 8f5a 9090: 1a21 subs r1, r4, r0 9092: 4428 add r0, r5 9094: e078 b.n 9188 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; 9096: 69b1 ldr r1, [r6, #24] 9098: fb01 f302 mul.w r3, r1, r2 if(p->xy_steep > 0) x_at_y++; 909c: 2900 cmp r1, #0 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; 909e: ea4f 23a3 mov.w r3, r3, asr #10 if(p->xy_steep > 0) x_at_y++; 90a2: bfcc ite gt 90a4: f103 0e01 addgt.w lr, r3, #1 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; 90a8: 469e movle lr, r3 if(x_at_y < abs_x) { 90aa: 4577 cmp r7, lr if(p->inv) { 90ac: fa5f f08c uxtb.w r0, ip if(x_at_y < abs_x) { 90b0: f73f af65 bgt.w 8f7e if(x_at_y > abs_x + len) { 90b4: eb07 0c04 add.w ip, r7, r4 90b8: 4563 cmp r3, ip 90ba: f73f af6e bgt.w 8f9a int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; 90be: ea4f 2c02 mov.w ip, r2, lsl #8 int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; 90c2: 3201 adds r2, #1 90c4: 0212 lsls r2, r2, #8 90c6: 434a muls r2, r1 int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; 90c8: fb01 fc0c mul.w ip, r1, ip int32_t xei = xe >> 8; 90cc: ea4f 49a2 mov.w r9, r2, asr #18 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 90d0: ebb9 4fac cmp.w r9, ip, asr #18 int32_t xsf = xs & 0xFF; 90d4: f3cc 2387 ubfx r3, ip, #10, #8 k = xsi - abs_x; 90d8: ebc7 4aac rsb sl, r7, ip, asr #18 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 90dc: f000 80ae beq.w 923c 90e0: 2900 cmp r1, #0 90e2: da5a bge.n 919a k--; 90e4: f10a 38ff add.w r8, sl, #4294967295 ; 0xffffffff if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { 90e8: 2b00 cmp r3, #0 90ea: f000 80c9 beq.w 9280 y_inters = (xsf * (-p->yx_steep)) >> 10; 90ee: 69f2 ldr r2, [r6, #28] 90f0: 4252 negs r2, r2 90f2: 435a muls r2, r3 if(k >= 0 && k < len) { 90f4: f1ba 0f00 cmp.w sl, #0 y_inters = (xsf * (-p->yx_steep)) >> 10; 90f8: ea4f 22a2 mov.w r2, r2, asr #10 if(k >= 0 && k < len) { 90fc: db0d blt.n 911a 90fe: 4554 cmp r4, sl 9100: dd0b ble.n 911a m = (y_inters * xsf) >> 9; 9102: 4353 muls r3, r2 9104: f3c3 2147 ubfx r1, r3, #9, #8 if(p->inv) m = 255 - m; 9108: b108 cbz r0, 910e 910a: 43c9 mvns r1, r1 910c: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 910e: f815 000a ldrb.w r0, [r5, sl] 9112: 4b5c ldr r3, [pc, #368] ; (9284 ) 9114: 4798 blx r3 9116: f805 000a strb.w r0, [r5, sl] if(k >= 0 && k < len) { 911a: f1b8 0f00 cmp.w r8, #0 911e: db17 blt.n 9150 9120: 4544 cmp r4, r8 9122: dd15 ble.n 9150 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 9124: 69b3 ldr r3, [r6, #24] mask_buf[k] = mask_mix(mask_buf[k], m); 9126: f815 0008 ldrb.w r0, [r5, r8] int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 912a: f1c2 02ff rsb r2, r2, #255 ; 0xff 912e: 4259 negs r1, r3 9130: 4351 muls r1, r2 if(p->inv) m = 255 - m; 9132: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; 9136: 1289 asrs r1, r1, #10 m = 255 - (((255 - y_inters) * x_inters) >> 9); 9138: 4351 muls r1, r2 if(p->inv) m = 255 - m; 913a: 079f lsls r7, r3, #30 m = 255 - (((255 - y_inters) * x_inters) >> 9); 913c: f3c1 2147 ubfx r1, r1, #9, #8 9140: bf58 it pl 9142: 43c9 mvnpl r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9144: 4b4f ldr r3, [pc, #316] ; (9284 ) m = 255 - (((255 - y_inters) * x_inters) >> 9); 9146: bf58 it pl 9148: b2c9 uxtbpl r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 914a: 4798 blx r3 914c: f805 0008 strb.w r0, [r5, r8] if(p->inv) { 9150: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 9154: 079e lsls r6, r3, #30 9156: d51a bpl.n 918e if(k > len) k = len; 9158: 4544 cmp r4, r8 915a: f6ff aefe blt.w 8f5a else if(k > 0) _lv_memset_00(&mask_buf[0], k); 915e: f1b8 0f00 cmp.w r8, #0 9162: f77f aefa ble.w 8f5a 9166: 4641 mov r1, r8 9168: e788 b.n 907c k++; 916a: f108 0801 add.w r8, r8, #1 916e: 45a0 cmp r8, r4 9170: bfa8 it ge 9172: 46a0 movge r8, r4 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; 9174: f1b8 0f00 cmp.w r8, #0 9178: f43f aed0 beq.w 8f1c else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 917c: f77f aeed ble.w 8f5a 9180: eba4 0108 sub.w r1, r4, r8 9184: eb05 0008 add.w r0, r5, r8 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 9188: 4b3f ldr r3, [pc, #252] ; (9288 ) 918a: 4798 blx r3 918c: e6e5 b.n 8f5a k += 2; 918e: f10a 0001 add.w r0, sl, #1 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; 9192: 4284 cmp r4, r0 9194: db4e blt.n 9234 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); 9196: 2800 cmp r0, #0 9198: e778 b.n 908c y_inters = ((255 - xsf) * p->yx_steep) >> 10; 919a: 69f7 ldr r7, [r6, #28] 919c: f1c3 03ff rsb r3, r3, #255 ; 0xff 91a0: 435f muls r7, r3 if(k >= 0 && k < len) { 91a2: f1ba 0f00 cmp.w sl, #0 y_inters = ((255 - xsf) * p->yx_steep) >> 10; 91a6: ea4f 27a7 mov.w r7, r7, asr #10 if(k >= 0 && k < len) { 91aa: db0d blt.n 91c8 91ac: 4554 cmp r4, sl 91ae: dd0b ble.n 91c8 m = 255 - ((y_inters * (255 - xsf)) >> 9); 91b0: 437b muls r3, r7 91b2: f3c3 2147 ubfx r1, r3, #9, #8 if(p->inv) m = 255 - m; 91b6: b908 cbnz r0, 91bc m = 255 - ((y_inters * (255 - xsf)) >> 9); 91b8: 43c9 mvns r1, r1 91ba: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 91bc: f815 000a ldrb.w r0, [r5, sl] 91c0: 4b30 ldr r3, [pc, #192] ; (9284 ) 91c2: 4798 blx r3 91c4: f805 000a strb.w r0, [r5, sl] if(k >= 0 && k < len) { 91c8: f11a 0201 adds.w r2, sl, #1 91cc: d415 bmi.n 91fa 91ce: 4294 cmp r4, r2 91d0: dd13 ble.n 91fa int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; 91d2: 69b3 ldr r3, [r6, #24] 91d4: f1c7 07ff rsb r7, r7, #255 ; 0xff 91d8: fb03 f107 mul.w r1, r3, r7 91dc: 1289 asrs r1, r1, #10 if(p->inv) m = 255 - m; 91de: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 m = ((255 - y_inters) * x_inters) >> 9; 91e2: 4379 muls r1, r7 if(p->inv) m = 255 - m; 91e4: 0798 lsls r0, r3, #30 m = ((255 - y_inters) * x_inters) >> 9; 91e6: f3c1 2147 ubfx r1, r1, #9, #8 if(p->inv) m = 255 - m; 91ea: bf48 it mi 91ec: 43c9 mvnmi r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 91ee: 5ca8 ldrb r0, [r5, r2] 91f0: 4b24 ldr r3, [pc, #144] ; (9284 ) if(p->inv) m = 255 - m; 91f2: bf48 it mi 91f4: b2c9 uxtbmi r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 91f6: 4798 blx r3 91f8: 54a8 strb r0, [r5, r2] if(p->inv) { 91fa: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 91fe: 079b lsls r3, r3, #30 9200: d508 bpl.n 9214 if(k > len) return LV_DRAW_MASK_RES_TRANSP; 9202: 4554 cmp r4, sl 9204: f6ff ae8a blt.w 8f1c if(k >= 0) _lv_memset_00(&mask_buf[0], k); 9208: f1ba 0f00 cmp.w sl, #0 920c: f6ff aea5 blt.w 8f5a 9210: 4651 mov r1, sl 9212: e733 b.n 907c k++; 9214: f10a 0a02 add.w sl, sl, #2 9218: 45a2 cmp sl, r4 921a: bfa8 it ge 921c: 46a2 movge sl, r4 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; 921e: f1ba 0f00 cmp.w sl, #0 9222: f43f ae7b beq.w 8f1c else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); 9226: f77f ae98 ble.w 8f5a 922a: eba4 010a sub.w r1, r4, sl 922e: eb05 000a add.w r0, r5, sl 9232: e7a9 b.n 9188 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; 9234: 2001 movs r0, #1 9236: e66b b.n 8f10 if(k >= len) return LV_DRAW_MASK_RES_TRANSP; 9238: 2c00 cmp r4, #0 923a: e681 b.n 8f40 k = xsi - abs_x; 923c: 46d0 mov r8, sl if(k >= 0 && k < len) { 923e: f1b8 0f00 cmp.w r8, #0 9242: db0f blt.n 9264 9244: 4544 cmp r4, r8 9246: dd0d ble.n 9264 int32_t xef = xe & 0xFF; 9248: f3c2 2187 ubfx r1, r2, #10, #8 m = (xsf + xef) >> 1; 924c: 4419 add r1, r3 924e: f3c1 0147 ubfx r1, r1, #1, #8 if(p->inv) m = 255 - m; 9252: b108 cbz r0, 9258 9254: 43c9 mvns r1, r1 9256: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); 9258: f815 0008 ldrb.w r0, [r5, r8] 925c: 4b09 ldr r3, [pc, #36] ; (9284 ) 925e: 4798 blx r3 9260: f805 0008 strb.w r0, [r5, r8] if(p->inv) { 9264: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 9268: 079b lsls r3, r3, #30 926a: f57f af7e bpl.w 916a k = xsi - abs_x; 926e: eba9 0107 sub.w r1, r9, r7 if(k >= len) { 9272: 428c cmp r4, r1 9274: f77f ae52 ble.w 8f1c if(k >= 0) _lv_memset_00(&mask_buf[0], k); 9278: 2900 cmp r1, #0 927a: f6ff ae6e blt.w 8f5a 927e: e6fd b.n 907c xsf = 0xFF; 9280: 23ff movs r3, #255 ; 0xff 9282: e7dc b.n 923e 9284: 00008eb9 .word 0x00008eb9 9288: 0000f019 .word 0x0000f019 0000928c : while(len) { 928c: 3901 subs r1, #1 928e: f100 0308 add.w r3, r0, #8 *d8 = *s8; 9292: f811 2f01 ldrb.w r2, [r1, #1]! 9296: f800 2b01 strb.w r2, [r0], #1 while(len) { 929a: 4298 cmp r0, r3 929c: d1f9 bne.n 9292 } 929e: 4770 bx lr 000092a0 : { 92a0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 92a4: b08d sub sp, #52 ; 0x34 92a6: 461d mov r5, r3 92a8: f8dd 8058 ldr.w r8, [sp, #88] ; 0x58 bool outer = p->cfg.outer; 92ac: f898 9012 ldrb.w r9, [r8, #18] int32_t radius = p->cfg.radius; 92b0: f9b8 a010 ldrsh.w sl, [r8, #16] { 92b4: 2300 movs r3, #0 92b6: e9cd 3302 strd r3, r3, [sp, #8] 92ba: 4606 mov r6, r0 lv_area_copy(&rect, &p->cfg.rect); 92bc: 4b8b ldr r3, [pc, #556] ; (94ec ) { 92be: 468b mov fp, r1 lv_area_copy(&rect, &p->cfg.rect); 92c0: a80a add r0, sp, #40 ; 0x28 92c2: f108 0108 add.w r1, r8, #8 bool outer = p->cfg.outer; 92c6: f009 0901 and.w r9, r9, #1 { 92ca: 4617 mov r7, r2 lv_area_copy(&rect, &p->cfg.rect); 92cc: 4798 blx r3 if(outer == false) { 92ce: f9bd 302a ldrsh.w r3, [sp, #42] ; 0x2a 92d2: f1b9 0f00 cmp.w r9, #0 92d6: d13a bne.n 934e if(abs_y < rect.y1 || abs_y > rect.y2) { 92d8: 42bb cmp r3, r7 92da: dd01 ble.n 92e0 return LV_DRAW_MASK_RES_TRANSP; 92dc: 2000 movs r0, #0 92de: e039 b.n 9354 if(abs_y < rect.y1 || abs_y > rect.y2) { 92e0: f9bd 202e ldrsh.w r2, [sp, #46] ; 0x2e 92e4: 42ba cmp r2, r7 92e6: dbf9 blt.n 92dc if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 92e8: f9bd 1028 ldrsh.w r1, [sp, #40] ; 0x28 92ec: eb01 020a add.w r2, r1, sl 92f0: 4593 cmp fp, r2 92f2: eba1 040b sub.w r4, r1, fp 92f6: db07 blt.n 9308 92f8: f9bd 202c ldrsh.w r2, [sp, #44] ; 0x2c 92fc: eb05 000b add.w r0, r5, fp 9300: eba2 020a sub.w r2, r2, sl 9304: 4290 cmp r0, r2 9306: dd09 ble.n 931c (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { 9308: eb03 020a add.w r2, r3, sl if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 930c: 4297 cmp r7, r2 if(abs_y < rect.y1 || abs_y > rect.y2) { 930e: f9bd 002e ldrsh.w r0, [sp, #46] ; 0x2e if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || 9312: db3d blt.n 9390 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { 9314: eba0 020a sub.w r2, r0, sl 9318: 4297 cmp r7, r2 931a: dc39 bgt.n 9390 if(outer == false) { 931c: f1b9 0f00 cmp.w r9, #0 9320: d125 bne.n 936e if(last > len) return LV_DRAW_MASK_RES_TRANSP; 9322: 42a5 cmp r5, r4 9324: dbda blt.n 92dc if(last >= 0) { 9326: 2c00 cmp r4, #0 9328: db03 blt.n 9332 _lv_memset_00(&mask_buf[0], last); 932a: 4b71 ldr r3, [pc, #452] ; (94f0 ) 932c: 4621 mov r1, r4 932e: 4630 mov r0, r6 9330: 4798 blx r3 int32_t first = rect.x2 - abs_x + 1; 9332: f9bd 002c ldrsh.w r0, [sp, #44] ; 0x2c 9336: eba0 000b sub.w r0, r0, fp 933a: 3001 adds r0, #1 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; 933c: 2800 cmp r0, #0 933e: ddcd ble.n 92dc else if(first < len) { 9340: 42a8 cmp r0, r5 9342: da0f bge.n 9364 _lv_memset_00(&mask_buf[kr], len - kr); 9344: 1a29 subs r1, r5, r0 _lv_memset_00(&mask_buf[first], len_tmp); 9346: 4430 add r0, r6 if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); 9348: 4b69 ldr r3, [pc, #420] ; (94f0 ) 934a: 4798 blx r3 934c: e00d b.n 936a if(abs_y < rect.y1 || abs_y > rect.y2) { 934e: 42bb cmp r3, r7 9350: dd03 ble.n 935a return LV_DRAW_MASK_RES_FULL_COVER; 9352: 2001 movs r0, #1 } 9354: b00d add sp, #52 ; 0x34 9356: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(abs_y < rect.y1 || abs_y > rect.y2) { 935a: f9bd 202e ldrsh.w r2, [sp, #46] ; 0x2e 935e: 42ba cmp r2, r7 9360: dac2 bge.n 92e8 9362: e7f6 b.n 9352 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; 9364: b90c cbnz r4, 936a 9366: 42a8 cmp r0, r5 9368: d0f3 beq.n 9352 return LV_DRAW_MASK_RES_CHANGED; 936a: 2002 movs r0, #2 936c: e7f2 b.n 9354 if(first < 0) first = 0; 936e: ea24 70e4 bic.w r0, r4, r4, asr #31 if(first <= len) { 9372: 42a8 cmp r0, r5 9374: dcf9 bgt.n 936a int32_t last = rect.x2 - abs_x - first + 1; 9376: f9bd 102c ldrsh.w r1, [sp, #44] ; 0x2c 937a: eba1 010b sub.w r1, r1, fp 937e: 1a09 subs r1, r1, r0 9380: 3101 adds r1, #1 if(first + last > len) last = len - first; 9382: 1843 adds r3, r0, r1 9384: 42ab cmp r3, r5 9386: dd00 ble.n 938a 9388: 1a29 subs r1, r5, r0 if(first < len && len_tmp >= 0) { 938a: 2900 cmp r1, #0 938c: dbed blt.n 936a 938e: e7da b.n 9346 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9390: f8bd 202c ldrh.w r2, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9394: b29b uxth r3, r3 9396: 3001 adds r0, #1 9398: 1ac0 subs r0, r0, r3 abs_y -= rect.y1; 939a: 1aff subs r7, r7, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 939c: 3201 adds r2, #1 uint32_t r2 = p->cfg.radius * p->cfg.radius; 939e: f9b8 3010 ldrsh.w r3, [r8, #16] 93a2: 1a52 subs r2, r2, r1 abs_y -= rect.y1; 93a4: b23f sxth r7, r7 int32_t w = lv_area_get_width(&rect); 93a6: b212 sxth r2, r2 uint32_t r2 = p->cfg.radius * p->cfg.radius; 93a8: 435b muls r3, r3 if(abs_y < radius || abs_y > h - radius - 1) { 93aa: 45ba cmp sl, r7 int32_t w = lv_area_get_width(&rect); 93ac: 9204 str r2, [sp, #16] int32_t h = lv_area_get_height(&rect); 93ae: b200 sxth r0, r0 uint32_t r2 = p->cfg.radius * p->cfg.radius; 93b0: 9301 str r3, [sp, #4] if(abs_y < radius || abs_y > h - radius - 1) { 93b2: f300 8190 bgt.w 96d6 93b6: eba0 030a sub.w r3, r0, sl 93ba: 429f cmp r7, r3 93bc: dbd5 blt.n 936a y = radius - (h - abs_y) + 1; 93be: 1bc0 subs r0, r0, r7 if((y - 1) == p->y_prev) { 93c0: f8d8 3014 ldr.w r3, [r8, #20] if(radius <= 256) sqrt_mask = 0x800; 93c4: f5ba 7f80 cmp.w sl, #256 ; 0x100 y = radius - (h - abs_y) + 1; 93c8: ebaa 0000 sub.w r0, sl, r0 if(radius <= 256) sqrt_mask = 0x800; 93cc: bfd4 ite le 93ce: f44f 6200 movle.w r2, #2048 ; 0x800 93d2: f44f 4200 movgt.w r2, #32768 ; 0x8000 if((y - 1) == p->y_prev) { 93d6: 4298 cmp r0, r3 y = radius - (h - abs_y) + 1; 93d8: f100 0701 add.w r7, r0, #1 if((y - 1) == p->y_prev) { 93dc: d067 beq.n 94ae _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); 93de: 9b01 ldr r3, [sp, #4] 93e0: 9205 str r2, [sp, #20] 93e2: fb00 3010 mls r0, r0, r0, r3 93e6: a907 add r1, sp, #28 93e8: 4b42 ldr r3, [pc, #264] ; (94f4 ) 93ea: 4798 blx r3 93ec: 9a05 ldr r2, [sp, #20] 93ee: e061 b.n 94b4 x0.i = p->y_prev_x.i; 93f0: f8d8 3018 ldr.w r3, [r8, #24] 93f4: 9306 str r3, [sp, #24] _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); 93f6: 9b01 ldr r3, [sp, #4] 93f8: 9205 str r2, [sp, #20] 93fa: f107 3bff add.w fp, r7, #4294967295 ; 0xffffffff 93fe: fb0b 301b mls r0, fp, fp, r3 9402: a907 add r1, sp, #28 9404: 4b3b ldr r3, [pc, #236] ; (94f4 ) 9406: 4798 blx r3 p->y_prev_x.f = x1.f; 9408: f8bd 301e ldrh.w r3, [sp, #30] 940c: f8a8 301a strh.w r3, [r8, #26] p->y_prev_x.i = x1.i; 9410: f8bd 301c ldrh.w r3, [sp, #28] p->y_prev = y - 1; 9414: f8c8 b014 str.w fp, [r8, #20] if(x0.i == x1.i - 1 && x1.f == 0) { 9418: f8bd 101c ldrh.w r1, [sp, #28] p->y_prev_x.i = x1.i; 941c: f8a8 3018 strh.w r3, [r8, #24] if(x0.i == x1.i - 1 && x1.f == 0) { 9420: f8bd 3018 ldrh.w r3, [sp, #24] p->y_prev_x.i = x0.i; 9424: 9a05 ldr r2, [sp, #20] if(x0.i == x1.i - 1 && x1.f == 0) { 9426: 3901 subs r1, #1 9428: 428b cmp r3, r1 942a: d107 bne.n 943c 942c: f8bd 101e ldrh.w r1, [sp, #30] 9430: b921 cbnz r1, 943c x1.f = 0xFF; 9432: 21ff movs r1, #255 ; 0xff x1.i--; 9434: f8ad 301c strh.w r3, [sp, #28] x1.f = 0xFF; 9438: f8ad 101e strh.w r1, [sp, #30] if(x0.i == x1.i) { 943c: f8bd 101c ldrh.w r1, [sp, #28] 9440: 4299 cmp r1, r3 9442: d15b bne.n 94fc lv_opa_t m = (x0.f + x1.f) >> 1; 9444: f8bd 101a ldrh.w r1, [sp, #26] 9448: f8bd 201e ldrh.w r2, [sp, #30] 944c: 4411 add r1, r2 944e: f3c1 0147 ubfx r1, r1, #1, #8 if(outer) m = 255 - m; 9452: f1b9 0f00 cmp.w r9, #0 9456: d001 beq.n 945c 9458: 43c9 mvns r1, r1 945a: b2c9 uxtb r1, r1 int32_t ofs = radius - x0.i - 1; 945c: ebaa 0303 sub.w r3, sl, r3 9460: 1e5a subs r2, r3, #1 if(kl >= 0 && kl < len) { 9462: 18a7 adds r7, r4, r2 9464: d405 bmi.n 9472 9466: 42af cmp r7, r5 9468: da03 bge.n 9472 mask_buf[kl] = mask_mix(mask_buf[kl], m); 946a: 5df0 ldrb r0, [r6, r7] 946c: 4b22 ldr r3, [pc, #136] ; (94f8 ) 946e: 4798 blx r3 9470: 55f0 strb r0, [r6, r7] int32_t kr = k + (w - ofs - 1); 9472: 9b04 ldr r3, [sp, #16] 9474: 1a9a subs r2, r3, r2 9476: 1e50 subs r0, r2, #1 if(kr >= 0 && kr < len) { 9478: 1904 adds r4, r0, r4 947a: d405 bmi.n 9488 947c: 42ac cmp r4, r5 947e: da03 bge.n 9488 mask_buf[kr] = mask_mix(mask_buf[kr], m); 9480: 5d30 ldrb r0, [r6, r4] 9482: 4b1d ldr r3, [pc, #116] ; (94f8 ) 9484: 4798 blx r3 9486: 5530 strb r0, [r6, r4] if(outer == false) { 9488: f1b9 0f00 cmp.w r9, #0 948c: d122 bne.n 94d4 if(kl > len) { 948e: 42af cmp r7, r5 9490: f73f af24 bgt.w 92dc if(kl >= 0) { 9494: 2f00 cmp r7, #0 9496: db03 blt.n 94a0 _lv_memset_00(&mask_buf[0], kl); 9498: 4b15 ldr r3, [pc, #84] ; (94f0 ) 949a: 4639 mov r1, r7 949c: 4630 mov r0, r6 949e: 4798 blx r3 if(kr < 0) { 94a0: 1c60 adds r0, r4, #1 94a2: f53f af1b bmi.w 92dc if(kr <= len) { 94a6: 42a8 cmp r0, r5 94a8: f73f af5f bgt.w 936a 94ac: e74a b.n 9344 x1.i = p->y_prev_x.i; 94ae: f8d8 3018 ldr.w r3, [r8, #24] 94b2: 9307 str r3, [sp, #28] _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); 94b4: 9b01 ldr r3, [sp, #4] 94b6: 9205 str r2, [sp, #20] 94b8: fb07 3017 mls r0, r7, r7, r3 94bc: a906 add r1, sp, #24 94be: 4b0d ldr r3, [pc, #52] ; (94f4 ) 94c0: 4798 blx r3 p->y_prev_x.f = x0.f; 94c2: f8bd 301a ldrh.w r3, [sp, #26] 94c6: f8a8 301a strh.w r3, [r8, #26] p->y_prev = y; 94ca: f8c8 7014 str.w r7, [r8, #20] p->y_prev_x.i = x0.i; 94ce: f8bd 3018 ldrh.w r3, [sp, #24] 94d2: e7a1 b.n 9418 kl++; 94d4: 1c78 adds r0, r7, #1 94d6: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; 94da: 42ac cmp r4, r5 int32_t len_tmp = kr - first; 94dc: bfd4 ite le 94de: 1a21 suble r1, r4, r0 if(len_tmp + first > len) len_tmp = len - first; 94e0: 1a29 subgt r1, r5, r0 if(first < len && len_tmp >= 0) { 94e2: 42a8 cmp r0, r5 94e4: f6bf af41 bge.w 936a 94e8: e74f b.n 938a 94ea: bf00 nop 94ec: 0000928d .word 0x0000928d 94f0: 0000f019 .word 0x0000f019 94f4: 0000e995 .word 0x0000e995 94f8: 00008eb9 .word 0x00008eb9 int32_t kr = k + (w - ofs - 1); 94fc: 9904 ldr r1, [sp, #16] int32_t ofs = radius - (x0.i + 1); 94fe: 3301 adds r3, #1 9500: ebaa 0303 sub.w r3, sl, r3 int32_t kl = k + ofs; 9504: eb04 0803 add.w r8, r4, r3 int32_t kr = k + (w - ofs - 1); 9508: 1acb subs r3, r1, r3 950a: 3b01 subs r3, #1 950c: 441c add r4, r3 if(outer) { 950e: f1b9 0f00 cmp.w r9, #0 9512: d010 beq.n 9536 int32_t first = kl + 1; 9514: f108 0001 add.w r0, r8, #1 9518: ea20 70e0 bic.w r0, r0, r0, asr #31 if(len_tmp + first > len) len_tmp = len - first; 951c: 42a5 cmp r5, r4 int32_t len_tmp = kr - first; 951e: bfac ite ge 9520: 1a21 subge r1, r4, r0 if(len_tmp + first > len) len_tmp = len - first; 9522: 1a29 sublt r1, r5, r0 if(first < len && len_tmp >= 0) { 9524: 42a8 cmp r0, r5 9526: da06 bge.n 9536 9528: 2900 cmp r1, #0 952a: db04 blt.n 9536 _lv_memset_00(&mask_buf[first], len_tmp); 952c: 4b75 ldr r3, [pc, #468] ; (9704 ) 952e: 9204 str r2, [sp, #16] 9530: 4430 add r0, r6 9532: 4798 blx r3 9534: 9a04 ldr r2, [sp, #16] uint32_t i = x0.i + 1; 9536: f8bd b018 ldrh.w fp, [sp, #24] _lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask); 953a: 9b01 ldr r3, [sp, #4] 953c: 9204 str r2, [sp, #16] 953e: a908 add r1, sp, #32 9540: fb0b 301b mls r0, fp, fp, r3 9544: 4b70 ldr r3, [pc, #448] ; (9708 ) 9546: 4798 blx r3 if(y_prev.f == 0) { 9548: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 954c: 4b6e ldr r3, [pc, #440] ; (9708 ) 954e: 9a04 ldr r2, [sp, #16] uint32_t i = x0.i + 1; 9550: f10b 0a01 add.w sl, fp, #1 if(y_prev.f == 0) { 9554: b939 cbnz r1, 9566 y_prev.i--; 9556: f8bd 1020 ldrh.w r1, [sp, #32] 955a: 3901 subs r1, #1 955c: f8ad 1020 strh.w r1, [sp, #32] y_prev.f = 0xFF; 9560: 21ff movs r1, #255 ; 0xff 9562: f8ad 1022 strh.w r1, [sp, #34] ; 0x22 if(y_prev.i >= y) { 9566: f8bd 1020 ldrh.w r1, [sp, #32] 956a: 42b9 cmp r1, r7 956c: db2e blt.n 95cc _lv_sqrt(r2 - (i * i), &y_next, sqrt_mask); 956e: 9801 ldr r0, [sp, #4] 9570: a909 add r1, sp, #36 ; 0x24 9572: fb0a 001a mls r0, sl, sl, r0 9576: 4798 blx r3 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); 9578: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 957c: f8bd 101a ldrh.w r1, [sp, #26] 9580: f1c2 03ff rsb r3, r2, #255 ; 0xff 9584: f1c1 01ff rsb r1, r1, #255 ; 0xff 9588: 4359 muls r1, r3 958a: f3c1 2147 ubfx r1, r1, #9, #8 if(outer) m = 255 - m; 958e: f1b9 0f00 cmp.w r9, #0 9592: d101 bne.n 9598 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); 9594: 43c9 mvns r1, r1 9596: b2c9 uxtb r1, r1 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); 9598: f1b8 0f00 cmp.w r8, #0 959c: db07 blt.n 95ae 959e: 4545 cmp r5, r8 95a0: dd05 ble.n 95ae 95a2: f816 0008 ldrb.w r0, [r6, r8] 95a6: 4b59 ldr r3, [pc, #356] ; (970c ) 95a8: 4798 blx r3 95aa: f806 0008 strb.w r0, [r6, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); 95ae: 2c00 cmp r4, #0 95b0: db05 blt.n 95be 95b2: 42a5 cmp r5, r4 95b4: dd03 ble.n 95be 95b6: 5d30 ldrb r0, [r6, r4] 95b8: 4b54 ldr r3, [pc, #336] ; (970c ) 95ba: 4798 blx r3 95bc: 5530 strb r0, [r6, r4] kl--; 95be: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff kr++; 95c2: 3401 adds r4, #1 y_prev.f = y_next.f; 95c4: f8ad 2022 strh.w r2, [sp, #34] ; 0x22 i++; 95c8: f10b 0a02 add.w sl, fp, #2 */ 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 2020 ldrh.w r2, [sp, #32] for(; i <= x1.i; i++) { 95d0: f8bd b01c ldrh.w fp, [sp, #28] 95d4: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); 95d8: 4f4c ldr r7, [pc, #304] ; (970c ) uint32_t raw = (ref->i << 4) + (ref->f >> 4); 95da: 0112 lsls r2, r2, #4 95dc: 2300 movs r3, #0 for(; i <= x1.i; i++) { 95de: 45d3 cmp fp, sl 95e0: d242 bcs.n 9668 95e2: b13b cbz r3, 95f4 95e4: 9b02 ldr r3, [sp, #8] 95e6: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 95ea: 9b03 ldr r3, [sp, #12] 95ec: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 95f0: f8ad 1022 strh.w r1, [sp, #34] ; 0x22 if(y_prev.f) { 95f4: f8bd 3022 ldrh.w r3, [sp, #34] ; 0x22 95f8: b1fb cbz r3, 963a m = (y_prev.f * x1.f) >> 9; 95fa: f8bd 101e ldrh.w r1, [sp, #30] 95fe: 4359 muls r1, r3 9600: f3c1 2147 ubfx r1, r1, #9, #8 if(outer) m = 255 - m; 9604: f1b9 0f00 cmp.w r9, #0 9608: d001 beq.n 960e 960a: 43c9 mvns r1, r1 960c: b2c9 uxtb r1, r1 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); 960e: f1b8 0f00 cmp.w r8, #0 9612: db07 blt.n 9624 9614: 4545 cmp r5, r8 9616: dd05 ble.n 9624 9618: f816 0008 ldrb.w r0, [r6, r8] 961c: 4b3b ldr r3, [pc, #236] ; (970c ) 961e: 4798 blx r3 9620: f806 0008 strb.w r0, [r6, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); 9624: 2c00 cmp r4, #0 9626: db05 blt.n 9634 9628: 42a5 cmp r5, r4 962a: dd03 ble.n 9634 962c: 5d30 ldrb r0, [r6, r4] 962e: 4b37 ldr r3, [pc, #220] ; (970c ) 9630: 4798 blx r3 9632: 5530 strb r0, [r6, r4] kl--; 9634: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff kr++; 9638: 3401 adds r4, #1 if(outer == 0) { 963a: f1b9 0f00 cmp.w r9, #0 963e: f47f ae94 bne.w 936a kl++; 9642: f108 0101 add.w r1, r8, #1 if(kl > len) { 9646: 428d cmp r5, r1 9648: f6ff ae48 blt.w 92dc if(kl >= 0) _lv_memset_00(&mask_buf[0], kl); 964c: 2900 cmp r1, #0 964e: db02 blt.n 9656 9650: 4b2c ldr r3, [pc, #176] ; (9704 ) 9652: 4630 mov r0, r6 9654: 4798 blx r3 if(kr < 0) { 9656: 2c00 cmp r4, #0 9658: f6ff ae40 blt.w 92dc if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); 965c: 42a5 cmp r5, r4 965e: f77f ae84 ble.w 936a 9662: 1b29 subs r1, r5, r4 9664: 1930 adds r0, r6, r4 9666: e66f b.n 9348 sqrt_approx(&y_next, &y_prev, r2 - (i * i)); 9668: 9b01 ldr r3, [sp, #4] uint32_t raw = (ref->i << 4) + (ref->f >> 4); 966a: f3c1 100f ubfx r0, r1, #4, #16 966e: 4410 add r0, r2 sqrt_approx(&y_next, &y_prev, r2 - (i * i)); 9670: fb0a 3c1a mls ip, sl, sl, r3 uint32_t raw2 = raw * raw; 9674: fb00 f300 mul.w r3, r0, r0 int32_t d = x - raw2; 9678: ebc3 230c rsb r3, r3, ip, lsl #8 d = (int32_t)d / (int32_t)(2 * raw) + raw; 967c: ea4f 0c40 mov.w ip, r0, lsl #1 9680: fb93 f3fc sdiv r3, r3, ip 9684: 4403 add r3, r0 q->i = d >> 4; 9686: f3c3 100f ubfx r0, r3, #4, #16 q->f = (d & 0xF) << 4; 968a: 011b lsls r3, r3, #4 968c: f003 03f0 and.w r3, r3, #240 ; 0xf0 m = (y_prev.f + y_next.f) >> 1; 9690: 4419 add r1, r3 q->i = d >> 4; 9692: 9003 str r0, [sp, #12] q->f = (d & 0xF) << 4; 9694: 9302 str r3, [sp, #8] m = (y_prev.f + y_next.f) >> 1; 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: db06 blt.n 96b8 96aa: 4545 cmp r5, r8 96ac: dd04 ble.n 96b8 96ae: f816 0008 ldrb.w r0, [r6, r8] 96b2: 47b8 blx r7 96b4: f806 0008 strb.w r0, [r6, r8] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); 96b8: 2c00 cmp r4, #0 96ba: db04 blt.n 96c6 96bc: 42a5 cmp r5, r4 96be: dd02 ble.n 96c6 96c0: 5d30 ldrb r0, [r6, r4] 96c2: 47b8 blx r7 96c4: 5530 strb r0, [r6, r4] y_prev.f = y_next.f; 96c6: 9902 ldr r1, [sp, #8] kl--; 96c8: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff kr++; 96cc: 3401 adds r4, #1 for(; i <= x1.i; i++) { 96ce: f10a 0a01 add.w sl, sl, #1 96d2: 2301 movs r3, #1 96d4: e783 b.n 95de if(y == p->y_prev) { 96d6: f8d8 3014 ldr.w r3, [r8, #20] if(radius <= 256) sqrt_mask = 0x800; 96da: f5ba 7f80 cmp.w sl, #256 ; 0x100 y = radius - abs_y; 96de: ebaa 0707 sub.w r7, sl, r7 if(radius <= 256) sqrt_mask = 0x800; 96e2: bfd4 ite le 96e4: f44f 6200 movle.w r2, #2048 ; 0x800 96e8: f44f 4200 movgt.w r2, #32768 ; 0x8000 if(y == p->y_prev) { 96ec: 42bb cmp r3, r7 96ee: f43f ae7f beq.w 93f0 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); 96f2: 9b01 ldr r3, [sp, #4] 96f4: 9205 str r2, [sp, #20] 96f6: fb07 3017 mls r0, r7, r7, r3 96fa: a906 add r1, sp, #24 96fc: 4b02 ldr r3, [pc, #8] ; (9708 ) 96fe: 4798 blx r3 9700: 9a05 ldr r2, [sp, #20] 9702: e678 b.n 93f6 9704: 0000f019 .word 0x0000f019 9708: 0000e995 .word 0x0000e995 970c: 00008eb9 .word 0x00008eb9 00009710 : { 9710: b573 push {r0, r1, r4, r5, r6, lr} if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; 9712: 4c0e ldr r4, [pc, #56] ; (974c ) { 9714: 2300 movs r3, #0 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; 9716: f854 6033 ldr.w r6, [r4, r3, lsl #3] 971a: b2da uxtb r2, r3 971c: eb04 05c3 add.w r5, r4, r3, lsl #3 9720: b176 cbz r6, 9740 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 9722: 3301 adds r3, #1 9724: 2b10 cmp r3, #16 9726: d1f6 bne.n 9716 LV_LOG_WARN("lv_mask_add: no place to add the mask"); 9728: 4b09 ldr r3, [pc, #36] ; (9750 ) 972a: 9300 str r3, [sp, #0] 972c: 2002 movs r0, #2 972e: 4b09 ldr r3, [pc, #36] ; (9754 ) 9730: 4909 ldr r1, [pc, #36] ; (9758 ) 9732: 4c0a ldr r4, [pc, #40] ; (975c ) 9734: 2257 movs r2, #87 ; 0x57 9736: 47a0 blx r4 return LV_MASK_ID_INV; 9738: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff } 973c: b002 add sp, #8 973e: bd70 pop {r4, r5, r6, pc} LV_GC_ROOT(_lv_draw_mask_list[i]).param = param; 9740: f844 0033 str.w r0, [r4, r3, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id; 9744: 6069 str r1, [r5, #4] return i; 9746: b210 sxth r0, r2 9748: e7f8 b.n 973c 974a: bf00 nop 974c: 200086f4 .word 0x200086f4 9750: 0001fd38 .word 0x0001fd38 9754: 0001fd5e .word 0x0001fd5e 9758: 0001fd03 .word 0x0001fd03 975c: 0000e8e9 .word 0x0000e8e9 00009760 : { 9760: 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); 9764: 4e0d ldr r6, [pc, #52] ; (979c ) { 9766: 4607 mov r7, r0 9768: 4688 mov r8, r1 976a: 4691 mov r9, r2 976c: 469a mov sl, r3 bool changed = false; 976e: 2400 movs r4, #0 while(m->param) { 9770: 6835 ldr r5, [r6, #0] 9772: b925 cbnz r5, 977e return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; 9774: 3401 adds r4, #1 9776: b2e0 uxtb r0, r4 } 9778: b002 add sp, #8 977a: 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); 977e: 9500 str r5, [sp, #0] 9780: 682d ldr r5, [r5, #0] 9782: 4653 mov r3, sl 9784: 464a mov r2, r9 9786: 4641 mov r1, r8 9788: 4638 mov r0, r7 978a: 47a8 blx r5 if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP; 978c: 2800 cmp r0, #0 978e: d0f3 beq.n 9778 else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true; 9790: 2802 cmp r0, #2 9792: bf08 it eq 9794: 2401 moveq r4, #1 m++; 9796: 3608 adds r6, #8 9798: e7ea b.n 9770 979a: bf00 nop 979c: 200086f4 .word 0x200086f4 000097a0 : if(id != LV_MASK_ID_INV) { 97a0: 1c43 adds r3, r0, #1 p = LV_GC_ROOT(_lv_draw_mask_list[id]).param; 97a2: bf18 it ne 97a4: 4b07 ldrne r3, [pc, #28] ; (97c4 ) 97a6: f04f 0200 mov.w r2, #0 97aa: bf1d ittte ne 97ac: f853 1030 ldrne.w r1, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL; 97b0: f843 2030 strne.w r2, [r3, r0, lsl #3] LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; 97b4: eb03 03c0 addne.w r3, r3, r0, lsl #3 void * p = NULL; 97b8: 4611 moveq r1, r2 LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; 97ba: bf18 it ne 97bc: 605a strne r2, [r3, #4] } 97be: 4608 mov r0, r1 97c0: 4770 bx lr 97c2: bf00 nop 97c4: 200086f4 .word 0x200086f4 000097c8 : { 97c8: 2200 movs r2, #0 97ca: 4b08 ldr r3, [pc, #32] ; (97ec ) 97cc: b530 push {r4, r5, lr} void * p = NULL; 97ce: 4611 mov r1, r2 LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; 97d0: 4614 mov r4, r2 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { 97d2: 685d ldr r5, [r3, #4] for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 97d4: 3201 adds r2, #1 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { 97d6: 4285 cmp r5, r0 p = LV_GC_ROOT(_lv_draw_mask_list[i]).param; 97d8: bf04 itt eq 97da: 6819 ldreq r1, [r3, #0] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL; 97dc: e9c3 4400 strdeq r4, r4, [r3] for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 97e0: 2a10 cmp r2, #16 97e2: f103 0308 add.w r3, r3, #8 97e6: d1f4 bne.n 97d2 } 97e8: 4608 mov r0, r1 97ea: bd30 pop {r4, r5, pc} 97ec: 200086f4 .word 0x200086f4 000097f0 : { 97f0: 2300 movs r3, #0 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; 97f2: 4a05 ldr r2, [pc, #20] ; (9808 ) uint8_t cnt = 0; 97f4: 4618 mov r0, r3 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; 97f6: f852 1033 ldr.w r1, [r2, r3, lsl #3] 97fa: b109 cbz r1, 9800 97fc: 3001 adds r0, #1 97fe: b2c0 uxtb r0, r0 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { 9800: 3301 adds r3, #1 9802: 2b10 cmp r3, #16 9804: d1f7 bne.n 97f6 } 9806: 4770 bx lr 9808: 200086f4 .word 0x200086f4 0000980c : { 980c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 9810: f9bd 8018 ldrsh.w r8, [sp, #24] 9814: 4615 mov r5, r2 9816: 460e mov r6, r1 9818: 461f mov r7, r3 _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); 981a: 212c movs r1, #44 ; 0x2c 981c: 4b3b ldr r3, [pc, #236] ; (990c ) { 981e: 4604 mov r4, r0 _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); 9820: 4798 blx r3 if(p1y > p2y) { 9822: 4545 cmp r5, r8 9824: dd05 ble.n 9832 9826: 462b mov r3, r5 9828: 4645 mov r5, r8 982a: 4698 mov r8, r3 982c: 4633 mov r3, r6 p1x = t; 982e: 463e mov r6, r7 p2x = p1x; 9830: 461f mov r7, r3 param->cfg.side = side; 9832: 7c23 ldrb r3, [r4, #16] 9834: f89d 201c ldrb.w r2, [sp, #28] param->cfg.p1.y = p1y; 9838: 8165 strh r5, [r4, #10] param->cfg.side = side; 983a: f362 0301 bfi r3, r2, #0, #2 983e: 7423 strb r3, [r4, #16] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; 9840: eba8 0205 sub.w r2, r8, r5 9844: 1bbb subs r3, r7, r6 9846: ea83 70e3 eor.w r0, r3, r3, asr #31 984a: ea82 71e2 eor.w r1, r2, r2, asr #31 984e: eba0 70e3 sub.w r0, r0, r3, asr #31 9852: eba1 71e2 sub.w r1, r1, r2, asr #31 9856: 4288 cmp r0, r1 9858: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 param->origo.y = p1y; 985c: 82a5 strh r5, [r4, #20] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; 985e: bfd4 ite le 9860: 2000 movle r0, #0 9862: 2001 movgt r0, #1 9864: f360 0100 bfi r1, r0, #0, #1 param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; 9868: 4d29 ldr r5, [pc, #164] ; (9910 ) param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; 986a: f884 1028 strb.w r1, [r4, #40] ; 0x28 param->yx_steep = 0; 986e: 2000 movs r0, #0 if(param->flat) { 9870: 07c9 lsls r1, r1, #31 param->xy_steep = 0; 9872: e9c4 0006 strd r0, r0, [r4, #24] param->cfg.p1.x = p1x; 9876: 8126 strh r6, [r4, #8] param->cfg.p2.x = p2x; 9878: 81a7 strh r7, [r4, #12] param->cfg.p2.y = p2y; 987a: f8a4 800e strh.w r8, [r4, #14] param->origo.x = p1x; 987e: 8266 strh r6, [r4, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; 9880: 6025 str r5, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_LINE; 9882: 7120 strb r0, [r4, #4] if(param->flat) { 9884: d52b bpl.n 98de if(dx) { 9886: b133 cbz r3, 9896 m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ 9888: f44f 1180 mov.w r1, #1048576 ; 0x100000 988c: fb91 f1f3 sdiv r1, r1, r3 param->yx_steep = (m * dy) >> 10; 9890: 4351 muls r1, r2 9892: 1289 asrs r1, r1, #10 9894: 61e1 str r1, [r4, #28] if(dy) { 9896: b132 cbz r2, 98a6 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ 9898: f44f 1180 mov.w r1, #1048576 ; 0x100000 989c: fb91 f2f2 sdiv r2, r1, r2 param->xy_steep = (m * dx) >> 10; 98a0: 4353 muls r3, r2 98a2: 129b asrs r3, r3, #10 98a4: 61a3 str r3, [r4, #24] param->steep = param->yx_steep; 98a6: 69e2 ldr r2, [r4, #28] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98a8: 7c23 ldrb r3, [r4, #16] param->steep = param->yx_steep; 98aa: 6222 str r2, [r4, #32] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98ac: f013 0303 ands.w r3, r3, #3 98b0: d007 beq.n 98c2 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; 98b2: 2b01 cmp r3, #1 98b4: d005 beq.n 98c2 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) { 98b6: 2b02 cmp r3, #2 98b8: d123 bne.n 9902 if(param->steep > 0) param->inv = 1; 98ba: 2a00 cmp r2, #0 98bc: bfd4 ite le 98be: 2300 movle r3, #0 98c0: 2301 movgt r3, #1 if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98c2: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 if(param->steep < 0) param->spx = -param->spx; 98c6: 2a00 cmp r2, #0 if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98c8: f363 0141 bfi r1, r3, #1, #1 param->spx = param->steep >> 2; 98cc: ea4f 03a2 mov.w r3, r2, asr #2 if(param->steep < 0) param->spx = -param->spx; 98d0: bfb8 it lt 98d2: 425b neglt r3, r3 if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; 98d4: f884 1028 strb.w r1, [r4, #40] ; 0x28 if(param->steep < 0) param->spx = -param->spx; 98d8: 6263 str r3, [r4, #36] ; 0x24 } 98da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(dy) { 98de: b132 cbz r2, 98ee m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ 98e0: f44f 1180 mov.w r1, #1048576 ; 0x100000 98e4: fb91 f1f2 sdiv r1, r1, r2 param->xy_steep = (m * dx) >> 10; 98e8: 4359 muls r1, r3 98ea: 1289 asrs r1, r1, #10 98ec: 61a1 str r1, [r4, #24] if(dx) { 98ee: b133 cbz r3, 98fe m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ 98f0: f44f 1180 mov.w r1, #1048576 ; 0x100000 98f4: fb91 f3f3 sdiv r3, r1, r3 param->yx_steep = (m * dy) >> 10; 98f8: 4353 muls r3, r2 98fa: 129b asrs r3, r3, #10 98fc: 61e3 str r3, [r4, #28] param->steep = param->xy_steep; 98fe: 69a2 ldr r2, [r4, #24] 9900: e7d2 b.n 98a8 if(param->steep > 0) param->inv = 0; 9902: 2a00 cmp r2, #0 9904: bfcc ite gt 9906: 2300 movgt r3, #0 9908: 2301 movle r3, #1 990a: e7da b.n 98c2 990c: 0000f019 .word 0x0000f019 9910: 00008ed5 .word 0x00008ed5 00009914 : { 9914: b5f8 push {r3, r4, r5, r6, r7, lr} 9916: 4604 mov r4, r0 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9918: 88c8 ldrh r0, [r1, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 991a: 888d ldrh r5, [r1, #4] 991c: 461f mov r7, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 991e: 884b ldrh r3, [r1, #2] 9920: 3001 adds r0, #1 9922: 1ac0 subs r0, r0, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9924: 880b ldrh r3, [r1, #0] 9926: 3501 adds r5, #1 9928: 1aed subs r5, r5, r3 int32_t short_side = LV_MATH_MIN(w, h); 992a: b200 sxth r0, r0 992c: b22d sxth r5, r5 992e: 42a8 cmp r0, r5 9930: bfa8 it ge 9932: 4628 movge r0, r5 if(radius > short_side >> 1) radius = short_side >> 1; 9934: ebb2 0f60 cmp.w r2, r0, asr #1 9938: ea4f 0360 mov.w r3, r0, asr #1 { 993c: 4616 mov r6, r2 lv_area_copy(¶m->cfg.rect, rect); 993e: f104 0008 add.w r0, r4, #8 if(radius > short_side >> 1) radius = short_side >> 1; 9942: bfc8 it gt 9944: b21e sxthgt r6, r3 lv_area_copy(¶m->cfg.rect, rect); 9946: 4b08 ldr r3, [pc, #32] ; (9968 ) 9948: 4798 blx r3 param->cfg.outer = inv ? 1 : 0; 994a: 7ca3 ldrb r3, [r4, #18] param->cfg.radius = radius; 994c: 8226 strh r6, [r4, #16] param->cfg.outer = inv ? 1 : 0; 994e: f367 0300 bfi r3, r7, #0, #1 9952: 74a3 strb r3, [r4, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius; 9954: 4b05 ldr r3, [pc, #20] ; (996c ) 9956: 6023 str r3, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS; 9958: 2302 movs r3, #2 995a: 7123 strb r3, [r4, #4] param->y_prev_x.i = 0; 995c: f04f 4200 mov.w r2, #2147483648 ; 0x80000000 9960: 2300 movs r3, #0 9962: e9c4 2305 strd r2, r3, [r4, #20] } 9966: bdf8 pop {r3, r4, r5, r6, r7, pc} 9968: 0000928d .word 0x0000928d 996c: 000092a1 .word 0x000092a1 00009970 : lv_draw_mask_remove_id(mask_rout_id); _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) { 9970: b570 push {r4, r5, r6, lr} int32_t min = (dsc->bg_main_color_stop * s) >> 8; 9972: f9b0 4008 ldrsh.w r4, [r0, #8] 9976: fb04 f301 mul.w r3, r4, r1 if(i <= min) return dsc->bg_color; 997a: ebb2 2f23 cmp.w r2, r3, asr #8 int32_t min = (dsc->bg_main_color_stop * s) >> 8; 997e: ea4f 2523 mov.w r5, r3, asr #8 if(i <= min) return dsc->bg_color; 9982: dc01 bgt.n 9988 9984: 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); } 9986: bd70 pop {r4, r5, r6, pc} int32_t max = (dsc->bg_grad_color_stop * s) >> 8; 9988: f9b0 300a ldrsh.w r3, [r0, #10] 998c: fb01 f603 mul.w r6, r1, r3 if(i >= max) return dsc->bg_grad_color; 9990: ebb2 2f26 cmp.w r2, r6, asr #8 9994: db01 blt.n 999a 9996: 8880 ldrh r0, [r0, #4] 9998: e7f5 b.n 9986 int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; 999a: 1b1b subs r3, r3, r4 d = (s * d) >> 8; 999c: 4359 muls r1, r3 i -= min; 999e: 1b52 subs r2, r2, r5 d = (s * d) >> 8; 99a0: 120b asrs r3, r1, #8 lv_opa_t mix = (i * 255) / d; 99a2: b212 sxth r2, r2 { 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))); 99a4: 8841 ldrh r1, [r0, #2] LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 99a6: 7906 ldrb r6, [r0, #4] 99a8: ebc2 2202 rsb r2, r2, r2, lsl #8 99ac: fb92 f3f3 sdiv r3, r2, r3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 99b0: 8882 ldrh r2, [r0, #4] 99b2: 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))); 99b4: 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))); 99b8: f3c1 1145 ubfx r1, r1, #5, #6 99bc: f3c2 1245 ubfx r2, r2, #5, #6 99c0: 4369 muls r1, r5 99c2: fb03 1102 mla r1, r3, 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))); 99c6: 7882 ldrb r2, [r0, #2] 99c8: f002 021f and.w r2, r2, #31 99cc: f006 061f and.w r6, r6, #31 99d0: 436a muls r2, r5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 99d2: f248 0481 movw r4, #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))); 99d6: fb03 2206 mla r2, r3, r6, r2 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 99da: 4361 muls r1, r4 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 99dc: 4362 muls r2, r4 99de: f3c1 51c5 ubfx r1, r1, #23, #6 99e2: f3c2 52c4 ubfx r2, r2, #23, #5 99e6: ea42 1241 orr.w r2, r2, r1, 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))); 99ea: 78c1 ldrb r1, [r0, #3] 99ec: 7946 ldrb r6, [r0, #5] 99ee: 08c9 lsrs r1, r1, #3 99f0: 08f6 lsrs r6, r6, #3 99f2: 4369 muls r1, r5 99f4: fb03 1306 mla r3, r3, r6, r1 99f8: 4363 muls r3, r4 99fa: 0ddb lsrs r3, r3, #23 99fc: ea42 20c3 orr.w r0, r2, r3, lsl #11 return lv_color_mix(dsc->bg_grad_color, dsc->bg_color, mix); 9a00: e7c1 b.n 9986 ... 00009a04 : #endif } LV_ATTRIBUTE_FAST_MEM static void shadow_blur_corner(lv_coord_t size, lv_coord_t sw, uint16_t * sh_ups_buf) { 9a04: 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--; /*Horizontal blur*/ uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a08: 0045 lsls r5, r0, #1 int32_t s_left = sw >> 1; 9a0a: ea4f 0961 mov.w r9, r1, asr #1 { 9a0e: b087 sub sp, #28 if((sw & 1) == 0) s_left--; 9a10: 07cb lsls r3, r1, #31 { 9a12: 4604 mov r4, r0 uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a14: 4b5a ldr r3, [pc, #360] ; (9b80 ) 9a16: 4628 mov r0, r5 { 9a18: 460e mov r6, r1 9a1a: 4617 mov r7, r2 int32_t s_left = sw >> 1; 9a1c: 46ca mov sl, r9 if((sw & 1) == 0) s_left--; 9a1e: bf58 it pl 9a20: f109 3aff addpl.w sl, r9, #4294967295 ; 0xffffffff uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a24: 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; 9a26: 1eab subs r3, r5, #2 9a28: 9300 str r3, [sp, #0] 9a2a: ea4f 0349 mov.w r3, r9, lsl #1 9a2e: 9301 str r3, [sp, #4] 9a30: f06f 0301 mvn.w r3, #1 9a34: fb0a 3303 mla r3, sl, r3, r3 uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); 9a38: 4601 mov r1, r0 for(y = 0; y < size; y++) { 9a3a: 46b8 mov r8, r7 9a3c: f04f 0b00 mov.w fp, #0 9a40: 9302 str r3, [sp, #8] 9a42: 455c cmp r4, fp 9a44: dc22 bgt.n 9a8c sh_ups_tmp_buf += size; } /*Vertical blur*/ uint32_t i; sh_ups_buf[0] = sh_ups_buf[0] / sw; 9a46: 883b ldrh r3, [r7, #0] 9a48: fb93 f3f6 sdiv r3, r3, r6 for(i = 1; i < (uint32_t)size * size; i++) { 9a4c: fb04 f804 mul.w r8, r4, r4 sh_ups_buf[0] = sh_ups_buf[0] / sw; 9a50: 803b strh r3, [r7, #0] for(i = 1; i < (uint32_t)size * size; i++) { 9a52: 463a mov r2, r7 9a54: 463b mov r3, r7 9a56: f04f 0c01 mov.w ip, #1 9a5a: 45c4 cmp ip, r8 9a5c: d341 bcc.n 9ae2 9a5e: 426b negs r3, r5 9a60: fb09 f303 mul.w r3, r9, r3 9a64: 9303 str r3, [sp, #12] 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]; 9a66: 1e63 subs r3, r4, #1 9a68: fb05 7303 mla r3, r5, r3, r7 9a6c: 9302 str r3, [sp, #8] 9a6e: f10a 0301 add.w r3, sl, #1 9a72: 9301 str r3, [sp, #4] 9a74: fb0a 5a05 mla sl, sl, r5, r5 for(x = 0; x < size; x++) { 9a78: f04f 0c00 mov.w ip, #0 9a7c: 4564 cmp r4, ip 9a7e: dc3e bgt.n 9afe 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); 9a80: 4b40 ldr r3, [pc, #256] ; (9b84 ) 9a82: 4608 mov r0, r1 } 9a84: b007 add sp, #28 9a86: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} _lv_mem_buf_release(sh_ups_blur_buf); 9a8a: 4718 bx r3 int32_t v = sh_ups_tmp_buf[size - 1] * sw; 9a8c: 9b00 ldr r3, [sp, #0] 9a8e: 9801 ldr r0, [sp, #4] 9a90: f838 2003 ldrh.w r2, [r8, r3] 9a94: eb00 0c08 add.w ip, r0, r8 9a98: 9802 ldr r0, [sp, #8] 9a9a: 4372 muls r2, r6 for(x = size - 1; x >= 0; x--) { 9a9c: 1e63 subs r3, r4, #1 9a9e: 4440 add r0, r8 sh_ups_blur_buf[x] = v; 9aa0: f821 2013 strh.w r2, [r1, r3, lsl #1] if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; 9aa4: eb03 0e09 add.w lr, r3, r9 9aa8: 4574 cmp r4, lr 9aaa: bfcc ite gt 9aac: f83c e013 ldrhgt.w lr, [ip, r3, lsl #1] uint32_t right_val = 0; 9ab0: f04f 0e00 movle.w lr, #0 v -= right_val; 9ab4: eba2 0e0e sub.w lr, r2, lr if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; 9ab8: eba3 020a sub.w r2, r3, sl 9abc: 2a00 cmp r2, #0 9abe: bfd4 ite le 9ac0: f8b8 2000 ldrhle.w r2, [r8] else left_val = sh_ups_tmp_buf[x - s_left - 1]; 9ac4: f830 2013 ldrhgt.w r2, [r0, r3, lsl #1] for(x = size - 1; x >= 0; x--) { 9ac8: 3b01 subs r3, #1 v += left_val; 9aca: 4472 add r2, lr for(x = size - 1; x >= 0; x--) { 9acc: d2e8 bcs.n 9aa0 _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); 9ace: 4640 mov r0, r8 9ad0: 4b2d ldr r3, [pc, #180] ; (9b88 ) 9ad2: 9103 str r1, [sp, #12] 9ad4: 462a mov r2, r5 9ad6: 4798 blx r3 sh_ups_tmp_buf += size; 9ad8: 44a8 add r8, r5 for(y = 0; y < size; y++) { 9ada: 9903 ldr r1, [sp, #12] 9adc: f10b 0b01 add.w fp, fp, #1 9ae0: e7af b.n 9a42 if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1]; 9ae2: 8858 ldrh r0, [r3, #2] 9ae4: f833 eb02 ldrh.w lr, [r3], #2 9ae8: 4570 cmp r0, lr else sh_ups_buf[i] = sh_ups_buf[i] / sw; 9aea: bf1c itt ne 9aec: fb90 f0f6 sdivne r0, r0, r6 9af0: fa1f fe80 uxthne.w lr, r0 9af4: f8a3 e000 strh.w lr, [r3] for(i = 1; i < (uint32_t)size * size; i++) { 9af8: f10c 0c01 add.w ip, ip, #1 9afc: e7ad b.n 9a5a sh_ups_tmp_buf = &sh_ups_buf[x]; 9afe: 9803 ldr r0, [sp, #12] int32_t v = sh_ups_tmp_buf[0] * sw; 9b00: 8813 ldrh r3, [r2, #0] 9b02: 1810 adds r0, r2, r0 9b04: 4373 muls r3, r6 9b06: 9005 str r0, [sp, #20] 9b08: 2700 movs r7, #0 9b0a: eb0a 0002 add.w r0, sl, r2 9b0e: 9004 str r0, [sp, #16] sh_ups_tmp_buf = &sh_ups_buf[x]; 9b10: 4696 mov lr, r2 int32_t v = sh_ups_tmp_buf[0] * sw; 9b12: 9300 str r3, [sp, #0] 9b14: 4690 mov r8, r2 for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b16: 4638 mov r0, r7 sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT); 9b18: 9b00 ldr r3, [sp, #0] 9b1a: 2b00 cmp r3, #0 9b1c: bfac ite ge 9b1e: f3c3 1b8f ubfxge fp, r3, #6, #16 9b22: f04f 0b00 movlt.w fp, #0 9b26: f821 b010 strh.w fp, [r1, r0, lsl #1] if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; 9b2a: eba0 0b09 sub.w fp, r0, r9 9b2e: f1bb 0f00 cmp.w fp, #0 else top_val = sh_ups_buf[(y - s_right) * size + x]; 9b32: bfca itet gt 9b34: 9b05 ldrgt r3, [sp, #20] if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; 9b36: f8b8 b000 ldrhle.w fp, [r8] else top_val = sh_ups_buf[(y - s_right) * size + x]; 9b3a: f833 b007 ldrhgt.w fp, [r3, r7] v -= top_val; 9b3e: 9b00 ldr r3, [sp, #0] 9b40: eba3 0b0b sub.w fp, r3, fp if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; 9b44: 9b01 ldr r3, [sp, #4] 9b46: 4403 add r3, r0 9b48: 429c cmp r4, r3 9b4a: bfcb itete gt 9b4c: 9b04 ldrgt r3, [sp, #16] else bottom_val = sh_ups_buf[(size - 1) * size + x]; 9b4e: 9b02 ldrle r3, [sp, #8] if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; 9b50: 5bdb ldrhgt r3, [r3, r7] else bottom_val = sh_ups_buf[(size - 1) * size + x]; 9b52: f833 301c ldrhle.w r3, [r3, ip, lsl #1] for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b56: 3001 adds r0, #1 v += bottom_val; 9b58: 445b add r3, fp for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b5a: 4284 cmp r4, r0 v += bottom_val; 9b5c: 9300 str r3, [sp, #0] for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { 9b5e: 44a8 add r8, r5 9b60: 442f add r7, r5 9b62: dcd9 bgt.n 9b18 for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { 9b64: 2300 movs r3, #0 (*sh_ups_tmp_buf) = sh_ups_blur_buf[y]; 9b66: f831 0013 ldrh.w r0, [r1, r3, lsl #1] 9b6a: f8ae 0000 strh.w r0, [lr] for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { 9b6e: 3301 adds r3, #1 9b70: 429c cmp r4, r3 9b72: 44ae add lr, r5 9b74: dcf7 bgt.n 9b66 for(x = 0; x < size; x++) { 9b76: f10c 0c01 add.w ip, ip, #1 9b7a: 3202 adds r2, #2 9b7c: e77e b.n 9a7c 9b7e: bf00 nop 9b80: 0000eeb5 .word 0x0000eeb5 9b84: 0000eb69 .word 0x0000eb69 9b88: 0000ec31 .word 0x0000ec31 00009b8c : 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) { 9b8c: 3901 subs r1, #1 9b8e: f100 0308 add.w r3, r0, #8 *d8 = *s8; 9b92: f811 2f01 ldrb.w r2, [r1, #1]! 9b96: f800 2b01 strb.w r2, [r0], #1 while(len) { 9b9a: 4298 cmp r0, r3 9b9c: d1f9 bne.n 9b92 * @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)); } 9b9e: 4770 bx lr 00009ba0 : { 9ba0: b510 push {r4, lr} _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); 9ba2: 4b0f ldr r3, [pc, #60] ; (9be0 ) 9ba4: 2154 movs r1, #84 ; 0x54 { 9ba6: 4604 mov r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); 9ba8: 4798 blx r3 dsc->bg_color = LV_COLOR_WHITE; 9baa: 4b0e ldr r3, [pc, #56] ; (9be4 ) 9bac: 881b ldrh r3, [r3, #0] 9bae: 8063 strh r3, [r4, #2] dsc->bg_grad_color = LV_COLOR_BLACK; 9bb0: 2200 movs r2, #0 dsc->bg_grad_color_stop = 0xFF; 9bb2: 23ff movs r3, #255 ; 0xff dsc->bg_grad_color = LV_COLOR_BLACK; 9bb4: 80a2 strh r2, [r4, #4] dsc->border_color = LV_COLOR_BLACK; 9bb6: 81e2 strh r2, [r4, #14] dsc->value_color = LV_COLOR_BLACK; 9bb8: f8a4 2046 strh.w r2, [r4, #70] ; 0x46 dsc->shadow_color = LV_COLOR_BLACK; 9bbc: 83e2 strh r2, [r4, #30] dsc->bg_grad_color_stop = 0xFF; 9bbe: 8163 strh r3, [r4, #10] dsc->bg_opa = LV_OPA_COVER; 9bc0: 7323 strb r3, [r4, #12] dsc->outline_opa = LV_OPA_COVER; 9bc2: 7723 strb r3, [r4, #28] dsc->border_opa = LV_OPA_COVER; 9bc4: 7523 strb r3, [r4, #20] dsc->pattern_recolor = LV_COLOR_BLACK; 9bc6: 86a2 strh r2, [r4, #52] ; 0x34 dsc->pattern_opa = LV_OPA_COVER; 9bc8: f884 3036 strb.w r3, [r4, #54] ; 0x36 dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; 9bcc: 4a06 ldr r2, [pc, #24] ; (9be8 ) dsc->value_opa = LV_OPA_COVER; 9bce: f884 3044 strb.w r3, [r4, #68] ; 0x44 dsc->shadow_opa = LV_OPA_COVER; 9bd2: f884 3028 strb.w r3, [r4, #40] ; 0x28 dsc->border_side = LV_BORDER_SIDE_FULL; 9bd6: 230f movs r3, #15 dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; 9bd8: 6322 str r2, [r4, #48] ; 0x30 dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL; 9bda: 6422 str r2, [r4, #64] ; 0x40 dsc->border_side = LV_BORDER_SIDE_FULL; 9bdc: 8263 strh r3, [r4, #18] } 9bde: bd10 pop {r4, pc} 9be0: 0000f019 .word 0x0000f019 9be4: 0001fdf0 .word 0x0001fdf0 9be8: 20000010 .word 0x20000010 00009bec : { 9bec: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 9bf0: 4692 mov sl, r2 * @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); 9bf2: 88c2 ldrh r2, [r0, #6] 9bf4: 8845 ldrh r5, [r0, #2] 9bf6: 1c53 adds r3, r2, #1 9bf8: ed2d 8b04 vpush {d8-d9} 9bfc: 1b5b subs r3, r3, r5 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; 9bfe: b21b sxth r3, r3 9c00: 2b00 cmp r3, #0 { 9c02: b0ad sub sp, #180 ; 0xb4 9c04: 4683 mov fp, r0 9c06: 4688 mov r8, r1 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; 9c08: f341 816e ble.w aee8 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9c0c: 8881 ldrh r1, [r0, #4] 9c0e: 8800 ldrh r0, [r0, #0] 9c10: 1c4b adds r3, r1, #1 9c12: 1a1b subs r3, r3, r0 9c14: b21b sxth r3, r3 9c16: 2b00 cmp r3, #0 9c18: f341 8166 ble.w aee8 if(dsc->shadow_width == 0) return; 9c1c: f9ba 4020 ldrsh.w r4, [sl, #32] 9c20: 2c00 cmp r4, #0 9c22: f000 8542 beq.w a6aa if(dsc->shadow_opa <= LV_OPA_MIN) return; 9c26: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 9c2a: 9308 str r3, [sp, #32] 9c2c: 2b05 cmp r3, #5 9c2e: f240 853c bls.w a6aa if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && 9c32: f8da 7020 ldr.w r7, [sl, #32] dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { 9c36: f9ba 6024 ldrsh.w r6, [sl, #36] ; 0x24 9c3a: f9ba 3026 ldrsh.w r3, [sl, #38] ; 0x26 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && 9c3e: 2f01 cmp r7, #1 9c40: d103 bne.n 9c4a 9c42: b916 cbnz r6, 9c4a dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { 9c44: 2b00 cmp r3, #0 9c46: f340 8530 ble.w a6aa sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9c4a: f8ba 7022 ldrh.w r7, [sl, #34] ; 0x22 9c4e: b29b uxth r3, r3 9c50: eba7 0c03 sub.w ip, r7, r3 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9c54: b2b6 uxth r6, r6 sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; 9c56: 441f add r7, r3 9c58: 4439 add r1, r7 sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9c5a: 1af7 subs r7, r6, r3 sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; 9c5c: 4433 add r3, r6 9c5e: 441a add r2, r3 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; 9c60: eb04 73d4 add.w r3, r4, r4, lsr #31 9c64: 105b asrs r3, r3, #1 9c66: 425b negs r3, r3 sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; 9c68: b292 uxth r2, r2 9c6a: 1e5e subs r6, r3, #1 sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; 9c6c: b289 uxth r1, r1 9c6e: f1c3 0301 rsb r3, r3, #1 9c72: f8ad 1044 strh.w r1, [sp, #68] ; 0x44 sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; 9c76: fa11 f183 uxtah r1, r1, r3 sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1; 9c7a: fa12 f383 uxtah r3, r2, r3 9c7e: f8ad 304e strh.w r3, [sp, #78] ; 0x4e if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9c82: 9b08 ldr r3, [sp, #32] sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; 9c84: f8ad 2046 strh.w r2, [sp, #70] ; 0x46 sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9c88: 4460 add r0, ip sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9c8a: 443d add r5, r7 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9c8c: 2bfb cmp r3, #251 ; 0xfb sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9c8e: b2ad uxth r5, r5 sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9c90: b280 uxth r0, r0 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9c92: bf28 it cs 9c94: 23ff movcs r3, #255 ; 0xff sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; 9c96: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; 9c9a: fa10 f086 uxtah r0, r0, r6 sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; 9c9e: fa15 f686 uxtah r6, r5, r6 sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; 9ca2: f8ad 104c strh.w r1, [sp, #76] ; 0x4c sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; 9ca6: f8ad 5042 strh.w r5, [sp, #66] ; 0x42 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; 9caa: 9308 str r3, [sp, #32] sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; 9cac: f8ad 0048 strh.w r0, [sp, #72] ; 0x48 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 9cb0: 4bac ldr r3, [pc, #688] ; (9f64 ) sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; 9cb2: f8ad 604a strh.w r6, [sp, #74] ; 0x4a lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 9cb6: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 9cb8: 4bab ldr r3, [pc, #684] ; (9f68 ) 9cba: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); 9cbc: 4bab ldr r3, [pc, #684] ; (9f6c ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 9cbe: 4605 mov r5, r0 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); 9cc0: 4642 mov r2, r8 9cc2: a912 add r1, sp, #72 ; 0x48 9cc4: a814 add r0, sp, #80 ; 0x50 9cc6: 4798 blx r3 if(is_common == false) return; 9cc8: 2800 cmp r0, #0 9cca: f000 84ee beq.w a6aa draw_area.x1 -= disp_area->x1; 9cce: 8a29 ldrh r1, [r5, #16] 9cd0: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 draw_area.y1 -= disp_area->y1; 9cd4: 8a6a ldrh r2, [r5, #18] draw_area.x1 -= disp_area->x1; 9cd6: 1a5b subs r3, r3, r1 9cd8: f8ad 3050 strh.w r3, [sp, #80] ; 0x50 draw_area.y1 -= disp_area->y1; 9cdc: f8bd 3052 ldrh.w r3, [sp, #82] ; 0x52 9ce0: 1a9b subs r3, r3, r2 9ce2: f8ad 3052 strh.w r3, [sp, #82] ; 0x52 draw_area.x2 -= disp_area->x1; 9ce6: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 9cea: 1a5b subs r3, r3, r1 9cec: f8ad 3054 strh.w r3, [sp, #84] ; 0x54 draw_area.y2 -= disp_area->y1; 9cf0: f8bd 3056 ldrh.w r3, [sp, #86] ; 0x56 9cf4: 1a9b subs r3, r3, r2 9cf6: f8ad 3056 strh.w r3, [sp, #86] ; 0x56 lv_area_copy(&bg_coords, coords); 9cfa: 4659 mov r1, fp 9cfc: 4b9c ldr r3, [pc, #624] ; (9f70 ) 9cfe: a816 add r0, sp, #88 ; 0x58 9d00: 4798 blx r3 bg_coords.x1 += 1; 9d02: f8bd 5058 ldrh.w r5, [sp, #88] ; 0x58 bg_coords.y1 += 1; 9d06: f8bd 005a ldrh.w r0, [sp, #90] ; 0x5a bg_coords.x2 -= 1; 9d0a: f8bd 205c ldrh.w r2, [sp, #92] ; 0x5c bg_coords.y2 -= 1; 9d0e: f8bd 105e ldrh.w r1, [sp, #94] ; 0x5e 9d12: f8bd 7044 ldrh.w r7, [sp, #68] ; 0x44 bg_coords.x1 += 1; 9d16: 3501 adds r5, #1 bg_coords.y1 += 1; 9d18: 3001 adds r0, #1 bg_coords.x1 += 1; 9d1a: b2ad uxth r5, r5 bg_coords.y1 += 1; 9d1c: b280 uxth r0, r0 bg_coords.x2 -= 1; 9d1e: 1e53 subs r3, r2, #1 9d20: f8ad 305c strh.w r3, [sp, #92] ; 0x5c 9d24: 1b52 subs r2, r2, r5 bg_coords.y2 -= 1; 9d26: 1e4b subs r3, r1, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9d28: 1a09 subs r1, r1, r0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9d2a: b212 sxth r2, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9d2c: b209 sxth r1, r1 int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords)); 9d2e: 428a cmp r2, r1 9d30: bfa8 it ge 9d32: 460a movge r2, r1 bg_coords.y2 -= 1; 9d34: f8ad 305e strh.w r3, [sp, #94] ; 0x5e int32_t r_bg = dsc->radius; 9d38: f9ba 3000 ldrsh.w r3, [sl] 9d3c: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42 bg_coords.y1 += 1; 9d40: f8ad 005a strh.w r0, [sp, #90] ; 0x5a if(r_bg > short_side >> 1) r_bg = short_side >> 1; 9d44: 1052 asrs r2, r2, #1 9d46: 429a cmp r2, r3 9d48: bfa8 it ge 9d4a: 461a movge r2, r3 9d4c: ee08 2a90 vmov s17, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9d50: f8bd 2040 ldrh.w r2, [sp, #64] ; 0x40 bg_coords.x1 += 1; 9d54: f8ad 5058 strh.w r5, [sp, #88] ; 0x58 9d58: 3701 adds r7, #1 9d5a: 1abf subs r7, r7, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9d5c: f8bd 2046 ldrh.w r2, [sp, #70] ; 0x46 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9d60: 4d84 ldr r5, [pc, #528] ; (9f74 ) 9d62: 3201 adds r2, #1 9d64: 1a52 subs r2, r2, r1 9d66: b212 sxth r2, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9d68: b23f sxth r7, r7 short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area)); 9d6a: 4297 cmp r7, r2 9d6c: bfa8 it ge 9d6e: 4617 movge r7, r2 if(r_sh > short_side >> 1) r_sh = short_side >> 1; 9d70: 107f asrs r7, r7, #1 9d72: 429f cmp r7, r3 9d74: bfa8 it ge 9d76: 461f movge r7, r3 int32_t corner_size = sw + r_sh; 9d78: eb04 0907 add.w r9, r4, r7 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9d7c: fb09 f009 mul.w r0, r9, r9 9d80: 0040 lsls r0, r0, #1 9d82: 47a8 blx r5 shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh); 9d84: f9ba 4020 ldrsh.w r4, [sl, #32] lv_area_copy(&sh_area, coords); 9d88: 4b79 ldr r3, [pc, #484] ; (9f70 ) sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9d8a: 9006 str r0, [sp, #24] lv_area_copy(&sh_area, coords); 9d8c: a910 add r1, sp, #64 ; 0x40 9d8e: a81e add r0, sp, #120 ; 0x78 9d90: 4798 blx r3 9d92: f004 0201 and.w r2, r4, #1 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9d96: eb04 73d4 add.w r3, r4, r4, lsr #31 sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9d9a: f8bd 1040 ldrh.w r1, [sp, #64] ; 0x40 9d9e: 920a str r2, [sp, #40] ; 0x28 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9da0: f3c3 034f ubfx r3, r3, #1, #16 9da4: f064 0201 orn r2, r4, #1 sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9da8: f8bd 0044 ldrh.w r0, [sp, #68] ; 0x44 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9dac: 441a add r2, r3 9dae: 443a add r2, r7 sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9db0: 3901 subs r1, #1 9db2: 1a09 subs r1, r1, r0 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); 9db4: b292 uxth r2, r2 9db6: f8ad 207c strh.w r2, [sp, #124] ; 0x7c sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); 9dba: 440a add r2, r1 9dbc: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 9dc0: f8bd 2046 ldrh.w r2, [sp, #70] ; 0x46 9dc4: f8bd 1042 ldrh.w r1, [sp, #66] ; 0x42 sh_area.y1 = sw / 2 + 1; 9dc8: 3301 adds r3, #1 9dca: 3201 adds r2, #1 9dcc: 1a52 subs r2, r2, r1 9dce: b29b uxth r3, r3 9dd0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); 9dd4: 4413 add r3, r2 int32_t size = sw_ori + r; 9dd6: 193e adds r6, r7, r4 lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); 9dd8: 463a mov r2, r7 sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); 9dda: f8ad 307e strh.w r3, [sp, #126] ; 0x7e lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); 9dde: 4f66 ldr r7, [pc, #408] ; (9f78 ) 9de0: 2300 movs r3, #0 9de2: a91e add r1, sp, #120 ; 0x78 9de4: a825 add r0, sp, #148 ; 0x94 9de6: 47b8 blx r7 if(sw_ori == 1) sw = 1; 9de8: 2c01 cmp r4, #1 lv_opa_t * mask_line = _lv_mem_buf_get(size); 9dea: 4630 mov r0, r6 else sw = sw_ori >> 1; 9dec: bf18 it ne 9dee: 1064 asrne r4, r4, #1 lv_opa_t * mask_line = _lv_mem_buf_get(size); 9df0: 47a8 blx r5 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); 9df2: 0073 lsls r3, r6, #1 9df4: 9309 str r3, [sp, #36] ; 0x24 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); 9df6: 9b06 ldr r3, [sp, #24] 9df8: 9305 str r3, [sp, #20] for(y = 0; y < size; y++) { 9dfa: 2300 movs r3, #0 9dfc: 9307 str r3, [sp, #28] lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); 9dfe: b233 sxth r3, r6 9e00: ee08 3a10 vmov s16, r3 lv_opa_t * mask_line = _lv_mem_buf_get(size); 9e04: 4607 mov r7, r0 for(y = 0; y < size; y++) { 9e06: 9b07 ldr r3, [sp, #28] 9e08: 429e cmp r6, r3 9e0a: dc08 bgt.n 9e1e _lv_mem_buf_release(mask_line); 9e0c: 4b5b ldr r3, [pc, #364] ; (9f7c ) 9e0e: 4638 mov r0, r7 9e10: 4798 blx r3 if(sw == 1) { 9e12: 2c01 cmp r4, #1 for(x = 0; x < size * size; x++) { 9e14: fb06 f506 mul.w r5, r6, r6 if(sw == 1) { 9e18: d174 bne.n 9f04 for(i = 0; i < size * size; i++) { 9e1a: 2300 movs r3, #0 9e1c: e03e b.n 9e9c _lv_memset_ff(mask_line, size); 9e1e: 4b58 ldr r3, [pc, #352] ; (9f80 ) 9e20: 4631 mov r1, r6 9e22: 4638 mov r0, r7 9e24: 4798 blx r3 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); 9e26: ab25 add r3, sp, #148 ; 0x94 9e28: 9300 str r3, [sp, #0] 9e2a: f9bd 201c ldrsh.w r2, [sp, #28] 9e2e: 9d25 ldr r5, [sp, #148] ; 0x94 9e30: ee18 3a10 vmov r3, s16 9e34: 2100 movs r1, #0 9e36: 4638 mov r0, r7 9e38: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { 9e3a: b958 cbnz r0, 9e54 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); 9e3c: 9909 ldr r1, [sp, #36] ; 0x24 9e3e: 9805 ldr r0, [sp, #20] 9e40: 4b50 ldr r3, [pc, #320] ; (9f84 ) 9e42: 4798 blx r3 sh_ups_tmp_buf += size; 9e44: 9b09 ldr r3, [sp, #36] ; 0x24 9e46: 9a05 ldr r2, [sp, #20] 9e48: 441a add r2, r3 for(y = 0; y < size; y++) { 9e4a: 9b07 ldr r3, [sp, #28] sh_ups_tmp_buf += size; 9e4c: 9205 str r2, [sp, #20] for(y = 0; y < size; y++) { 9e4e: 3301 adds r3, #1 9e50: 9307 str r3, [sp, #28] 9e52: e7d8 b.n 9e06 sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw; 9e54: 783b ldrb r3, [r7, #0] 9e56: 9a05 ldr r2, [sp, #20] 9e58: 9805 ldr r0, [sp, #20] 9e5a: 019b lsls r3, r3, #6 9e5c: fb93 f3f4 sdiv r3, r3, r4 9e60: f822 3b02 strh.w r3, [r2], #2 for(i = 1; i < size; i++) { 9e64: 9b09 ldr r3, [sp, #36] ; 0x24 9e66: 4639 mov r1, r7 9e68: 1818 adds r0, r3, r0 9e6a: 4282 cmp r2, r0 9e6c: d0ea beq.n 9e44 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; 9e6e: 468c mov ip, r1 9e70: f811 3f01 ldrb.w r3, [r1, #1]! 9e74: f89c c000 ldrb.w ip, [ip] 9e78: 459c cmp ip, r3 else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; 9e7a: bf17 itett ne 9e7c: 019b lslne r3, r3, #6 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; 9e7e: f832 3c02 ldrheq.w r3, [r2, #-2] else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; 9e82: fb93 f3f4 sdivne r3, r3, r4 9e86: b29b uxthne r3, r3 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; 9e88: f822 3b02 strh.w r3, [r2], #2 for(i = 1; i < size; i++) { 9e8c: e7ed b.n 9e6a res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT); 9e8e: 9a06 ldr r2, [sp, #24] 9e90: 9906 ldr r1, [sp, #24] 9e92: f832 2013 ldrh.w r2, [r2, r3, lsl #1] 9e96: 0992 lsrs r2, r2, #6 9e98: 54ca strb r2, [r1, r3] for(i = 0; i < size * size; i++) { 9e9a: 3301 adds r3, #1 9e9c: 42ab cmp r3, r5 9e9e: d1f6 bne.n 9e8e 9ea0: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2; 9ea4: f8bd 204a ldrh.w r2, [sp, #74] ; 0x4a 9ea8: 3301 adds r3, #1 9eaa: 1a9b subs r3, r3, r2 9eac: f3c3 31c0 ubfx r1, r3, #15, #1 9eb0: fa01 f383 sxtah r3, r1, r3 9eb4: eb02 0363 add.w r3, r2, r3, asr #1 9eb8: b29a uxth r2, r3 9eba: b21b sxth r3, r3 9ebc: 9309 str r3, [sp, #36] ; 0x24 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 9ebe: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c 9ec2: 920b str r2, [sp, #44] ; 0x2c lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; 9ec4: f8bd 2048 ldrh.w r2, [sp, #72] ; 0x48 9ec8: 3301 adds r3, #1 9eca: 1a9b subs r3, r3, r2 9ecc: f3c3 31c0 ubfx r1, r3, #15, #1 9ed0: fa01 f383 sxtah r3, r1, r3 9ed4: eb02 0363 add.w r3, r2, r3, asr #1 9ed8: b29a uxth r2, r3 9eda: b21b sxth r3, r3 9edc: 930a str r3, [sp, #40] ; 0x28 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9ede: 4b2a ldr r3, [pc, #168] ; (9f88 ) lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; 9ee0: 920c str r2, [sp, #48] ; 0x30 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9ee2: 4798 blx r3 9ee4: 2800 cmp r0, #0 9ee6: d13b bne.n 9f60 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; 9ee8: f9ba 3022 ldrsh.w r3, [sl, #34] ; 0x22 9eec: 2b00 cmp r3, #0 9eee: d14f bne.n 9f90 9ef0: f9ba 2024 ldrsh.w r2, [sl, #36] ; 0x24 9ef4: b922 cbnz r2, 9f00 else if(dsc->shadow_spread != 0) simple_mode = false; 9ef6: f9ba 3026 ldrsh.w r3, [sl, #38] ; 0x26 9efa: fab3 f383 clz r3, r3 9efe: 095b lsrs r3, r3, #5 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9f00: 9307 str r3, [sp, #28] 9f02: e046 b.n 9f92 shadow_blur_corner(size, sw, sh_buf); 9f04: b230 sxth r0, r6 9f06: 4621 mov r1, r4 9f08: 9a06 ldr r2, [sp, #24] 9f0a: 4f20 ldr r7, [pc, #128] ; (9f8c ) 9f0c: 9005 str r0, [sp, #20] 9f0e: 47b8 blx r7 sw += sw_ori & 1; 9f10: 990a ldr r1, [sp, #40] ; 0x28 9f12: 4421 add r1, r4 if(sw > 1) { 9f14: 2901 cmp r1, #1 9f16: dd0c ble.n 9f32 sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; 9f18: 9b06 ldr r3, [sp, #24] 9f1a: 9a06 ldr r2, [sp, #24] 9f1c: 881b ldrh r3, [r3, #0] for(i = 1; i < (uint32_t) size * size; i++) { 9f1e: 9805 ldr r0, [sp, #20] sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; 9f20: 019b lsls r3, r3, #6 for(i = 1; i < (uint32_t) size * size; i++) { 9f22: 2401 movs r4, #1 sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; 9f24: fbb3 f3f1 udiv r3, r3, r1 9f28: 8013 strh r3, [r2, #0] for(i = 1; i < (uint32_t) size * size; i++) { 9f2a: 42ac cmp r4, r5 9f2c: d303 bcc.n 9f36 shadow_blur_corner(size, sw, sh_buf); 9f2e: 9a06 ldr r2, [sp, #24] 9f30: 47b8 blx r7 for(i = 1; i < (uint32_t) size * size; i++) { 9f32: 2300 movs r3, #0 9f34: e011 b.n 9f5a if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1]; 9f36: 8853 ldrh r3, [r2, #2] 9f38: f832 6b02 ldrh.w r6, [r2], #2 9f3c: 42b3 cmp r3, r6 else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; 9f3e: bf1e ittt ne 9f40: 019b lslne r3, r3, #6 9f42: fbb3 f3f1 udivne r3, r3, r1 9f46: b29e uxthne r6, r3 9f48: 8016 strh r6, [r2, #0] for(i = 1; i < (uint32_t) size * size; i++) { 9f4a: 3401 adds r4, #1 9f4c: e7ed b.n 9f2a res_buf[x] = sh_buf[x]; 9f4e: 9a06 ldr r2, [sp, #24] 9f50: 9906 ldr r1, [sp, #24] 9f52: f832 2013 ldrh.w r2, [r2, r3, lsl #1] 9f56: 54ca strb r2, [r1, r3] for(x = 0; x < size * size; x++) { 9f58: 3301 adds r3, #1 9f5a: 42ab cmp r3, r5 9f5c: d1f7 bne.n 9f4e 9f5e: e79f b.n 9ea0 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; 9f60: 2300 movs r3, #0 9f62: e7cd b.n 9f00 9f64: 00004fe9 .word 0x00004fe9 9f68: 0000d9e1 .word 0x0000d9e1 9f6c: 0000de8d .word 0x0000de8d 9f70: 00009b8d .word 0x00009b8d 9f74: 0000eeb5 .word 0x0000eeb5 9f78: 00009915 .word 0x00009915 9f7c: 0000eb69 .word 0x0000eb69 9f80: 0000f075 .word 0x0000f075 9f84: 0000f019 .word 0x0000f019 9f88: 000097f1 .word 0x000097f1 9f8c: 00009a05 .word 0x00009a05 9f90: 9007 str r0, [sp, #28] 9f92: f8bd 004c ldrh.w r0, [sp, #76] ; 0x4c 9f96: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); 9f9a: 4db2 ldr r5, [pc, #712] ; (a264 ) 9f9c: 3001 adds r0, #1 9f9e: 1ac0 subs r0, r0, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); 9fa0: b200 sxth r0, r0 9fa2: 4bb1 ldr r3, [pc, #708] ; (a268 ) 9fa4: 4798 blx r3 lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); 9fa6: ee18 2a90 vmov r2, s17 9faa: 2301 movs r3, #1 9fac: a916 add r1, sp, #88 ; 0x58 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); 9fae: ee08 0a10 vmov s16, r0 lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); 9fb2: a825 add r0, sp, #148 ; 0x94 9fb4: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); 9fb6: 4bad ldr r3, [pc, #692] ; (a26c ) 9fb8: 2100 movs r1, #0 9fba: a825 add r0, sp, #148 ; 0x94 9fbc: 4798 blx r3 a.x2 = sh_area.x2; 9fbe: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c 9fc2: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.x1 = a.x2 - corner_size + 1; 9fc6: fa1f f289 uxth.w r2, r9 9fca: 3301 adds r3, #1 9fcc: 1a9b subs r3, r3, r2 9fce: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.y1 = sh_area.y1; 9fd2: f9bd 304a ldrsh.w r3, [sp, #74] ; 0x4a 9fd6: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = a.y1 + corner_size - 1; 9fda: 3b01 subs r3, #1 9fdc: 4413 add r3, r2 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); 9fde: ee08 0a90 vmov s17, r0 a.x1 = a.x2 - corner_size + 1; 9fe2: 9205 str r2, [sp, #20] a.y2 = a.y1 + corner_size - 1; 9fe4: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 bool has_com = _lv_area_intersect(&ca, &a, clip); 9fe8: 4642 mov r2, r8 9fea: 4ba1 ldr r3, [pc, #644] ; (a270 ) 9fec: a918 add r1, sp, #96 ; 0x60 9fee: a81a add r0, sp, #104 ; 0x68 9ff0: 4798 blx r3 if(has_com) { 9ff2: 2800 cmp r0, #0 9ff4: d039 beq.n a06a if(ca.y2 > h_half) ca.y2 = h_half; 9ff6: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e 9ffa: 9a09 ldr r2, [sp, #36] ; 0x24 9ffc: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a000: 4293 cmp r3, r2 a002: bfc4 itt gt a004: 4613 movgt r3, r2 a006: f8ad 306e strhgt.w r3, [sp, #110] ; 0x6e if(ca.x1 <= w_half) ca.x1 = w_half + 1; a00a: 9a0a ldr r2, [sp, #40] ; 0x28 a00c: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 a010: 4293 cmp r3, r2 a012: bfd8 it le a014: 9b0c ldrle r3, [sp, #48] ; 0x30 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a016: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a a01a: bfdc itt le a01c: 3301 addle r3, #1 a01e: f8ad 3068 strhle.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a022: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a026: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a02a: 3601 adds r6, #1 a02c: 1b76 subs r6, r6, r5 a02e: b236 sxth r6, r6 if(w > 0) { a030: 2e00 cmp r6, #0 a032: dd1a ble.n a06a return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a034: 3301 adds r3, #1 a036: 1a9b subs r3, r3, r2 a038: b21b sxth r3, r3 a03a: 930d str r3, [sp, #52] ; 0x34 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a03c: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 a040: 1ad2 subs r2, r2, r3 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a042: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 a046: 1aed subs r5, r5, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a048: 9b06 ldr r3, [sp, #24] a04a: fb09 5502 mla r5, r9, r2, r5 a04e: 441d add r5, r3 lv_area_copy(&fa, &ca); a050: a91a add r1, sp, #104 ; 0x68 a052: 4b88 ldr r3, [pc, #544] ; (a274 ) a054: a81e add r0, sp, #120 ; 0x78 a056: 4798 blx r3 fa.y2 = fa.y1; a058: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a05c: 2700 movs r7, #0 fa.y2 = fa.y1; a05e: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a062: 9b0d ldr r3, [sp, #52] ; 0x34 a064: 429f cmp r7, r3 a066: f2c0 80a3 blt.w a1b0 a.x2 = sh_area.x2; a06a: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c a.x1 = a.x2 - corner_size + 1; a06e: 9a05 ldr r2, [sp, #20] a.x2 = sh_area.x2; a070: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.x1 = a.x2 - corner_size + 1; a074: 3301 adds r3, #1 a076: 1a9b subs r3, r3, r2 a.y1 = sh_area.y2 - corner_size + 1; a078: f9bd 204e ldrsh.w r2, [sp, #78] ; 0x4e a07c: 9905 ldr r1, [sp, #20] a.x1 = a.x2 - corner_size + 1; a07e: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.y1 = sh_area.y2 - corner_size + 1; a082: 1c53 adds r3, r2, #1 a084: 1a5b subs r3, r3, r1 a086: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2; a08a: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a08e: 4b78 ldr r3, [pc, #480] ; (a270 ) a090: 4642 mov r2, r8 a092: a918 add r1, sp, #96 ; 0x60 a094: a81a add r0, sp, #104 ; 0x68 a096: 4798 blx r3 if(has_com) { a098: 2800 cmp r0, #0 a09a: d03a beq.n a112 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a09c: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a a0a0: 9a09 ldr r2, [sp, #36] ; 0x24 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a0a2: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a0a6: 4293 cmp r3, r2 a0a8: bfd8 it le a0aa: 9b0b ldrle r3, [sp, #44] ; 0x2c if(ca.x1 <= w_half) ca.x1 = w_half + 1; a0ac: 9a0a ldr r2, [sp, #40] ; 0x28 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a0ae: bfdc itt le a0b0: 3301 addle r3, #1 a0b2: f8ad 306a strhle.w r3, [sp, #106] ; 0x6a if(ca.x1 <= w_half) ca.x1 = w_half + 1; a0b6: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a0ba: f9bd 106a ldrsh.w r1, [sp, #106] ; 0x6a a0be: 4293 cmp r3, r2 a0c0: bfd8 it le a0c2: 9b0c ldrle r3, [sp, #48] ; 0x30 a0c4: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e a0c8: bfdc itt le a0ca: 3301 addle r3, #1 a0cc: f8ad 3068 strhle.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a0d0: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 a0d4: 3601 adds r6, #1 a0d6: 1b76 subs r6, r6, r5 a0d8: b236 sxth r6, r6 if(w > 0) { a0da: 2e00 cmp r6, #0 a0dc: dd19 ble.n a112 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a0de: 1c53 adds r3, r2, #1 a0e0: 1a5b subs r3, r3, r1 a0e2: b21b sxth r3, r3 a0e4: 930c str r3, [sp, #48] ; 0x30 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a0e6: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 a0ea: 1a9b subs r3, r3, r2 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a0ec: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 a0f0: 1aad subs r5, r5, r2 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a0f2: fb09 5503 mla r5, r9, r3, r5 a0f6: 9b06 ldr r3, [sp, #24] lv_area_copy(&fa, &ca); a0f8: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a0fa: 441d add r5, r3 lv_area_copy(&fa, &ca); a0fc: a81e add r0, sp, #120 ; 0x78 a0fe: 4b5d ldr r3, [pc, #372] ; (a274 ) a100: 4798 blx r3 fa.y1 = fa.y2; /*Fill from bottom to top*/ a102: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a106: f8ad 307a strh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a10a: 2700 movs r7, #0 a10c: 9b0c ldr r3, [sp, #48] ; 0x30 a10e: 429f cmp r7, r3 a110: db7a blt.n a208 a.x2 = sh_area.x2; a112: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c a.x1 = a.x2 - corner_size + 1; a116: 9a05 ldr r2, [sp, #20] a.x2 = sh_area.x2; a118: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.x1 = a.x2 - corner_size + 1; a11c: 3301 adds r3, #1 a11e: 1a9b subs r3, r3, r2 a120: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.y1 = sh_area.y1 + corner_size; a124: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a a128: 4413 add r3, r2 a12a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2 - corner_size; a12e: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e a132: 1a9b subs r3, r3, r2 a134: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a138: 4642 mov r2, r8 a13a: 4b4d ldr r3, [pc, #308] ; (a270 ) a13c: a918 add r1, sp, #96 ; 0x60 a13e: a81a add r0, sp, #104 ; 0x68 a140: 4798 blx r3 if(has_com) { a142: b380 cbz r0, a1a6 if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2); a144: 9b07 ldr r3, [sp, #28] a146: b143 cbz r3, a15a a148: f9bb 3004 ldrsh.w r3, [fp, #4] a14c: f9bd 2068 ldrsh.w r2, [sp, #104] ; 0x68 a150: 4293 cmp r3, r2 a152: bfb8 it lt a154: 4613 movlt r3, r2 a156: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a15a: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a15e: f9bd 6068 ldrsh.w r6, [sp, #104] ; 0x68 a162: 3501 adds r5, #1 a164: 1bad subs r5, r5, r6 a166: b22d sxth r5, r5 if(w > 0) { a168: 2d00 cmp r5, #0 a16a: dd1c ble.n a1a6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a16c: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e a170: f8bd 206a ldrh.w r2, [sp, #106] ; 0x6a a174: 3301 adds r3, #1 a176: 1a9b subs r3, r3, r2 sh_buf_tmp += ca.x1 - a.x1; a178: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 a17c: b21b sxth r3, r3 a17e: 930c str r3, [sp, #48] ; 0x30 a180: 1ab6 subs r6, r6, r2 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); a182: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff sh_buf_tmp += ca.x1 - a.x1; a186: fb09 6603 mla r6, r9, r3, r6 a18a: 9b06 ldr r3, [sp, #24] lv_area_copy(&fa, &ca); a18c: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += ca.x1 - a.x1; a18e: 441e add r6, r3 lv_area_copy(&fa, &ca); a190: a81e add r0, sp, #120 ; 0x78 a192: 4b38 ldr r3, [pc, #224] ; (a274 ) a194: 4798 blx r3 fa.y2 = fa.y1; a196: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a19a: 2700 movs r7, #0 fa.y2 = fa.y1; a19c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a1a0: 9b0c ldr r3, [sp, #48] ; 0x30 a1a2: 429f cmp r7, r3 a1a4: db6e blt.n a284 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); a1a6: 9a06 ldr r2, [sp, #24] for(x = 0; x < corner_size / 2; x++) { a1a8: ea4f 0669 mov.w r6, r9, asr #1 a1ac: 2000 movs r0, #0 a1ae: e0a3 b.n a2f8 _lv_memcpy(mask_buf, sh_buf_tmp, w); a1b0: 4629 mov r1, r5 a1b2: 4b31 ldr r3, [pc, #196] ; (a278 ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a1b4: 4c31 ldr r4, [pc, #196] ; (a27c ) _lv_memcpy(mask_buf, sh_buf_tmp, w); a1b6: 4632 mov r2, r6 a1b8: ee18 0a10 vmov r0, s16 a1bc: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a1be: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a a1c2: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 a1c6: 4633 mov r3, r6 a1c8: ee18 0a10 vmov r0, s16 a1cc: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a1ce: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 a1d2: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a1d4: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a1d6: 9b08 ldr r3, [sp, #32] a1d8: 4c29 ldr r4, [pc, #164] ; (a280 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a1da: bf08 it eq a1dc: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a1de: e9cd 0300 strd r0, r3, [sp] a1e2: a91e add r1, sp, #120 ; 0x78 a1e4: ee18 3a10 vmov r3, s16 a1e8: f8ba 201e ldrh.w r2, [sl, #30] a1ec: 4640 mov r0, r8 a1ee: 47a0 blx r4 fa.y1++; a1f0: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a1f4: 3301 adds r3, #1 a1f6: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; a1fa: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a1fe: 3301 adds r3, #1 a200: b21b sxth r3, r3 sh_buf_tmp += corner_size; a202: 444d add r5, r9 for(y = 0; y < h; y++) { a204: 3701 adds r7, #1 a206: e72a b.n a05e _lv_memcpy(mask_buf, sh_buf_tmp, w); a208: 4629 mov r1, r5 a20a: 4b1b ldr r3, [pc, #108] ; (a278 ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a20c: 4c1b ldr r4, [pc, #108] ; (a27c ) _lv_memcpy(mask_buf, sh_buf_tmp, w); a20e: 4632 mov r2, r6 a210: ee18 0a10 vmov r0, s16 a214: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a216: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a a21a: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 a21e: 4633 mov r3, r6 a220: ee18 0a10 vmov r0, s16 a224: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a226: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 a22a: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a22c: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a22e: 9b08 ldr r3, [sp, #32] a230: 4c13 ldr r4, [pc, #76] ; (a280 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a232: bf08 it eq a234: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, a236: e9cd 0300 strd r0, r3, [sp] a23a: a91e add r1, sp, #120 ; 0x78 a23c: ee18 3a10 vmov r3, s16 a240: f8ba 201e ldrh.w r2, [sl, #30] a244: 4640 mov r0, r8 a246: 47a0 blx r4 fa.y1--; a248: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a24c: 3b01 subs r3, #1 a24e: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2--; a252: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a256: 3b01 subs r3, #1 a258: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; a25c: 444d add r5, r9 for(y = 0; y < h; y++) { a25e: 3701 adds r7, #1 a260: e754 b.n a10c a262: bf00 nop a264: 00009915 .word 0x00009915 a268: 0000eeb5 .word 0x0000eeb5 a26c: 00009711 .word 0x00009711 a270: 0000de8d .word 0x0000de8d a274: 00009b8d .word 0x00009b8d a278: 0000ec31 .word 0x0000ec31 a27c: 00009761 .word 0x00009761 a280: 000061f1 .word 0x000061f1 _lv_memcpy(mask_buf, sh_buf_tmp, w); a284: 4b20 ldr r3, [pc, #128] ; (a308 ) a286: ee18 0a10 vmov r0, s16 a28a: 462a mov r2, r5 a28c: 4631 mov r1, r6 a28e: 4798 blx r3 if(simple_mode) { a290: 9b07 ldr r3, [sp, #28] a292: b953 cbnz r3, a2aa mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); a294: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a a298: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 a29c: 4c1b ldr r4, [pc, #108] ; (a30c ) a29e: ee18 0a10 vmov r0, s16 a2a2: 462b mov r3, r5 a2a4: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; a2a6: 2801 cmp r0, #1 a2a8: d100 bne.n a2ac a2aa: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, a2ac: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 a2b0: 9302 str r3, [sp, #8] a2b2: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 a2b6: 4c16 ldr r4, [pc, #88] ; (a310 ) a2b8: e9cd 0300 strd r0, r3, [sp] a2bc: a91e add r1, sp, #120 ; 0x78 a2be: ee18 3a10 vmov r3, s16 a2c2: f8ba 201e ldrh.w r2, [sl, #30] a2c6: 4640 mov r0, r8 a2c8: 47a0 blx r4 fa.y1++; a2ca: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a a2ce: 3301 adds r3, #1 a2d0: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; a2d4: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a2d8: 3301 adds r3, #1 a2da: b21b sxth r3, r3 for(y = 0; y < h; y++) { a2dc: 3701 adds r7, #1 a2de: e75d b.n a19c lv_opa_t tmp = sh_buf_tmp[x]; a2e0: f811 7f01 ldrb.w r7, [r1, #1]! sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1]; a2e4: f813 cd01 ldrb.w ip, [r3, #-1]! a2e8: f881 c000 strb.w ip, [r1] sh_buf_tmp[corner_size - x - 1] = tmp; a2ec: 701f strb r7, [r3, #0] for(x = 0; x < corner_size / 2; x++) { a2ee: 1aef subs r7, r5, r3 a2f0: 42be cmp r6, r7 a2f2: dcf5 bgt.n a2e0 sh_buf_tmp += corner_size; a2f4: 444a add r2, r9 for(y = 0; y < corner_size; y++) { a2f6: 3001 adds r0, #1 a2f8: 4581 cmp r9, r0 a2fa: dd0b ble.n a314 a2fc: eb09 0502 add.w r5, r9, r2 a300: 1e51 subs r1, r2, #1 a302: 462b mov r3, r5 a304: e7f3 b.n a2ee a306: bf00 nop a308: 0000ec31 .word 0x0000ec31 a30c: 00009761 .word 0x00009761 a310: 000061f1 .word 0x000061f1 a.x1 = sh_area.x1; a314: f9bd 3048 ldrsh.w r3, [sp, #72] ; 0x48 a.x2 = a.x1 + corner_size - 1; a318: 9a05 ldr r2, [sp, #20] a.x1 = sh_area.x1; a31a: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = a.x1 + corner_size - 1; a31e: 3b01 subs r3, #1 a320: 4413 add r3, r2 a322: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1; a326: f9bd 304a ldrsh.w r3, [sp, #74] ; 0x4a a32a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = a.y1 + corner_size - 1; a32e: 3b01 subs r3, #1 a330: 4413 add r3, r2 a332: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a336: 4642 mov r2, r8 a338: 4bb8 ldr r3, [pc, #736] ; (a61c ) a33a: a918 add r1, sp, #96 ; 0x60 a33c: a81a add r0, sp, #104 ; 0x68 a33e: 4798 blx r3 if(has_com) { a340: 2800 cmp r0, #0 a342: d037 beq.n a3b4 if(ca.y2 > h_half) ca.y2 = h_half; a344: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e a348: 9a09 ldr r2, [sp, #36] ; 0x24 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a34a: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 a34e: 4293 cmp r3, r2 a350: bfc4 itt gt a352: 4613 movgt r3, r2 a354: f8ad 306e strhgt.w r3, [sp, #110] ; 0x6e if(ca.x2 > w_half) ca.x2 = w_half; a358: 9a0a ldr r2, [sp, #40] ; 0x28 a35a: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c a35e: 4293 cmp r3, r2 a360: bfc4 itt gt a362: 4613 movgt r3, r2 a364: f8ad 306c strhgt.w r3, [sp, #108] ; 0x6c a368: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a36c: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e a370: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a374: 3601 adds r6, #1 a376: 1b76 subs r6, r6, r5 a378: b236 sxth r6, r6 if(w > 0) { a37a: 2e00 cmp r6, #0 a37c: dd1a ble.n a3b4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a37e: 3301 adds r3, #1 a380: 1a9b subs r3, r3, r2 a382: b21b sxth r3, r3 a384: 930c str r3, [sp, #48] ; 0x30 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a386: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 a38a: 1ad2 subs r2, r2, r3 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a38c: f9bd 3060 ldrsh.w r3, [sp, #96] ; 0x60 a390: 1aed subs r5, r5, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a392: 9b06 ldr r3, [sp, #24] a394: fb09 5502 mla r5, r9, r2, r5 a398: 441d add r5, r3 lv_area_copy(&fa, &ca); a39a: a91a add r1, sp, #104 ; 0x68 a39c: 4ba0 ldr r3, [pc, #640] ; (a620 ) a39e: a81e add r0, sp, #120 ; 0x78 a3a0: 4798 blx r3 fa.y2 = fa.y1; a3a2: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a3a6: 2700 movs r7, #0 fa.y2 = fa.y1; a3a8: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a3ac: 9b0c ldr r3, [sp, #48] ; 0x30 a3ae: 429f cmp r7, r3 a3b0: f2c0 859f blt.w aef2 a.x1 = sh_area.x1; a3b4: f9bd 3048 ldrsh.w r3, [sp, #72] ; 0x48 a.x2 = a.x1 + corner_size - 1; a3b8: 9a05 ldr r2, [sp, #20] a.x1 = sh_area.x1; a3ba: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = a.x1 + corner_size - 1; a3be: 3b01 subs r3, #1 a3c0: 4413 add r3, r2 a.y1 = sh_area.y2 - corner_size + 1; a3c2: f9bd 204e ldrsh.w r2, [sp, #78] ; 0x4e a3c6: 9905 ldr r1, [sp, #20] a.x2 = a.x1 + corner_size - 1; a3c8: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y2 - corner_size + 1; a3cc: 1c53 adds r3, r2, #1 a3ce: 1a5b subs r3, r3, r1 a3d0: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2; a3d4: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a3d8: 4b90 ldr r3, [pc, #576] ; (a61c ) a3da: 4642 mov r2, r8 a3dc: a918 add r1, sp, #96 ; 0x60 a3de: a81a add r0, sp, #104 ; 0x68 a3e0: 4798 blx r3 if(has_com) { a3e2: 2800 cmp r0, #0 a3e4: d039 beq.n a45a if(ca.y1 <= h_half) ca.y1 = h_half + 1; a3e6: f9bd 306a ldrsh.w r3, [sp, #106] ; 0x6a a3ea: 9a09 ldr r2, [sp, #36] ; 0x24 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a3ec: f9bd 5068 ldrsh.w r5, [sp, #104] ; 0x68 a3f0: 4293 cmp r3, r2 a3f2: bfd8 it le a3f4: 9b0b ldrle r3, [sp, #44] ; 0x2c if(ca.x2 > w_half) ca.x2 = w_half; a3f6: 9a0a ldr r2, [sp, #40] ; 0x28 if(ca.y1 <= h_half) ca.y1 = h_half + 1; a3f8: bfdc itt le a3fa: 3301 addle r3, #1 a3fc: f8ad 306a strhle.w r3, [sp, #106] ; 0x6a if(ca.x2 > w_half) ca.x2 = w_half; a400: f9bd 306c ldrsh.w r3, [sp, #108] ; 0x6c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a404: f9bd 106a ldrsh.w r1, [sp, #106] ; 0x6a a408: 4293 cmp r3, r2 a40a: bfc4 itt gt a40c: 4613 movgt r3, r2 a40e: f8ad 306c strhgt.w r3, [sp, #108] ; 0x6c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a412: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a416: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a41a: 3601 adds r6, #1 a41c: 1b76 subs r6, r6, r5 a41e: b236 sxth r6, r6 if(w > 0) { a420: 2e00 cmp r6, #0 a422: dd1a ble.n a45a return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a424: 1c53 adds r3, r2, #1 a426: 1a5b subs r3, r3, r1 a428: b21b sxth r3, r3 a42a: 9309 str r3, [sp, #36] ; 0x24 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a42c: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 a430: 1a9b subs r3, r3, r2 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); a432: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 a436: 1aad subs r5, r5, r2 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a438: fb09 5503 mla r5, r9, r3, r5 a43c: 9b06 ldr r3, [sp, #24] lv_area_copy(&fa, &ca); a43e: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a440: 441d add r5, r3 lv_area_copy(&fa, &ca); a442: a81e add r0, sp, #120 ; 0x78 a444: 4b76 ldr r3, [pc, #472] ; (a620 ) a446: 4798 blx r3 fa.y1 = fa.y2; /*Fill from bottom to top*/ a448: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a44c: f8ad 307a strh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a450: 2700 movs r7, #0 a452: 9b09 ldr r3, [sp, #36] ; 0x24 a454: 429f cmp r7, r3 a456: f2c0 8579 blt.w af4c a.x1 = sh_area.x1; a45a: f9bd 3048 ldrsh.w r3, [sp, #72] ; 0x48 a.x2 = a.x1 + corner_size - 1; a45e: 9a05 ldr r2, [sp, #20] a.x1 = sh_area.x1; a460: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = a.x1 + corner_size - 1; a464: 3b01 subs r3, #1 a466: 4413 add r3, r2 a468: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1 + corner_size; a46c: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a a470: 4413 add r3, r2 a472: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2 - corner_size; a476: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e a47a: 1a9b subs r3, r3, r2 a47c: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a480: 4642 mov r2, r8 a482: 4b66 ldr r3, [pc, #408] ; (a61c ) a484: a918 add r1, sp, #96 ; 0x60 a486: a81a add r0, sp, #104 ; 0x68 a488: 4798 blx r3 if(has_com) { a48a: b388 cbz r0, a4f0 if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2); a48c: 9b07 ldr r3, [sp, #28] a48e: b143 cbz r3, a4a2 a490: f9bb 3000 ldrsh.w r3, [fp] a494: f9bd 206c ldrsh.w r2, [sp, #108] ; 0x6c a498: 4293 cmp r3, r2 a49a: bfa8 it ge a49c: 4613 movge r3, r2 a49e: f8ad 306c strh.w r3, [sp, #108] ; 0x6c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a4a2: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a4a6: f9bd 6068 ldrsh.w r6, [sp, #104] ; 0x68 a4aa: 3501 adds r5, #1 a4ac: 1bad subs r5, r5, r6 a4ae: b22d sxth r5, r5 if(w > 0) { a4b0: 2d00 cmp r5, #0 a4b2: dd1d ble.n a4f0 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a4b4: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e a4b8: f8bd 206a ldrh.w r2, [sp, #106] ; 0x6a a4bc: 3301 adds r3, #1 a4be: 1a9b subs r3, r3, r2 sh_buf_tmp += ca.x1 - a.x1; a4c0: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 a4c4: b21b sxth r3, r3 a4c6: 9309 str r3, [sp, #36] ; 0x24 a4c8: 1ab6 subs r6, r6, r2 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); a4ca: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff sh_buf_tmp += ca.x1 - a.x1; a4ce: fb09 6603 mla r6, r9, r3, r6 a4d2: 9b06 ldr r3, [sp, #24] lv_area_copy(&fa, &ca); a4d4: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += ca.x1 - a.x1; a4d6: 441e add r6, r3 lv_area_copy(&fa, &ca); a4d8: a81e add r0, sp, #120 ; 0x78 a4da: 4b51 ldr r3, [pc, #324] ; (a620 ) a4dc: 4798 blx r3 fa.y2 = fa.y1; a4de: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a4e2: 2700 movs r7, #0 fa.y2 = fa.y1; a4e4: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a4e8: 9b09 ldr r3, [sp, #36] ; 0x24 a4ea: 429f cmp r7, r3 a4ec: f2c0 855c blt.w afa8 a.x1 = sh_area.x1 + corner_size; a4f0: 9a05 ldr r2, [sp, #20] a4f2: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 a4f6: 4413 add r3, r2 a4f8: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = sh_area.x2 - corner_size; a4fc: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c a500: 1a9b subs r3, r3, r2 a502: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1; a506: f9bd 304a ldrsh.w r3, [sp, #74] ; 0x4a a50a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y1 + corner_size - 1; a50e: 3b01 subs r3, #1 a510: 4413 add r3, r2 a512: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a516: 4642 mov r2, r8 a518: 4b40 ldr r3, [pc, #256] ; (a61c ) a51a: a918 add r1, sp, #96 ; 0x60 a51c: a81a add r0, sp, #104 ; 0x68 a51e: 4798 blx r3 if(has_com) { a520: b378 cbz r0, a582 if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1); a522: 9b07 ldr r3, [sp, #28] a524: b143 cbz r3, a538 a526: f9bb 3002 ldrsh.w r3, [fp, #2] a52a: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e a52e: 4293 cmp r3, r2 a530: bfa8 it ge a532: 4613 movge r3, r2 a534: f8ad 306e strh.w r3, [sp, #110] ; 0x6e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a538: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a53c: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a540: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a544: 3501 adds r5, #1 a546: 1aed subs r5, r5, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a548: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e a54c: 3301 adds r3, #1 a54e: 1a9b subs r3, r3, r2 a550: b21b sxth r3, r3 a552: 9309 str r3, [sp, #36] ; 0x24 sh_buf_tmp += corner_size * (ca.y1 - a.y1); a554: f9bd 3062 ldrsh.w r3, [sp, #98] ; 0x62 sh_buf_tmp = sh_buf + corner_size - 1; a558: f109 36ff add.w r6, r9, #4294967295 ; 0xffffffff sh_buf_tmp += corner_size * (ca.y1 - a.y1); a55c: 1ad2 subs r2, r2, r3 a55e: 9b06 ldr r3, [sp, #24] a560: fb09 6602 mla r6, r9, r2, r6 a564: 441e add r6, r3 lv_area_copy(&fa, &ca); a566: a91a add r1, sp, #104 ; 0x68 a568: 4b2d ldr r3, [pc, #180] ; (a620 ) a56a: a81e add r0, sp, #120 ; 0x78 a56c: 4798 blx r3 fa.y2 = fa.y1; a56e: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a572: b22d sxth r5, r5 for(y = 0; y < h; y++) { a574: 2700 movs r7, #0 fa.y2 = fa.y1; a576: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a57a: 9b09 ldr r3, [sp, #36] ; 0x24 a57c: 429f cmp r7, r3 a57e: f2c0 8542 blt.w b006 a.x1 = sh_area.x1 + corner_size; a582: 9a05 ldr r2, [sp, #20] a584: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 a.y1 = sh_area.y2 - corner_size + 1; a588: 9905 ldr r1, [sp, #20] a.x1 = sh_area.x1 + corner_size; a58a: 4413 add r3, r2 a58c: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = sh_area.x2 - corner_size; a590: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c a594: 1a9b subs r3, r3, r2 a.y1 = sh_area.y2 - corner_size + 1; a596: f9bd 204e ldrsh.w r2, [sp, #78] ; 0x4e a.x2 = sh_area.x2 - corner_size; a59a: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y2 - corner_size + 1; a59e: 1c53 adds r3, r2, #1 a5a0: 1a5b subs r3, r3, r1 a5a2: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2; a5a6: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a5aa: 4b1c ldr r3, [pc, #112] ; (a61c ) a5ac: 4642 mov r2, r8 a5ae: a918 add r1, sp, #96 ; 0x60 a5b0: a81a add r0, sp, #104 ; 0x68 a5b2: 4798 blx r3 if(has_com) { a5b4: 2800 cmp r0, #0 a5b6: d035 beq.n a624 if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2); a5b8: 9b07 ldr r3, [sp, #28] a5ba: b143 cbz r3, a5ce a5bc: f9bb 3006 ldrsh.w r3, [fp, #6] a5c0: f9bd 206a ldrsh.w r2, [sp, #106] ; 0x6a a5c4: 4293 cmp r3, r2 a5c6: bfb8 it lt a5c8: 4613 movlt r3, r2 a5ca: f8ad 306a strh.w r3, [sp, #106] ; 0x6a a5ce: f8bd 506c ldrh.w r5, [sp, #108] ; 0x6c a5d2: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a5d6: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e a5da: f8bd 106a ldrh.w r1, [sp, #106] ; 0x6a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a5de: 3501 adds r5, #1 a5e0: 1aed subs r5, r5, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a5e2: 1c53 adds r3, r2, #1 a5e4: 1a5b subs r3, r3, r1 a5e6: b21b sxth r3, r3 a5e8: 9309 str r3, [sp, #36] ; 0x24 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a5ea: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 sh_buf_tmp = sh_buf + corner_size - 1; a5ee: f109 36ff add.w r6, r9, #4294967295 ; 0xffffffff sh_buf_tmp += corner_size * (a.y2 - ca.y2); a5f2: 1a9b subs r3, r3, r2 a5f4: fb09 6603 mla r6, r9, r3, r6 a5f8: 9b06 ldr r3, [sp, #24] lv_area_copy(&fa, &ca); a5fa: a91a add r1, sp, #104 ; 0x68 sh_buf_tmp += corner_size * (a.y2 - ca.y2); a5fc: 441e add r6, r3 lv_area_copy(&fa, &ca); a5fe: a81e add r0, sp, #120 ; 0x78 a600: 4b07 ldr r3, [pc, #28] ; (a620 ) a602: 4798 blx r3 fa.y1 = fa.y2; a604: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e a608: f8ad 307a strh.w r3, [sp, #122] ; 0x7a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a60c: b22d sxth r5, r5 for(y = 0; y < h; y++) { a60e: 2700 movs r7, #0 a610: 9b09 ldr r3, [sp, #36] ; 0x24 a612: 429f cmp r7, r3 a614: f2c0 8542 blt.w b09c a618: e004 b.n a624 a61a: bf00 nop a61c: 0000de8d .word 0x0000de8d a620: 00009b8d .word 0x00009b8d a.x1 = sh_area.x1 + corner_size; a624: 9a05 ldr r2, [sp, #20] a626: f8bd 3048 ldrh.w r3, [sp, #72] ; 0x48 a62a: 4413 add r3, r2 a62c: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 a.x2 = sh_area.x2 - corner_size; a630: f8bd 304c ldrh.w r3, [sp, #76] ; 0x4c a634: 1a9b subs r3, r3, r2 a636: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 a.y1 = sh_area.y1 + corner_size; a63a: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a a63e: 4413 add r3, r2 a640: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 a.y2 = sh_area.y2 - corner_size; a644: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e a648: 1a9b subs r3, r3, r2 a64a: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 has_com = _lv_area_intersect(&ca, &a, clip); a64e: 4642 mov r2, r8 a650: 4bb9 ldr r3, [pc, #740] ; (a938 ) a652: a918 add r1, sp, #96 ; 0x60 a654: a81a add r0, sp, #104 ; 0x68 a656: 4798 blx r3 if(has_com && simple_mode == false) { a658: b1e8 cbz r0, a696 a65a: 9b07 ldr r3, [sp, #28] a65c: b9db cbnz r3, a696 a65e: f8bd 606c ldrh.w r6, [sp, #108] ; 0x6c a662: f8bd 3068 ldrh.w r3, [sp, #104] ; 0x68 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a666: f8bd 706e ldrh.w r7, [sp, #110] ; 0x6e _lv_memset(mask_buf, dsc->shadow_opa, w); a66a: f8df 9310 ldr.w r9, [pc, #784] ; a97c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a66e: 3601 adds r6, #1 a670: 1af6 subs r6, r6, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a672: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a a676: 3701 adds r7, #1 a678: 1aff subs r7, r7, r3 lv_area_copy(&fa, &ca); a67a: a91a add r1, sp, #104 ; 0x68 a67c: 4baf ldr r3, [pc, #700] ; (a93c ) a67e: a81e add r0, sp, #120 ; 0x78 a680: 4798 blx r3 fa.y2 = fa.y1; a682: f9bd 307a ldrsh.w r3, [sp, #122] ; 0x7a for(y = 0; y < h; y++) { a686: 9d07 ldr r5, [sp, #28] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a688: b236 sxth r6, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a68a: b23f sxth r7, r7 a68c: 42bd cmp r5, r7 fa.y2 = fa.y1; a68e: f8ad 307e strh.w r3, [sp, #126] ; 0x7e for(y = 0; y < h; y++) { a692: f2c0 853c blt.w b10e lv_draw_mask_remove_id(mask_rout_id); a696: 4baa ldr r3, [pc, #680] ; (a940 ) _lv_mem_buf_release(mask_buf); a698: 4caa ldr r4, [pc, #680] ; (a944 ) lv_draw_mask_remove_id(mask_rout_id); a69a: ee18 0a90 vmov r0, s17 a69e: 4798 blx r3 _lv_mem_buf_release(mask_buf); a6a0: ee18 0a10 vmov r0, s16 a6a4: 47a0 blx r4 _lv_mem_buf_release(sh_buf); a6a6: 9806 ldr r0, [sp, #24] a6a8: 47a0 blx r4 if(dsc->bg_opa <= LV_OPA_MIN) return; a6aa: f89a 300c ldrb.w r3, [sl, #12] a6ae: 2b05 cmp r3, #5 a6b0: f240 80a8 bls.w a804 lv_area_copy(&coords_bg, coords); a6b4: 4ba1 ldr r3, [pc, #644] ; (a93c ) a6b6: 4659 mov r1, fp a6b8: a816 add r0, sp, #88 ; 0x58 a6ba: 4798 blx r3 if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) { a6bc: f9ba 3010 ldrsh.w r3, [sl, #16] a6c0: 2b01 cmp r3, #1 a6c2: dd24 ble.n a70e a6c4: f89a 3014 ldrb.w r3, [sl, #20] a6c8: 2bf9 cmp r3, #249 ; 0xf9 a6ca: d920 bls.n a70e a6cc: f9ba 3000 ldrsh.w r3, [sl] a6d0: b1eb cbz r3, a70e coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; a6d2: f8ba 3012 ldrh.w r3, [sl, #18] a6d6: f8bd 1058 ldrh.w r1, [sp, #88] ; 0x58 a6da: f3c3 0280 ubfx r2, r3, #2, #1 a6de: 440a add r2, r1 coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; a6e0: f8bd 105a ldrh.w r1, [sp, #90] ; 0x5a coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; a6e4: f8ad 2058 strh.w r2, [sp, #88] ; 0x58 coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; a6e8: f3c3 0240 ubfx r2, r3, #1, #1 a6ec: 440a add r2, r1 a6ee: f8ad 205a strh.w r2, [sp, #90] ; 0x5a coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; a6f2: f8bd 205c ldrh.w r2, [sp, #92] ; 0x5c a6f6: f3c3 01c0 ubfx r1, r3, #3, #1 a6fa: 1a52 subs r2, r2, r1 a6fc: f8ad 205c strh.w r2, [sp, #92] ; 0x5c coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; a700: f8bd 205e ldrh.w r2, [sp, #94] ; 0x5e a704: f003 0301 and.w r3, r3, #1 a708: 1ad3 subs r3, r2, r3 a70a: f8ad 305e strh.w r3, [sp, #94] ; 0x5e lv_opa_t opa = dsc->bg_opa; a70e: f89a 900c ldrb.w r9, [sl, #12] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a712: 4b8d ldr r3, [pc, #564] ; (a948 ) if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; a714: f1b9 0ffb cmp.w r9, #251 ; 0xfb a718: bf28 it cs a71a: f04f 09ff movcs.w r9, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a71e: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a720: 4b8a ldr r3, [pc, #552] ; (a94c ) a722: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); a724: 4b84 ldr r3, [pc, #528] ; (a938 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a726: 9005 str r0, [sp, #20] is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); a728: 4642 mov r2, r8 a72a: a916 add r1, sp, #88 ; 0x58 a72c: a818 add r0, sp, #96 ; 0x60 a72e: 4798 blx r3 if(is_common == false) return; a730: 2800 cmp r0, #0 a732: d067 beq.n a804 draw_area.x1 -= disp_area->x1; a734: 9b05 ldr r3, [sp, #20] a736: f8bd 1060 ldrh.w r1, [sp, #96] ; 0x60 a73a: 8a1a ldrh r2, [r3, #16] a73c: 1a8b subs r3, r1, r2 a73e: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 draw_area.y1 -= disp_area->y1; a742: 9b05 ldr r3, [sp, #20] a744: 8a58 ldrh r0, [r3, #18] a746: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 a74a: 1a1b subs r3, r3, r0 a74c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 draw_area.x2 -= disp_area->x1; a750: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 a754: 1a9a subs r2, r3, r2 a756: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a75a: 3301 adds r3, #1 draw_area.y2 -= disp_area->y1; a75c: f8bd 2066 ldrh.w r2, [sp, #102] ; 0x66 a760: 1a5b subs r3, r3, r1 a762: 1a12 subs r2, r2, r0 a764: b21b sxth r3, r3 a766: f8ad 2066 strh.w r2, [sp, #102] ; 0x66 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a76a: 4618 mov r0, r3 a76c: ee08 3a90 vmov s17, r3 a770: 4b77 ldr r3, [pc, #476] ; (a950 ) a772: 4798 blx r3 uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); a774: 4b77 ldr r3, [pc, #476] ; (a954 ) lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a776: 4605 mov r5, r0 uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); a778: 4798 blx r3 a77a: 900c str r0, [sp, #48] ; 0x30 a77c: f8bd 3030 ldrh.w r3, [sp, #48] ; 0x30 a780: 930d str r3, [sp, #52] ; 0x34 if(other_mask_cnt) simple_mode = false; a782: 2b00 cmp r3, #0 a784: f040 84ef bne.w b166 else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false; a788: f89a 3006 ldrb.w r3, [sl, #6] a78c: 3b02 subs r3, #2 a78e: bf18 it ne a790: 2301 movne r3, #1 a792: f8bd 605c ldrh.w r6, [sp, #92] ; 0x5c if(other_mask_cnt) simple_mode = false; a796: 9308 str r3, [sp, #32] a798: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a79c: f8bd 405e ldrh.w r4, [sp, #94] ; 0x5e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a7a0: 3601 adds r6, #1 a7a2: 1af6 subs r6, r6, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a7a4: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a a7a8: 3401 adds r4, #1 a7aa: 1ae4 subs r4, r4, r3 int32_t coords_h = lv_area_get_height(&coords_bg); a7ac: b224 sxth r4, r4 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a7ae: b236 sxth r6, r6 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); a7b0: 42b4 cmp r4, r6 int32_t rout = dsc->radius; a7b2: f9ba 3000 ldrsh.w r3, [sl] int32_t short_side = LV_MATH_MIN(coords_w, coords_h); a7b6: bfa8 it ge a7b8: 4634 movge r4, r6 if(rout > short_side >> 1) rout = short_side >> 1; a7ba: 1064 asrs r4, r4, #1 a7bc: 429c cmp r4, r3 a7be: bfa8 it ge a7c0: 461c movge r4, r3 if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) { a7c2: 9b08 ldr r3, [sp, #32] a7c4: 2b00 cmp r3, #0 a7c6: f000 84d1 beq.w b16c a7ca: 2c00 cmp r4, #0 a7cc: f040 84ce bne.w b16c a7d0: f89a 3006 ldrb.w r3, [sl, #6] a7d4: 2b00 cmp r3, #0 a7d6: f040 857c bne.w b2d2 _lv_blend_fill(clip, &coords_bg, a7da: f89a 200d ldrb.w r2, [sl, #13] a7de: 4c5e ldr r4, [pc, #376] ; (a958 ) a7e0: e9cd 9201 strd r9, r2, [sp, #4] a7e4: 2201 movs r2, #1 a7e6: 9200 str r2, [sp, #0] a7e8: f8ba 2002 ldrh.w r2, [sl, #2] a7ec: a916 add r1, sp, #88 ; 0x58 a7ee: 4640 mov r0, r8 a7f0: 47a0 blx r4 int16_t mask_rout_id = LV_MASK_ID_INV; a7f2: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff a7f6: 930b str r3, [sp, #44] ; 0x2c lv_draw_mask_remove_id(mask_rout_id); a7f8: 4b51 ldr r3, [pc, #324] ; (a940 ) a7fa: 980b ldr r0, [sp, #44] ; 0x2c a7fc: 4798 blx r3 _lv_mem_buf_release(mask_buf); a7fe: 4b51 ldr r3, [pc, #324] ; (a944 ) a800: 4628 mov r0, r5 a802: 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; a804: f8da 002c ldr.w r0, [sl, #44] ; 0x2c a808: b1d0 cbz r0, a840 if(dsc->pattern_opa <= LV_OPA_MIN) return; a80a: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 a80e: 2b05 cmp r3, #5 a810: d916 bls.n a840 lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); a812: 4b52 ldr r3, [pc, #328] ; (a95c ) a814: 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) { a816: 2801 cmp r0, #1 lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); a818: 4606 mov r6, r0 if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { a81a: f200 86bc bhi.w b596 lv_img_header_t header; lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header); a81e: f8da 002c ldr.w r0, [sl, #44] ; 0x2c a822: 4b4f ldr r3, [pc, #316] ; (a960 ) a824: a925 add r1, sp, #148 ; 0x94 a826: 4798 blx r3 if(res != LV_RES_OK) { a828: 2801 cmp r0, #1 a82a: f000 8656 beq.w b4da LV_LOG_WARN("draw_img: can't get image info"); a82e: 4b4d ldr r3, [pc, #308] ; (a964 ) a830: 9300 str r3, [sp, #0] a832: 494d ldr r1, [pc, #308] ; (a968 ) a834: 4b4d ldr r3, [pc, #308] ; (a96c ) a836: 4c4e ldr r4, [pc, #312] ; (a970 ) a838: f240 5294 movw r2, #1428 ; 0x594 a83c: 2002 movs r0, #2 a83e: 47a0 blx r4 if(dsc->border_opa <= LV_OPA_MIN) return; a840: f89a 3014 ldrb.w r3, [sl, #20] a844: 9305 str r3, [sp, #20] a846: 2b05 cmp r3, #5 a848: f240 8174 bls.w ab34 if(dsc->border_width == 0) return; a84c: f9ba 3010 ldrsh.w r3, [sl, #16] a850: 2b00 cmp r3, #0 a852: f000 816f beq.w ab34 if(dsc->border_side == LV_BORDER_SIDE_NONE) return; a856: f9ba 3012 ldrsh.w r3, [sl, #18] a85a: 2b00 cmp r3, #0 a85c: f000 816a beq.w ab34 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; a860: 9b05 ldr r3, [sp, #20] a862: 2bfb cmp r3, #251 ; 0xfb a864: bf28 it cs a866: 23ff movcs r3, #255 ; 0xff a868: 9305 str r3, [sp, #20] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a86a: 4b37 ldr r3, [pc, #220] ; (a948 ) a86c: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a86e: 4b37 ldr r3, [pc, #220] ; (a94c ) a870: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, coords, clip); a872: 4b31 ldr r3, [pc, #196] ; (a938 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a874: 9006 str r0, [sp, #24] is_common = _lv_area_intersect(&draw_area, coords, clip); a876: 4642 mov r2, r8 a878: 4659 mov r1, fp a87a: a814 add r0, sp, #80 ; 0x50 a87c: 4798 blx r3 if(is_common == false) return; a87e: 2800 cmp r0, #0 a880: f000 8158 beq.w ab34 draw_area.x1 -= disp_area->x1; a884: 9b06 ldr r3, [sp, #24] a886: f8bd 1050 ldrh.w r1, [sp, #80] ; 0x50 a88a: 8a1a ldrh r2, [r3, #16] a88c: 1a8b subs r3, r1, r2 a88e: f8ad 3050 strh.w r3, [sp, #80] ; 0x50 draw_area.y1 -= disp_area->y1; a892: 9b06 ldr r3, [sp, #24] a894: 8a58 ldrh r0, [r3, #18] a896: f8bd 3052 ldrh.w r3, [sp, #82] ; 0x52 a89a: 1a1b subs r3, r3, r0 a89c: f8ad 3052 strh.w r3, [sp, #82] ; 0x52 draw_area.x2 -= disp_area->x1; a8a0: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 a8a4: 1a9a subs r2, r3, r2 a8a6: f8ad 2054 strh.w r2, [sp, #84] ; 0x54 a8aa: 3301 adds r3, #1 draw_area.y2 -= disp_area->y1; a8ac: f8bd 2056 ldrh.w r2, [sp, #86] ; 0x56 a8b0: 1a5b subs r3, r3, r1 a8b2: 1a12 subs r2, r2, r0 a8b4: fa0f f983 sxth.w r9, r3 a8b8: f8ad 2056 strh.w r2, [sp, #86] ; 0x56 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a8bc: 4b24 ldr r3, [pc, #144] ; (a950 ) a8be: 4648 mov r0, r9 a8c0: 4798 blx r3 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a8c2: 4b24 ldr r3, [pc, #144] ; (a954 ) lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a8c4: 4604 mov r4, r0 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a8c6: 4798 blx r3 if(other_mask_cnt) simple_mode = false; a8c8: 2800 cmp r0, #0 a8ca: f040 8749 bne.w b760 else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false; a8ce: f9ba 3012 ldrsh.w r3, [sl, #18] a8d2: f1a3 050f sub.w r5, r3, #15 a8d6: 426b negs r3, r5 a8d8: 416b adcs r3, r5 if(other_mask_cnt) simple_mode = false; a8da: 461f mov r7, r3 a8dc: f8bb 3004 ldrh.w r3, [fp, #4] a8e0: f8bb 2000 ldrh.w r2, [fp] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a8e4: f8bb 1002 ldrh.w r1, [fp, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); a8e8: 3301 adds r3, #1 a8ea: 1a9b subs r3, r3, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); a8ec: f8bb 2006 ldrh.w r2, [fp, #6] a8f0: 3201 adds r2, #1 a8f2: 1a52 subs r2, r2, r1 int32_t coords_w = lv_area_get_width(coords); a8f4: b21b sxth r3, r3 int32_t coords_h = lv_area_get_height(coords); a8f6: b212 sxth r2, r2 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); a8f8: 4293 cmp r3, r2 a8fa: bfa8 it ge a8fc: 4613 movge r3, r2 int32_t rout = dsc->radius; a8fe: f9ba 2000 ldrsh.w r2, [sl] if(rout > short_side >> 1) rout = short_side >> 1; a902: 105b asrs r3, r3, #1 a904: 4293 cmp r3, r2 a906: bfa8 it ge a908: 4613 movge r3, r2 if(rout > 0) { a90a: 2b00 cmp r3, #0 a90c: 9309 str r3, [sp, #36] ; 0x24 a90e: f340 872a ble.w b766 lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false); a912: 9a09 ldr r2, [sp, #36] ; 0x24 a914: 4d17 ldr r5, [pc, #92] ; (a974 ) a916: 2300 movs r3, #0 a918: 4659 mov r1, fp a91a: a81e add r0, sp, #120 ; 0x78 a91c: 47a8 blx r5 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); a91e: 4b16 ldr r3, [pc, #88] ; (a978 ) a920: 2100 movs r1, #0 a922: a81e add r0, sp, #120 ; 0x78 a924: 4798 blx r3 a926: 900c str r0, [sp, #48] ; 0x30 lv_area_copy(&area_small, coords); a928: a816 add r0, sp, #88 ; 0x58 a92a: 4b04 ldr r3, [pc, #16] ; (a93c ) a92c: 4659 mov r1, fp a92e: 4798 blx r3 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); a930: f8ba 1012 ldrh.w r1, [sl, #18] a934: e024 b.n a980 a936: bf00 nop a938: 0000de8d .word 0x0000de8d a93c: 00009b8d .word 0x00009b8d a940: 000097a1 .word 0x000097a1 a944: 0000eb69 .word 0x0000eb69 a948: 00004fe9 .word 0x00004fe9 a94c: 0000d9e1 .word 0x0000d9e1 a950: 0000eeb5 .word 0x0000eeb5 a954: 000097f1 .word 0x000097f1 a958: 000061f1 .word 0x000061f1 a95c: 00007805 .word 0x00007805 a960: 0000cf29 .word 0x0000cf29 a964: 0001fda4 .word 0x0001fda4 a968: 0001fd6f .word 0x0001fd6f a96c: 0001fdf2 .word 0x0001fdf2 a970: 0000e8e9 .word 0x0000e8e9 a974: 00009915 .word 0x00009915 a978: 00009711 .word 0x00009711 a97c: 0000efb9 .word 0x0000efb9 a980: f8bd 5024 ldrh.w r5, [sp, #36] ; 0x24 a984: f8ba 3010 ldrh.w r3, [sl, #16] a988: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 a98c: 0748 lsls r0, r1, #29 a98e: bf5e ittt pl a990: 195b addpl r3, r3, r5 a992: 425b negpl r3, r3 a994: b29b uxthpl r3, r3 a996: 4413 add r3, r2 a998: f8ba 2010 ldrh.w r2, [sl, #16] a99c: 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)); a9a0: 070b lsls r3, r1, #28 a9a2: bf58 it pl a9a4: 1953 addpl r3, r2, r5 a9a6: f8bd 005c ldrh.w r0, [sp, #92] ; 0x5c a9aa: bf56 itet pl a9ac: 425b negpl r3, r3 a9ae: 4613 movmi r3, r2 a9b0: b29b uxthpl r3, r3 a9b2: 1ac3 subs r3, r0, r3 area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); a9b4: 078e lsls r6, r1, #30 area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); a9b6: 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)); a9ba: bf58 it pl a9bc: 1953 addpl r3, r2, r5 a9be: f8bd 005a ldrh.w r0, [sp, #90] ; 0x5a lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); a9c2: 4ec3 ldr r6, [pc, #780] ; (acd0 ) area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); a9c4: bf56 itet pl a9c6: 425b negpl r3, r3 a9c8: 4613 movmi r3, r2 a9ca: b29b uxthpl r3, r3 a9cc: 4403 add r3, r0 a9ce: 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)); a9d2: 07cb lsls r3, r1, #31 a9d4: bf5c itt pl a9d6: 1953 addpl r3, r2, r5 a9d8: 425b negpl r3, r3 a9da: f8bd 005e ldrh.w r0, [sp, #94] ; 0x5e a9de: bf4c ite mi a9e0: 4613 movmi r3, r2 a9e2: b29b uxthpl r3, r3 a9e4: 1ac3 subs r3, r0, r3 lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); a9e6: 1aaa subs r2, r5, r2 a9e8: b212 sxth r2, r2 area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); a9ea: f8ad 305e strh.w r3, [sp, #94] ; 0x5e lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); a9ee: a916 add r1, sp, #88 ; 0x58 a9f0: 2301 movs r3, #1 a9f2: a825 add r0, sp, #148 ; 0x94 a9f4: 47b0 blx r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); a9f6: 4bb7 ldr r3, [pc, #732] ; (acd4 ) a9f8: 2100 movs r1, #0 a9fa: a825 add r0, sp, #148 ; 0x94 a9fc: 4798 blx r3 int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); a9fe: f9ba 3010 ldrsh.w r3, [sl, #16] aa02: 9a09 ldr r2, [sp, #36] ; 0x24 fill_area.y1 = disp_area->y1 + draw_area.y1; aa04: f9bd 6052 ldrsh.w r6, [sp, #82] ; 0x52 upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); aa08: f9bd c056 ldrsh.w ip, [sp, #86] ; 0x56 fill_area.x1 = coords->x1; aa0c: f9bb 1000 ldrsh.w r1, [fp] int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); aa10: 429a cmp r2, r3 aa12: bfa8 it ge aa14: 9b09 ldrge r3, [sp, #36] ; 0x24 fill_area.x2 = coords->x2; aa16: f9bb 2004 ldrsh.w r2, [fp, #4] int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); aa1a: bfb8 it lt aa1c: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff aa20: 9308 str r3, [sp, #32] lv_color_t color = dsc->border_color; aa22: f8ba 300e ldrh.w r3, [sl, #14] aa26: ee08 3a10 vmov s16, r3 lv_blend_mode_t blend_mode = dsc->border_blend_mode; aa2a: f89a 3015 ldrb.w r3, [sl, #21] aa2e: 9307 str r3, [sp, #28] int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa30: 9b06 ldr r3, [sp, #24] aa32: f9b3 e012 ldrsh.w lr, [r3, #18] fill_area.y1 = disp_area->y1 + draw_area.y1; aa36: eb0e 0306 add.w r3, lr, r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); aa3a: ee08 0a90 vmov s17, r0 fill_area.y1 = disp_area->y1 + draw_area.y1; aa3e: b21b sxth r3, r3 if(simple_mode) { aa40: 2f00 cmp r7, #0 aa42: f000 879d beq.w b980 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa46: f9bb 0002 ldrsh.w r0, [fp, #2] aa4a: 9f08 ldr r7, [sp, #32] fill_area.x1 = coords->x1; aa4c: f8ad 1060 strh.w r1, [sp, #96] ; 0x60 int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; aa50: eba0 000e sub.w r0, r0, lr aa54: 4438 add r0, r7 upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); aa56: 4584 cmp ip, r0 aa58: bfa8 it ge aa5a: 4684 movge ip, r0 aa5c: f8cd c028 str.w ip, [sp, #40] ; 0x28 fill_area.x2 = coords->x2; aa60: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 fill_area.y1 = disp_area->y1 + draw_area.y1; aa64: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; aa68: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { aa6c: 9b0a ldr r3, [sp, #40] ; 0x28 aa6e: 42b3 cmp r3, r6 aa70: f280 867e bge.w b770 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; aa74: 9b06 ldr r3, [sp, #24] aa76: f9bb 2006 ldrsh.w r2, [fp, #6] aa7a: f9b3 3012 ldrsh.w r3, [r3, #18] aa7e: 9908 ldr r1, [sp, #32] lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); aa80: f9bd 6052 ldrsh.w r6, [sp, #82] ; 0x52 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; aa84: 1ad2 subs r2, r2, r3 aa86: 1a52 subs r2, r2, r1 lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); aa88: 4296 cmp r6, r2 aa8a: bfb8 it lt aa8c: 4616 movlt r6, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; aa8e: 9a0a ldr r2, [sp, #40] ; 0x28 aa90: 42b2 cmp r2, r6 aa92: bfa4 itt ge aa94: 4616 movge r6, r2 aa96: 3601 addge r6, #1 fill_area.y1 = disp_area->y1 + lower_corner_end; aa98: 4433 add r3, r6 aa9a: b21b sxth r3, r3 aa9c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; aaa0: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { aaa4: f9bd 3056 ldrsh.w r3, [sp, #86] ; 0x56 aaa8: 429e cmp r6, r3 aaaa: f340 86dd ble.w b868 fill_area.y1 = coords->y1 + corner_size + 1; aaae: f8bb 3002 ldrh.w r3, [fp, #2] aab2: 9a08 ldr r2, [sp, #32] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); aab4: 4d88 ldr r5, [pc, #544] ; (acd8 ) fill_area.y1 = coords->y1 + corner_size + 1; aab6: 3301 adds r3, #1 aab8: fa13 f382 uxtah r3, r3, r2 aabc: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = coords->y2 - corner_size - 1; aac0: f8bb 3006 ldrh.w r3, [fp, #6] aac4: 3b01 subs r3, #1 aac6: 1a9b subs r3, r3, r2 fill_area.x2 = coords->x1 + dsc->border_width - 1; aac8: f8ba 2010 ldrh.w r2, [sl, #16] fill_area.y2 = coords->y2 - corner_size - 1; aacc: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 fill_area.x1 = coords->x1; aad0: f9bb 3000 ldrsh.w r3, [fp] aad4: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 fill_area.x2 = coords->x1 + dsc->border_width - 1; aad8: 3a01 subs r2, #1 aada: 4413 add r3, r2 aadc: 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); aae0: 9b07 ldr r3, [sp, #28] aae2: 9302 str r3, [sp, #8] aae4: 2601 movs r6, #1 aae6: 9b05 ldr r3, [sp, #20] aae8: 9301 str r3, [sp, #4] aaea: ee18 2a10 vmov r2, s16 aaee: 2300 movs r3, #0 aaf0: a918 add r1, sp, #96 ; 0x60 aaf2: 4640 mov r0, r8 aaf4: 9600 str r6, [sp, #0] aaf6: 47a8 blx r5 fill_area.x1 = coords->x2 - dsc->border_width + 1; aaf8: f8ba 3010 ldrh.w r3, [sl, #16] aafc: f9bb 2004 ldrsh.w r2, [fp, #4] fill_area.x2 = coords->x2; ab00: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 fill_area.x1 = coords->x2 - dsc->border_width + 1; ab04: 1af3 subs r3, r6, r3 ab06: 4413 add r3, r2 ab08: 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); ab0c: 9b07 ldr r3, [sp, #28] ab0e: 9302 str r3, [sp, #8] ab10: 9b05 ldr r3, [sp, #20] ab12: ee18 2a10 vmov r2, s16 ab16: e9cd 6300 strd r6, r3, [sp] ab1a: a918 add r1, sp, #96 ; 0x60 ab1c: 2300 movs r3, #0 ab1e: 4640 mov r0, r8 ab20: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); ab22: 4d6e ldr r5, [pc, #440] ; (acdc ) ab24: ee18 0a90 vmov r0, s17 ab28: 47a8 blx r5 lv_draw_mask_remove_id(mask_rout_id); ab2a: 980c ldr r0, [sp, #48] ; 0x30 ab2c: 47a8 blx r5 _lv_mem_buf_release(mask_buf); ab2e: 4b6c ldr r3, [pc, #432] ; (ace0 ) ab30: 4620 mov r0, r4 ab32: 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; ab34: f8da 103c ldr.w r1, [sl, #60] ; 0x3c ab38: 2900 cmp r1, #0 ab3a: d064 beq.n ac06 if(dsc->value_opa <= LV_OPA_MIN) return; ab3c: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44 ab40: 2b05 cmp r3, #5 ab42: d960 bls.n ac06 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, ab44: 2400 movs r4, #0 ab46: f647 4318 movw r3, #31768 ; 0x7c18 ab4a: e9cd 3401 strd r3, r4, [sp, #4] ab4e: f9ba 304e ldrsh.w r3, [sl, #78] ; 0x4e ab52: 9300 str r3, [sp, #0] ab54: f9ba 304c ldrsh.w r3, [sl, #76] ; 0x4c ab58: f8da 2040 ldr.w r2, [sl, #64] ; 0x40 ab5c: 4d61 ldr r5, [pc, #388] ; (ace4 ) ab5e: a818 add r0, sp, #96 ; 0x60 ab60: 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; ab62: 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); ab66: f89a 2050 ldrb.w r2, [sl, #80] ; 0x50 value_area.x1 = 0; ab6a: 941e str r4, [sp, #120] ; 0x78 value_area.x2 = s.x - 1; ab6c: 3b01 subs r3, #1 ab6e: f8ad 307c strh.w r3, [sp, #124] ; 0x7c value_area.y2 = s.y - 1; ab72: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 _lv_area_align(coords, &value_area, dsc->value_align, &p_align); ab76: 4d5c ldr r5, [pc, #368] ; (ace8 ) value_area.y2 = s.y - 1; ab78: 3b01 subs r3, #1 ab7a: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_area_align(coords, &value_area, dsc->value_align, &p_align); ab7e: a91e add r1, sp, #120 ; 0x78 ab80: ab1a add r3, sp, #104 ; 0x68 ab82: 4658 mov r0, fp ab84: 47a8 blx r5 value_area.x1 += p_align.x + dsc->value_ofs_x; ab86: f8ba 3048 ldrh.w r3, [sl, #72] ; 0x48 ab8a: f8bd 2068 ldrh.w r2, [sp, #104] ; 0x68 value_area.y1 += p_align.y + dsc->value_ofs_y; ab8e: f8ba 104a ldrh.w r1, [sl, #74] ; 0x4a value_area.x1 += p_align.x + dsc->value_ofs_x; ab92: 441a add r2, r3 ab94: f8bd 3078 ldrh.w r3, [sp, #120] ; 0x78 ab98: fa13 f382 uxtah r3, r3, r2 ab9c: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 value_area.y1 += p_align.y + dsc->value_ofs_y; aba0: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a aba4: 440b add r3, r1 aba6: f8bd 107a ldrh.w r1, [sp, #122] ; 0x7a abaa: fa11 f183 uxtah r1, r1, r3 abae: f8ad 107a strh.w r1, [sp, #122] ; 0x7a value_area.x2 += p_align.x + dsc->value_ofs_x; abb2: f8bd 107c ldrh.w r1, [sp, #124] ; 0x7c abb6: fa11 f282 uxtah r2, r1, r2 abba: f8ad 207c strh.w r2, [sp, #124] ; 0x7c value_area.y2 += p_align.y + dsc->value_ofs_y; abbe: f8bd 207e ldrh.w r2, [sp, #126] ; 0x7e abc2: fa12 f383 uxtah r3, r2, r3 abc6: f8ad 307e strh.w r3, [sp, #126] ; 0x7e lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); abca: a825 add r0, sp, #148 ; 0x94 abcc: 4b47 ldr r3, [pc, #284] ; (acec ) abce: 4798 blx r3 label_dsc.font = dsc->value_font; abd0: f8da 3040 ldr.w r3, [sl, #64] ; 0x40 abd4: 9326 str r3, [sp, #152] ; 0x98 label_dsc.letter_space = dsc->value_letter_space; abd6: f8ba 304c ldrh.w r3, [sl, #76] ; 0x4c abda: f8ad 30a0 strh.w r3, [sp, #160] ; 0xa0 label_dsc.line_space = dsc->value_line_space; abde: f8ba 304e ldrh.w r3, [sl, #78] ; 0x4e abe2: f8ad 309e strh.w r3, [sp, #158] ; 0x9e label_dsc.color = dsc->value_color; abe6: f8ba 3046 ldrh.w r3, [sl, #70] ; 0x46 abea: f8ad 3094 strh.w r3, [sp, #148] ; 0x94 label_dsc.opa = dsc->value_opa; abee: f89a 3044 ldrb.w r3, [sl, #68] ; 0x44 lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); abf2: 9400 str r4, [sp, #0] label_dsc.opa = dsc->value_opa; abf4: f88d 309c strb.w r3, [sp, #156] ; 0x9c lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); abf8: 4c3d ldr r4, [pc, #244] ; (acf0 ) abfa: f8da 303c ldr.w r3, [sl, #60] ; 0x3c abfe: aa25 add r2, sp, #148 ; 0x94 ac00: 4641 mov r1, r8 ac02: a81e add r0, sp, #120 ; 0x78 ac04: 47a0 blx r4 if(dsc->outline_opa <= LV_OPA_MIN) return; ac06: f89a 301c ldrb.w r3, [sl, #28] ac0a: 9305 str r3, [sp, #20] ac0c: 2b05 cmp r3, #5 ac0e: f240 816b bls.w aee8 if(dsc->outline_width == 0) return; ac12: f9ba 3018 ldrsh.w r3, [sl, #24] ac16: 2b00 cmp r3, #0 ac18: f000 8166 beq.w aee8 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ac1c: 9b05 ldr r3, [sp, #20] lv_area_copy(&area_inner, coords); ac1e: 4d35 ldr r5, [pc, #212] ; (acf4 ) if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; ac20: 2bfb cmp r3, #251 ; 0xfb ac22: bf28 it cs ac24: 23ff movcs r3, #255 ; 0xff ac26: 9305 str r3, [sp, #20] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); ac28: 4b33 ldr r3, [pc, #204] ; (acf8 ) ac2a: 4798 blx r3 lv_area_copy(&area_inner, coords); ac2c: 4659 mov r1, fp uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); ac2e: 900b str r0, [sp, #44] ; 0x2c lv_area_copy(&area_inner, coords); ac30: a812 add r0, sp, #72 ; 0x48 ac32: 47a8 blx r5 area_inner.x1 -= dsc->outline_pad; ac34: f8ba 701a ldrh.w r7, [sl, #26] ac38: f8bd 9048 ldrh.w r9, [sp, #72] ; 0x48 area_inner.x2 += dsc->outline_pad; ac3c: f8bd 404c ldrh.w r4, [sp, #76] ; 0x4c area_inner.x1 -= dsc->outline_pad; ac40: eba9 0307 sub.w r3, r9, r7 ac44: f8ad 3048 strh.w r3, [sp, #72] ; 0x48 area_inner.y1 -= dsc->outline_pad; ac48: f8bd 304a ldrh.w r3, [sp, #74] ; 0x4a ac4c: 9307 str r3, [sp, #28] ac4e: 1bdb subs r3, r3, r7 ac50: f8ad 304a strh.w r3, [sp, #74] ; 0x4a area_inner.y2 += dsc->outline_pad; ac54: f8bd 304e ldrh.w r3, [sp, #78] ; 0x4e ac58: 443b add r3, r7 ac5a: b29b uxth r3, r3 area_inner.x2 += dsc->outline_pad; ac5c: 443c add r4, r7 area_inner.y2 += dsc->outline_pad; ac5e: 9308 str r3, [sp, #32] ac60: f8ad 304e strh.w r3, [sp, #78] ; 0x4e area_inner.x2 += dsc->outline_pad; ac64: b2a4 uxth r4, r4 int32_t rin = dsc->radius; ac66: f9ba 3000 ldrsh.w r3, [sl] ac6a: 930c str r3, [sp, #48] ; 0x30 lv_area_copy(&area_outer, &area_inner); ac6c: a912 add r1, sp, #72 ; 0x48 int32_t rout = rin + dsc->outline_width; ac6e: f9ba 3018 ldrsh.w r3, [sl, #24] area_inner.x2 += dsc->outline_pad; ac72: f8ad 404c strh.w r4, [sp, #76] ; 0x4c lv_area_copy(&area_outer, &area_inner); ac76: a814 add r0, sp, #80 ; 0x50 int32_t rout = rin + dsc->outline_width; ac78: 930d str r3, [sp, #52] ; 0x34 lv_area_copy(&area_outer, &area_inner); ac7a: 47a8 blx r5 area_outer.x1 -= dsc->outline_width; ac7c: f8ba 6018 ldrh.w r6, [sl, #24] ac80: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 ac84: 9309 str r3, [sp, #36] ; 0x24 ac86: 1b9b subs r3, r3, r6 ac88: f8ad 3050 strh.w r3, [sp, #80] ; 0x50 area_outer.x2 += dsc->outline_width; ac8c: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 area_outer.y2 += dsc->outline_width; ac90: f8bd 5056 ldrh.w r5, [sp, #86] ; 0x56 area_outer.x2 += dsc->outline_width; ac94: 4433 add r3, r6 ac96: fa1f fb83 uxth.w fp, r3 area_outer.y1 -= dsc->outline_width; ac9a: f8bd 3052 ldrh.w r3, [sp, #82] ; 0x52 ac9e: 930a str r3, [sp, #40] ; 0x28 area_outer.y2 += dsc->outline_width; aca0: 4435 add r5, r6 area_outer.y1 -= dsc->outline_width; aca2: 1b9b subs r3, r3, r6 area_outer.y2 += dsc->outline_width; aca4: b2ad uxth r5, r5 area_outer.y1 -= dsc->outline_width; aca6: f8ad 3052 strh.w r3, [sp, #82] ; 0x52 area_outer.x2 += dsc->outline_width; acaa: f8ad b054 strh.w fp, [sp, #84] ; 0x54 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); acae: 4b13 ldr r3, [pc, #76] ; (acfc ) area_outer.y2 += dsc->outline_width; acb0: f8ad 5056 strh.w r5, [sp, #86] ; 0x56 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); acb4: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); acb6: 4b12 ldr r3, [pc, #72] ; (ad00 ) acb8: 4798 blx r3 is_common = _lv_area_intersect(&draw_area, &area_outer, clip); acba: 4b12 ldr r3, [pc, #72] ; (ad04 ) lv_disp_buf_t * vdb = lv_disp_get_buf(disp); acbc: 9006 str r0, [sp, #24] is_common = _lv_area_intersect(&draw_area, &area_outer, clip); acbe: 4642 mov r2, r8 acc0: a914 add r1, sp, #80 ; 0x50 acc2: a816 add r0, sp, #88 ; 0x58 acc4: 4798 blx r3 if(is_common == false) return; acc6: 2800 cmp r0, #0 acc8: f000 810e beq.w aee8 accc: e01c b.n ad08 acce: bf00 nop acd0: 00009915 .word 0x00009915 acd4: 00009711 .word 0x00009711 acd8: 000061f1 .word 0x000061f1 acdc: 000097a1 .word 0x000097a1 ace0: 0000eb69 .word 0x0000eb69 ace4: 0001019d .word 0x0001019d ace8: 0000e131 .word 0x0000e131 acec: 00007845 .word 0x00007845 acf0: 00007875 .word 0x00007875 acf4: 00009b8d .word 0x00009b8d acf8: 000097f1 .word 0x000097f1 acfc: 00004fe9 .word 0x00004fe9 ad00: 0000d9e1 .word 0x0000d9e1 ad04: 0000de8d .word 0x0000de8d ad08: 9b07 ldr r3, [sp, #28] draw_area.x1 -= disp_area->x1; ad0a: f8bd 1058 ldrh.w r1, [sp, #88] ; 0x58 ad0e: f1c3 0301 rsb r3, r3, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad12: f1c9 0901 rsb r9, r9, #1 ad16: 44b9 add r9, r7 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad18: 441f add r7, r3 ad1a: 9b08 ldr r3, [sp, #32] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad1c: eb04 0209 add.w r2, r4, r9 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad20: 443b add r3, r7 int32_t inner_w = lv_area_get_width(&area_inner); ad22: b212 sxth r2, r2 int32_t inner_h = lv_area_get_height(&area_inner); ad24: b21b sxth r3, r3 int32_t short_side = LV_MATH_MIN(inner_w, inner_h); ad26: 429a cmp r2, r3 ad28: bfa8 it ge ad2a: 461a movge r2, r3 ad2c: 9b0c ldr r3, [sp, #48] ; 0x30 if(rin > short_side >> 1) rin = short_side >> 1; ad2e: 1052 asrs r2, r2, #1 ad30: 429a cmp r2, r3 ad32: bfa8 it ge ad34: 461a movge r2, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad36: 9b09 ldr r3, [sp, #36] ; 0x24 ad38: f1c3 0301 rsb r3, r3, #1 ad3c: 4433 add r3, r6 ad3e: 449b add fp, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ad40: 9b0a ldr r3, [sp, #40] ; 0x28 ad42: f1c3 0301 rsb r3, r3, #1 ad46: 441e add r6, r3 ad48: 4435 add r5, r6 int32_t coords_out_w = lv_area_get_width(&area_outer); ad4a: fa0f fb8b sxth.w fp, fp int32_t coords_out_h = lv_area_get_height(&area_outer); ad4e: b22d sxth r5, r5 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); ad50: 45ab cmp fp, r5 int32_t rout = rin + dsc->outline_width; ad52: 9b0d ldr r3, [sp, #52] ; 0x34 lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); ad54: 4ec8 ldr r6, [pc, #800] ; (b078 ) short_side = LV_MATH_MIN(coords_out_w, coords_out_h); ad56: bfa8 it ge ad58: 46ab movge fp, r5 int32_t rout = rin + dsc->outline_width; ad5a: 4413 add r3, r2 if(rout > short_side >> 1) rout = short_side >> 1; ad5c: ea4f 0b6b mov.w fp, fp, asr #1 ad60: 459b cmp fp, r3 ad62: 46d9 mov r9, fp ad64: bfa8 it ge ad66: 4699 movge r9, r3 draw_area.x1 -= disp_area->x1; ad68: 9b06 ldr r3, [sp, #24] draw_area.x2 -= disp_area->x1; ad6a: f8bd 505c ldrh.w r5, [sp, #92] ; 0x5c draw_area.x1 -= disp_area->x1; ad6e: 8a1b ldrh r3, [r3, #16] ad70: 1ac8 subs r0, r1, r3 ad72: f8ad 0058 strh.w r0, [sp, #88] ; 0x58 draw_area.y1 -= disp_area->y1; ad76: 9806 ldr r0, [sp, #24] draw_area.x2 -= disp_area->x1; ad78: 1aeb subs r3, r5, r3 draw_area.y1 -= disp_area->y1; ad7a: 8a44 ldrh r4, [r0, #18] draw_area.x2 -= disp_area->x1; ad7c: f8ad 305c strh.w r3, [sp, #92] ; 0x5c draw_area.y2 -= disp_area->y1; ad80: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e draw_area.y1 -= disp_area->y1; ad84: f8bd 005a ldrh.w r0, [sp, #90] ; 0x5a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ad88: 3501 adds r5, #1 draw_area.y2 -= disp_area->y1; ad8a: 1b1b subs r3, r3, r4 ad8c: 1a6d subs r5, r5, r1 draw_area.y1 -= disp_area->y1; ad8e: 1b00 subs r0, r0, r4 draw_area.y2 -= disp_area->y1; ad90: f8ad 305e strh.w r3, [sp, #94] ; 0x5e ad94: b22b sxth r3, r5 ad96: ee08 3a10 vmov s16, r3 draw_area.y1 -= disp_area->y1; ad9a: f8ad 005a strh.w r0, [sp, #90] ; 0x5a lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); ad9e: 2301 movs r3, #1 ada0: a912 add r1, sp, #72 ; 0x48 ada2: a81e add r0, sp, #120 ; 0x78 ada4: 47b0 blx r6 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); ada6: 4cb5 ldr r4, [pc, #724] ; (b07c ) ada8: 2100 movs r1, #0 adaa: a81e add r0, sp, #120 ; 0x78 adac: 47a0 blx r4 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); adae: fa0f f289 sxth.w r2, r9 adb2: 2300 movs r3, #0 adb4: a914 add r1, sp, #80 ; 0x50 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); adb6: ee08 0a90 vmov s17, r0 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); adba: a825 add r0, sp, #148 ; 0x94 adbc: 47b0 blx r6 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); adbe: 2100 movs r1, #0 adc0: a825 add r0, sp, #148 ; 0x94 adc2: 47a0 blx r4 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); adc4: 4bae ldr r3, [pc, #696] ; (b080 ) int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); adc6: ee09 0a10 vmov s18, r0 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); adca: ee18 0a10 vmov r0, s16 adce: 4798 blx r3 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); add0: f9ba 3018 ldrsh.w r3, [sl, #24] fill_area.y1 = disp_area->y1 + draw_area.y1; add4: f9bd 605a ldrsh.w r6, [sp, #90] ; 0x5a if(simple_mode) { add8: 9a0b ldr r2, [sp, #44] ; 0x2c lv_color_t color = dsc->outline_color; adda: f8ba 7016 ldrh.w r7, [sl, #22] lv_blend_mode_t blend_mode = dsc->outline_blend_mode; adde: f89a b01d ldrb.w fp, [sl, #29] fill_area.x2 = area_outer.x2; ade2: f9bd 1054 ldrsh.w r1, [sp, #84] ; 0x54 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); ade6: 4599 cmp r9, r3 ade8: bfbc itt lt adea: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff adee: 9307 strlt r3, [sp, #28] int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; adf0: 9b06 ldr r3, [sp, #24] adf2: bfa8 it ge adf4: f8cd 901c strge.w r9, [sp, #28] adf8: f9b3 c012 ldrsh.w ip, [r3, #18] fill_area.y1 = disp_area->y1 + draw_area.y1; adfc: eb0c 0306 add.w r3, ip, r6 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); ae00: 4604 mov r4, r0 fill_area.y1 = disp_area->y1 + draw_area.y1; ae02: b21b sxth r3, r3 fill_area.x1 = area_outer.x1; ae04: f9bd 0050 ldrsh.w r0, [sp, #80] ; 0x50 if(simple_mode) { ae08: 2a00 cmp r2, #0 ae0a: f040 873f bne.w bc8c int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; ae0e: f9bd 2052 ldrsh.w r2, [sp, #82] ; 0x52 ae12: 9d07 ldr r5, [sp, #28] fill_area.x1 = area_outer.x1; ae14: f8ad 0060 strh.w r0, [sp, #96] ; 0x60 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; ae18: eba2 020c sub.w r2, r2, ip ae1c: 442a add r2, r5 ae1e: 9208 str r2, [sp, #32] fill_area.x2 = area_outer.x2; ae20: f8ad 1064 strh.w r1, [sp, #100] ; 0x64 fill_area.y1 = disp_area->y1 + draw_area.y1; ae24: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; ae28: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { ae2c: 9b08 ldr r3, [sp, #32] ae2e: 42b3 cmp r3, r6 ae30: f280 8624 bge.w ba7c int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size; ae34: 9b06 ldr r3, [sp, #24] ae36: f9bd 6056 ldrsh.w r6, [sp, #86] ; 0x56 ae3a: f9b3 3012 ldrsh.w r3, [r3, #18] ae3e: 9a07 ldr r2, [sp, #28] ae40: 1af6 subs r6, r6, r3 ae42: 1ab6 subs r6, r6, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; ae44: 9a08 ldr r2, [sp, #32] ae46: 42b2 cmp r2, r6 ae48: bfa4 itt ge ae4a: 4616 movge r6, r2 ae4c: 3601 addge r6, #1 fill_area.y1 = disp_area->y1 + lower_corner_end; ae4e: 4433 add r3, r6 ae50: b21b sxth r3, r3 ae52: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; ae56: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { ae5a: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e ae5e: 429e cmp r6, r3 ae60: f340 868d ble.w bb7e fill_area.y1 = area_outer.y1 + corner_size + 1; ae64: f8bd 3052 ldrh.w r3, [sp, #82] ; 0x52 ae68: 9a07 ldr r2, [sp, #28] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); ae6a: 4d86 ldr r5, [pc, #536] ; (b084 ) fill_area.y1 = area_outer.y1 + corner_size + 1; ae6c: 3301 adds r3, #1 ae6e: fa13 f382 uxtah r3, r3, r2 ae72: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = area_outer.y2 - corner_size - 1; ae76: f8bd 3056 ldrh.w r3, [sp, #86] ; 0x56 ae7a: 3b01 subs r3, #1 ae7c: 1a9b subs r3, r3, r2 ae7e: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 fill_area.x1 = area_outer.x1; ae82: f9bd 3050 ldrsh.w r3, [sp, #80] ; 0x50 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; ae86: f8ba 2018 ldrh.w r2, [sl, #24] fill_area.x1 = area_outer.x1; ae8a: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; ae8e: 3b01 subs r3, #1 ae90: 4413 add r3, r2 _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); ae92: 2601 movs r6, #1 fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; ae94: 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); ae98: 9b05 ldr r3, [sp, #20] ae9a: 9301 str r3, [sp, #4] ae9c: 463a mov r2, r7 ae9e: 2300 movs r3, #0 aea0: a918 add r1, sp, #96 ; 0x60 aea2: 4640 mov r0, r8 aea4: f8cd b008 str.w fp, [sp, #8] aea8: 9600 str r6, [sp, #0] aeaa: 47a8 blx r5 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; aeac: f9bd 2054 ldrsh.w r2, [sp, #84] ; 0x54 aeb0: f8ba 1018 ldrh.w r1, [sl, #24] fill_area.x2 = area_outer.x2; aeb4: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; aeb8: 1993 adds r3, r2, r6 aeba: 1a5b subs r3, r3, r1 aebc: 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); aec0: 9b05 ldr r3, [sp, #20] aec2: f8cd b008 str.w fp, [sp, #8] aec6: e9cd 6300 strd r6, r3, [sp] aeca: 463a mov r2, r7 aecc: 2300 movs r3, #0 aece: a918 add r1, sp, #96 ; 0x60 aed0: 4640 mov r0, r8 aed2: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); aed4: 4d6c ldr r5, [pc, #432] ; (b088 ) aed6: ee18 0a90 vmov r0, s17 aeda: 47a8 blx r5 lv_draw_mask_remove_id(mask_rout_id); aedc: ee19 0a10 vmov r0, s18 aee0: 47a8 blx r5 _lv_mem_buf_release(mask_buf); aee2: 4b6a ldr r3, [pc, #424] ; (b08c ) aee4: 4620 mov r0, r4 aee6: 4798 blx r3 } aee8: b02d add sp, #180 ; 0xb4 aeea: ecbd 8b04 vpop {d8-d9} aeee: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} _lv_memcpy(mask_buf, sh_buf_tmp, w); aef2: 4629 mov r1, r5 aef4: 4b66 ldr r3, [pc, #408] ; (b090 ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); aef6: 4c67 ldr r4, [pc, #412] ; (b094 ) _lv_memcpy(mask_buf, sh_buf_tmp, w); aef8: 4632 mov r2, r6 aefa: ee18 0a10 vmov r0, s16 aefe: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af00: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a af04: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 af08: 4633 mov r3, r6 af0a: ee18 0a10 vmov r0, s16 af0e: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af10: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 af14: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; af16: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af18: 9b08 ldr r3, [sp, #32] af1a: 4c5a ldr r4, [pc, #360] ; (b084 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; af1c: bf08 it eq af1e: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af20: e9cd 0300 strd r0, r3, [sp] af24: a91e add r1, sp, #120 ; 0x78 af26: ee18 3a10 vmov r3, s16 af2a: f8ba 201e ldrh.w r2, [sl, #30] af2e: 4640 mov r0, r8 af30: 47a0 blx r4 fa.y1++; af32: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a af36: 3301 adds r3, #1 af38: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; af3c: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e af40: 3301 adds r3, #1 af42: b21b sxth r3, r3 sh_buf_tmp += corner_size; af44: 444d add r5, r9 for(y = 0; y < h; y++) { af46: 3701 adds r7, #1 af48: f7ff ba2e b.w a3a8 _lv_memcpy(mask_buf, sh_buf_tmp, w); af4c: 4629 mov r1, r5 af4e: 4b50 ldr r3, [pc, #320] ; (b090 ) mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af50: 4c50 ldr r4, [pc, #320] ; (b094 ) _lv_memcpy(mask_buf, sh_buf_tmp, w); af52: 4632 mov r2, r6 af54: ee18 0a10 vmov r0, s16 af58: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); af5a: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a af5e: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 af62: 4633 mov r3, r6 af64: ee18 0a10 vmov r0, s16 af68: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af6a: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 af6e: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; af70: 2801 cmp r0, #1 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af72: 9b08 ldr r3, [sp, #32] af74: 4c43 ldr r4, [pc, #268] ; (b084 ) if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; af76: bf08 it eq af78: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, af7a: e9cd 0300 strd r0, r3, [sp] af7e: a91e add r1, sp, #120 ; 0x78 af80: ee18 3a10 vmov r3, s16 af84: f8ba 201e ldrh.w r2, [sl, #30] af88: 4640 mov r0, r8 af8a: 47a0 blx r4 fa.y1--; af8c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a af90: 3b01 subs r3, #1 af92: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2--; af96: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e af9a: 3b01 subs r3, #1 af9c: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; afa0: 444d add r5, r9 for(y = 0; y < h; y++) { afa2: 3701 adds r7, #1 afa4: f7ff ba55 b.w a452 _lv_memcpy(mask_buf, sh_buf_tmp, w); afa8: 4b39 ldr r3, [pc, #228] ; (b090 ) afaa: ee18 0a10 vmov r0, s16 afae: 462a mov r2, r5 afb0: 4631 mov r1, r6 afb2: 4798 blx r3 if(simple_mode) { afb4: 9b07 ldr r3, [sp, #28] afb6: b953 cbnz r3, afce mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); afb8: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a afbc: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 afc0: 4c34 ldr r4, [pc, #208] ; (b094 ) afc2: ee18 0a10 vmov r0, s16 afc6: 462b mov r3, r5 afc8: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; afca: 2801 cmp r0, #1 afcc: d100 bne.n afd0 afce: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, afd0: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 afd4: 9302 str r3, [sp, #8] afd6: f89a 3028 ldrb.w r3, [sl, #40] ; 0x28 afda: 4c2a ldr r4, [pc, #168] ; (b084 ) afdc: e9cd 0300 strd r0, r3, [sp] afe0: a91e add r1, sp, #120 ; 0x78 afe2: ee18 3a10 vmov r3, s16 afe6: f8ba 201e ldrh.w r2, [sl, #30] afea: 4640 mov r0, r8 afec: 47a0 blx r4 fa.y1++; afee: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a aff2: 3301 adds r3, #1 aff4: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; aff8: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e affc: 3301 adds r3, #1 affe: b21b sxth r3, r3 for(y = 0; y < h; y++) { b000: 3701 adds r7, #1 b002: f7ff ba6f b.w a4e4 lv_opa_t opa_tmp = sh_buf_tmp[0]; b006: 7833 ldrb r3, [r6, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b008: 9a08 ldr r2, [sp, #32] b00a: ea02 0103 and.w r1, r2, r3 b00e: 29ff cmp r1, #255 ; 0xff b010: bf1c itt ne b012: fb12 f303 smulbbne r3, r2, r3 b016: f3c3 2107 ubfxne r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); b01a: ee18 0a10 vmov r0, s16 b01e: 4b1e ldr r3, [pc, #120] ; (b098 ) b020: 462a mov r2, r5 b022: 4798 blx r3 if(simple_mode) { b024: 9b07 ldr r3, [sp, #28] b026: b953 cbnz r3, b03e mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b028: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a b02c: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 b030: 4c18 ldr r4, [pc, #96] ; (b094 ) b032: ee18 0a10 vmov r0, s16 b036: 462b mov r3, r5 b038: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b03a: 2801 cmp r0, #1 b03c: d100 bne.n b040 b03e: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b040: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 b044: 9302 str r3, [sp, #8] b046: 23ff movs r3, #255 ; 0xff b048: e9cd 0300 strd r0, r3, [sp] b04c: 4c0d ldr r4, [pc, #52] ; (b084 ) b04e: f8ba 201e ldrh.w r2, [sl, #30] b052: ee18 3a10 vmov r3, s16 b056: a91e add r1, sp, #120 ; 0x78 b058: 4640 mov r0, r8 b05a: 47a0 blx r4 fa.y1++; b05c: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b060: 3301 adds r3, #1 b062: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; b066: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b06a: 3301 adds r3, #1 b06c: b21b sxth r3, r3 sh_buf_tmp += corner_size; b06e: 444e add r6, r9 for(y = 0; y < h; y++) { b070: 3701 adds r7, #1 b072: f7ff ba80 b.w a576 b076: bf00 nop b078: 00009915 .word 0x00009915 b07c: 00009711 .word 0x00009711 b080: 0000eeb5 .word 0x0000eeb5 b084: 000061f1 .word 0x000061f1 b088: 000097a1 .word 0x000097a1 b08c: 0000eb69 .word 0x0000eb69 b090: 0000ec31 .word 0x0000ec31 b094: 00009761 .word 0x00009761 b098: 0000efb9 .word 0x0000efb9 lv_opa_t opa_tmp = sh_buf_tmp[0]; b09c: 7833 ldrb r3, [r6, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; b09e: 9a08 ldr r2, [sp, #32] b0a0: ea02 0103 and.w r1, r2, r3 b0a4: 29ff cmp r1, #255 ; 0xff b0a6: bf1c itt ne b0a8: fb12 f303 smulbbne r3, r2, r3 b0ac: f3c3 2107 ubfxne r1, r3, #8, #8 _lv_memset(mask_buf, opa_tmp, w); b0b0: ee18 0a10 vmov r0, s16 b0b4: 4bb5 ldr r3, [pc, #724] ; (b38c ) b0b6: 462a mov r2, r5 b0b8: 4798 blx r3 if(simple_mode) { b0ba: 9b07 ldr r3, [sp, #28] b0bc: b953 cbnz r3, b0d4 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b0be: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a b0c2: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 b0c6: 4cb2 ldr r4, [pc, #712] ; (b390 ) b0c8: ee18 0a10 vmov r0, s16 b0cc: 462b mov r3, r5 b0ce: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b0d0: 2801 cmp r0, #1 b0d2: d100 bne.n b0d6 b0d4: 2002 movs r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b0d6: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 b0da: 9302 str r3, [sp, #8] b0dc: 23ff movs r3, #255 ; 0xff b0de: e9cd 0300 strd r0, r3, [sp] b0e2: 4cac ldr r4, [pc, #688] ; (b394 ) b0e4: f8ba 201e ldrh.w r2, [sl, #30] b0e8: ee18 3a10 vmov r3, s16 b0ec: a91e add r1, sp, #120 ; 0x78 b0ee: 4640 mov r0, r8 b0f0: 47a0 blx r4 fa.y1--; b0f2: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b0f6: 3b01 subs r3, #1 b0f8: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2--; b0fc: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b100: 3b01 subs r3, #1 b102: f8ad 307e strh.w r3, [sp, #126] ; 0x7e sh_buf_tmp += corner_size; b106: 444e add r6, r9 for(y = 0; y < h; y++) { b108: 3701 adds r7, #1 b10a: f7ff ba81 b.w a610 _lv_memset(mask_buf, dsc->shadow_opa, w); b10e: f89a 1028 ldrb.w r1, [sl, #40] ; 0x28 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b112: 4c9f ldr r4, [pc, #636] ; (b390 ) _lv_memset(mask_buf, dsc->shadow_opa, w); b114: ee18 0a10 vmov r0, s16 b118: 4632 mov r2, r6 b11a: 47c8 blx r9 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); b11c: f9bd 207a ldrsh.w r2, [sp, #122] ; 0x7a b120: f9bd 1078 ldrsh.w r1, [sp, #120] ; 0x78 b124: 4633 mov r3, r6 b126: ee18 0a10 vmov r0, s16 b12a: 47a0 blx r4 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b12c: f89a 3029 ldrb.w r3, [sl, #41] ; 0x29 b130: 9302 str r3, [sp, #8] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; b132: 2801 cmp r0, #1 b134: bf08 it eq b136: 2002 moveq r0, #2 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, b138: 23ff movs r3, #255 ; 0xff b13a: e9cd 0300 strd r0, r3, [sp] b13e: 4c95 ldr r4, [pc, #596] ; (b394 ) b140: f8ba 201e ldrh.w r2, [sl, #30] b144: ee18 3a10 vmov r3, s16 b148: a91e add r1, sp, #120 ; 0x78 b14a: 4640 mov r0, r8 b14c: 47a0 blx r4 fa.y1++; b14e: f8bd 307a ldrh.w r3, [sp, #122] ; 0x7a b152: 3301 adds r3, #1 b154: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fa.y2++; b158: f8bd 307e ldrh.w r3, [sp, #126] ; 0x7e b15c: 3301 adds r3, #1 b15e: b21b sxth r3, r3 for(y = 0; y < h; y++) { b160: 3501 adds r5, #1 b162: f7ff ba93 b.w a68c if(other_mask_cnt) simple_mode = false; b166: 2300 movs r3, #0 b168: f7ff bb13 b.w a792 if(rout > 0) { b16c: 2c00 cmp r4, #0 b16e: f340 80b0 ble.w b2d2 lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false); b172: 2300 movs r3, #0 b174: 4622 mov r2, r4 b176: a916 add r1, sp, #88 ; 0x58 b178: a825 add r0, sp, #148 ; 0x94 b17a: 4f87 ldr r7, [pc, #540] ; (b398 ) b17c: 47b8 blx r7 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); b17e: 4b87 ldr r3, [pc, #540] ; (b39c ) b180: 2100 movs r1, #0 b182: a825 add r0, sp, #148 ; 0x94 b184: 4798 blx r3 b186: 900b str r0, [sp, #44] ; 0x2c lv_color_t grad_color = dsc->bg_color; b188: f8ba 3002 ldrh.w r3, [sl, #2] b18c: ee08 3a10 vmov s16, r3 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { b190: f89a 3006 ldrb.w r3, [sl, #6] b194: 2b02 cmp r3, #2 b196: f040 80a9 bne.w b2ec b19a: f8ba 2004 ldrh.w r2, [sl, #4] b19e: f8ba 3002 ldrh.w r3, [sl, #2] b1a2: 429a cmp r2, r3 b1a4: f000 80a2 beq.w b2ec grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); b1a8: 4b7d ldr r3, [pc, #500] ; (b3a0 ) b1aa: 0070 lsls r0, r6, #1 b1ac: 4798 blx r3 for(i = 0; i < coords_w; i++) { b1ae: 2700 movs r7, #0 grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); b1b0: 9006 str r0, [sp, #24] for(i = 0; i < coords_w; i++) { b1b2: 42be cmp r6, r7 b1b4: 4b7b ldr r3, [pc, #492] ; (b3a4 ) b1b6: f300 8090 bgt.w b2da b1ba: f9bd 205c ldrsh.w r2, [sp, #92] ; 0x5c b1be: f9bd 1058 ldrsh.w r1, [sp, #88] ; 0x58 fill_area.x2 = coords_bg.x2; b1c2: f8ad 206c strh.w r2, [sp, #108] ; 0x6c b1c6: 1c53 adds r3, r2, #1 b1c8: 1a5b subs r3, r3, r1 if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true; b1ca: b21b sxth r3, r3 b1cc: eba3 0344 sub.w r3, r3, r4, lsl #1 b1d0: 930a str r3, [sp, #40] ; 0x28 fill_area.y1 = disp_area->y1 + draw_area.y1; b1d2: 9b05 ldr r3, [sp, #20] b1d4: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 b1d8: 8a5b ldrh r3, [r3, #18] fill_area.x1 = coords_bg.x1; b1da: f8ad 1068 strh.w r1, [sp, #104] ; 0x68 fill_area.y1 = disp_area->y1 + draw_area.y1; b1de: 4413 add r3, r2 b1e0: b21b sxth r3, r3 b1e2: f8ad 306a strh.w r3, [sp, #106] ; 0x6a for(h = draw_area.y1; h <= draw_area.y2; h++) { b1e6: 9207 str r2, [sp, #28] b1e8: 9a07 ldr r2, [sp, #28] fill_area.y2 = fill_area.y1; b1ea: f8ad 306e strh.w r3, [sp, #110] ; 0x6e for(h = draw_area.y1; h <= draw_area.y2; h++) { b1ee: f9bd 3066 ldrsh.w r3, [sp, #102] ; 0x66 b1f2: 429a cmp r2, r3 b1f4: dd7d ble.n b2f2 if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) { b1f6: f89a 3006 ldrb.w r3, [sl, #6] b1fa: 9a0c ldr r2, [sp, #48] ; 0x30 b1fc: 431a orrs r2, r3 b1fe: f012 03ff ands.w r3, r2, #255 ; 0xff b202: d15d bne.n b2c0 b204: 9a0a ldr r2, [sp, #40] ; 0x28 b206: 2a32 cmp r2, #50 ; 0x32 b208: dd5a ble.n b2c0 fill_area.x1 = coords_bg.x1 + rout; b20a: f8bd 2058 ldrh.w r2, [sp, #88] ; 0x58 b20e: fa12 f284 uxtah r2, r2, r4 b212: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 fill_area.x2 = coords_bg.x2 - rout; b216: f8bd 205c ldrh.w r2, [sp, #92] ; 0x5c fill_area.x1 = coords_bg.x1 + rout; b21a: b2a6 uxth r6, r4 fill_area.x2 = coords_bg.x2 - rout; b21c: 1b92 subs r2, r2, r6 b21e: f8ad 206c strh.w r2, [sp, #108] ; 0x6c fill_area.y1 = coords_bg.y1; b222: f9bd 205a ldrsh.w r2, [sp, #90] ; 0x5a b226: f8ad 206a strh.w r2, [sp, #106] ; 0x6a fill_area.y2 = coords_bg.y1 + rout; b22a: 4432 add r2, r6 b22c: f8ad 206e strh.w r2, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area, b230: f89a 200d ldrb.w r2, [sl, #13] b234: 4c57 ldr r4, [pc, #348] ; (b394 ) b236: e9cd 9201 strd r9, r2, [sp, #4] b23a: 2201 movs r2, #1 b23c: 9200 str r2, [sp, #0] b23e: f8ba 2002 ldrh.w r2, [sl, #2] b242: a91a add r1, sp, #104 ; 0x68 b244: 4640 mov r0, r8 b246: 47a0 blx r4 fill_area.y1 = coords_bg.y2 - rout; b248: 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*/ b24c: f9bd 306e ldrsh.w r3, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area, b250: 4c50 ldr r4, [pc, #320] ; (b394 ) fill_area.y2 = coords_bg.y2; b252: f8ad 106e strh.w r1, [sp, #110] ; 0x6e fill_area.y1 = coords_bg.y2 - rout; b256: 1b8a subs r2, r1, r6 b258: b212 sxth r2, r2 if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ b25a: 429a cmp r2, r3 b25c: bfd8 it le b25e: 3301 addle r3, #1 fill_area.y1 = coords_bg.y2 - rout; b260: 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*/ b264: bfd8 it le b266: f8ad 306a strhle.w r3, [sp, #106] ; 0x6a _lv_blend_fill(clip, &fill_area, b26a: f89a 300d ldrb.w r3, [sl, #13] b26e: e9cd 9301 strd r9, r3, [sp, #4] b272: 2701 movs r7, #1 b274: 9700 str r7, [sp, #0] b276: f8ba 2002 ldrh.w r2, [sl, #2] b27a: 2300 movs r3, #0 b27c: a91a add r1, sp, #104 ; 0x68 b27e: 4640 mov r0, r8 b280: 47a0 blx r4 fill_area.x1 = coords_bg.x1; b282: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 b286: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area.x2 = coords_bg.x2; b28a: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c b28e: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area.y1 = coords_bg.y1 + rout + 1; b292: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a b296: 443b add r3, r7 b298: 4433 add r3, r6 b29a: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area.y2 = coords_bg.y2 - rout - 1; b29e: f8bd 305e ldrh.w r3, [sp, #94] ; 0x5e b2a2: 3b01 subs r3, #1 b2a4: 1b9b subs r3, r3, r6 b2a6: f8ad 306e strh.w r3, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area, b2aa: f89a 300d ldrb.w r3, [sl, #13] b2ae: 9700 str r7, [sp, #0] b2b0: e9cd 9301 strd r9, r3, [sp, #4] b2b4: a91a add r1, sp, #104 ; 0x68 b2b6: f8ba 2002 ldrh.w r2, [sl, #2] b2ba: 2300 movs r3, #0 b2bc: 4640 mov r0, r8 b2be: 47a0 blx r4 if(grad_map) _lv_mem_buf_release(grad_map); b2c0: 9b06 ldr r3, [sp, #24] b2c2: 2b00 cmp r3, #0 b2c4: f43f aa98 beq.w a7f8 b2c8: 4618 mov r0, r3 b2ca: 4b37 ldr r3, [pc, #220] ; (b3a8 ) b2cc: 4798 blx r3 b2ce: f7ff ba93 b.w a7f8 int16_t mask_rout_id = LV_MASK_ID_INV; b2d2: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff b2d6: 930b str r3, [sp, #44] ; 0x2c b2d8: e756 b.n b188 grad_map[i] = grad_get(dsc, coords_w, i); b2da: b23a sxth r2, r7 b2dc: 4631 mov r1, r6 b2de: 4650 mov r0, sl b2e0: 4798 blx r3 b2e2: 9b06 ldr r3, [sp, #24] b2e4: f823 0017 strh.w r0, [r3, r7, lsl #1] for(i = 0; i < coords_w; i++) { b2e8: 3701 adds r7, #1 b2ea: e762 b.n b1b2 lv_color_t * grad_map = NULL; b2ec: 2300 movs r3, #0 b2ee: 9306 str r3, [sp, #24] b2f0: e763 b.n b1ba int32_t y = h + vdb->area.y1; b2f2: 9b05 ldr r3, [sp, #20] b2f4: f9b3 7012 ldrsh.w r7, [r3, #18] b2f8: 9b07 ldr r3, [sp, #28] b2fa: 441f add r7, r3 if(y > coords_bg.y1 + rout + 1 && b2fc: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a b300: 4423 add r3, r4 b302: 3301 adds r3, #1 b304: 429f cmp r7, r3 b306: dd08 ble.n b31a y < coords_bg.y2 - rout - 1) { b308: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e b30c: 1b1b subs r3, r3, r4 b30e: 3b01 subs r3, #1 if(y > coords_bg.y1 + rout + 1 && b310: 429f cmp r7, r3 b312: da02 bge.n b31a if(simple_mode == false) { b314: 9b08 ldr r3, [sp, #32] b316: 2b00 cmp r3, #0 b318: d136 bne.n b388 _lv_memset_ff(mask_buf, draw_area_w); b31a: ee18 1a90 vmov r1, s17 b31e: 4b23 ldr r3, [pc, #140] ; (b3ac ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b320: 4e1b ldr r6, [pc, #108] ; (b390 ) _lv_memset_ff(mask_buf, draw_area_w); b322: 4628 mov r0, r5 b324: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b326: 9b05 ldr r3, [sp, #20] b328: 8a5a ldrh r2, [r3, #18] b32a: 9b07 ldr r3, [sp, #28] b32c: 441a add r2, r3 b32e: 9b05 ldr r3, [sp, #20] b330: 8a19 ldrh r1, [r3, #16] b332: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 b336: 4419 add r1, r3 b338: b212 sxth r2, r2 b33a: ee18 3a90 vmov r3, s17 b33e: b209 sxth r1, r1 b340: 4628 mov r0, r5 b342: 47b0 blx r6 b344: 4606 mov r6, r0 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { b346: f89a 3006 ldrb.w r3, [sl, #6] b34a: 9309 str r3, [sp, #36] ; 0x24 b34c: 2b01 cmp r3, #1 b34e: d12f bne.n b3b0 b350: f8ba 2002 ldrh.w r2, [sl, #2] b354: f8ba 3004 ldrh.w r3, [sl, #4] b358: 429a cmp r2, r3 b35a: d00d beq.n b378 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b35c: f8bd 105e ldrh.w r1, [sp, #94] ; 0x5e b360: f8bd 305a ldrh.w r3, [sp, #90] ; 0x5a b364: 3101 adds r1, #1 grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1); b366: 1afa subs r2, r7, r3 b368: 1ac9 subs r1, r1, r3 b36a: b212 sxth r2, r2 b36c: 4b0d ldr r3, [pc, #52] ; (b3a4 ) b36e: b209 sxth r1, r1 b370: 4650 mov r0, sl b372: 4798 blx r3 b374: ee08 0a10 vmov s16, r0 if(simple_mode && split && b378: 9b08 ldr r3, [sp, #32] b37a: 2b00 cmp r3, #0 b37c: f000 80a3 beq.w b4c6 b380: 9b0a ldr r3, [sp, #40] ; 0x28 b382: 2b32 cmp r3, #50 ; 0x32 b384: dc1c bgt.n b3c0 b386: e09e b.n b4c6 mask_res = LV_DRAW_MASK_RES_FULL_COVER; b388: 2601 movs r6, #1 b38a: e7dc b.n b346 b38c: 0000efb9 .word 0x0000efb9 b390: 00009761 .word 0x00009761 b394: 000061f1 .word 0x000061f1 b398: 00009915 .word 0x00009915 b39c: 00009711 .word 0x00009711 b3a0: 0000eeb5 .word 0x0000eeb5 b3a4: 00009971 .word 0x00009971 b3a8: 0000eb69 .word 0x0000eb69 b3ac: 0000f075 .word 0x0000f075 if(simple_mode && split && b3b0: 9b08 ldr r3, [sp, #32] b3b2: 2b00 cmp r3, #0 b3b4: f000 84a2 beq.w bcfc b3b8: 9b0a ldr r3, [sp, #40] ; 0x28 b3ba: 2b32 cmp r3, #50 ; 0x32 b3bc: f340 849e ble.w bcfc (y < coords_bg.y1 + rout + 1 || b3c0: f9bd 305a ldrsh.w r3, [sp, #90] ; 0x5a b3c4: 4423 add r3, r4 if(simple_mode && split && b3c6: 429f cmp r7, r3 b3c8: dd04 ble.n b3d4 y > coords_bg.y2 - rout - 1)) { b3ca: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e b3ce: 1b1b subs r3, r3, r4 (y < coords_bg.y1 + rout + 1 || b3d0: 429f cmp r7, r3 b3d2: db5a blt.n b48a fill_area2.x1 = coords_bg.x1; b3d4: f9bd 3058 ldrsh.w r3, [sp, #88] ; 0x58 b3d8: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords_bg.x1 + rout - 1; b3dc: 3b01 subs r3, #1 b3de: fa13 f384 uxtah r3, r3, r4 b3e2: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.y1 = fill_area.y1; b3e6: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a b3ea: f8ad 307a strh.w r3, [sp, #122] ; 0x7a fill_area2.y2 = fill_area.y2; b3ee: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e b3f2: f8ad 307e strh.w r3, [sp, #126] ; 0x7e _lv_blend_fill(clip, &fill_area2, b3f6: f89a 300d ldrb.w r3, [sl, #13] b3fa: 4f9e ldr r7, [pc, #632] ; (b674 ) b3fc: 9600 str r6, [sp, #0] fill_area2.x2 = coords_bg.x1 + rout - 1; b3fe: b2a2 uxth r2, r4 _lv_blend_fill(clip, &fill_area2, b400: e9cd 9301 strd r9, r3, [sp, #4] fill_area2.x2 = coords_bg.x1 + rout - 1; b404: 9209 str r2, [sp, #36] ; 0x24 _lv_blend_fill(clip, &fill_area2, b406: 462b mov r3, r5 b408: ee18 2a10 vmov r2, s16 b40c: a91e add r1, sp, #120 ; 0x78 b40e: 4640 mov r0, r8 b410: 47b8 blx r7 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { b412: f89a 2006 ldrb.w r2, [sl, #6] b416: 2a01 cmp r2, #1 b418: d115 bne.n b446 fill_area2.x1 = coords_bg.x1 + rout; b41a: 9909 ldr r1, [sp, #36] ; 0x24 b41c: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 b420: 440b add r3, r1 b422: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 fill_area2.x2 = coords_bg.x2 - rout; b426: f8bd 305c ldrh.w r3, [sp, #92] ; 0x5c b42a: 1a5b subs r3, r3, r1 b42c: f8ad 307c strh.w r3, [sp, #124] ; 0x7c _lv_blend_fill(clip, &fill_area2, b430: f89a 300d ldrb.w r3, [sl, #13] b434: 9200 str r2, [sp, #0] b436: e9cd 9301 strd r9, r3, [sp, #4] b43a: ee18 2a10 vmov r2, s16 b43e: 2300 movs r3, #0 b440: a91e add r1, sp, #120 ; 0x78 b442: 4640 mov r0, r8 b444: 47b8 blx r7 fill_area2.x1 = coords_bg.x2 - rout + 1; b446: f9bd 305c ldrsh.w r3, [sp, #92] ; 0x5c b44a: 9909 ldr r1, [sp, #36] ; 0x24 fill_area2.x2 = coords_bg.x2; b44c: f8ad 307c strh.w r3, [sp, #124] ; 0x7c fill_area2.x1 = coords_bg.x2 - rout + 1; b450: 1c5a adds r2, r3, #1 b452: 1a52 subs r2, r2, r1 b454: f8ad 2078 strh.w r2, [sp, #120] ; 0x78 int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b458: 9a05 ldr r2, [sp, #20] b45a: f9bd 1060 ldrsh.w r1, [sp, #96] ; 0x60 b45e: f9b2 2010 ldrsh.w r2, [r2, #16] b462: 1b1b subs r3, r3, r4 b464: 440a add r2, r1 b466: 3301 adds r3, #1 b468: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, b46a: f89a 200d ldrb.w r2, [sl, #13] b46e: 9600 str r6, [sp, #0] b470: e9cd 9201 strd r9, r2, [sp, #4] b474: ee18 2a10 vmov r2, s16 b478: 2b00 cmp r3, #0 b47a: bfac ite ge b47c: 18eb addge r3, r5, r3 b47e: 1c2b addlt r3, r5, #0 b480: a91e add r1, sp, #120 ; 0x78 _lv_blend_fill(clip, &fill_area, b482: 4e7c ldr r6, [pc, #496] ; (b674 ) b484: 4640 mov r0, r8 b486: 47b0 blx r6 b488: e00d b.n b4a6 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { b48a: 9b09 ldr r3, [sp, #36] ; 0x24 b48c: 2b02 cmp r3, #2 b48e: d116 bne.n b4be _lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode); b490: f89a 300d ldrb.w r3, [sl, #13] b494: 9a06 ldr r2, [sp, #24] b496: 9600 str r6, [sp, #0] b498: e9cd 9301 strd r9, r3, [sp, #4] b49c: 4e76 ldr r6, [pc, #472] ; (b678 ) b49e: 462b mov r3, r5 b4a0: a91a add r1, sp, #104 ; 0x68 b4a2: 4640 mov r0, r8 b4a4: 47b0 blx r6 fill_area.y1++; b4a6: f8bd 306a ldrh.w r3, [sp, #106] ; 0x6a for(h = draw_area.y1; h <= draw_area.y2; h++) { b4aa: 9a07 ldr r2, [sp, #28] fill_area.y1++; b4ac: 3301 adds r3, #1 b4ae: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area.y2++; b4b2: f8bd 306e ldrh.w r3, [sp, #110] ; 0x6e b4b6: 3301 adds r3, #1 b4b8: b21b sxth r3, r3 for(h = draw_area.y1; h <= draw_area.y2; h++) { b4ba: 3201 adds r2, #1 b4bc: e693 b.n b1e6 else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { b4be: 9b09 ldr r3, [sp, #36] ; 0x24 b4c0: 2b01 cmp r3, #1 b4c2: f040 841f bne.w bd04 _lv_blend_fill(clip, &fill_area, b4c6: f89a 300d ldrb.w r3, [sl, #13] b4ca: 9600 str r6, [sp, #0] b4cc: e9cd 9301 strd r9, r3, [sp, #4] b4d0: ee18 2a10 vmov r2, s16 b4d4: 462b mov r3, r5 b4d6: a91a add r1, sp, #104 ; 0x68 b4d8: e7d3 b.n b482 img_h = header.h; b4da: f8bd 3096 ldrh.w r3, [sp, #150] ; 0x96 img_w = header.w; b4de: 9d25 ldr r5, [sp, #148] ; 0x94 img_h = header.h; b4e0: f3c3 174a ubfx r7, r3, #5, #11 lv_draw_img_dsc_init(&img_dsc); b4e4: a81a add r0, sp, #104 ; 0x68 b4e6: 4b65 ldr r3, [pc, #404] ; (b67c ) b4e8: 4798 blx r3 img_dsc.opa = dsc->pattern_opa; b4ea: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 b4ee: f88d 3068 strb.w r3, [sp, #104] ; 0x68 img_dsc.recolor_opa = dsc->pattern_recolor_opa; b4f2: f89a 3037 ldrb.w r3, [sl, #55] ; 0x37 b4f6: f88d 3072 strb.w r3, [sp, #114] ; 0x72 img_dsc.recolor = dsc->pattern_recolor; b4fa: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34 b4fe: f8ad 3074 strh.w r3, [sp, #116] ; 0x74 img_w = header.w; b502: f3c5 258a ubfx r5, r5, #10, #11 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b506: b2bb uxth r3, r7 b508: f103 39ff add.w r9, r3, #4294967295 ; 0xffffffff b50c: 9305 str r3, [sp, #20] if(dsc->pattern_repeat) { b50e: f89a 3038 ldrb.w r3, [sl, #56] ; 0x38 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); b512: f9ba 2000 ldrsh.w r2, [sl] if(dsc->pattern_repeat) { b516: 07db lsls r3, r3, #31 b518: fa1f f989 uxth.w r9, r9 b51c: f140 80c6 bpl.w b6ac lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); b520: 4c57 ldr r4, [pc, #348] ; (b680 ) b522: 2300 movs r3, #0 b524: 4659 mov r1, fp b526: a825 add r0, sp, #148 ; 0x94 b528: 47a0 blx r4 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); b52a: 4b56 ldr r3, [pc, #344] ; (b684 ) b52c: 2100 movs r1, #0 b52e: a825 add r0, sp, #148 ; 0x94 b530: 4798 blx r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b532: f8bb 4004 ldrh.w r4, [fp, #4] b536: f8bb 3000 ldrh.w r3, [fp] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b53a: f8bb 2006 ldrh.w r2, [fp, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b53e: 3401 adds r4, #1 b540: 1ae4 subs r4, r4, r3 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; b542: b224 sxth r4, r4 b544: fb94 f3f5 sdiv r3, r4, r5 b548: fb05 4413 mls r4, r5, r3, r4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b54c: f8bb 3002 ldrh.w r3, [fp, #2] b550: 3201 adds r2, #1 b552: 1ad2 subs r2, r2, r3 int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2; b554: b212 sxth r2, r2 b556: fb92 f1f7 sdiv r1, r2, r7 b55a: fb07 2211 mls r2, r7, r1, r2 b55e: eb02 72d2 add.w r2, r2, r2, lsr #31 coords_tmp.y1 = coords->y1 - ofs_y; b562: eba3 0362 sub.w r3, r3, r2, asr #1 b566: b29b uxth r3, r3 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; b568: eb04 74d4 add.w r4, r4, r4, lsr #31 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); b56c: ee08 0a10 vmov s16, r0 coords_tmp.y1 = coords->y1 - ofs_y; b570: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; b574: 1064 asrs r4, r4, #1 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b576: 444b add r3, r9 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { b578: b21b sxth r3, r3 b57a: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b57e: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { b582: f9bb 3006 ldrsh.w r3, [fp, #6] b586: 429a cmp r2, r3 b588: dd3a ble.n b600 lv_draw_mask_remove_id(radius_mask_id); b58a: ee18 0a10 vmov r0, s16 lv_draw_mask_remove_id(radius_mask_id); b58e: 4b3e ldr r3, [pc, #248] ; (b688 ) b590: 4798 blx r3 b592: f7ff b955 b.w a840 else if(src_type == LV_IMG_SRC_SYMBOL) { b596: 2802 cmp r0, #2 b598: d121 bne.n b5de lv_draw_label_dsc_init(&label_dsc); b59a: 4b3c ldr r3, [pc, #240] ; (b68c ) _lv_txt_get_size(&s, dsc->pattern_image, label_dsc.font, label_dsc.letter_space, label_dsc.line_space, LV_COORD_MAX, b59c: 4c3c ldr r4, [pc, #240] ; (b690 ) lv_draw_label_dsc_init(&label_dsc); b59e: a81e add r0, sp, #120 ; 0x78 b5a0: 4798 blx r3 label_dsc.color = dsc->pattern_recolor; b5a2: f8ba 3034 ldrh.w r3, [sl, #52] ; 0x34 b5a6: f8ad 3078 strh.w r3, [sp, #120] ; 0x78 label_dsc.opa = dsc->pattern_opa; b5aa: f89a 3036 ldrb.w r3, [sl, #54] ; 0x36 b5ae: 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, b5b2: 2100 movs r1, #0 b5b4: f647 4318 movw r3, #31768 ; 0x7c18 label_dsc.font = dsc->pattern_font; b5b8: f8da 2030 ldr.w r2, [sl, #48] ; 0x30 b5bc: 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, b5be: e9cd 3101 strd r3, r1, [sp, #4] b5c2: f9bd 3082 ldrsh.w r3, [sp, #130] ; 0x82 b5c6: 9300 str r3, [sp, #0] b5c8: f8da 102c ldr.w r1, [sl, #44] ; 0x2c b5cc: f9bd 3084 ldrsh.w r3, [sp, #132] ; 0x84 b5d0: a825 add r0, sp, #148 ; 0x94 b5d2: 47a0 blx r4 img_w = s.x; b5d4: f9bd 5094 ldrsh.w r5, [sp, #148] ; 0x94 img_h = s.y; b5d8: f9bd 7096 ldrsh.w r7, [sp, #150] ; 0x96 b5dc: e793 b.n b506 LV_LOG_WARN("lv_img_design: image source type is unknown"); b5de: 4b2d ldr r3, [pc, #180] ; (b694 ) b5e0: 9300 str r3, [sp, #0] b5e2: 492d ldr r1, [pc, #180] ; (b698 ) b5e4: 4b2d ldr r3, [pc, #180] ; (b69c ) b5e6: 4c2e ldr r4, [pc, #184] ; (b6a0 ) b5e8: f240 52ae movw r2, #1454 ; 0x5ae b5ec: 2002 movs r0, #2 b5ee: 47a0 blx r4 lv_draw_img(coords, clip, NULL, NULL); b5f0: 2300 movs r3, #0 b5f2: 4c2c ldr r4, [pc, #176] ; (b6a4 ) b5f4: 461a mov r2, r3 b5f6: 4641 mov r1, r8 b5f8: 4658 mov r0, fp b5fa: 47a0 blx r4 return; b5fc: f7ff b920 b.w a840 coords_tmp.x1 = coords->x1 - ofs_x; b600: f8bb 3000 ldrh.w r3, [fp] coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b604: fa1f f985 uxth.w r9, r5 coords_tmp.x1 = coords->x1 - ofs_x; b608: 1b1b subs r3, r3, r4 b60a: b29b uxth r3, r3 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b60c: f109 32ff add.w r2, r9, #4294967295 ; 0xffffffff coords_tmp.x1 = coords->x1 - ofs_x; b610: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b614: 4413 add r3, r2 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { b616: b21b sxth r3, r3 b618: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b61c: f8ad 3064 strh.w r3, [sp, #100] ; 0x64 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { b620: f9bb 3004 ldrsh.w r3, [fp, #4] b624: 429a cmp r2, r3 b626: dd09 ble.n b63c for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { b628: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b62c: 9a05 ldr r2, [sp, #20] b62e: 4413 add r3, r2 b630: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 b634: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b638: 4413 add r3, r2 b63a: e79d b.n b578 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); b63c: 2e02 cmp r6, #2 b63e: f8da 202c ldr.w r2, [sl, #44] ; 0x2c b642: d110 bne.n b666 b644: 2300 movs r3, #0 b646: 9300 str r3, [sp, #0] b648: 4f17 ldr r7, [pc, #92] ; (b6a8 ) b64a: 4613 mov r3, r2 b64c: 4641 mov r1, r8 b64e: aa1e add r2, sp, #120 ; 0x78 b650: a818 add r0, sp, #96 ; 0x60 b652: 47b8 blx r7 for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { b654: f8bd 3060 ldrh.w r3, [sp, #96] ; 0x60 b658: 444b add r3, r9 b65a: f8ad 3060 strh.w r3, [sp, #96] ; 0x60 b65e: f8bd 3064 ldrh.w r3, [sp, #100] ; 0x64 b662: 444b add r3, r9 b664: e7d7 b.n b616 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); b666: 4f0f ldr r7, [pc, #60] ; (b6a4 ) b668: ab1a add r3, sp, #104 ; 0x68 b66a: 4641 mov r1, r8 b66c: a818 add r0, sp, #96 ; 0x60 b66e: 47b8 blx r7 b670: e7f0 b.n b654 b672: bf00 nop b674: 000061f1 .word 0x000061f1 b678: 000067fd .word 0x000067fd b67c: 00007559 .word 0x00007559 b680: 00009915 .word 0x00009915 b684: 00009711 .word 0x00009711 b688: 000097a1 .word 0x000097a1 b68c: 00007845 .word 0x00007845 b690: 0001019d .word 0x0001019d b694: 0001fdc3 .word 0x0001fdc3 b698: 0001fd6f .word 0x0001fd6f b69c: 0001fdf2 .word 0x0001fdf2 b6a0: 0000e8e9 .word 0x0000e8e9 b6a4: 000075c1 .word 0x000075c1 b6a8: 00007875 .word 0x00007875 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b6ac: f8bb 1004 ldrh.w r1, [fp, #4] b6b0: f8bb 4000 ldrh.w r4, [fp] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b6b4: f8bb 3006 ldrh.w r3, [fp, #6] b6b8: f8bb 0002 ldrh.w r0, [fp, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b6bc: 3101 adds r1, #1 b6be: 1b09 subs r1, r1, r4 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b6c0: 3301 adds r3, #1 b6c2: 1a1b subs r3, r3, r0 int32_t obj_w = lv_area_get_width(coords); b6c4: b209 sxth r1, r1 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b6c6: 1b49 subs r1, r1, r5 int32_t obj_h = lv_area_get_height(coords); b6c8: b21b sxth r3, r3 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b6ca: eb01 71d1 add.w r1, r1, r1, lsr #31 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b6ce: 1bdb subs r3, r3, r7 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b6d0: eb04 0461 add.w r4, r4, r1, asr #1 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b6d4: eb03 71d3 add.w r1, r3, r3, lsr #31 b6d8: eb00 0061 add.w r0, r0, r1, asr #1 b6dc: b280 uxth r0, r0 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b6de: b2a4 uxth r4, r4 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b6e0: 3d01 subs r5, #1 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b6e2: 4481 add r9, r0 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; b6e4: f8ad 4060 strh.w r4, [sp, #96] ; 0x60 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b6e8: fa1f f989 uxth.w r9, r9 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b6ec: 442c add r4, r5 if(src_type == LV_IMG_SRC_SYMBOL) { b6ee: 2e02 cmp r6, #2 coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; b6f0: f8ad 0062 strh.w r0, [sp, #98] ; 0x62 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; b6f4: f8ad 4064 strh.w r4, [sp, #100] ; 0x64 coords_tmp.y2 = coords_tmp.y1 + img_h - 1; b6f8: f8ad 9066 strh.w r9, [sp, #102] ; 0x66 if(src_type == LV_IMG_SRC_SYMBOL) { b6fc: d107 bne.n b70e coords_tmp.y1 += y_corr; b6fe: f003 0301 and.w r3, r3, #1 b702: 4418 add r0, r3 coords_tmp.y2 += y_corr; b704: 4499 add r9, r3 coords_tmp.y1 += y_corr; b706: f8ad 0062 strh.w r0, [sp, #98] ; 0x62 coords_tmp.y2 += y_corr; b70a: f8ad 9066 strh.w r9, [sp, #102] ; 0x66 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { b70e: 4b94 ldr r3, [pc, #592] ; (b960 ) b710: 4659 mov r1, fp b712: a818 add r0, sp, #96 ; 0x60 b714: 4798 blx r3 b716: 4604 mov r4, r0 b718: b9c8 cbnz r0, b74e lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); b71a: 4603 mov r3, r0 b71c: f9ba 2000 ldrsh.w r2, [sl] b720: 4d90 ldr r5, [pc, #576] ; (b964 ) b722: 4659 mov r1, fp b724: a825 add r0, sp, #148 ; 0x94 b726: 47a8 blx r5 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); b728: 4621 mov r1, r4 b72a: 4b8f ldr r3, [pc, #572] ; (b968 ) b72c: a825 add r0, sp, #148 ; 0x94 b72e: 4798 blx r3 b730: 4604 mov r4, r0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); b732: 2e02 cmp r6, #2 b734: f8da 202c ldr.w r2, [sl, #44] ; 0x2c b738: d10c bne.n b754 b73a: 2300 movs r3, #0 b73c: 9300 str r3, [sp, #0] b73e: 4d8b ldr r5, [pc, #556] ; (b96c ) b740: 4613 mov r3, r2 b742: 4641 mov r1, r8 b744: aa1e add r2, sp, #120 ; 0x78 b746: a818 add r0, sp, #96 ; 0x60 b748: 47a8 blx r5 lv_draw_mask_remove_id(radius_mask_id); b74a: 4620 mov r0, r4 b74c: e71f b.n b58e int16_t radius_mask_id = LV_MASK_ID_INV; b74e: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff b752: e7ee b.n b732 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); b754: 4d86 ldr r5, [pc, #536] ; (b970 ) b756: ab1a add r3, sp, #104 ; 0x68 b758: 4641 mov r1, r8 b75a: a818 add r0, sp, #96 ; 0x60 b75c: 47a8 blx r5 b75e: e7f4 b.n b74a if(other_mask_cnt) simple_mode = false; b760: 2300 movs r3, #0 b762: f7ff b8ba b.w a8da int16_t mask_rout_id = LV_MASK_ID_INV; b766: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff b76a: 930c str r3, [sp, #48] ; 0x30 b76c: f7ff b8dc b.w a928 _lv_memset_ff(mask_buf, draw_area_w); b770: 4b80 ldr r3, [pc, #512] ; (b974 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b772: 4f81 ldr r7, [pc, #516] ; (b978 ) _lv_memset_ff(mask_buf, draw_area_w); b774: 4649 mov r1, r9 b776: 4620 mov r0, r4 b778: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b77a: 9b06 ldr r3, [sp, #24] b77c: 8a5a ldrh r2, [r3, #18] b77e: 8a19 ldrh r1, [r3, #16] b780: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 b784: 4432 add r2, r6 b786: 4419 add r1, r3 b788: b212 sxth r2, r2 b78a: 464b mov r3, r9 b78c: b209 sxth r1, r1 b78e: 4620 mov r0, r4 b790: 47b8 blx r7 fill_area2.y1 = fill_area.y1; b792: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b796: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; b79a: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b79e: f8ad 306e strh.w r3, [sp, #110] ; 0x6e fill_area2.x1 = coords->x1; b7a2: f9bb 3000 ldrsh.w r3, [fp] b7a6: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x1 + rout - 1; b7aa: 3b01 subs r3, #1 b7ac: 442b add r3, r5 b7ae: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); b7b2: 9b07 ldr r3, [sp, #28] b7b4: 9302 str r3, [sp, #8] b7b6: 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); b7b8: 900b str r0, [sp, #44] ; 0x2c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); b7ba: ee18 2a10 vmov r2, s16 b7be: 9301 str r3, [sp, #4] b7c0: 9000 str r0, [sp, #0] b7c2: 4623 mov r3, r4 b7c4: a91a add r1, sp, #104 ; 0x68 b7c6: 4f6d ldr r7, [pc, #436] ; (b97c ) b7c8: 4640 mov r0, r8 b7ca: 47b8 blx r7 if(fill_area2.y2 < coords->y1 + dsc->border_width) { b7cc: f9bb 3002 ldrsh.w r3, [fp, #2] b7d0: f9ba 1010 ldrsh.w r1, [sl, #16] b7d4: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e b7d8: 440b add r3, r1 b7da: 429a cmp r2, r3 b7dc: da15 bge.n b80a fill_area2.x1 = coords->x1 + rout; b7de: f8bb 3000 ldrh.w r3, [fp] b7e2: 442b add r3, r5 b7e4: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x2 - rout; b7e8: f8bb 3004 ldrh.w r3, [fp, #4] b7ec: 1b5b subs r3, r3, r5 b7ee: 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); b7f2: 9b07 ldr r3, [sp, #28] b7f4: 9302 str r3, [sp, #8] b7f6: 9b05 ldr r3, [sp, #20] b7f8: 9301 str r3, [sp, #4] b7fa: 2301 movs r3, #1 b7fc: 9300 str r3, [sp, #0] b7fe: ee18 2a10 vmov r2, s16 b802: 2300 movs r3, #0 b804: a91a add r1, sp, #104 ; 0x68 b806: 4640 mov r0, r8 b808: 47b8 blx r7 fill_area2.x1 = coords->x2 - rout + 1; b80a: f9bb 3004 ldrsh.w r3, [fp, #4] fill_area2.x2 = coords->x2; b80e: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = coords->x2 - rout + 1; b812: 1c5a adds r2, r3, #1 b814: 1b52 subs r2, r2, r5 b816: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b81a: 9a09 ldr r2, [sp, #36] ; 0x24 b81c: f9bd 1050 ldrsh.w r1, [sp, #80] ; 0x50 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b820: 4f56 ldr r7, [pc, #344] ; (b97c ) int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b822: 1a9b subs r3, r3, r2 b824: 9a06 ldr r2, [sp, #24] b826: f9b2 2010 ldrsh.w r2, [r2, #16] b82a: 3301 adds r3, #1 b82c: 440a add r2, r1 b82e: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b830: 9a07 ldr r2, [sp, #28] b832: 9202 str r2, [sp, #8] b834: 9a05 ldr r2, [sp, #20] b836: 9201 str r2, [sp, #4] b838: 9a0b ldr r2, [sp, #44] ; 0x2c b83a: 9200 str r2, [sp, #0] b83c: 2b00 cmp r3, #0 b83e: bfac ite ge b840: 18e3 addge r3, r4, r3 b842: 1c23 addlt r3, r4, #0 b844: ee18 2a10 vmov r2, s16 b848: a91a add r1, sp, #104 ; 0x68 b84a: 4640 mov r0, r8 b84c: 47b8 blx r7 fill_area.y1++; b84e: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b852: 3301 adds r3, #1 b854: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; b858: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b85c: 3301 adds r3, #1 b85e: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { b862: 3601 adds r6, #1 b864: f7ff b902 b.w aa6c _lv_memset_ff(mask_buf, draw_area_w); b868: 4b42 ldr r3, [pc, #264] ; (b974 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b86a: 4f43 ldr r7, [pc, #268] ; (b978 ) _lv_memset_ff(mask_buf, draw_area_w); b86c: 4649 mov r1, r9 b86e: 4620 mov r0, r4 b870: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); b872: 9b06 ldr r3, [sp, #24] b874: 8a5a ldrh r2, [r3, #18] b876: 8a19 ldrh r1, [r3, #16] b878: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 b87c: 4432 add r2, r6 b87e: 4419 add r1, r3 b880: b212 sxth r2, r2 b882: 464b mov r3, r9 b884: b209 sxth r1, r1 b886: 4620 mov r0, r4 b888: 47b8 blx r7 fill_area2.x1 = coords->x1; b88a: f9bb 3000 ldrsh.w r3, [fp] b88e: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x1 + rout - 1; b892: 3b01 subs r3, #1 b894: 442b add r3, r5 b896: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.y1 = fill_area.y1; b89a: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b89e: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; b8a2: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b8a6: f8ad 306e strh.w r3, [sp, #110] ; 0x6e _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); b8aa: 9b07 ldr r3, [sp, #28] b8ac: 9302 str r3, [sp, #8] b8ae: 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); b8b0: 900a str r0, [sp, #40] ; 0x28 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); b8b2: ee18 2a10 vmov r2, s16 b8b6: 9301 str r3, [sp, #4] b8b8: 9000 str r0, [sp, #0] b8ba: 4623 mov r3, r4 b8bc: a91a add r1, sp, #104 ; 0x68 b8be: 4f2f ldr r7, [pc, #188] ; (b97c ) b8c0: 4640 mov r0, r8 b8c2: 47b8 blx r7 if(fill_area2.y2 > coords->y2 - dsc->border_width) { b8c4: f9bb 3006 ldrsh.w r3, [fp, #6] b8c8: f9ba 1010 ldrsh.w r1, [sl, #16] b8cc: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e b8d0: 1a5b subs r3, r3, r1 b8d2: 429a cmp r2, r3 b8d4: dd15 ble.n b902 fill_area2.x1 = coords->x1 + rout; b8d6: f8bb 3000 ldrh.w r3, [fp] b8da: 442b add r3, r5 b8dc: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = coords->x2 - rout; b8e0: f8bb 3004 ldrh.w r3, [fp, #4] b8e4: 1b5b subs r3, r3, r5 b8e6: 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); b8ea: 9b07 ldr r3, [sp, #28] b8ec: 9302 str r3, [sp, #8] b8ee: 9b05 ldr r3, [sp, #20] b8f0: 9301 str r3, [sp, #4] b8f2: 2301 movs r3, #1 b8f4: 9300 str r3, [sp, #0] b8f6: ee18 2a10 vmov r2, s16 b8fa: 2300 movs r3, #0 b8fc: a91a add r1, sp, #104 ; 0x68 b8fe: 4640 mov r0, r8 b900: 47b8 blx r7 fill_area2.x1 = coords->x2 - rout + 1; b902: f9bb 3004 ldrsh.w r3, [fp, #4] fill_area2.x2 = coords->x2; b906: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = coords->x2 - rout + 1; b90a: 1c5a adds r2, r3, #1 b90c: 1b52 subs r2, r2, r5 b90e: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b912: 9a09 ldr r2, [sp, #36] ; 0x24 b914: f9bd 1050 ldrsh.w r1, [sp, #80] ; 0x50 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b918: 4f18 ldr r7, [pc, #96] ; (b97c ) int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); b91a: 1a9b subs r3, r3, r2 b91c: 9a06 ldr r2, [sp, #24] b91e: f9b2 2010 ldrsh.w r2, [r2, #16] b922: 3301 adds r3, #1 b924: 440a add r2, r1 b926: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); b928: 9a07 ldr r2, [sp, #28] b92a: 9202 str r2, [sp, #8] b92c: 9a05 ldr r2, [sp, #20] b92e: 9201 str r2, [sp, #4] b930: 9a0a ldr r2, [sp, #40] ; 0x28 b932: 9200 str r2, [sp, #0] b934: 2b00 cmp r3, #0 b936: bfac ite ge b938: 18e3 addge r3, r4, r3 b93a: 1c23 addlt r3, r4, #0 b93c: ee18 2a10 vmov r2, s16 b940: a91a add r1, sp, #104 ; 0x68 b942: 4640 mov r0, r8 b944: 47b8 blx r7 fill_area.y1++; b946: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 b94a: 3301 adds r3, #1 b94c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; b950: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 b954: 3301 adds r3, #1 b956: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { b95a: 3601 adds r6, #1 b95c: f7ff b8a2 b.w aaa4 b960: 0000e091 .word 0x0000e091 b964: 00009915 .word 0x00009915 b968: 00009711 .word 0x00009711 b96c: 00007875 .word 0x00007875 b970: 000075c1 .word 0x000075c1 b974: 0000f075 .word 0x0000f075 b978: 00009761 .word 0x00009761 b97c: 000061f1 .word 0x000061f1 fill_area.y1 = disp_area->y1 + draw_area.y1; b980: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; b984: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; b988: f9ba 3012 ldrsh.w r3, [sl, #18] fill_area.x1 = coords->x1; b98c: f8ad 1060 strh.w r1, [sp, #96] ; 0x60 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; b990: 2b04 cmp r3, #4 fill_area.x2 = coords->x2; b992: f8ad 2064 strh.w r2, [sp, #100] ; 0x64 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; b996: d15e bne.n ba56 b998: 9a08 ldr r2, [sp, #32] b99a: 4411 add r1, r2 b99c: f8ad 1064 strh.w r1, [sp, #100] ; 0x64 volatile bool top_only = false; b9a0: 2200 movs r2, #0 if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; b9a2: 2b02 cmp r3, #2 volatile bool top_only = false; b9a4: f88d 203e strb.w r2, [sp, #62] ; 0x3e volatile bool bottom_only = false; b9a8: f88d 203f strb.w r2, [sp, #63] ; 0x3f if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; b9ac: d15a bne.n ba64 b9ae: 2301 movs r3, #1 b9b0: f88d 303e strb.w r3, [sp, #62] ; 0x3e volatile bool normal = !top_only && !bottom_only ? true : false; b9b4: f89d 303e ldrb.w r3, [sp, #62] ; 0x3e b9b8: 2b00 cmp r3, #0 b9ba: d15d bne.n ba78 b9bc: f89d 303f ldrb.w r3, [sp, #63] ; 0x3f b9c0: f083 0301 eor.w r3, r3, #1 b9c4: f003 0301 and.w r3, r3, #1 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); b9c8: 4dad ldr r5, [pc, #692] ; (bc80 ) volatile bool normal = !top_only && !bottom_only ? true : false; b9ca: f88d 3040 strb.w r3, [sp, #64] ; 0x40 for(h = draw_area.y1; h <= draw_area.y2; h++) { b9ce: f9bd 3056 ldrsh.w r3, [sp, #86] ; 0x56 b9d2: 429e cmp r6, r3 b9d4: f73f a8a5 bgt.w ab22 if(normal || b9d8: f89d 3040 ldrb.w r3, [sp, #64] ; 0x40 b9dc: b99b cbnz r3, ba06 (top_only && fill_area.y1 <= coords->y1 + corner_size) || b9de: f89d 303e ldrb.w r3, [sp, #62] ; 0x3e b9e2: f9bd 2062 ldrsh.w r2, [sp, #98] ; 0x62 if(normal || b9e6: b12b cbz r3, b9f4 (top_only && fill_area.y1 <= coords->y1 + corner_size) || b9e8: f9bb 3002 ldrsh.w r3, [fp, #2] b9ec: 9908 ldr r1, [sp, #32] b9ee: 440b add r3, r1 b9f0: 429a cmp r2, r3 b9f2: dd08 ble.n ba06 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { b9f4: f89d 303f ldrb.w r3, [sp, #63] ; 0x3f (top_only && fill_area.y1 <= coords->y1 + corner_size) || b9f8: b30b cbz r3, ba3e (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { b9fa: f9bb 3006 ldrsh.w r3, [fp, #6] b9fe: 9908 ldr r1, [sp, #32] ba00: 1a5b subs r3, r3, r1 ba02: 429a cmp r2, r3 ba04: db1b blt.n ba3e _lv_memset_ff(mask_buf, draw_area_w); ba06: 4b9f ldr r3, [pc, #636] ; (bc84 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ba08: 4f9f ldr r7, [pc, #636] ; (bc88 ) _lv_memset_ff(mask_buf, draw_area_w); ba0a: 4649 mov r1, r9 ba0c: 4620 mov r0, r4 ba0e: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ba10: 9b06 ldr r3, [sp, #24] ba12: 8a5a ldrh r2, [r3, #18] ba14: 8a19 ldrh r1, [r3, #16] ba16: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 ba1a: 4432 add r2, r6 ba1c: 4419 add r1, r3 ba1e: b212 sxth r2, r2 ba20: 464b mov r3, r9 ba22: b209 sxth r1, r1 ba24: 4620 mov r0, r4 ba26: 47b8 blx r7 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); ba28: 9b07 ldr r3, [sp, #28] ba2a: 9302 str r3, [sp, #8] ba2c: 9b05 ldr r3, [sp, #20] ba2e: ee18 2a10 vmov r2, s16 ba32: e9cd 0300 strd r0, r3, [sp] ba36: a918 add r1, sp, #96 ; 0x60 ba38: 4623 mov r3, r4 ba3a: 4640 mov r0, r8 ba3c: 47a8 blx r5 fill_area.y1++; ba3e: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 ba42: 3301 adds r3, #1 ba44: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; ba48: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 ba4c: 3301 adds r3, #1 ba4e: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= draw_area.y2; h++) { ba52: 3601 adds r6, #1 ba54: e7bb b.n b9ce else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; ba56: 2b08 cmp r3, #8 ba58: bf02 ittt eq ba5a: 9908 ldreq r1, [sp, #32] ba5c: 1a52 subeq r2, r2, r1 ba5e: f8ad 2060 strheq.w r2, [sp, #96] ; 0x60 ba62: e79d b.n b9a0 if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; ba64: 2b01 cmp r3, #1 ba66: d004 beq.n ba72 if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) { ba68: 2b03 cmp r3, #3 ba6a: d1a3 bne.n b9b4 top_only = true; ba6c: 2301 movs r3, #1 ba6e: f88d 303e strb.w r3, [sp, #62] ; 0x3e bottom_only = true; ba72: f88d 303f strb.w r3, [sp, #63] ; 0x3f ba76: e79d b.n b9b4 volatile bool normal = !top_only && !bottom_only ? true : false; ba78: 2300 movs r3, #0 ba7a: e7a3 b.n b9c4 _lv_memset_ff(mask_buf, draw_area_w); ba7c: ee18 1a10 vmov r1, s16 ba80: 4b80 ldr r3, [pc, #512] ; (bc84 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ba82: 4d81 ldr r5, [pc, #516] ; (bc88 ) _lv_memset_ff(mask_buf, draw_area_w); ba84: 4620 mov r0, r4 ba86: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); ba88: 9b06 ldr r3, [sp, #24] ba8a: 8a5a ldrh r2, [r3, #18] ba8c: 8a19 ldrh r1, [r3, #16] ba8e: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 ba92: 4432 add r2, r6 ba94: 4419 add r1, r3 ba96: b212 sxth r2, r2 ba98: ee18 3a10 vmov r3, s16 ba9c: b209 sxth r1, r1 ba9e: 4620 mov r0, r4 baa0: 47a8 blx r5 fill_area2.y1 = fill_area.y1; baa2: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 baa6: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; baaa: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 baae: f8ad 306e strh.w r3, [sp, #110] ; 0x6e fill_area2.x1 = area_outer.x1; bab2: f9bd 3050 ldrsh.w r3, [sp, #80] ; 0x50 bab6: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x1 + rout - 1; baba: 3b01 subs r3, #1 babc: fa13 f389 uxtah r3, r3, r9 bac0: fa1f f289 uxth.w r2, r9 bac4: f8ad 306c strh.w r3, [sp, #108] ; 0x6c _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bac8: 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); baca: 900a str r0, [sp, #40] ; 0x28 fill_area2.x2 = area_outer.x1 + rout - 1; bacc: 9209 str r2, [sp, #36] ; 0x24 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bace: 9301 str r3, [sp, #4] bad0: 9000 str r0, [sp, #0] bad2: 4623 mov r3, r4 bad4: 463a mov r2, r7 bad6: a91a add r1, sp, #104 ; 0x68 bad8: 4d69 ldr r5, [pc, #420] ; (bc80 ) bada: f8cd b008 str.w fp, [sp, #8] bade: 4640 mov r0, r8 bae0: 47a8 blx r5 if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) { bae2: f9bd 3052 ldrsh.w r3, [sp, #82] ; 0x52 bae6: f9ba 1018 ldrsh.w r1, [sl, #24] baea: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e baee: 440b add r3, r1 baf0: 429a cmp r2, r3 baf2: da15 bge.n bb20 fill_area2.x1 = area_outer.x1 + rout; baf4: 9a09 ldr r2, [sp, #36] ; 0x24 baf6: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); bafa: f8cd b008 str.w fp, [sp, #8] fill_area2.x1 = area_outer.x1 + rout; bafe: 4413 add r3, r2 bb00: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x2 - rout; bb04: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 bb08: 1a9b subs r3, r3, r2 bb0a: 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); bb0e: 9b05 ldr r3, [sp, #20] bb10: 9301 str r3, [sp, #4] bb12: 2301 movs r3, #1 bb14: 9300 str r3, [sp, #0] bb16: 463a mov r2, r7 bb18: 2300 movs r3, #0 bb1a: a91a add r1, sp, #104 ; 0x68 bb1c: 4640 mov r0, r8 bb1e: 47a8 blx r5 fill_area2.x1 = area_outer.x2 - rout + 1; bb20: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 bb24: 9909 ldr r1, [sp, #36] ; 0x24 fill_area2.x2 = area_outer.x2; bb26: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = area_outer.x2 - rout + 1; bb2a: 1c5a adds r2, r3, #1 bb2c: 1a52 subs r2, r2, r1 bb2e: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bb32: 9a06 ldr r2, [sp, #24] bb34: f9bd 1058 ldrsh.w r1, [sp, #88] ; 0x58 bb38: f9b2 2010 ldrsh.w r2, [r2, #16] _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bb3c: 4d50 ldr r5, [pc, #320] ; (bc80 ) bb3e: f8cd b008 str.w fp, [sp, #8] int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bb42: eba3 0309 sub.w r3, r3, r9 bb46: 440a add r2, r1 bb48: 3301 adds r3, #1 bb4a: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bb4c: 9a05 ldr r2, [sp, #20] bb4e: 9201 str r2, [sp, #4] bb50: 9a0a ldr r2, [sp, #40] ; 0x28 bb52: 9200 str r2, [sp, #0] bb54: 2b00 cmp r3, #0 bb56: bfac ite ge bb58: 18e3 addge r3, r4, r3 bb5a: 1c23 addlt r3, r4, #0 bb5c: 463a mov r2, r7 bb5e: a91a add r1, sp, #104 ; 0x68 bb60: 4640 mov r0, r8 bb62: 47a8 blx r5 fill_area.y1++; bb64: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bb68: 3301 adds r3, #1 bb6a: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; bb6e: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bb72: 3301 adds r3, #1 bb74: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= upper_corner_end; h++) { bb78: 3601 adds r6, #1 bb7a: f7ff b957 b.w ae2c _lv_memset_ff(mask_buf, draw_area_w); bb7e: ee18 1a10 vmov r1, s16 bb82: 4b40 ldr r3, [pc, #256] ; (bc84 ) mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bb84: 4d40 ldr r5, [pc, #256] ; (bc88 ) _lv_memset_ff(mask_buf, draw_area_w); bb86: 4620 mov r0, r4 bb88: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bb8a: 9b06 ldr r3, [sp, #24] bb8c: 8a5a ldrh r2, [r3, #18] bb8e: 8a19 ldrh r1, [r3, #16] bb90: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 bb94: 4432 add r2, r6 bb96: 4419 add r1, r3 bb98: b212 sxth r2, r2 bb9a: ee18 3a10 vmov r3, s16 bb9e: b209 sxth r1, r1 bba0: 4620 mov r0, r4 bba2: 47a8 blx r5 fill_area2.x1 = area_outer.x1; bba4: f9bd 3050 ldrsh.w r3, [sp, #80] ; 0x50 bba8: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x1 + rout - 1; bbac: 3b01 subs r3, #1 bbae: fa13 f389 uxtah r3, r3, r9 bbb2: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.y1 = fill_area.y1; bbb6: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bbba: f8ad 306a strh.w r3, [sp, #106] ; 0x6a fill_area2.y2 = fill_area.y2; bbbe: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bbc2: f8ad 306e strh.w r3, [sp, #110] ; 0x6e fill_area2.x2 = area_outer.x1 + rout - 1; bbc6: fa1f f289 uxth.w r2, r9 _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bbca: 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); bbcc: 9009 str r0, [sp, #36] ; 0x24 fill_area2.x2 = area_outer.x1 + rout - 1; bbce: 9208 str r2, [sp, #32] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); bbd0: 9301 str r3, [sp, #4] bbd2: 9000 str r0, [sp, #0] bbd4: 4623 mov r3, r4 bbd6: 463a mov r2, r7 bbd8: a91a add r1, sp, #104 ; 0x68 bbda: 4d29 ldr r5, [pc, #164] ; (bc80 ) bbdc: f8cd b008 str.w fp, [sp, #8] bbe0: 4640 mov r0, r8 bbe2: 47a8 blx r5 if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { bbe4: f9bd 3056 ldrsh.w r3, [sp, #86] ; 0x56 bbe8: f9ba 1018 ldrsh.w r1, [sl, #24] bbec: f9bd 206e ldrsh.w r2, [sp, #110] ; 0x6e bbf0: 1a5b subs r3, r3, r1 bbf2: 429a cmp r2, r3 bbf4: dd15 ble.n bc22 fill_area2.x1 = area_outer.x1 + rout; bbf6: 9a08 ldr r2, [sp, #32] bbf8: f8bd 3050 ldrh.w r3, [sp, #80] ; 0x50 _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); bbfc: f8cd b008 str.w fp, [sp, #8] fill_area2.x1 = area_outer.x1 + rout; bc00: 4413 add r3, r2 bc02: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 fill_area2.x2 = area_outer.x2 - rout; bc06: f8bd 3054 ldrh.w r3, [sp, #84] ; 0x54 bc0a: 1a9b subs r3, r3, r2 bc0c: 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); bc10: 9b05 ldr r3, [sp, #20] bc12: 9301 str r3, [sp, #4] bc14: 2301 movs r3, #1 bc16: 9300 str r3, [sp, #0] bc18: 463a mov r2, r7 bc1a: 2300 movs r3, #0 bc1c: a91a add r1, sp, #104 ; 0x68 bc1e: 4640 mov r0, r8 bc20: 47a8 blx r5 fill_area2.x1 = area_outer.x2 - rout + 1; bc22: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 bc26: 9908 ldr r1, [sp, #32] fill_area2.x2 = area_outer.x2; bc28: f8ad 306c strh.w r3, [sp, #108] ; 0x6c fill_area2.x1 = area_outer.x2 - rout + 1; bc2c: 1c5a adds r2, r3, #1 bc2e: 1a52 subs r2, r2, r1 bc30: f8ad 2068 strh.w r2, [sp, #104] ; 0x68 int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bc34: 9a06 ldr r2, [sp, #24] bc36: f9bd 1058 ldrsh.w r1, [sp, #88] ; 0x58 bc3a: f9b2 2010 ldrsh.w r2, [r2, #16] _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bc3e: 4d10 ldr r5, [pc, #64] ; (bc80 ) bc40: f8cd b008 str.w fp, [sp, #8] int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); bc44: eba3 0309 sub.w r3, r3, r9 bc48: 440a add r2, r1 bc4a: 3301 adds r3, #1 bc4c: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); bc4e: 9a05 ldr r2, [sp, #20] bc50: 9201 str r2, [sp, #4] bc52: 9a09 ldr r2, [sp, #36] ; 0x24 bc54: 9200 str r2, [sp, #0] bc56: 2b00 cmp r3, #0 bc58: bfac ite ge bc5a: 18e3 addge r3, r4, r3 bc5c: 1c23 addlt r3, r4, #0 bc5e: 463a mov r2, r7 bc60: a91a add r1, sp, #104 ; 0x68 bc62: 4640 mov r0, r8 bc64: 47a8 blx r5 fill_area.y1++; bc66: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bc6a: 3301 adds r3, #1 bc6c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; bc70: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bc74: 3301 adds r3, #1 bc76: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = lower_corner_end; h <= draw_area.y2; h++) { bc7a: 3601 adds r6, #1 bc7c: f7ff b8ed b.w ae5a bc80: 000061f1 .word 0x000061f1 bc84: 0000f075 .word 0x0000f075 bc88: 00009761 .word 0x00009761 _lv_memset_ff(mask_buf, draw_area_w); bc8c: f8df 908c ldr.w r9, [pc, #140] ; bd1c _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); bc90: f8df a08c ldr.w sl, [pc, #140] ; bd20 fill_area.x1 = area_outer.x1; bc94: f8ad 0060 strh.w r0, [sp, #96] ; 0x60 fill_area.x2 = area_outer.x2; bc98: f8ad 1064 strh.w r1, [sp, #100] ; 0x64 fill_area.y1 = disp_area->y1 + draw_area.y1; bc9c: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2 = fill_area.y1; bca0: f8ad 3066 strh.w r3, [sp, #102] ; 0x66 for(h = draw_area.y1; h <= draw_area.y2; h++) { bca4: f9bd 305e ldrsh.w r3, [sp, #94] ; 0x5e bca8: 429e cmp r6, r3 bcaa: f73f a913 bgt.w aed4 _lv_memset_ff(mask_buf, draw_area_w); bcae: ee18 1a10 vmov r1, s16 bcb2: 4620 mov r0, r4 bcb4: 47c8 blx r9 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); bcb6: 9b06 ldr r3, [sp, #24] bcb8: 4d17 ldr r5, [pc, #92] ; (bd18 ) bcba: 8a5a ldrh r2, [r3, #18] bcbc: 8a19 ldrh r1, [r3, #16] bcbe: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 bcc2: 4432 add r2, r6 bcc4: 4419 add r1, r3 bcc6: b212 sxth r2, r2 bcc8: ee18 3a10 vmov r3, s16 bccc: b209 sxth r1, r1 bcce: 4620 mov r0, r4 bcd0: 47a8 blx r5 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); bcd2: 9b05 ldr r3, [sp, #20] bcd4: f8cd b008 str.w fp, [sp, #8] bcd8: e9cd 0300 strd r0, r3, [sp] bcdc: 463a mov r2, r7 bcde: 4623 mov r3, r4 bce0: a918 add r1, sp, #96 ; 0x60 bce2: 4640 mov r0, r8 bce4: 47d0 blx sl fill_area.y1++; bce6: f8bd 3062 ldrh.w r3, [sp, #98] ; 0x62 bcea: 3301 adds r3, #1 bcec: f8ad 3062 strh.w r3, [sp, #98] ; 0x62 fill_area.y2++; bcf0: f8bd 3066 ldrh.w r3, [sp, #102] ; 0x66 bcf4: 3301 adds r3, #1 bcf6: b21b sxth r3, r3 for(h = draw_area.y1; h <= draw_area.y2; h++) { bcf8: 3601 adds r6, #1 bcfa: e7d1 b.n bca0 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { bcfc: 9b09 ldr r3, [sp, #36] ; 0x24 bcfe: 2b02 cmp r3, #2 bd00: f43f abc6 beq.w b490 else if(other_mask_cnt != 0 || !split) { bd04: 9b0d ldr r3, [sp, #52] ; 0x34 bd06: 2b00 cmp r3, #0 bd08: f47f abdd bne.w b4c6 bd0c: 9b0a ldr r3, [sp, #40] ; 0x28 bd0e: 2b32 cmp r3, #50 ; 0x32 bd10: f73f abc9 bgt.w b4a6 bd14: f7ff bbd7 b.w b4c6 bd18: 00009761 .word 0x00009761 bd1c: 0000f075 .word 0x0000f075 bd20: 000061f1 .word 0x000061f1 0000bd24 : { bd24: b5f0 push {r4, r5, r6, r7, lr} LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); bd26: f3c1 1345 ubfx r3, r1, #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))); bd2a: f1c2 06ff rsb r6, 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))); bd2e: f3c0 1445 ubfx r4, r0, #5, #6 bd32: 4373 muls r3, r6 bd34: fb04 3302 mla r3, r4, 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))); bd38: f001 041f and.w r4, r1, #31 bd3c: f000 071f and.w r7, r0, #31 bd40: 4374 muls r4, r6 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); bd42: f248 0581 movw r5, #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))); bd46: fb07 4402 mla r4, r7, r2, r4 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); bd4a: 436b muls r3, r5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); bd4c: 436c muls r4, r5 return ret; bd4e: f3c3 53c5 ubfx r3, r3, #23, #6 bd52: f3c4 54c4 ubfx r4, r4, #23, #5 bd56: ea44 1443 orr.w r4, r4, r3, 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))); bd5a: f3c1 23c4 ubfx r3, r1, #11, #5 bd5e: 4373 muls r3, r6 bd60: f3c0 20c4 ubfx r0, r0, #11, #5 bd64: fb00 3202 mla r2, r0, r2, r3 bd68: fb05 f302 mul.w r3, r5, r2 bd6c: 0ddb lsrs r3, r3, #23 } bd6e: ea44 20c3 orr.w r0, r4, r3, lsl #11 bd72: bdf0 pop {r4, r5, r6, r7, pc} 0000bd74 <_lv_memcpy_small.isra.0>: LV_ATTRIBUTE_FAST_MEM static inline void * _lv_memcpy_small(void * dst, const void * src, size_t len) bd74: 3901 subs r1, #1 bd76: 4402 add r2, r0 while(len) { bd78: 4290 cmp r0, r2 bd7a: d100 bne.n bd7e <_lv_memcpy_small.isra.0+0xa> s8++; len--; } return dst; } bd7c: 4770 bx lr *d8 = *s8; bd7e: f811 3f01 ldrb.w r3, [r1, #1]! bd82: f800 3b01 strb.w r3, [r0], #1 len--; bd86: e7f7 b.n bd78 <_lv_memcpy_small.isra.0+0x4> 0000bd88 : * 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) { bd88: 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; bd8a: 6886 ldr r6, [r0, #8] { bd8c: 4607 mov r7, r0 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || bd8e: 7800 ldrb r0, [r0, #0] { bd90: 4615 mov r5, r2 lv_color_t p_color = LV_COLOR_BLACK; bd92: 2200 movs r2, #0 bd94: 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 || bd98: f000 021f and.w r2, r0, #31 bd9c: 2a04 cmp r2, #4 { bd9e: 460c mov r4, r1 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || bda0: d009 beq.n bdb6 bda2: 3a05 subs r2, #5 bda4: 2a09 cmp r2, #9 bda6: d81a bhi.n bdde bda8: e8df f002 tbb [pc, r2] bdac: 321d0505 .word 0x321d0505 bdb0: 2f2f5843 .word 0x2f2f5843 bdb4: 2f2f .short 0x2f2f dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; bdb6: 4b2e ldr r3, [pc, #184] ; (be70 ) bdb8: f000 001f and.w r0, r0, #31 bdbc: 4798 blx r3 uint32_t px = dsc->header.w * y * px_size + x * px_size; bdbe: 683b ldr r3, [r7, #0] uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; bdc0: f3c0 00c7 ubfx r0, r0, #3, #8 uint32_t px = dsc->header.w * y * px_size + x * px_size; bdc4: f3c3 238a ubfx r3, r3, #10, #11 bdc8: fb13 f305 smulbb r3, r3, r5 bdcc: fb10 f104 smulbb r1, r0, r4 bdd0: fb00 1103 mla r1, r0, r3, r1 _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); bdd4: 2202 movs r2, #2 bdd6: 4b27 ldr r3, [pc, #156] ; (be74 ) bdd8: 4431 add r1, r6 bdda: a801 add r0, sp, #4 bddc: 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; } bdde: f8bd 0004 ldrh.w r0, [sp, #4] bde2: b003 add sp, #12 bde4: bdf0 pop {r4, r5, r6, r7, pc} uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; bde6: 683b ldr r3, [r7, #0] bde8: f3c3 238a ubfx r3, r3, #10, #11 bdec: 3307 adds r3, #7 bdee: 10db asrs r3, r3, #3 p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); bdf0: fb05 6303 mla r3, r5, r3, r6 bdf4: eb03 03e4 add.w r3, r3, r4, asr #3 bdf8: f004 0207 and.w r2, r4, #7 bdfc: 7a1b ldrb r3, [r3, #8] bdfe: f1c2 0207 rsb r2, r2, #7 be02: 2101 movs r1, #1 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); be04: 4091 lsls r1, r2 be06: 400b ands r3, r1 be08: 4113 asrs r3, r2 p_color = color; be0a: f8ad 3004 strh.w r3, [sp, #4] be0e: e7e6 b.n bdde uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; be10: 683b ldr r3, [r7, #0] be12: f3c3 238a ubfx r3, r3, #10, #11 be16: 3303 adds r3, #3 be18: 109b asrs r3, r3, #2 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); be1a: fb05 6303 mla r3, r5, r3, r6 uint8_t bit = (x & 0x3) * 2; be1e: f004 0203 and.w r2, r4, #3 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); be22: eb03 03a4 add.w r3, r3, r4, asr #2 be26: 0052 lsls r2, r2, #1 be28: 7c1b ldrb r3, [r3, #16] be2a: f1c2 0206 rsb r2, r2, #6 be2e: 2103 movs r1, #3 be30: e7e8 b.n be04 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; be32: 683b ldr r3, [r7, #0] be34: f3c3 238a ubfx r3, r3, #10, #11 be38: 3301 adds r3, #1 be3a: 105b asrs r3, r3, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); be3c: fb05 6203 mla r2, r5, r3, r6 be40: eb02 0264 add.w r2, r2, r4, asr #1 uint8_t bit = (x & 0x1) * 4; be44: f004 0101 and.w r1, r4, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); be48: 0089 lsls r1, r1, #2 be4a: f892 3040 ldrb.w r3, [r2, #64] ; 0x40 be4e: f1c1 0104 rsb r1, r1, #4 be52: 220f movs r2, #15 be54: 408a lsls r2, r1 be56: 4013 ands r3, r2 be58: 410b asrs r3, r1 be5a: e7d6 b.n be0a uint32_t px = dsc->header.w * y + x; be5c: 683b ldr r3, [r7, #0] be5e: f3c3 238a ubfx r3, r3, #10, #11 be62: fb15 4503 smlabb r5, r5, r3, r4 p_color.full = buf_u8[px]; be66: 442e add r6, r5 be68: f896 3400 ldrb.w r3, [r6, #1024] ; 0x400 be6c: e7cd b.n be0a be6e: bf00 nop be70: 00007581 .word 0x00007581 be74: 0000bd75 .word 0x0000bd75 0000be78 : * @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) { be78: b5f0 push {r4, r5, r6, r7, lr} be7a: 460b mov r3, r1 uint8_t * buf_u8 = (uint8_t *)dsc->data; if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { be7c: 7801 ldrb r1, [r0, #0] uint8_t * buf_u8 = (uint8_t *)dsc->data; be7e: 6885 ldr r5, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { be80: f001 011f and.w r1, r1, #31 be84: 2905 cmp r1, #5 { be86: b085 sub sp, #20 be88: 4604 mov r4, r0 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { be8a: d10a bne.n bea2 uint32_t px = dsc->header.w * y * LV_IMG_PX_SIZE_ALPHA_BYTE + x * LV_IMG_PX_SIZE_ALPHA_BYTE; be8c: 6801 ldr r1, [r0, #0] be8e: f3c1 218a ubfx r1, r1, #10, #11 be92: fb12 3201 smlabb r2, r2, r1, r3 return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; be96: eb02 0242 add.w r2, r2, r2, lsl #1 be9a: 442a add r2, r5 be9c: 7890 ldrb r0, [r2, #2] uint32_t px = dsc->header.w * y + x; return buf_u8[px]; } return LV_OPA_COVER; } be9e: b005 add sp, #20 bea0: bdf0 pop {r4, r5, r6, r7, pc} else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT) { bea2: 390b subs r1, #11 bea4: 2903 cmp r1, #3 bea6: d856 bhi.n bf56 bea8: e8df f001 tbb [pc, r1] beac: 4e321902 .word 0x4e321902 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; beb0: 6821 ldr r1, [r4, #0] beb2: f3c1 218a ubfx r1, r1, #10, #11 beb6: 3107 adds r1, #7 beb8: 10c9 asrs r1, r1, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); beba: f003 0007 and.w r0, r3, #7 bebe: fb02 5201 mla r2, r2, r1, r5 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; bec2: 10db asrs r3, r3, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); bec4: f1c0 0007 rsb r0, r0, #7 bec8: 5cd3 ldrb r3, [r2, r3] beca: 2201 movs r2, #1 becc: 4082 lsls r2, r0 bece: 4013 ands r3, r2 return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; bed0: 4103 asrs r3, r0 bed2: bf0c ite eq bed4: f04f 30ff moveq.w r0, #4294967295 ; 0xffffffff bed8: 2000 movne r0, #0 beda: b2c0 uxtb r0, r0 bedc: e7df b.n be9e const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ bede: 491f ldr r1, [pc, #124] ; (bf5c ) bee0: 9100 str r1, [sp, #0] uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; bee2: 6821 ldr r1, [r4, #0] bee4: f3c1 218a ubfx r1, r1, #10, #11 bee8: 3103 adds r1, #3 beea: 1089 asrs r1, r1, #2 uint8_t bit = (x & 0x3) * 2; beec: f003 0003 and.w r0, r3, #3 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); bef0: fb02 5201 mla r2, r2, r1, r5 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; bef4: 109b asrs r3, r3, #2 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); bef6: 0040 lsls r0, r0, #1 bef8: 5cd3 ldrb r3, [r2, r3] befa: f1c0 0006 rsb r0, r0, #6 befe: 2203 movs r2, #3 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); bf00: 4082 lsls r2, r0 bf02: 4013 ands r3, r2 bf04: 4103 asrs r3, r0 return opa_table[px_opa]; bf06: 3310 adds r3, #16 bf08: 446b add r3, sp bf0a: f813 0c10 ldrb.w r0, [r3, #-16] bf0e: e7c6 b.n be9e const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ bf10: 4e13 ldr r6, [pc, #76] ; (bf60 ) bf12: 46ec mov ip, sp bf14: f106 0e10 add.w lr, r6, #16 bf18: 6830 ldr r0, [r6, #0] bf1a: 6871 ldr r1, [r6, #4] bf1c: 4667 mov r7, ip bf1e: c703 stmia r7!, {r0, r1} bf20: 3608 adds r6, #8 bf22: 4576 cmp r6, lr bf24: 46bc mov ip, r7 bf26: d1f7 bne.n bf18 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; bf28: 6821 ldr r1, [r4, #0] bf2a: f3c1 218a ubfx r1, r1, #10, #11 bf2e: 3101 adds r1, #1 bf30: 1049 asrs r1, r1, #1 uint8_t bit = (x & 0x1) * 4; bf32: f003 0001 and.w r0, r3, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); bf36: fb02 5201 mla r2, r2, r1, r5 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; bf3a: 105b asrs r3, r3, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); bf3c: 0080 lsls r0, r0, #2 bf3e: 5cd3 ldrb r3, [r2, r3] bf40: f1c0 0004 rsb r0, r0, #4 bf44: 220f movs r2, #15 bf46: e7db b.n bf00 uint32_t px = dsc->header.w * y + x; bf48: 6821 ldr r1, [r4, #0] bf4a: f3c1 218a ubfx r1, r1, #10, #11 bf4e: fb12 3201 smlabb r2, r2, r1, r3 return buf_u8[px]; bf52: 5ca8 ldrb r0, [r5, r2] bf54: e7a3 b.n be9e if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { bf56: 20ff movs r0, #255 ; 0xff bf58: e7a1 b.n be9e bf5a: bf00 nop bf5c: ffaa5500 .word 0xffaa5500 bf60: 0001fdff .word 0x0001fdff 0000bf64 <_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) { bf64: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; bf68: 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); bf6c: f8df 80ec ldr.w r8, [pc, #236] ; c05c dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; bf70: 021b lsls r3, r3, #8 bf72: 6243 str r3, [r0, #36] ; 0x24 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; bf74: f9b0 300a ldrsh.w r3, [r0, #10] bf78: 021b lsls r3, r3, #8 int32_t angle_low = dsc->cfg.angle / 10; bf7a: 260a movs r6, #10 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; bf7c: 6283 str r3, [r0, #40] ; 0x28 int32_t angle_low = dsc->cfg.angle / 10; bf7e: f9b0 300c ldrsh.w r3, [r0, #12] bf82: fb93 f5f6 sdiv r5, r3, r6 int32_t s1 = _lv_trigo_sin(-angle_low); bf86: fa1f f985 uxth.w r9, r5 { bf8a: 4604 mov r4, r0 int32_t s1 = _lv_trigo_sin(-angle_low); bf8c: f1c9 0000 rsb r0, r9, #0 int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); bf90: f64f 77f6 movw r7, #65526 ; 0xfff6 int32_t s1 = _lv_trigo_sin(-angle_low); bf94: b200 sxth r0, r0 int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); bf96: fb15 3707 smlabb r7, r5, r7, r3 int32_t s1 = _lv_trigo_sin(-angle_low); bf9a: 47c0 blx r8 int32_t angle_hight = angle_low + 1; bf9c: 3501 adds r5, #1 int32_t s2 = _lv_trigo_sin(-angle_hight); bf9e: b2ad uxth r5, r5 int32_t s1 = _lv_trigo_sin(-angle_low); bfa0: 4682 mov sl, r0 int32_t s2 = _lv_trigo_sin(-angle_hight); bfa2: 4268 negs r0, r5 bfa4: b200 sxth r0, r0 bfa6: 47c0 blx r8 bfa8: 4683 mov fp, r0 int32_t c1 = _lv_trigo_sin(-angle_low + 90); bfaa: f1c9 005a rsb r0, r9, #90 ; 0x5a bfae: b200 sxth r0, r0 bfb0: 47c0 blx r8 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); bfb2: f1c5 055a rsb r5, r5, #90 ; 0x5a int32_t c1 = _lv_trigo_sin(-angle_low + 90); bfb6: 4681 mov r9, r0 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); bfb8: b228 sxth r0, r5 bfba: 47c0 blx r8 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; bfbc: 1bf2 subs r2, r6, r7 bfbe: fb07 f30b mul.w r3, r7, fp bfc2: fb02 330a mla r3, r2, sl, r3 bfc6: fb93 f3f6 sdiv r3, r3, r6 bfca: 62e3 str r3, [r4, #44] ; 0x2c dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; bfcc: fb07 f300 mul.w r3, r7, r0 bfd0: fb02 3009 mla r0, r2, r9, r3 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; bfd4: 4b1f ldr r3, [pc, #124] ; (c054 ) dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; bfd6: fb90 f0f6 sdiv r0, r0, r6 bfda: 6320 str r0, [r4, #48] ; 0x30 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; bfdc: 7ca0 ldrb r0, [r4, #18] bfde: 4798 blx r3 bfe0: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 bfe4: f360 0300 bfi r3, r0, #0, #1 bfe8: f884 3034 strb.w r3, [r4, #52] ; 0x34 dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; bfec: 7ca0 ldrb r0, [r4, #18] bfee: 4b1a ldr r3, [pc, #104] ; (c058 ) bff0: 4798 blx r3 if(dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR || dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || bff2: 7ca3 ldrb r3, [r4, #18] bff4: 1f19 subs r1, r3, #4 bff6: 2902 cmp r1, #2 bff8: bf8c ite hi bffa: 2100 movhi r1, #0 bffc: 2101 movls r1, #1 dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; bffe: 0042 lsls r2, r0, #1 c000: ea42 0281 orr.w r2, r2, r1, lsl #2 c004: f894 1034 ldrb.w r1, [r4, #52] ; 0x34 c008: f002 0206 and.w r2, r2, #6 c00c: f021 0106 bic.w r1, r1, #6 c010: 430a orrs r2, r1 c012: f884 2034 strb.w r2, [r4, #52] ; 0x34 } else { dsc->tmp.native_color = 0; } dsc->tmp.img_dsc.data = dsc->cfg.src; c016: 6822 ldr r2, [r4, #0] c018: 6222 str r2, [r4, #32] dsc->tmp.img_dsc.header.always_zero = 0; dsc->tmp.img_dsc.header.cf = dsc->cfg.cf; c01a: 88a2 ldrh r2, [r4, #4] c01c: f003 031f and.w r3, r3, #31 c020: f3c2 020a ubfx r2, r2, #0, #11 c024: ea43 2382 orr.w r3, r3, r2, lsl #10 c028: f9b4 2006 ldrsh.w r2, [r4, #6] c02c: ea43 5342 orr.w r3, r3, r2, lsl #21 c030: 69a2 ldr r2, [r4, #24] c032: f402 7240 and.w r2, r2, #768 ; 0x300 c036: 4313 orrs r3, r2 c038: 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; c03a: 89e2 ldrh r2, [r4, #14] c03c: f44f 3380 mov.w r3, #65536 ; 0x10000 c040: fbb3 f3f2 udiv r3, r3, r2 c044: 86e3 strh r3, [r4, #54] ; 0x36 dsc->res.opa = LV_OPA_COVER; c046: 23ff movs r3, #255 ; 0xff c048: 75a3 strb r3, [r4, #22] dsc->res.color = dsc->cfg.color; c04a: 8a23 ldrh r3, [r4, #16] c04c: 82a3 strh r3, [r4, #20] } c04e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} c052: bf00 nop c054: 00007599 .word 0x00007599 c058: 000075ad .word 0x000075ad c05c: 0000e93d .word 0x0000e93d 0000c060 <_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) { c060: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c064: b085 sub sp, #20 c066: 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); c068: f8df b174 ldr.w fp, [pc, #372] ; c1e0 <_lv_img_buf_get_transformed_area+0x180> { c06c: f8bd 8038 ldrh.w r8, [sp, #56] ; 0x38 c070: 9102 str r1, [sp, #8] int32_t angle_low = angle / 10; c072: 260a movs r6, #10 int32_t angle_rem = angle - (angle_low * 10); c074: f64f 7af6 movw sl, #65526 ; 0xfff6 int32_t angle_low = angle / 10; c078: fb93 f9f6 sdiv r9, r3, r6 int32_t s1 = _lv_trigo_sin(angle_low); c07c: 4648 mov r0, r9 int32_t angle_rem = angle - (angle_low * 10); c07e: fb19 3a0a smlabb sl, r9, sl, r3 { c082: 4614 mov r4, r2 int32_t s1 = _lv_trigo_sin(angle_low); c084: 47d8 blx fp int32_t angle_hight = angle_low + 1; c086: f109 0501 add.w r5, r9, #1 int32_t s1 = _lv_trigo_sin(angle_low); c08a: 9003 str r0, [sp, #12] int32_t s2 = _lv_trigo_sin(angle_hight); c08c: b228 sxth r0, r5 c08e: 47d8 blx fp c090: 4605 mov r5, r0 int32_t c1 = _lv_trigo_sin(angle_low + 90); c092: f109 005a add.w r0, r9, #90 ; 0x5a c096: b200 sxth r0, r0 c098: 47d8 blx fp c09a: 9001 str r0, [sp, #4] int32_t c2 = _lv_trigo_sin(angle_hight + 90); c09c: f109 005b add.w r0, r9, #91 ; 0x5b c0a0: b200 sxth r0, r0 c0a2: 47d8 blx fp int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c0a4: 9b01 ldr r3, [sp, #4] int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0a6: 9903 ldr r1, [sp, #12] c0a8: eba6 0c0a sub.w ip, r6, sl int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c0ac: fb0a f000 mul.w r0, sl, r0 c0b0: fb0c 0003 mla r0, ip, r3, r0 lv_coord_t xt; lv_coord_t yt; lv_area_t a; a.x1 = ((-pivot->x) * zoom) >> 8; c0b4: 9b0f ldr r3, [sp, #60] ; 0x3c int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; c0b6: fb90 f0f6 sdiv r0, r0, r6 int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0ba: fb0a f505 mul.w r5, sl, r5 a.x1 = ((-pivot->x) * zoom) >> 8; c0be: f9b3 e000 ldrsh.w lr, [r3] int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0c2: fb0c 5501 mla r5, ip, r1, r5 a.y1 = ((-pivot->y) * zoom) >> 8; c0c6: f9b3 c002 ldrsh.w ip, [r3, #2] int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; c0ca: fb95 f5f6 sdiv r5, r5, r6 a.x1 = ((-pivot->x) * zoom) >> 8; c0ce: f1ce 0300 rsb r3, lr, #0 a.y1 = ((-pivot->y) * zoom) >> 8; c0d2: f1cc 0200 rsb r2, ip, #0 a.x1 = ((-pivot->x) * zoom) >> 8; c0d6: fb08 f303 mul.w r3, r8, r3 a.y1 = ((-pivot->y) * zoom) >> 8; c0da: fb08 f202 mul.w r2, r8, r2 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; c0de: f343 230f sbfx r3, r3, #8, #16 c0e2: f342 220f sbfx r2, r2, #8, #16 c0e6: fb00 f903 mul.w r9, r0, r3 c0ea: fb05 fa02 mul.w sl, r5, r2 lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c0ee: 436b muls r3, r5 c0f0: 4342 muls r2, r0 c0f2: 1899 adds r1, r3, r2 c0f4: 13c9 asrs r1, r1, #15 c0f6: fa11 f18c uxtah r1, r1, ip c0fa: b209 sxth r1, r1 c0fc: 9101 str r1, [sp, #4] a.x2 = ((w - pivot->x) * zoom) >> 8; c0fe: 9902 ldr r1, [sp, #8] c100: eba1 010e sub.w r1, r1, lr c104: fb08 f101 mul.w r1, r8, r1 xt = a.x2; yt = a.y1; rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c108: f341 210f sbfx r1, r1, #8, #16 a.y2 = ((h - pivot->y) * zoom) >> 8; c10c: eba4 040c sub.w r4, r4, ip rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c110: fb00 fb01 mul.w fp, r0, r1 a.y2 = ((h - pivot->y) * zoom) >> 8; c114: fb08 f404 mul.w r4, r8, r4 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c118: 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; c11c: f344 240f sbfx r4, r4, #8, #16 rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c120: ebab 0a0a sub.w sl, fp, sl rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c124: 4369 muls r1, r5 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c126: 13f6 asrs r6, r6, #15 lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c128: 4365 muls r5, r4 rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c12a: ea4f 3aea mov.w sl, sl, asr #15 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c12e: 4344 muls r4, r0 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c130: fa16 f68e uxtah r6, r6, lr rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c134: fa1a fa8e uxtah sl, sl, lr lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c138: eba9 0905 sub.w r9, r9, r5 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c13c: b236 sxth r6, r6 rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c13e: fa0f fa8a sxth.w sl, sl rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c142: 440a add r2, r1 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c144: 4423 add r3, r4 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; c146: 4421 add r1, r4 lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c148: ea4f 39e9 mov.w r9, r9, asr #15 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c14c: 4556 cmp r6, sl lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c14e: fa19 f98e uxtah r9, r9, lr rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c152: ebab 0b05 sub.w fp, fp, r5 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c156: ea4f 31e1 mov.w r1, r1, asr #15 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c15a: ea4f 32e2 mov.w r2, r2, asr #15 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c15e: ea4f 33e3 mov.w r3, r3, asr #15 lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c162: fa0f f989 sxth.w r9, r9 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c166: fa12 f28c uxtah r2, r2, ip lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c16a: fa13 f38c uxtah r3, r3, ip rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c16e: ea4f 3beb mov.w fp, fp, asr #15 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c172: fa11 fc8c uxtah ip, r1, ip res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c176: 4631 mov r1, r6 c178: bfa8 it ge c17a: 4651 movge r1, sl c17c: 4549 cmp r1, r9 rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; c17e: fa1b fe8e uxtah lr, fp, lr c182: fa0f fe8e sxth.w lr, lr res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c186: bfa8 it ge c188: 4649 movge r1, r9 c18a: 4571 cmp r1, lr c18c: bfa8 it ge c18e: 4671 movge r1, lr res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c190: 4556 cmp r6, sl c192: bfb8 it lt c194: 4656 movlt r6, sl c196: 454e cmp r6, r9 c198: bfb8 it lt c19a: 464e movlt r6, r9 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); c19c: 8039 strh r1, [r7, #0] res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c19e: 9901 ldr r1, [sp, #4] rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1a0: b212 sxth r2, r2 res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c1a2: 4576 cmp r6, lr c1a4: bfb8 it lt c1a6: 4676 movlt r6, lr res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1a8: 4291 cmp r1, r2 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1aa: b21b sxth r3, r3 res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1ac: bfa8 it ge c1ae: 4611 movge r1, r2 c1b0: 4299 cmp r1, r3 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; c1b2: fa0f fc8c sxth.w ip, ip res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); c1b6: bfa8 it ge c1b8: 4619 movge r1, r3 c1ba: 4561 cmp r1, ip c1bc: bfa8 it ge c1be: 4661 movge r1, ip c1c0: 8079 strh r1, [r7, #2] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); c1c2: 9901 ldr r1, [sp, #4] res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); c1c4: 80be strh r6, [r7, #4] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); c1c6: 428a cmp r2, r1 c1c8: bfb8 it lt c1ca: 460a movlt r2, r1 c1cc: 4293 cmp r3, r2 c1ce: bfb8 it lt c1d0: 4613 movlt r3, r2 c1d2: 4563 cmp r3, ip c1d4: bfb8 it lt c1d6: 4663 movlt r3, ip c1d8: 80fb strh r3, [r7, #6] res->x1 = 0; res->y1 = 0; res->x2 = w; res->y2 = h; #endif } c1da: b005 add sp, #20 c1dc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} c1e0: 0000e93d .word 0x0000e93d 0000c1e4 <_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) { c1e4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} c1e8: f890 2038 ldrb.w r2, [r0, #56] ; 0x38 const uint8_t * src_u8 = dsc->cfg.src; c1ec: f8d0 8000 ldr.w r8, [r0] /*Get the fractional part of the source pixel*/ int xs_fract = dsc->tmp.xs & 0xff; c1f0: f9b0 5038 ldrsh.w r5, [r0, #56] ; 0x38 int ys_fract = dsc->tmp.ys & 0xff; c1f4: f9b0 603a ldrsh.w r6, [r0, #58] ; 0x3a c1f8: f890 303a ldrb.w r3, [r0, #58] ; 0x3a int32_t xn; /*x neightboor*/ lv_opa_t xr; /*x mix ratio*/ if(xs_fract < 0x70) { c1fc: 2a6f cmp r2, #111 ; 0x6f { c1fe: b089 sub sp, #36 ; 0x24 c200: 4604 mov r4, r0 if(xs_fract < 0x70) { c202: f200 8092 bhi.w c32a <_lv_img_buf_transform_anti_alias+0x146> xn = - 1; if(dsc->tmp.xs_int + xn < 0) xn = 0; c206: f9b0 903c ldrsh.w r9, [r0, #60] ; 0x3c c20a: f1b9 0f00 cmp.w r9, #0 c20e: bfd4 ite le c210: f04f 0900 movle.w r9, #0 c214: f04f 0901 movgt.w r9, #1 c218: f1c9 0900 rsb r9, r9, #0 xr = xs_fract + 0x80; c21c: 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; c21e: b2ed uxtb r5, r5 } int32_t yn; /*x neightboor*/ lv_opa_t yr; /*x mix ratio*/ if(ys_fract < 0x70) { c220: 2b6f cmp r3, #111 ; 0x6f c222: f200 8097 bhi.w c354 <_lv_img_buf_transform_anti_alias+0x170> yn = - 1; if(dsc->tmp.ys_int + yn < 0) yn = 0; c226: f9b4 703e ldrsh.w r7, [r4, #62] ; 0x3e c22a: 2f00 cmp r7, #0 c22c: bfd4 ite le c22e: 2700 movle r7, #0 c230: 2701 movgt r7, #1 c232: 427f negs r7, r7 yr = ys_fract + 0x80; c234: 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; c236: b2f6 uxtb r6, r6 else { yn = 0; yr = 0xFF; } lv_color_t c00 = dsc->res.color; c238: 8aa3 ldrh r3, [r4, #20] c23a: 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; c23e: 7da3 ldrb r3, [r4, #22] c240: 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) { c242: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c246: 0758 lsls r0, r3, #29 c248: f140 80a9 bpl.w c39e <_lv_img_buf_transform_anti_alias+0x1ba> _lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t)); c24c: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 c250: 6c21 ldr r1, [r4, #64] ; 0x40 c252: f8df a248 ldr.w sl, [pc, #584] ; c49c <_lv_img_buf_transform_anti_alias+0x2b8> c256: fb09 1103 mla r1, r9, r3, r1 c25a: 2202 movs r2, #2 c25c: 4441 add r1, r8 c25e: a805 add r0, sp, #20 c260: 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)); c262: 88a2 ldrh r2, [r4, #4] c264: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 c268: 6c21 ldr r1, [r4, #64] ; 0x40 c26a: fb13 f302 smulbb r3, r3, r2 c26e: fb07 1103 mla r1, r7, r3, r1 c272: 2202 movs r2, #2 c274: 4441 add r1, r8 c276: a806 add r0, sp, #24 c278: 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], c27a: f894 2044 ldrb.w r2, [r4, #68] ; 0x44 c27e: 88a3 ldrh r3, [r4, #4] c280: 6c21 ldr r1, [r4, #64] ; 0x40 c282: fb13 f302 smulbb r3, r3, r2 c286: fb09 1102 mla r1, r9, r2, r1 c28a: fb07 1103 mla r1, r7, r3, r1 c28e: 4441 add r1, r8 c290: 2202 movs r2, #2 c292: a807 add r0, sp, #28 c294: 47d0 blx sl sizeof(lv_color_t)); if(dsc->tmp.has_alpha) { c296: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c29a: 0799 lsls r1, r3, #30 c29c: d46b bmi.n c376 <_lv_img_buf_transform_anti_alias+0x192> lv_opa_t a11 = 0; c29e: 2000 movs r0, #0 lv_opa_t a01 = 0; c2a0: 4607 mov r7, r0 lv_opa_t a10 = 0; c2a2: 4683 mov fp, r0 } } lv_opa_t xr0 = xr; lv_opa_t xr1 = xr; if(dsc->tmp.has_alpha) { c2a4: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 c2a8: 079b lsls r3, r3, #30 c2aa: f140 80c7 bpl.w c43c <_lv_img_buf_transform_anti_alias+0x258> lv_opa_t a0 = (a00 * xr + (a10 * (255 - xr))) >> 8; c2ae: 9a01 ldr r2, [sp, #4] c2b0: f1c5 03ff rsb r3, r5, #255 ; 0xff c2b4: fb12 f105 smulbb r1, r2, r5 c2b8: fb03 110b mla r1, r3, fp, r1 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; c2bc: 4343 muls r3, r0 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; c2be: f3c1 2107 ubfx r1, r1, #8, #8 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; c2c2: fb15 3307 smlabb r3, r5, r7, r3 c2c6: f3c3 2307 ubfx r3, r3, #8, #8 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; c2ca: f1c6 0cff rsb ip, r6, #255 ; 0xff c2ce: fb06 f201 mul.w r2, r6, r1 c2d2: fb03 220c mla r2, r3, ip, r2 c2d6: 1212 asrs r2, r2, #8 if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; c2d8: 2905 cmp r1, #5 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; c2da: 75a2 strb r2, [r4, #22] if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; c2dc: f200 80aa bhi.w c434 <_lv_img_buf_transform_anti_alias+0x250> c2e0: 2b05 cmp r3, #5 c2e2: f240 80d4 bls.w c48e <_lv_img_buf_transform_anti_alias+0x2aa> if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP; c2e6: 2600 movs r6, #0 if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP; c2e8: 9b01 ldr r3, [sp, #4] c2ea: 2b05 cmp r3, #5 c2ec: bf94 ite ls c2ee: 2200 movls r2, #0 c2f0: 462a movhi r2, r5 if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER; c2f2: f1bb 0f05 cmp.w fp, #5 c2f6: bf98 it ls c2f8: 22ff movls r2, #255 ; 0xff if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP; c2fa: 2f05 cmp r7, #5 c2fc: bf98 it ls c2fe: 2500 movls r5, #0 if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; c300: 2805 cmp r0, #5 c302: bf98 it ls c304: 25ff movls r5, #255 ; 0xff xr1 = xr; dsc->res.opa = LV_OPA_COVER; } lv_color_t c0; if(xr0 == LV_OPA_TRANSP) c0 = c01; c306: 2a00 cmp r2, #0 c308: f040 809c bne.w c444 <_lv_img_buf_transform_anti_alias+0x260> c30c: 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; c310: 2d00 cmp r5, #0 c312: f040 80a4 bne.w c45e <_lv_img_buf_transform_anti_alias+0x27a> c316: 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; c31a: 2e00 cmp r6, #0 c31c: f040 80ad bne.w c47a <_lv_img_buf_transform_anti_alias+0x296> c320: 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; c322: 2001 movs r0, #1 } c324: b009 add sp, #36 ; 0x24 c326: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(xs_fract > 0x90) { c32a: 2a90 cmp r2, #144 ; 0x90 c32c: d90e bls.n c34c <_lv_img_buf_transform_anti_alias+0x168> if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; c32e: f9b0 903c ldrsh.w r9, [r0, #60] ; 0x3c c332: f9b0 2004 ldrsh.w r2, [r0, #4] c336: f109 0901 add.w r9, r9, #1 c33a: 4591 cmp r9, r2 c33c: bfac ite ge c33e: f04f 0900 movge.w r9, #0 c342: f04f 0901 movlt.w r9, #1 xr = (0xFF - xs_fract) + 0x80; c346: f1c5 057f rsb r5, r5, #127 ; 0x7f c34a: e768 b.n c21e <_lv_img_buf_transform_anti_alias+0x3a> xr = 0xFF; c34c: 25ff movs r5, #255 ; 0xff xn = 0; c34e: f04f 0900 mov.w r9, #0 c352: e765 b.n c220 <_lv_img_buf_transform_anti_alias+0x3c> else if(ys_fract > 0x90) { c354: 2b90 cmp r3, #144 ; 0x90 c356: d90b bls.n c370 <_lv_img_buf_transform_anti_alias+0x18c> if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; c358: f9b4 703e ldrsh.w r7, [r4, #62] ; 0x3e c35c: f9b4 3006 ldrsh.w r3, [r4, #6] c360: 3701 adds r7, #1 c362: 429f cmp r7, r3 c364: bfac ite ge c366: 2700 movge r7, #0 c368: 2701 movlt r7, #1 yr = (0xFF - ys_fract) + 0x80; c36a: f1c6 067f rsb r6, r6, #127 ; 0x7f c36e: e762 b.n c236 <_lv_img_buf_transform_anti_alias+0x52> yr = 0xFF; c370: 26ff movs r6, #255 ; 0xff yn = 0; c372: 2700 movs r7, #0 c374: e760 b.n c238 <_lv_img_buf_transform_anti_alias+0x54> a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c376: 6c22 ldr r2, [r4, #64] ; 0x40 c378: 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]; c37c: 88a3 ldrh r3, [r4, #4] c37e: 3a01 subs r2, #1 c380: 440a add r2, r1 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c382: fb09 2901 mla r9, r9, r1, r2 a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; c386: fb13 f301 smulbb r3, r3, r1 c38a: 437b muls r3, r7 c38c: eb08 0103 add.w r1, r8, r3 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; c390: 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]; c394: 5c8f ldrb r7, [r1, r2] 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]; c396: 44c8 add r8, r9 c398: f818 0003 ldrb.w r0, [r8, r3] c39c: e782 b.n c2a4 <_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); c39e: 8fa3 ldrh r3, [r4, #60] ; 0x3c c3a0: f8df b0fc ldr.w fp, [pc, #252] ; c4a0 <_lv_img_buf_transform_anti_alias+0x2bc> c3a4: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e c3a8: f104 0a18 add.w sl, r4, #24 c3ac: fa13 f189 uxtah r1, r3, r9 c3b0: b209 sxth r1, r1 c3b2: 8a23 ldrh r3, [r4, #16] c3b4: 4650 mov r0, sl c3b6: 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); c3b8: 8fe3 ldrh r3, [r4, #62] ; 0x3e c3ba: 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); c3be: 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); c3c2: fa13 f287 uxtah r2, r3, r7 c3c6: b212 sxth r2, r2 c3c8: 8a23 ldrh r3, [r4, #16] c3ca: 4650 mov r0, sl c3cc: 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); c3ce: 8fe2 ldrh r2, [r4, #62] ; 0x3e c3d0: 8fa1 ldrh r1, [r4, #60] ; 0x3c c3d2: 8a23 ldrh r3, [r4, #16] c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); c3d4: 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); c3d8: fa1f f889 uxth.w r8, r9 c10 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn, dsc->cfg.color); c3dc: fa1f f987 uxth.w r9, r7 c11 = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn, dsc->cfg.color); c3e0: 444a add r2, r9 c3e2: 4441 add r1, r8 c3e4: b212 sxth r2, r2 c3e6: b209 sxth r1, r1 c3e8: 4650 mov r0, sl c3ea: 47d8 blx fp if(dsc->tmp.has_alpha) { c3ec: 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); c3f0: f8ad 001c strh.w r0, [sp, #28] if(dsc->tmp.has_alpha) { c3f4: 079a lsls r2, r3, #30 c3f6: f57f af52 bpl.w c29e <_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); c3fa: f9b4 703c ldrsh.w r7, [r4, #60] ; 0x3c c3fe: f9b4 203e ldrsh.w r2, [r4, #62] ; 0x3e c402: 4b24 ldr r3, [pc, #144] ; (c494 <_lv_img_buf_transform_anti_alias+0x2b0>) c404: 9203 str r2, [sp, #12] c406: 44b8 add r8, r7 c408: fa0f f888 sxth.w r8, r8 c40c: 4641 mov r1, r8 c40e: 4650 mov r0, sl c410: 4798 blx r3 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); c412: 9a03 ldr r2, [sp, #12] c414: 4b1f ldr r3, [pc, #124] ; (c494 <_lv_img_buf_transform_anti_alias+0x2b0>) c416: 4491 add r9, r2 c418: fa0f f289 sxth.w r2, r9 c41c: 4639 mov r1, r7 a10 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int); c41e: 4683 mov fp, r0 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); c420: 4650 mov r0, sl c422: 9203 str r2, [sp, #12] c424: 4798 blx r3 a11 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int + xn, dsc->tmp.ys_int + yn); c426: 9a03 ldr r2, [sp, #12] c428: 4b1a ldr r3, [pc, #104] ; (c494 <_lv_img_buf_transform_anti_alias+0x2b0>) a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); c42a: 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); c42c: 4641 mov r1, r8 c42e: 4650 mov r0, sl c430: 4798 blx r3 c432: e737 b.n c2a4 <_lv_img_buf_transform_anti_alias+0xc0> if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; c434: 2b05 cmp r3, #5 c436: bf98 it ls c438: 26ff movls r6, #255 ; 0xff c43a: e755 b.n c2e8 <_lv_img_buf_transform_anti_alias+0x104> dsc->res.opa = LV_OPA_COVER; c43c: 23ff movs r3, #255 ; 0xff c43e: 75a3 strb r3, [r4, #22] xr0 = xr; c440: 462a mov r2, r5 c442: e760 b.n c306 <_lv_img_buf_transform_anti_alias+0x122> else if(xr0 == LV_OPA_COVER) c0 = c00; c444: 2aff cmp r2, #255 ; 0xff c446: d102 bne.n c44e <_lv_img_buf_transform_anti_alias+0x26a> c448: f8bd 700a ldrh.w r7, [sp, #10] c44c: e760 b.n c310 <_lv_img_buf_transform_anti_alias+0x12c> else c0 = lv_color_mix(c00, c01, xr0); c44e: f8bd 1014 ldrh.w r1, [sp, #20] c452: f8bd 000a ldrh.w r0, [sp, #10] c456: 4b10 ldr r3, [pc, #64] ; (c498 <_lv_img_buf_transform_anti_alias+0x2b4>) c458: 4798 blx r3 c45a: 4607 mov r7, r0 c45c: e758 b.n c310 <_lv_img_buf_transform_anti_alias+0x12c> else if(xr1 == LV_OPA_COVER) c1 = c10; c45e: 2dff cmp r5, #255 ; 0xff c460: d102 bne.n c468 <_lv_img_buf_transform_anti_alias+0x284> c462: f8bd 1018 ldrh.w r1, [sp, #24] c466: e758 b.n c31a <_lv_img_buf_transform_anti_alias+0x136> else c1 = lv_color_mix(c10, c11, xr1); c468: f8bd 101c ldrh.w r1, [sp, #28] c46c: f8bd 0018 ldrh.w r0, [sp, #24] c470: 4b09 ldr r3, [pc, #36] ; (c498 <_lv_img_buf_transform_anti_alias+0x2b4>) c472: 462a mov r2, r5 c474: 4798 blx r3 c476: 4601 mov r1, r0 c478: e74f b.n c31a <_lv_img_buf_transform_anti_alias+0x136> else if(yr == LV_OPA_COVER) dsc->res.color = c0; c47a: 2eff cmp r6, #255 ; 0xff c47c: d101 bne.n c482 <_lv_img_buf_transform_anti_alias+0x29e> c47e: 82a7 strh r7, [r4, #20] c480: e74f b.n c322 <_lv_img_buf_transform_anti_alias+0x13e> else dsc->res.color = lv_color_mix(c0, c1, yr); c482: 4b05 ldr r3, [pc, #20] ; (c498 <_lv_img_buf_transform_anti_alias+0x2b4>) c484: 4632 mov r2, r6 c486: 4638 mov r0, r7 c488: 4798 blx r3 c48a: 82a0 strh r0, [r4, #20] c48c: e749 b.n c322 <_lv_img_buf_transform_anti_alias+0x13e> if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; c48e: 2000 movs r0, #0 c490: e748 b.n c324 <_lv_img_buf_transform_anti_alias+0x140> c492: bf00 nop c494: 0000be79 .word 0x0000be79 c498: 0000bd25 .word 0x0000bd25 c49c: 0000bd75 .word 0x0000bd75 c4a0: 0000bd89 .word 0x0000bd89 0000c4a4 <_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) { c4a4: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} if(entry_cnt == 0) { c4a8: f8df 8190 ldr.w r8, [pc, #400] ; c63c <_lv_img_cache_open+0x198> c4ac: f8b8 4000 ldrh.w r4, [r8] { c4b0: 4605 mov r5, r0 c4b2: 460e mov r6, r1 if(entry_cnt == 0) { c4b4: b95c cbnz r4, c4ce <_lv_img_cache_open+0x2a> LV_LOG_WARN("lv_img_cache_open: the cache size is 0"); c4b6: 4b52 ldr r3, [pc, #328] ; (c600 <_lv_img_cache_open+0x15c>) c4b8: 9300 str r3, [sp, #0] c4ba: 4952 ldr r1, [pc, #328] ; (c604 <_lv_img_cache_open+0x160>) c4bc: 4b52 ldr r3, [pc, #328] ; (c608 <_lv_img_cache_open+0x164>) c4be: 4d53 ldr r5, [pc, #332] ; (c60c <_lv_img_cache_open+0x168>) c4c0: 2244 movs r2, #68 ; 0x44 c4c2: 2002 movs r0, #2 c4c4: 47a8 blx r5 if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; } return cached_src; } c4c6: 4620 mov r0, r4 c4c8: b003 add sp, #12 c4ca: 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); c4ce: 4b50 ldr r3, [pc, #320] ; (c610 <_lv_img_cache_open+0x16c>) if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { c4d0: 4850 ldr r0, [pc, #320] ; (c614 <_lv_img_cache_open+0x170>) lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); c4d2: 681f ldr r7, [r3, #0] for(i = 0; i < entry_cnt; i++) { c4d4: 2300 movs r3, #0 c4d6: 463a mov r2, r7 if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { c4d8: 6a11 ldr r1, [r2, #32] for(i = 0; i < entry_cnt; i++) { c4da: 3301 adds r3, #1 if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { c4dc: 4281 cmp r1, r0 cache[i].life -= LV_IMG_CACHE_AGING; c4de: bfa8 it ge c4e0: f101 31ff addge.w r1, r1, #4294967295 ; 0xffffffff for(i = 0; i < entry_cnt; i++) { c4e4: b29b uxth r3, r3 cache[i].life -= LV_IMG_CACHE_AGING; c4e6: bfa8 it ge c4e8: 6211 strge r1, [r2, #32] for(i = 0; i < entry_cnt; i++) { c4ea: 429c cmp r4, r3 c4ec: f102 0224 add.w r2, r2, #36 ; 0x24 c4f0: d1f2 bne.n c4d8 <_lv_img_cache_open+0x34> if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; c4f2: f8df b14c ldr.w fp, [pc, #332] ; c640 <_lv_img_cache_open+0x19c> c4f6: f04f 0a00 mov.w sl, #0 lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); c4fa: f04f 0924 mov.w r9, #36 ; 0x24 for(i = 0; i < entry_cnt; i++) { c4fe: f8b8 1000 ldrh.w r1, [r8] c502: fa1f f28a uxth.w r2, sl c506: 4291 cmp r1, r2 c508: d839 bhi.n c57e <_lv_img_cache_open+0xda> c50a: f107 0224 add.w r2, r7, #36 ; 0x24 cached_src = &cache[0]; c50e: 463c mov r4, r7 for(i = 1; i < entry_cnt; i++) { c510: 2301 movs r3, #1 c512: 4299 cmp r1, r3 c514: d856 bhi.n c5c4 <_lv_img_cache_open+0x120> if(cached_src->dec_dsc.src) { c516: 6863 ldr r3, [r4, #4] c518: f8df 80f0 ldr.w r8, [pc, #240] ; c60c <_lv_img_cache_open+0x168> c51c: 2b00 cmp r3, #0 c51e: d05a beq.n c5d6 <_lv_img_cache_open+0x132> lv_img_decoder_close(&cached_src->dec_dsc); c520: 4b3d ldr r3, [pc, #244] ; (c618 <_lv_img_cache_open+0x174>) c522: 4620 mov r0, r4 c524: 4798 blx r3 LV_LOG_INFO("image draw: cache miss, close and reuse an entry"); c526: 4b3d ldr r3, [pc, #244] ; (c61c <_lv_img_cache_open+0x178>) c528: 9300 str r3, [sp, #0] c52a: 4b37 ldr r3, [pc, #220] ; (c608 <_lv_img_cache_open+0x164>) c52c: 2277 movs r2, #119 ; 0x77 LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); c52e: 4935 ldr r1, [pc, #212] ; (c604 <_lv_img_cache_open+0x160>) c530: 2001 movs r0, #1 c532: 47c0 blx r8 t_start = lv_tick_get(); c534: 4b3a ldr r3, [pc, #232] ; (c620 <_lv_img_cache_open+0x17c>) c536: 4798 blx r3 cached_src->dec_dsc.time_to_open = 0; c538: f04f 0900 mov.w r9, #0 lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); c53c: 4629 mov r1, r5 c53e: 4b39 ldr r3, [pc, #228] ; (c624 <_lv_img_cache_open+0x180>) cached_src->dec_dsc.time_to_open = 0; c540: f8c4 9014 str.w r9, [r4, #20] t_start = lv_tick_get(); c544: 4607 mov r7, r0 lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); c546: 4632 mov r2, r6 c548: 4620 mov r0, r4 c54a: 4798 blx r3 if(open_res == LV_RES_INV) { c54c: 4605 mov r5, r0 c54e: 2800 cmp r0, #0 c550: d146 bne.n c5e0 <_lv_img_cache_open+0x13c> LV_LOG_WARN("Image draw cannot open the image resource"); c552: 4b35 ldr r3, [pc, #212] ; (c628 <_lv_img_cache_open+0x184>) c554: 492b ldr r1, [pc, #172] ; (c604 <_lv_img_cache_open+0x160>) c556: 9300 str r3, [sp, #0] c558: 2283 movs r2, #131 ; 0x83 c55a: 4b2b ldr r3, [pc, #172] ; (c608 <_lv_img_cache_open+0x164>) _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); c55c: 4e33 ldr r6, [pc, #204] ; (c62c <_lv_img_cache_open+0x188>) LV_LOG_WARN("Image draw cannot open the image resource"); c55e: 2002 movs r0, #2 c560: 47c0 blx r8 lv_img_decoder_close(&cached_src->dec_dsc); c562: 4b2d ldr r3, [pc, #180] ; (c618 <_lv_img_cache_open+0x174>) c564: 4620 mov r0, r4 c566: 4798 blx r3 _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); c568: 4620 mov r0, r4 c56a: 2120 movs r1, #32 c56c: 47b0 blx r6 _lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t)); c56e: 4620 mov r0, r4 c570: 2124 movs r1, #36 ; 0x24 c572: 47b0 blx r6 cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */ c574: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 c578: 6223 str r3, [r4, #32] return NULL; c57a: 462c mov r4, r5 c57c: e7a3 b.n c4c6 <_lv_img_cache_open+0x22> lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); c57e: fa1f f48a uxth.w r4, sl c582: fb09 7404 mla r4, r9, r4, r7 c586: 4b2a ldr r3, [pc, #168] ; (c630 <_lv_img_cache_open+0x18c>) c588: 6860 ldr r0, [r4, #4] c58a: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { c58c: b980 cbnz r0, c5b0 <_lv_img_cache_open+0x10c> if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; c58e: 6862 ldr r2, [r4, #4] c590: 42aa cmp r2, r5 c592: d114 bne.n c5be <_lv_img_cache_open+0x11a> c594: 8921 ldrh r1, [r4, #8] c596: b2b2 uxth r2, r6 c598: 4291 cmp r1, r2 c59a: d110 bne.n c5be <_lv_img_cache_open+0x11a> cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; c59c: 6a23 ldr r3, [r4, #32] c59e: 6962 ldr r2, [r4, #20] c5a0: 4413 add r3, r2 c5a2: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 c5a6: bfa8 it ge c5a8: f44f 737a movge.w r3, #1000 ; 0x3e8 c5ac: 6223 str r3, [r4, #32] if(cached_src == NULL) { c5ae: e78a b.n c4c6 <_lv_img_cache_open+0x22> else if(src_type == LV_IMG_SRC_FILE) { c5b0: 2801 cmp r0, #1 c5b2: d104 bne.n c5be <_lv_img_cache_open+0x11a> if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; c5b4: 6860 ldr r0, [r4, #4] c5b6: 4629 mov r1, r5 c5b8: 47d8 blx fp c5ba: 2800 cmp r0, #0 c5bc: d0ee beq.n c59c <_lv_img_cache_open+0xf8> for(i = 0; i < entry_cnt; i++) { c5be: f10a 0a01 add.w sl, sl, #1 c5c2: e79c b.n c4fe <_lv_img_cache_open+0x5a> if(cache[i].life < cached_src->life) { c5c4: 6a17 ldr r7, [r2, #32] c5c6: 6a20 ldr r0, [r4, #32] for(i = 1; i < entry_cnt; i++) { c5c8: 3301 adds r3, #1 if(cache[i].life < cached_src->life) { c5ca: 4287 cmp r7, r0 c5cc: bfb8 it lt c5ce: 4614 movlt r4, r2 for(i = 1; i < entry_cnt; i++) { c5d0: b29b uxth r3, r3 c5d2: 3224 adds r2, #36 ; 0x24 c5d4: e79d b.n c512 <_lv_img_cache_open+0x6e> LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); c5d6: 4b17 ldr r3, [pc, #92] ; (c634 <_lv_img_cache_open+0x190>) c5d8: 9300 str r3, [sp, #0] c5da: 227a movs r2, #122 ; 0x7a c5dc: 4b0a ldr r3, [pc, #40] ; (c608 <_lv_img_cache_open+0x164>) c5de: e7a6 b.n c52e <_lv_img_cache_open+0x8a> if(cached_src->dec_dsc.time_to_open == 0) { c5e0: 6963 ldr r3, [r4, #20] cached_src->life = 0; c5e2: f8c4 9020 str.w r9, [r4, #32] if(cached_src->dec_dsc.time_to_open == 0) { c5e6: 2b00 cmp r3, #0 c5e8: f47f af6d bne.w c4c6 <_lv_img_cache_open+0x22> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); c5ec: 4b12 ldr r3, [pc, #72] ; (c638 <_lv_img_cache_open+0x194>) c5ee: 4638 mov r0, r7 c5f0: 4798 blx r3 if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; c5f2: b108 cbz r0, c5f8 <_lv_img_cache_open+0x154> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); c5f4: 6160 str r0, [r4, #20] c5f6: e766 b.n c4c6 <_lv_img_cache_open+0x22> if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; c5f8: 2301 movs r3, #1 c5fa: 6163 str r3, [r4, #20] c5fc: e763 b.n c4c6 <_lv_img_cache_open+0x22> c5fe: bf00 nop c600: 0001fe5b .word 0x0001fe5b c604: 0001fe26 .word 0x0001fe26 c608: 0001ff0e .word 0x0001ff0e c60c: 0000e8e9 .word 0x0000e8e9 c610: 2000866c .word 0x2000866c c614: 80000002 .word 0x80000002 c618: 0000d04d .word 0x0000d04d c61c: 0001fe82 .word 0x0001fe82 c620: 0000da49 .word 0x0000da49 c624: 0000cf7d .word 0x0000cf7d c628: 0001fee4 .word 0x0001fee4 c62c: 0000f019 .word 0x0000f019 c630: 00007805 .word 0x00007805 c634: 0001feb3 .word 0x0001feb3 c638: 0000da5d .word 0x0000da5d c63c: 200085d0 .word 0x200085d0 c640: 00016315 .word 0x00016315 0000c644 : * @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); c644: 4b14 ldr r3, [pc, #80] ; (c698 ) { c646: 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); c64a: 681f ldr r7, [r3, #0] uint16_t i; for(i = 0; i < entry_cnt; i++) { c64c: 4e13 ldr r6, [pc, #76] ; (c69c ) 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)); c64e: 4d14 ldr r5, [pc, #80] ; (c6a0 ) lv_img_decoder_close(&cache[i].dec_dsc); c650: f8df 8050 ldr.w r8, [pc, #80] ; c6a4 { c654: 4604 mov r4, r0 for(i = 0; i < entry_cnt; i++) { c656: f04f 0900 mov.w r9, #0 c65a: 8832 ldrh r2, [r6, #0] c65c: fa1f f389 uxth.w r3, r9 c660: 429a cmp r2, r3 c662: d802 bhi.n c66a _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); } } } c664: b003 add sp, #12 c666: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(cache[i].dec_dsc.src == src || src == NULL) { c66a: fa1f f389 uxth.w r3, r9 c66e: 2224 movs r2, #36 ; 0x24 c670: fb02 7003 mla r0, r2, r3, r7 c674: 6843 ldr r3, [r0, #4] c676: 42a3 cmp r3, r4 c678: d000 beq.n c67c c67a: b94c cbnz r4, c690 if(cache[i].dec_dsc.src != NULL) { c67c: b113 cbz r3, c684 lv_img_decoder_close(&cache[i].dec_dsc); c67e: 9001 str r0, [sp, #4] c680: 47c0 blx r8 c682: 9801 ldr r0, [sp, #4] _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); c684: 9001 str r0, [sp, #4] c686: 2120 movs r1, #32 c688: 47a8 blx r5 _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); c68a: 9801 ldr r0, [sp, #4] c68c: 2124 movs r1, #36 ; 0x24 c68e: 47a8 blx r5 for(i = 0; i < entry_cnt; i++) { c690: f109 0901 add.w r9, r9, #1 c694: e7e1 b.n c65a c696: bf00 nop c698: 2000866c .word 0x2000866c c69c: 200085d0 .word 0x200085d0 c6a0: 0000f019 .word 0x0000f019 c6a4: 0000d04d .word 0x0000d04d 0000c6a8 : { c6a8: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { c6ac: 4c1f ldr r4, [pc, #124] ; (c72c ) c6ae: 6823 ldr r3, [r4, #0] { c6b0: 4605 mov r5, r0 if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { c6b2: b12b cbz r3, c6c0 lv_img_cache_invalidate_src(NULL); c6b4: 4b1e ldr r3, [pc, #120] ; (c730 ) c6b6: 2000 movs r0, #0 c6b8: 4798 blx r3 lv_mem_free(LV_GC_ROOT(_lv_img_cache_array)); c6ba: 6820 ldr r0, [r4, #0] c6bc: 4b1d ldr r3, [pc, #116] ; (c734 ) c6be: 4798 blx r3 LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); c6c0: 2724 movs r7, #36 ; 0x24 c6c2: 4b1d ldr r3, [pc, #116] ; (c738 ) c6c4: fb07 f005 mul.w r0, r7, r5 c6c8: 4798 blx r3 LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); c6ca: 4b1c ldr r3, [pc, #112] ; (c73c ) LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); c6cc: 6020 str r0, [r4, #0] LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); c6ce: 4798 blx r3 c6d0: 4606 mov r6, r0 c6d2: b960 cbnz r0, c6ee c6d4: 4b1a ldr r3, [pc, #104] ; (c740 ) c6d6: 491b ldr r1, [pc, #108] ; (c744 ) c6d8: 9300 str r3, [sp, #0] c6da: 22a8 movs r2, #168 ; 0xa8 c6dc: 2003 movs r0, #3 c6de: 4d1a ldr r5, [pc, #104] ; (c748 ) c6e0: 47a8 blx r5 c6e2: 6822 ldr r2, [r4, #0] c6e4: 4819 ldr r0, [pc, #100] ; (c74c ) c6e6: 491a ldr r1, [pc, #104] ; (c750 ) c6e8: 4633 mov r3, r6 c6ea: 4788 blx r1 c6ec: e7fe b.n c6ec if(LV_GC_ROOT(_lv_img_cache_array) == NULL) { c6ee: 6823 ldr r3, [r4, #0] c6f0: f8df 8060 ldr.w r8, [pc, #96] ; c754 c6f4: b923 cbnz r3, c700 entry_cnt = 0; c6f6: f8a8 3000 strh.w r3, [r8] } c6fa: b003 add sp, #12 c6fc: 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)); c700: f8df 9054 ldr.w r9, [pc, #84] ; c758 entry_cnt = new_entry_cnt; c704: f8a8 5000 strh.w r5, [r8] for(i = 0; i < entry_cnt; i++) { c708: 2500 movs r5, #0 c70a: f8b8 2000 ldrh.w r2, [r8] c70e: b2ab uxth r3, r5 c710: 429a cmp r2, r3 c712: d9f2 bls.n c6fa _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); c714: 6820 ldr r0, [r4, #0] c716: b2ae uxth r6, r5 c718: 437e muls r6, r7 c71a: 2120 movs r1, #32 c71c: 4430 add r0, r6 c71e: 47c8 blx r9 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t)); c720: 6820 ldr r0, [r4, #0] c722: 2124 movs r1, #36 ; 0x24 c724: 4430 add r0, r6 c726: 47c8 blx r9 for(i = 0; i < entry_cnt; i++) { c728: 3501 adds r5, #1 c72a: e7ee b.n c70a c72c: 2000866c .word 0x2000866c c730: 0000c645 .word 0x0000c645 c734: 0000eae5 .word 0x0000eae5 c738: 0000ea2d .word 0x0000ea2d c73c: 000017e1 .word 0x000017e1 c740: 0001ff21 .word 0x0001ff21 c744: 0001fe26 .word 0x0001fe26 c748: 0000e8e9 .word 0x0000e8e9 c74c: 0001edbe .word 0x0001edbe c750: 000017e9 .word 0x000017e9 c754: 200085d0 .word 0x200085d0 c758: 0000f019 .word 0x0000f019 0000c75c : * @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) { c75c: b570 push {r4, r5, r6, lr} (void)decoder; /*Unused*/ lv_img_src_t src_type = lv_img_src_get_type(src); c75e: 4b2c ldr r3, [pc, #176] ; (c810 ) { c760: b086 sub sp, #24 lv_img_src_t src_type = lv_img_src_get_type(src); c762: 4608 mov r0, r1 { c764: 460e mov r6, r1 c766: 4615 mov r5, r2 lv_img_src_t src_type = lv_img_src_get_type(src); c768: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { c76a: 4604 mov r4, r0 c76c: b9d8 cbnz r0, c7a6 lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; c76e: 7833 ldrb r3, [r6, #0] c770: f3c3 0304 ubfx r3, r3, #0, #5 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; c774: 3b04 subs r3, #4 c776: b2db uxtb r3, r3 c778: 2b0a cmp r3, #10 c77a: d811 bhi.n c7a0 header->w = ((lv_img_dsc_t *)src)->header.w; header->h = ((lv_img_dsc_t *)src)->header.h; c77c: 8873 ldrh r3, [r6, #2] c77e: 886a ldrh r2, [r5, #2] lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; c780: 6831 ldr r1, [r6, #0] header->h = ((lv_img_dsc_t *)src)->header.h; c782: f3c3 134a ubfx r3, r3, #5, #11 c786: f363 124f bfi r2, r3, #5, #11 c78a: 806a strh r2, [r5, #2] header->cf = ((lv_img_dsc_t *)src)->header.cf; c78c: 682b ldr r3, [r5, #0] c78e: 4a21 ldr r2, [pc, #132] ; (c814 ) c790: f023 131f bic.w r3, r3, #2031647 ; 0x1f001f c794: f423 437c bic.w r3, r3, #64512 ; 0xfc00 c798: 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; c79a: 4313 orrs r3, r2 c79c: 602b str r3, [r5, #0] } else { LV_LOG_WARN("Image get info found unknown src type"); return LV_RES_INV; } return LV_RES_OK; c79e: 2401 movs r4, #1 } c7a0: 4620 mov r0, r4 c7a2: b006 add sp, #24 c7a4: bd70 pop {r4, r5, r6, pc} else if(src_type == LV_IMG_SRC_FILE) { c7a6: 2801 cmp r0, #1 c7a8: d125 bne.n c7f6 res = lv_fs_open(&file, src, LV_FS_MODE_RD); c7aa: 4b1b ldr r3, [pc, #108] ; (c818 ) c7ac: 2202 movs r2, #2 c7ae: 4631 mov r1, r6 c7b0: a804 add r0, sp, #16 c7b2: 4798 blx r3 if(res == LV_FS_RES_OK) { c7b4: b9b8 cbnz r0, c7e6 res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); c7b6: 4e19 ldr r6, [pc, #100] ; (c81c ) c7b8: ab03 add r3, sp, #12 c7ba: 2204 movs r2, #4 c7bc: 4629 mov r1, r5 c7be: a804 add r0, sp, #16 c7c0: 47b0 blx r6 lv_fs_close(&file); c7c2: 4b17 ldr r3, [pc, #92] ; (c820 ) res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); c7c4: 4606 mov r6, r0 lv_fs_close(&file); c7c6: a804 add r0, sp, #16 c7c8: 4798 blx r3 if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) { c7ca: b916 cbnz r6, c7d2 c7cc: 9b03 ldr r3, [sp, #12] c7ce: 2b04 cmp r3, #4 c7d0: d009 beq.n c7e6 LV_LOG_WARN("Image get info get read file header"); c7d2: 4b14 ldr r3, [pc, #80] ; (c824 ) c7d4: 9300 str r3, [sp, #0] c7d6: 4b14 ldr r3, [pc, #80] ; (c828 ) c7d8: f240 1221 movw r2, #289 ; 0x121 LV_LOG_WARN("Image get info found unknown src type"); c7dc: 4913 ldr r1, [pc, #76] ; (c82c ) c7de: 4c14 ldr r4, [pc, #80] ; (c830 ) c7e0: 2002 movs r0, #2 c7e2: 47a0 blx r4 c7e4: e005 b.n c7f2 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; c7e6: 782b ldrb r3, [r5, #0] c7e8: 331c adds r3, #28 c7ea: f003 031f and.w r3, r3, #31 c7ee: 2b0a cmp r3, #10 c7f0: d9d6 bls.n c7a0 return LV_RES_INV; c7f2: 2400 movs r4, #0 c7f4: e7d4 b.n c7a0 else if(src_type == LV_IMG_SRC_SYMBOL) { c7f6: 2802 cmp r0, #2 c7f8: d104 bne.n c804 header->cf = LV_IMG_CF_ALPHA_1BIT; c7fa: 682b ldr r3, [r5, #0] c7fc: f403 7278 and.w r2, r3, #992 ; 0x3e0 c800: 4b0c ldr r3, [pc, #48] ; (c834 ) c802: e7ca b.n c79a LV_LOG_WARN("Image get info found unknown src type"); c804: 4b0c ldr r3, [pc, #48] ; (c838 ) c806: 9300 str r3, [sp, #0] c808: f44f 729a mov.w r2, #308 ; 0x134 c80c: 4b06 ldr r3, [pc, #24] ; (c828 ) c80e: e7e5 b.n c7dc c810: 00007805 .word 0x00007805 c814: 001ffc1f .word 0x001ffc1f c818: 0000e4a1 .word 0x0000e4a1 c81c: 0000e419 .word 0x0000e419 c820: 0000e3e9 .word 0x0000e3e9 c824: 0001ff6e .word 0x0001ff6e c828: 000200dc .word 0x000200dc c82c: 0001ff37 .word 0x0001ff37 c830: 0000e8e9 .word 0x0000e8e9 c834: 0020040b .word 0x0020040b c838: 0001ff92 .word 0x0001ff92 0000c83c : * 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) { c83c: b570 push {r4, r5, r6, lr} (void)decoder; /*Unused*/ lv_img_decoder_built_in_data_t * user_data = dsc->user_data; c83e: 69cc ldr r4, [r1, #28] { c840: 460d mov r5, r1 if(user_data) { c842: b184 cbz r4, c866 #if LV_USE_FILESYSTEM if(user_data->f) { c844: 6820 ldr r0, [r4, #0] c846: 4e08 ldr r6, [pc, #32] ; (c868 ) c848: b118 cbz r0, c852 lv_fs_close(user_data->f); c84a: 4b08 ldr r3, [pc, #32] ; (c86c ) c84c: 4798 blx r3 lv_mem_free(user_data->f); c84e: 6820 ldr r0, [r4, #0] c850: 47b0 blx r6 } #endif if(user_data->palette) lv_mem_free(user_data->palette); c852: 6860 ldr r0, [r4, #4] c854: b100 cbz r0, c858 c856: 47b0 blx r6 if(user_data->opa) lv_mem_free(user_data->opa); c858: 68a0 ldr r0, [r4, #8] c85a: b100 cbz r0, c85e c85c: 47b0 blx r6 lv_mem_free(user_data); c85e: 4620 mov r0, r4 c860: 47b0 blx r6 dsc->user_data = NULL; c862: 2300 movs r3, #0 c864: 61eb str r3, [r5, #28] } } c866: bd70 pop {r4, r5, r6, pc} c868: 0000eae5 .word 0x0000eae5 c86c: 0000e3e9 .word 0x0000e3e9 0000c870 : { c870: 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 || c874: 7b08 ldrb r0, [r1, #12] { c876: b08d sub sp, #52 ; 0x34 c878: 4698 mov r8, r3 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c87a: f000 031e and.w r3, r0, #30 c87e: 2b04 cmp r3, #4 { c880: f9bd a058 ldrsh.w sl, [sp, #88] ; 0x58 c884: 9e17 ldr r6, [sp, #92] ; 0x5c c886: 460d mov r5, r1 c888: 4614 mov r4, r2 if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || c88a: d003 beq.n c894 dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED) { c88c: 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 || c890: 2b06 cmp r3, #6 c892: d13e bne.n c912 if(dsc->src_type == LV_IMG_SRC_FILE) { c894: f895 900a ldrb.w r9, [r5, #10] c898: f1b9 0f01 cmp.w r9, #1 c89c: d136 bne.n c90c 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); c89e: 4baf ldr r3, [pc, #700] ; (cb5c ) lv_img_decoder_built_in_data_t * user_data = dsc->user_data; c8a0: f8d5 b01c ldr.w fp, [r5, #28] uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c8a4: f000 001f and.w r0, r0, #31 c8a8: 4798 blx r3 uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; c8aa: 68e9 ldr r1, [r5, #12] pos += 4; /*Skip the header*/ res = lv_fs_seek(user_data->f, pos); c8ac: 4bac ldr r3, [pc, #688] ; (cb60 ) uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; c8ae: f3c1 218a ubfx r1, r1, #10, #11 c8b2: fb18 4101 smlabb r1, r8, r1, r4 c8b6: 4341 muls r1, r0 c8b8: 10c9 asrs r1, r1, #3 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c8ba: 4607 mov r7, r0 res = lv_fs_seek(user_data->f, pos); c8bc: 3104 adds r1, #4 c8be: f8db 0000 ldr.w r0, [fp] c8c2: 4798 blx r3 if(res != LV_FS_RES_OK) { c8c4: b148 cbz r0, c8da LV_LOG_WARN("Built-in image decoder seek failed"); c8c6: 4ba7 ldr r3, [pc, #668] ; (cb64 ) c8c8: 9300 str r3, [sp, #0] c8ca: 4ba7 ldr r3, [pc, #668] ; (cb68 ) c8cc: f240 222e movw r2, #558 ; 0x22e LV_LOG_WARN("Built-in image decoder read not supports the color format"); c8d0: 49a6 ldr r1, [pc, #664] ; (cb6c ) c8d2: 4ca7 ldr r4, [pc, #668] ; (cb70 ) c8d4: 2002 movs r0, #2 c8d6: 47a0 blx r4 return LV_RES_INV; c8d8: e018 b.n c90c return LV_RES_INV; } uint32_t btr = len * (px_size >> 3); c8da: f3c7 07c7 ubfx r7, r7, #3, #8 c8de: fb17 f70a smulbb r7, r7, sl uint32_t br = 0; c8e2: 9008 str r0, [sp, #32] lv_fs_read(user_data->f, buf, btr, &br); c8e4: ab08 add r3, sp, #32 c8e6: f8db 0000 ldr.w r0, [fp] c8ea: 4da2 ldr r5, [pc, #648] ; (cb74 ) c8ec: 463a mov r2, r7 c8ee: 4631 mov r1, r6 c8f0: 47a8 blx r5 if(res != LV_FS_RES_OK || btr != br) { c8f2: 9b08 ldr r3, [sp, #32] c8f4: 429f cmp r7, r3 c8f6: f000 80db beq.w cab0 LV_LOG_WARN("Built-in image decoder read failed"); c8fa: 4b9f ldr r3, [pc, #636] ; (cb78 ) c8fc: 9300 str r3, [sp, #0] c8fe: 499b ldr r1, [pc, #620] ; (cb6c ) c900: 4b99 ldr r3, [pc, #612] ; (cb68 ) c902: 4d9b ldr r5, [pc, #620] ; (cb70 ) c904: f240 2235 movw r2, #565 ; 0x235 c908: 2002 movs r0, #2 c90a: 47a8 blx r5 lv_res_t res = LV_RES_INV; c90c: f04f 0900 mov.w r9, #0 c910: e0ce b.n cab0 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || c912: f1a3 020b sub.w r2, r3, #11 c916: 2a03 cmp r2, #3 c918: f200 80ce bhi.w cab8 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)*/ c91c: f44f 437f mov.w r3, #65280 ; 0xff00 c920: f8ad 3018 strh.w r3, [sp, #24] const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ c924: f5a3 03ad sub.w r3, r3, #5668864 ; 0x568000 c928: f5a3 5328 sub.w r3, r3, #10752 ; 0x2a00 c92c: 9307 str r3, [sp, #28] const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ c92e: 4b93 ldr r3, [pc, #588] ; (cb7c ) c930: aa08 add r2, sp, #32 c932: f103 0e10 add.w lr, r3, #16 c936: 4617 mov r7, r2 c938: 6818 ldr r0, [r3, #0] c93a: 6859 ldr r1, [r3, #4] c93c: 4694 mov ip, r2 c93e: e8ac 0003 stmia.w ip!, {r0, r1} c942: 3308 adds r3, #8 c944: 4573 cmp r3, lr c946: 4662 mov r2, ip c948: d1f6 bne.n c938 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; c94a: 8929 ldrh r1, [r5, #8] lv_coord_t i; for(i = 0; i < len; i++) { c94c: 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; c94e: ea4f 2c11 mov.w ip, r1, lsr #8 for(i = 0; i < len; i++) { c952: 2200 movs r2, #0 c954: b210 sxth r0, r2 c956: 4582 cmp sl, r0 c958: f103 0303 add.w r3, r3, #3 c95c: dc14 bgt.n c988 #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); c95e: 7b28 ldrb r0, [r5, #12] c960: 4b7e ldr r3, [pc, #504] ; (cb5c ) c962: f000 001f and.w r0, r0, #31 c966: 4798 blx r3 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ c968: 2301 movs r3, #1 c96a: 4083 lsls r3, r0 c96c: 3b01 subs r3, #1 c96e: b29b uxth r3, r3 c970: 9304 str r3, [sp, #16] lv_coord_t w = 0; uint32_t ofs = 0; int8_t pos = 0; switch(dsc->header.cf) { c972: 7b2b ldrb r3, [r5, #12] c974: f003 031f and.w r3, r3, #31 c978: 3b0b subs r3, #11 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); c97a: 4681 mov r9, r0 switch(dsc->header.cf) { c97c: 2b03 cmp r3, #3 c97e: d85f bhi.n ca40 c980: e8df f003 tbb [pc, r3] c984: 55422e08 .word 0x55422e08 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; c988: f803 1c03 strb.w r1, [r3, #-3] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; c98c: f803 cc02 strb.w ip, [r3, #-2] for(i = 0; i < len; i++) { c990: 3201 adds r2, #1 c992: e7df b.n c954 case LV_IMG_CF_ALPHA_1BIT: w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ c994: 68eb ldr r3, [r5, #12] c996: f3c3 3247 ubfx r2, r3, #13, #8 if(dsc->header.w & 0x7) w++; c99a: f413 5fe0 tst.w r3, #7168 ; 0x1c00 ofs += w * y + (x >> 3); /*First pixel*/ c99e: ea4f 01e4 mov.w r1, r4, asr #3 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ c9a2: bf0c ite eq c9a4: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x7) w++; c9a8: f102 0b01 addne.w fp, r2, #1 pos = 7 - (x & 0x7); c9ac: 43e4 mvns r4, r4 ofs += w * y + (x >> 3); /*First pixel*/ c9ae: fb0b 1108 mla r1, fp, r8, r1 pos = 7 - (x & 0x7); c9b2: f004 0407 and.w r4, r4, #7 opa_table = alpha1_opa_table; c9b6: af06 add r7, sp, #24 pos = 0; break; } #if LV_USE_FILESYSTEM lv_img_decoder_built_in_data_t * user_data = dsc->user_data; c9b8: 69eb ldr r3, [r5, #28] c9ba: 9303 str r3, [sp, #12] uint8_t * fs_buf = _lv_mem_buf_get(w); c9bc: 4658 mov r0, fp c9be: 4b70 ldr r3, [pc, #448] ; (cb80 ) c9c0: 9105 str r1, [sp, #20] c9c2: 4798 blx r3 #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { c9c4: 7aab ldrb r3, [r5, #10] c9c6: 9905 ldr r1, [sp, #20] uint8_t * fs_buf = _lv_mem_buf_get(w); c9c8: 4680 mov r8, r0 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { c9ca: 2b00 cmp r3, #0 c9cc: d13c bne.n ca48 const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; c9ce: 686b ldr r3, [r5, #4] c9d0: 689a ldr r2, [r3, #8] c9d2: 440a add r2, r1 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; c9d4: f1c9 0008 rsb r0, r9, #8 data_tmp = fs_buf; c9d8: 2100 movs r1, #0 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = c9da: 3602 adds r6, #2 pos = 8 - px_size; c9dc: b240 sxtb r0, r0 c9de: e05f b.n caa0 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ c9e0: 68eb ldr r3, [r5, #12] ofs += w * y + (x >> 2); /*First pixel*/ c9e2: 10a1 asrs r1, r4, #2 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ c9e4: f3c3 3208 ubfx r2, r3, #12, #9 if(dsc->header.w & 0x3) w++; c9e8: f413 6f40 tst.w r3, #3072 ; 0xc00 pos = 6 - ((x & 0x3) * 2); c9ec: ea6f 0404 mvn.w r4, r4 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ c9f0: bf0c ite eq c9f2: fa0f fb82 sxtheq.w fp, r2 if(dsc->header.w & 0x3) w++; c9f6: f102 0b01 addne.w fp, r2, #1 pos = 6 - ((x & 0x3) * 2); c9fa: f004 0403 and.w r4, r4, #3 ofs += w * y + (x >> 2); /*First pixel*/ c9fe: fb0b 1108 mla r1, fp, r8, r1 pos = 6 - ((x & 0x3) * 2); ca02: 0064 lsls r4, r4, #1 opa_table = alpha2_opa_table; ca04: af07 add r7, sp, #28 break; ca06: e7d7 b.n c9b8 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ ca08: 68eb ldr r3, [r5, #12] if(dsc->header.w & 0x1) w++; ca0a: 0559 lsls r1, r3, #21 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ ca0c: f3c3 22c9 ubfx r2, r3, #11, #10 ofs += w * y + (x >> 1); /*First pixel*/ ca10: ea4f 0164 mov.w r1, r4, asr #1 pos = 4 - ((x & 0x1) * 4); ca14: ea6f 0404 mvn.w r4, r4 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ ca18: bf54 ite pl ca1a: fa0f fb82 sxthpl.w fp, r2 if(dsc->header.w & 0x1) w++; ca1e: f102 0b01 addmi.w fp, r2, #1 pos = 4 - ((x & 0x1) * 4); ca22: f004 0401 and.w r4, r4, #1 ofs += w * y + (x >> 1); /*First pixel*/ ca26: fb0b 1108 mla r1, fp, r8, r1 pos = 4 - ((x & 0x1) * 4); ca2a: 00a4 lsls r4, r4, #2 ca2c: e7c4 b.n c9b8 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ ca2e: 68ea ldr r2, [r5, #12] ca30: f3c2 218a ubfx r1, r2, #10, #11 ca34: 468b mov fp, r1 ofs += w * y + x; /*First pixel*/ ca36: fb18 4101 smlabb r1, r8, r1, r4 pos = 0; ca3a: 2400 movs r4, #0 switch(dsc->header.cf) { ca3c: 4627 mov r7, r4 ca3e: e7bb b.n c9b8 ca40: 2400 movs r4, #0 ca42: 4621 mov r1, r4 ca44: 46a3 mov fp, r4 ca46: e7f9 b.n ca3c lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ ca48: 9b03 ldr r3, [sp, #12] ca4a: 3104 adds r1, #4 ca4c: 6818 ldr r0, [r3, #0] ca4e: 4b44 ldr r3, [pc, #272] ; (cb60 ) ca50: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); ca52: 9803 ldr r0, [sp, #12] ca54: 465a mov r2, fp ca56: 6800 ldr r0, [r0, #0] ca58: f8df b118 ldr.w fp, [pc, #280] ; cb74 ca5c: 2300 movs r3, #0 ca5e: 4641 mov r1, r8 ca60: 47d8 blx fp data_tmp = fs_buf; ca62: 4642 mov r2, r8 ca64: e7b6 b.n c9d4 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; ca66: 9b04 ldr r3, [sp, #16] ca68: f892 e000 ldrb.w lr, [r2] ca6c: fa03 fc04 lsl.w ip, r3, r4 ca70: ea0e 030c and.w r3, lr, ip dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; ca74: f895 c00c ldrb.w ip, [r5, #12] uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; ca78: 4123 asrs r3, r4 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = ca7a: f00c 0c1f and.w ip, ip, #31 ca7e: f1bc 0f0e cmp.w ip, #14 pos -= px_size; ca82: eba4 0409 sub.w r4, r4, r9 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = ca86: eb01 0c41 add.w ip, r1, r1, lsl #1 ca8a: bf14 ite ne ca8c: 5cfb ldrbne r3, [r7, r3] uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; ca8e: b2db uxtbeq r3, r3 pos -= px_size; ca90: b264 sxtb r4, r4 if(pos < 0) { ca92: 2c00 cmp r4, #0 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = ca94: f806 300c strb.w r3, [r6, ip] pos = 8 - px_size; ca98: bfbc itt lt ca9a: 4604 movlt r4, r0 data_tmp++; ca9c: 3201 addlt r2, #1 for(i = 0; i < len; i++) { ca9e: 3101 adds r1, #1 caa0: b20b sxth r3, r1 caa2: 459a cmp sl, r3 caa4: dcdf bgt.n ca66 pos = 8 - px_size; data_tmp++; } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); caa6: 4b37 ldr r3, [pc, #220] ; (cb84 ) caa8: 4640 mov r0, r8 caaa: 4798 blx r3 res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf); caac: f04f 0901 mov.w r9, #1 } cab0: 4648 mov r0, r9 cab2: b00d add sp, #52 ; 0x34 cab4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || cab8: 3b07 subs r3, #7 caba: 2b03 cmp r3, #3 cabc: f200 80b0 bhi.w cc20 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); cac0: 4b26 ldr r3, [pc, #152] ; (cb5c ) cac2: f000 001f and.w r0, r0, #31 cac6: 4798 blx r3 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ cac8: 2701 movs r7, #1 caca: 4087 lsls r7, r0 cacc: 3f01 subs r7, #1 cace: b2bb uxth r3, r7 cad0: 9303 str r3, [sp, #12] switch(dsc->header.cf) { cad2: 7b2b ldrb r3, [r5, #12] cad4: f003 031f and.w r3, r3, #31 cad8: 3b07 subs r3, #7 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); cada: 4681 mov r9, r0 switch(dsc->header.cf) { cadc: 2b03 cmp r3, #3 cade: d870 bhi.n cbc2 cae0: e8df f003 tbb [pc, r3] cae4: 65522702 .word 0x65522702 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ cae8: 68eb ldr r3, [r5, #12] caea: f3c3 3247 ubfx r2, r3, #13, #8 if(dsc->header.w & 0x7) w++; caee: f413 5fe0 tst.w r3, #7168 ; 0x1c00 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ caf2: bf08 it eq caf4: b217 sxtheq r7, r2 ofs += w * y + (x >> 3); /*First pixel*/ caf6: ea4f 03e4 mov.w r3, r4, asr #3 if(dsc->header.w & 0x7) w++; cafa: bf18 it ne cafc: 1c57 addne r7, r2, #1 ofs += w * y + (x >> 3); /*First pixel*/ cafe: fb07 3308 mla r3, r7, r8, r3 pos = 7 - (x & 0x7); cb02: 43e4 mvns r4, r4 ofs += 8; /*Skip the palette*/ cb04: f103 0108 add.w r1, r3, #8 pos = 7 - (x & 0x7); cb08: f004 0407 and.w r4, r4, #7 uint8_t * fs_buf = _lv_mem_buf_get(w); cb0c: 4b1c ldr r3, [pc, #112] ; (cb80 ) cb0e: 9104 str r1, [sp, #16] cb10: 4638 mov r0, r7 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; cb12: f8d5 b01c ldr.w fp, [r5, #28] uint8_t * fs_buf = _lv_mem_buf_get(w); cb16: 4798 blx r3 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cb18: 7aab ldrb r3, [r5, #10] cb1a: 9904 ldr r1, [sp, #16] uint8_t * fs_buf = _lv_mem_buf_get(w); cb1c: 4680 mov r8, r0 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cb1e: 2b00 cmp r3, #0 cb20: d153 bne.n cbca data_tmp = img_dsc->data + ofs; cb22: 686b ldr r3, [r5, #4] cb24: 689b ldr r3, [r3, #8] cb26: 440b add r3, r1 pos = 8 - px_size; cb28: f1c9 0508 rsb r5, r9, #8 data_tmp = fs_buf; cb2c: 2000 movs r0, #0 pos = 8 - px_size; cb2e: b26d sxtb r5, r5 cb30: e072 b.n cc18 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ cb32: 68eb ldr r3, [r5, #12] cb34: f3c3 3208 ubfx r2, r3, #12, #9 if(dsc->header.w & 0x3) w++; cb38: f413 6f40 tst.w r3, #3072 ; 0xc00 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ cb3c: bf08 it eq cb3e: b217 sxtheq r7, r2 ofs += w * y + (x >> 2); /*First pixel*/ cb40: ea4f 03a4 mov.w r3, r4, asr #2 if(dsc->header.w & 0x3) w++; cb44: bf18 it ne cb46: 1c57 addne r7, r2, #1 pos = 6 - ((x & 0x3) * 2); cb48: 43e4 mvns r4, r4 ofs += w * y + (x >> 2); /*First pixel*/ cb4a: fb07 3308 mla r3, r7, r8, r3 pos = 6 - ((x & 0x3) * 2); cb4e: f004 0403 and.w r4, r4, #3 ofs += 16; /*Skip the palette*/ cb52: f103 0110 add.w r1, r3, #16 pos = 6 - ((x & 0x3) * 2); cb56: 0064 lsls r4, r4, #1 break; cb58: e7d8 b.n cb0c cb5a: bf00 nop cb5c: 00007581 .word 0x00007581 cb60: 0000e44f .word 0x0000e44f cb64: 0001ffb8 .word 0x0001ffb8 cb68: 000200f9 .word 0x000200f9 cb6c: 0001ff37 .word 0x0001ff37 cb70: 0000e8e9 .word 0x0000e8e9 cb74: 0000e419 .word 0x0000e419 cb78: 0001ffdb .word 0x0001ffdb cb7c: 00020121 .word 0x00020121 cb80: 0000eeb5 .word 0x0000eeb5 cb84: 0000eb69 .word 0x0000eb69 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ cb88: 68eb ldr r3, [r5, #12] cb8a: f3c3 22c9 ubfx r2, r3, #11, #10 if(dsc->header.w & 0x1) w++; cb8e: 055b lsls r3, r3, #21 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ cb90: bf58 it pl cb92: b217 sxthpl r7, r2 ofs += w * y + (x >> 1); /*First pixel*/ cb94: ea4f 0364 mov.w r3, r4, asr #1 if(dsc->header.w & 0x1) w++; cb98: bf48 it mi cb9a: 1c57 addmi r7, r2, #1 pos = 4 - ((x & 0x1) * 4); cb9c: 43e4 mvns r4, r4 ofs += w * y + (x >> 1); /*First pixel*/ cb9e: fb07 3308 mla r3, r7, r8, r3 pos = 4 - ((x & 0x1) * 4); cba2: f004 0401 and.w r4, r4, #1 ofs += 64; /*Skip the palette*/ cba6: f103 0140 add.w r1, r3, #64 ; 0x40 pos = 4 - ((x & 0x1) * 4); cbaa: 00a4 lsls r4, r4, #2 cbac: e7ae b.n cb0c w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ cbae: 68ef ldr r7, [r5, #12] cbb0: f3c7 238a ubfx r3, r7, #10, #11 ofs += w * y + x; /*First pixel*/ cbb4: fb18 4803 smlabb r8, r8, r3, r4 w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ cbb8: 461f mov r7, r3 ofs += 1024; /*Skip the palette*/ cbba: f508 6180 add.w r1, r8, #1024 ; 0x400 pos = 0; cbbe: 2400 movs r4, #0 break; cbc0: e7a4 b.n cb0c switch(dsc->header.cf) { cbc2: 2100 movs r1, #0 cbc4: 460c mov r4, r1 cbc6: 460f mov r7, r1 cbc8: e7a0 b.n cb0c lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ cbca: 4b18 ldr r3, [pc, #96] ; (cc2c ) cbcc: f8db 0000 ldr.w r0, [fp] lv_fs_read(user_data->f, fs_buf, w, NULL); cbd0: 4d17 ldr r5, [pc, #92] ; (cc30 ) lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ cbd2: 3104 adds r1, #4 cbd4: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); cbd6: 2300 movs r3, #0 cbd8: f8db 0000 ldr.w r0, [fp] cbdc: 463a mov r2, r7 cbde: 4641 mov r1, r8 cbe0: 47a8 blx r5 data_tmp = fs_buf; cbe2: 4643 mov r3, r8 cbe4: e7a0 b.n cb28 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; cbe6: 9903 ldr r1, [sp, #12] cbe8: 781a ldrb r2, [r3, #0] cbea: 40a1 lsls r1, r4 cbec: 400a ands r2, r1 cbee: 4122 asrs r2, r4 lv_color_t color = user_data->palette[val_act]; cbf0: f8db 1004 ldr.w r1, [fp, #4] cbf4: f831 1012 ldrh.w r1, [r1, r2, lsl #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF; cbf8: 7031 strb r1, [r6, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF; cbfa: 0a09 lsrs r1, r1, #8 cbfc: 7071 strb r1, [r6, #1] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; cbfe: f8db 1008 ldr.w r1, [fp, #8] pos -= px_size; cc02: eba4 0409 sub.w r4, r4, r9 cc06: b264 sxtb r4, r4 if(pos < 0) { cc08: 2c00 cmp r4, #0 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = user_data->opa[val_act]; cc0a: 5c8a ldrb r2, [r1, r2] cc0c: 70b2 strb r2, [r6, #2] pos = 8 - px_size; cc0e: bfbc itt lt cc10: 462c movlt r4, r5 data_tmp++; cc12: 3301 addlt r3, #1 for(i = 0; i < len; i++) { cc14: 3001 adds r0, #1 cc16: 3603 adds r6, #3 cc18: b202 sxth r2, r0 cc1a: 4592 cmp sl, r2 cc1c: dce3 bgt.n cbe6 cc1e: e742 b.n caa6 LV_LOG_WARN("Built-in image decoder read not supports the color format"); cc20: 4b04 ldr r3, [pc, #16] ; (cc34 ) cc22: 9300 str r3, [sp, #0] cc24: f44f 72fe mov.w r2, #508 ; 0x1fc cc28: 4b03 ldr r3, [pc, #12] ; (cc38 ) cc2a: e651 b.n c8d0 cc2c: 0000e44f .word 0x0000e44f cc30: 0000e419 .word 0x0000e419 cc34: 0001fffe .word 0x0001fffe cc38: 00020131 .word 0x00020131 0000cc3c : { cc3c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} cc40: 4606 mov r6, r0 if(dsc->src_type == LV_IMG_SRC_FILE) { cc42: 7a88 ldrb r0, [r1, #10] cc44: 2801 cmp r0, #1 { cc46: 460c mov r4, r1 if(dsc->src_type == LV_IMG_SRC_FILE) { cc48: d178 bne.n cd3c if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; cc4a: 6848 ldr r0, [r1, #4] cc4c: 4b8b ldr r3, [pc, #556] ; (ce7c ) cc4e: 4798 blx r3 cc50: 498b ldr r1, [pc, #556] ; (ce80 ) cc52: 4b8c ldr r3, [pc, #560] ; (ce84 ) cc54: 4798 blx r3 cc56: 2800 cmp r0, #0 cc58: f040 80a9 bne.w cdae lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD); cc5c: 6861 ldr r1, [r4, #4] cc5e: 4b8a ldr r3, [pc, #552] ; (ce88 ) cc60: 2202 movs r2, #2 cc62: a802 add r0, sp, #8 cc64: 4798 blx r3 if(res != LV_FS_RES_OK) { cc66: b138 cbz r0, cc78 LV_LOG_WARN("Built-in image decoder can't open the file"); cc68: 4b88 ldr r3, [pc, #544] ; (ce8c ) cc6a: 9300 str r3, [sp, #0] cc6c: 4b88 ldr r3, [pc, #544] ; (ce90 ) cc6e: f44f 72a6 mov.w r2, #332 ; 0x14c LV_LOG_WARN("Image decoder open: unknown color format") cc72: 4988 ldr r1, [pc, #544] ; (ce94 ) cc74: 2002 movs r0, #2 cc76: e022 b.n ccbe if(dsc->user_data == NULL) { cc78: 69e3 ldr r3, [r4, #28] cc7a: f8df 923c ldr.w r9, [pc, #572] ; ceb8 cc7e: f8df 823c ldr.w r8, [pc, #572] ; cebc cc82: bb13 cbnz r3, ccca dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); cc84: 200c movs r0, #12 cc86: 47c8 blx r9 cc88: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); cc8a: 47c0 blx r8 cc8c: 4605 mov r5, r0 cc8e: b968 cbnz r0, ccac cc90: 4b7f ldr r3, [pc, #508] ; (ce90 ) cc92: 4980 ldr r1, [pc, #512] ; (ce94 ) cc94: 9300 str r3, [sp, #0] cc96: f240 1253 movw r2, #339 ; 0x153 cc9a: 2003 movs r0, #3 cc9c: 4e7e ldr r6, [pc, #504] ; (ce98 ) cc9e: 47b0 blx r6 cca0: 69e2 ldr r2, [r4, #28] cca2: 487e ldr r0, [pc, #504] ; (ce9c ) cca4: 497e ldr r1, [pc, #504] ; (cea0 ) cca6: 462b mov r3, r5 cca8: 4788 blx r1 ccaa: e7fe b.n ccaa if(dsc->user_data == NULL) { ccac: 69e0 ldr r0, [r4, #28] ccae: b948 cbnz r0, ccc4 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); ccb0: 4b7c ldr r3, [pc, #496] ; (cea4 ) ccb2: 9300 str r3, [sp, #0] ccb4: 4977 ldr r1, [pc, #476] ; (ce94 ) ccb6: 4b76 ldr r3, [pc, #472] ; (ce90 ) ccb8: f240 1255 movw r2, #341 ; 0x155 ccbc: 2003 movs r0, #3 LV_LOG_WARN("Image decoder open: unknown color format") ccbe: 4c76 ldr r4, [pc, #472] ; (ce98 ) ccc0: 47a0 blx r4 ccc2: e074 b.n cdae _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); ccc4: 4b78 ldr r3, [pc, #480] ; (cea8 ) ccc6: 210c movs r1, #12 ccc8: 4798 blx r3 user_data->f = lv_mem_alloc(sizeof(f)); ccca: 2008 movs r0, #8 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; cccc: 69e7 ldr r7, [r4, #28] user_data->f = lv_mem_alloc(sizeof(f)); ccce: 47c8 blx r9 ccd0: 6038 str r0, [r7, #0] LV_ASSERT_MEM(user_data->f); ccd2: 47c0 blx r8 ccd4: 4605 mov r5, r0 ccd6: b968 cbnz r0, ccf4 ccd8: 4b6d ldr r3, [pc, #436] ; (ce90 ) ccda: 496e ldr r1, [pc, #440] ; (ce94 ) ccdc: 9300 str r3, [sp, #0] ccde: f240 125d movw r2, #349 ; 0x15d cce2: 2003 movs r0, #3 cce4: 4c6c ldr r4, [pc, #432] ; (ce98 ) cce6: 47a0 blx r4 cce8: 683a ldr r2, [r7, #0] ccea: 486c ldr r0, [pc, #432] ; (ce9c ) ccec: 496c ldr r1, [pc, #432] ; (cea0 ) ccee: 462b mov r3, r5 ccf0: 4788 blx r1 ccf2: e7fe b.n ccf2 if(user_data->f == NULL) { ccf4: 683b ldr r3, [r7, #0] ccf6: b94b cbnz r3, cd0c LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); ccf8: 4b6a ldr r3, [pc, #424] ; (cea4 ) ccfa: 9300 str r3, [sp, #0] ccfc: 4b64 ldr r3, [pc, #400] ; (ce90 ) ccfe: f240 125f movw r2, #351 ; 0x15f LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); cd02: 4964 ldr r1, [pc, #400] ; (ce94 ) cd04: 4d64 ldr r5, [pc, #400] ; (ce98 ) cd06: 2003 movs r0, #3 cd08: 47a8 blx r5 cd0a: e04c b.n cda6 cd0c: aa02 add r2, sp, #8 cd0e: f103 0108 add.w r1, r3, #8 *d8 = *s8; cd12: f812 0b01 ldrb.w r0, [r2], #1 cd16: f803 0b01 strb.w r0, [r3], #1 while(len) { cd1a: 428b cmp r3, r1 cd1c: d1f9 bne.n cd12 lv_img_cf_t cf = dsc->header.cf; cd1e: 7b23 ldrb r3, [r4, #12] cd20: 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) { cd24: 1f02 subs r2, r0, #4 cd26: 2a02 cmp r2, #2 cd28: d811 bhi.n cd4e if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cd2a: 7aa3 ldrb r3, [r4, #10] cd2c: 2b00 cmp r3, #0 cd2e: f040 8088 bne.w ce42 dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data; cd32: 6863 ldr r3, [r4, #4] cd34: 689b ldr r3, [r3, #8] dsc->img_data = NULL; cd36: 6123 str r3, [r4, #16] return LV_RES_OK; cd38: 2001 movs r0, #1 cd3a: e005 b.n cd48 else if(dsc->src_type == LV_IMG_SRC_VARIABLE) { cd3c: 2800 cmp r0, #0 cd3e: d1ee bne.n cd1e if(((lv_img_dsc_t *)dsc->src)->data == NULL) { cd40: 684a ldr r2, [r1, #4] cd42: 6892 ldr r2, [r2, #8] cd44: 2a00 cmp r2, #0 cd46: d1ea bne.n cd1e } cd48: b004 add sp, #16 cd4a: 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 || cd4e: 1fc2 subs r2, r0, #7 cd50: 2a03 cmp r2, #3 cd52: f200 80d4 bhi.w cefe uint8_t px_size = lv_img_cf_get_px_size(cf); cd56: 4b55 ldr r3, [pc, #340] ; (ceac ) cd58: f8df a15c ldr.w sl, [pc, #348] ; ceb8 cd5c: f8df 915c ldr.w r9, [pc, #348] ; cebc cd60: 4798 blx r3 if(dsc->user_data == NULL) { cd62: 69e3 ldr r3, [r4, #28] uint8_t px_size = lv_img_cf_get_px_size(cf); cd64: 4680 mov r8, r0 if(dsc->user_data == NULL) { cd66: bb43 cbnz r3, cdba dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); cd68: 200c movs r0, #12 cd6a: 47d0 blx sl cd6c: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); cd6e: 47c8 blx r9 cd70: 4605 mov r5, r0 cd72: b968 cbnz r0, cd90 cd74: 4b46 ldr r3, [pc, #280] ; (ce90 ) cd76: 4947 ldr r1, [pc, #284] ; (ce94 ) cd78: 9300 str r3, [sp, #0] cd7a: f44f 72c6 mov.w r2, #396 ; 0x18c cd7e: 2003 movs r0, #3 cd80: 4e45 ldr r6, [pc, #276] ; (ce98 ) cd82: 47b0 blx r6 cd84: 69e2 ldr r2, [r4, #28] cd86: 4845 ldr r0, [pc, #276] ; (ce9c ) cd88: 4945 ldr r1, [pc, #276] ; (cea0 ) cd8a: 462b mov r3, r5 cd8c: 4788 blx r1 cd8e: e7fe b.n cd8e if(dsc->user_data == NULL) { cd90: 69e5 ldr r5, [r4, #28] cd92: b975 cbnz r5, cdb2 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); cd94: 4b43 ldr r3, [pc, #268] ; (cea4 ) cd96: 9300 str r3, [sp, #0] cd98: 493e ldr r1, [pc, #248] ; (ce94 ) cd9a: 4b3d ldr r3, [pc, #244] ; (ce90 ) cd9c: 4f3e ldr r7, [pc, #248] ; (ce98 ) cd9e: f44f 72c7 mov.w r2, #398 ; 0x18e cda2: 2003 movs r0, #3 cda4: 47b8 blx r7 lv_img_decoder_built_in_close(decoder, dsc); cda6: 4b42 ldr r3, [pc, #264] ; (ceb0 ) cda8: 4621 mov r1, r4 cdaa: 4630 mov r0, r6 cdac: 4798 blx r3 return LV_RES_INV; cdae: 2000 movs r0, #0 cdb0: e7ca b.n cd48 _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); cdb2: 4b3d ldr r3, [pc, #244] ; (cea8 ) cdb4: 210c movs r1, #12 cdb6: 4628 mov r0, r5 cdb8: 4798 blx r3 user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); cdba: 2002 movs r0, #2 cdbc: fa00 f008 lsl.w r0, r0, r8 lv_img_decoder_built_in_data_t * user_data = dsc->user_data; cdc0: 69e5 ldr r5, [r4, #28] user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); cdc2: 47d0 blx sl cdc4: 6068 str r0, [r5, #4] LV_ASSERT_MEM(user_data->palette); cdc6: 47c8 blx r9 cdc8: 4607 mov r7, r0 cdca: b968 cbnz r0, cde8 cdcc: 4b30 ldr r3, [pc, #192] ; (ce90 ) cdce: 4931 ldr r1, [pc, #196] ; (ce94 ) cdd0: 9300 str r3, [sp, #0] cdd2: f240 1297 movw r2, #407 ; 0x197 cdd6: 2003 movs r0, #3 cdd8: 4c2f ldr r4, [pc, #188] ; (ce98 ) cdda: 47a0 blx r4 cddc: 686a ldr r2, [r5, #4] cdde: 482f ldr r0, [pc, #188] ; (ce9c ) cde0: 492f ldr r1, [pc, #188] ; (cea0 ) cde2: 463b mov r3, r7 cde4: 4788 blx r1 cde6: e7fe b.n cde6 uint32_t palette_size = 1 << px_size; cde8: 2701 movs r7, #1 cdea: fa07 f708 lsl.w r7, r7, r8 user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t)); cdee: 4638 mov r0, r7 cdf0: 47d0 blx sl cdf2: 60a8 str r0, [r5, #8] LV_ASSERT_MEM(user_data->opa); cdf4: 47c8 blx r9 cdf6: 4680 mov r8, r0 cdf8: b968 cbnz r0, ce16 cdfa: 4b25 ldr r3, [pc, #148] ; (ce90 ) cdfc: 4925 ldr r1, [pc, #148] ; (ce94 ) cdfe: 9300 str r3, [sp, #0] ce00: f240 1299 movw r2, #409 ; 0x199 ce04: 2003 movs r0, #3 ce06: 4c24 ldr r4, [pc, #144] ; (ce98 ) ce08: 47a0 blx r4 ce0a: 68aa ldr r2, [r5, #8] ce0c: 4823 ldr r0, [pc, #140] ; (ce9c ) ce0e: 4924 ldr r1, [pc, #144] ; (cea0 ) ce10: 4643 mov r3, r8 ce12: 4788 blx r1 ce14: e7fe b.n ce14 if(user_data->palette == NULL || user_data->opa == NULL) { ce16: 686b ldr r3, [r5, #4] ce18: b10b cbz r3, ce1e ce1a: 68ab ldr r3, [r5, #8] ce1c: b92b cbnz r3, ce2a LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); ce1e: 4b21 ldr r3, [pc, #132] ; (cea4 ) ce20: 9300 str r3, [sp, #0] ce22: f240 129b movw r2, #411 ; 0x19b ce26: 4b1a ldr r3, [pc, #104] ; (ce90 ) ce28: e76b b.n cd02 if(dsc->src_type == LV_IMG_SRC_FILE) { ce2a: 7aa3 ldrb r3, [r4, #10] ce2c: 2b01 cmp r3, #1 ce2e: d149 bne.n cec4 lv_fs_seek(user_data->f, 4); /*Skip the header*/ ce30: 6828 ldr r0, [r5, #0] ce32: 4b20 ldr r3, [pc, #128] ; (ceb4 ) lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); ce34: f8df 8088 ldr.w r8, [pc, #136] ; cec0 lv_fs_seek(user_data->f, 4); /*Skip the header*/ ce38: 2104 movs r1, #4 ce3a: 4798 blx r3 for(i = 0; i < palette_size; i++) { ce3c: 2600 movs r6, #0 ce3e: 42be cmp r6, r7 ce40: d101 bne.n ce46 dsc->img_data = NULL; ce42: 2300 movs r3, #0 ce44: e777 b.n cd36 lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); ce46: 2300 movs r3, #0 ce48: 2204 movs r2, #4 ce4a: a902 add r1, sp, #8 ce4c: 6828 ldr r0, [r5, #0] ce4e: 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); ce50: f89d 1009 ldrb.w r1, [sp, #9] ce54: f89d 3008 ldrb.w r3, [sp, #8] user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue); ce58: 686a ldr r2, [r5, #4] ce5a: 0889 lsrs r1, r1, #2 ce5c: 08db lsrs r3, r3, #3 ce5e: ea43 1341 orr.w r3, r3, r1, lsl #5 ce62: f89d 100a ldrb.w r1, [sp, #10] ce66: 08c9 lsrs r1, r1, #3 ce68: ea43 23c1 orr.w r3, r3, r1, lsl #11 ce6c: f822 3016 strh.w r3, [r2, r6, lsl #1] user_data->opa[i] = cur_color.ch.alpha; ce70: 68ab ldr r3, [r5, #8] ce72: f89d 200b ldrb.w r2, [sp, #11] ce76: 559a strb r2, [r3, r6] for(i = 0; i < palette_size; i++) { ce78: 3601 adds r6, #1 ce7a: e7e0 b.n ce3e ce7c: 0000e56d .word 0x0000e56d ce80: 00020038 .word 0x00020038 ce84: 00016315 .word 0x00016315 ce88: 0000e4a1 .word 0x0000e4a1 ce8c: 0002003c .word 0x0002003c ce90: 00020153 .word 0x00020153 ce94: 0001ff37 .word 0x0001ff37 ce98: 0000e8e9 .word 0x0000e8e9 ce9c: 0001edbe .word 0x0001edbe cea0: 000017e9 .word 0x000017e9 cea4: 00020067 .word 0x00020067 cea8: 0000f019 .word 0x0000f019 ceac: 00007581 .word 0x00007581 ceb0: 0000c83d .word 0x0000c83d ceb4: 0000e44f .word 0x0000e44f ceb8: 0000ea2d .word 0x0000ea2d cebc: 000017e1 .word 0x000017e1 cec0: 0000e419 .word 0x0000e419 lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data; cec4: 6863 ldr r3, [r4, #4] cec6: 6899 ldr r1, [r3, #8] for(i = 0; i < palette_size; i++) { cec8: 2000 movs r0, #0 ceca: 42b8 cmp r0, r7 cecc: f101 0104 add.w r1, r1, #4 ced0: d0b7 beq.n ce42 ced2: f811 6c03 ldrb.w r6, [r1, #-3] ced6: f811 3c04 ldrb.w r3, [r1, #-4] user_data->palette[i] = lv_color_make(palette_p[i].ch.red, palette_p[i].ch.green, palette_p[i].ch.blue); ceda: 686a ldr r2, [r5, #4] cedc: 08b6 lsrs r6, r6, #2 cede: 08db lsrs r3, r3, #3 cee0: ea43 1346 orr.w r3, r3, r6, lsl #5 cee4: f811 6c02 ldrb.w r6, [r1, #-2] cee8: 08f6 lsrs r6, r6, #3 ceea: ea43 23c6 orr.w r3, r3, r6, lsl #11 ceee: f822 3010 strh.w r3, [r2, r0, lsl #1] user_data->opa[i] = palette_p[i].ch.alpha; cef2: 68ab ldr r3, [r5, #8] cef4: f811 2c01 ldrb.w r2, [r1, #-1] cef8: 541a strb r2, [r3, r0] for(i = 0; i < palette_size; i++) { cefa: 3001 adds r0, #1 cefc: e7e5 b.n ceca else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT || cefe: f1a0 030b sub.w r3, r0, #11 cf02: 2b03 cmp r3, #3 cf04: d99d bls.n ce42 lv_img_decoder_built_in_close(decoder, dsc); cf06: 4b05 ldr r3, [pc, #20] ; (cf1c ) cf08: 4621 mov r1, r4 cf0a: 4630 mov r0, r6 cf0c: 4798 blx r3 LV_LOG_WARN("Image decoder open: unknown color format") cf0e: 4b04 ldr r3, [pc, #16] ; (cf20 ) cf10: 9300 str r3, [sp, #0] cf12: f240 12d3 movw r2, #467 ; 0x1d3 cf16: 4b03 ldr r3, [pc, #12] ; (cf24 ) cf18: e6ab b.n cc72 cf1a: bf00 nop cf1c: 0000c83d .word 0x0000c83d cf20: 00020090 .word 0x00020090 cf24: 00020153 .word 0x00020153 0000cf28 : { cf28: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} header->always_zero = 0; cf2c: 780b ldrb r3, [r1, #0] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf2e: f8df 8044 ldr.w r8, [pc, #68] ; cf74 cf32: f8df 9044 ldr.w r9, [pc, #68] ; cf78 header->always_zero = 0; cf36: f36f 1347 bfc r3, #5, #3 cf3a: 700b strb r3, [r1, #0] { cf3c: 4607 mov r7, r0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf3e: 4b0c ldr r3, [pc, #48] ; (cf70 ) cf40: 480c ldr r0, [pc, #48] ; (cf74 ) { cf42: 460e mov r6, r1 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf44: 4798 blx r3 lv_res_t res = LV_RES_INV; cf46: 2400 movs r4, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf48: 4605 mov r5, r0 cf4a: b915 cbnz r5, cf52 } cf4c: 4620 mov r0, r4 cf4e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(d->info_cb) { cf52: 682c ldr r4, [r5, #0] cf54: b134 cbz r4, cf64 res = d->info_cb(d, src, header); cf56: 4632 mov r2, r6 cf58: 4639 mov r1, r7 cf5a: 4628 mov r0, r5 cf5c: 47a0 blx r4 if(res == LV_RES_OK) break; cf5e: 2801 cmp r0, #1 res = d->info_cb(d, src, header); cf60: 4604 mov r4, r0 if(res == LV_RES_OK) break; cf62: d0f3 beq.n cf4c _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cf64: 4629 mov r1, r5 cf66: 4640 mov r0, r8 cf68: 47c8 blx r9 cf6a: 4605 mov r5, r0 cf6c: e7ed b.n cf4a cf6e: bf00 nop cf70: 0000e6a9 .word 0x0000e6a9 cf74: 20008654 .word 0x20008654 cf78: 0000e6b5 .word 0x0000e6b5 0000cf7c : { cf7c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} dsc->src_type = lv_img_src_get_type(src); cf80: 4b22 ldr r3, [pc, #136] ; (d00c ) dsc->color = color; cf82: 8102 strh r2, [r0, #8] { cf84: 4604 mov r4, r0 dsc->src_type = lv_img_src_get_type(src); cf86: 4608 mov r0, r1 { cf88: 460f mov r7, r1 dsc->src_type = lv_img_src_get_type(src); cf8a: 4798 blx r3 dsc->user_data = NULL; cf8c: 2300 movs r3, #0 if(dsc->src_type == LV_IMG_SRC_FILE) { cf8e: 2801 cmp r0, #1 dsc->src_type = lv_img_src_get_type(src); cf90: 72a0 strb r0, [r4, #10] dsc->user_data = NULL; cf92: 61e3 str r3, [r4, #28] if(dsc->src_type == LV_IMG_SRC_FILE) { cf94: d11d bne.n cfd2 size_t fnlen = strlen(src); cf96: 4b1e ldr r3, [pc, #120] ; (d010 ) cf98: 4638 mov r0, r7 cf9a: 4798 blx r3 dsc->src = lv_mem_alloc(fnlen + 1); cf9c: 4b1d ldr r3, [pc, #116] ; (d014 ) cf9e: 3001 adds r0, #1 cfa0: 4798 blx r3 __ssp_bos_icheck3(memset, void *, int) __ssp_bos_icheck2_restrict(stpcpy, char *, const char *) #if __GNUC_PREREQ__(4,8) || defined(__clang__) __ssp_bos_icheck3_restrict(stpncpy, char *, const char *) #endif __ssp_bos_icheck2_restrict(strcpy, char *, const char *) cfa2: 4b1d ldr r3, [pc, #116] ; (d018 ) cfa4: 6060 str r0, [r4, #4] cfa6: 4639 mov r1, r7 cfa8: 4798 blx r3 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cfaa: 481c ldr r0, [pc, #112] ; (d01c ) cfac: 4b1c ldr r3, [pc, #112] ; (d020 ) cfae: f8df 906c ldr.w r9, [pc, #108] ; d01c cfb2: f8df a074 ldr.w sl, [pc, #116] ; d028 cfb6: 4798 blx r3 lv_res_t res = LV_RES_INV; cfb8: 2600 movs r6, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cfba: 4605 mov r5, r0 res = d->info_cb(d, src, &dsc->header); cfbc: f104 080c add.w r8, r4, #12 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { cfc0: b94d cbnz r5, cfd6 if(res == LV_RES_INV) { cfc2: b91e cbnz r6, cfcc _lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t)); cfc4: 4b17 ldr r3, [pc, #92] ; (d024 ) cfc6: 2120 movs r1, #32 cfc8: 4620 mov r0, r4 cfca: 4798 blx r3 } cfcc: 4630 mov r0, r6 cfce: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} dsc->src = src; cfd2: 6067 str r7, [r4, #4] cfd4: e7e9 b.n cfaa if(d->info_cb == NULL || d->open_cb == NULL) continue; cfd6: 682b ldr r3, [r5, #0] cfd8: b19b cbz r3, d002 cfda: 686a ldr r2, [r5, #4] cfdc: b18a cbz r2, d002 res = d->info_cb(d, src, &dsc->header); cfde: 4642 mov r2, r8 cfe0: 4639 mov r1, r7 cfe2: 4628 mov r0, r5 cfe4: 4798 blx r3 if(res != LV_RES_OK) continue; cfe6: 2801 cmp r0, #1 res = d->info_cb(d, src, &dsc->header); cfe8: 4606 mov r6, r0 if(res != LV_RES_OK) continue; cfea: d10a bne.n d002 dsc->error_msg = NULL; cfec: 2300 movs r3, #0 cfee: 61a3 str r3, [r4, #24] dsc->img_data = NULL; cff0: 6123 str r3, [r4, #16] dsc->decoder = d; cff2: 6025 str r5, [r4, #0] res = d->open_cb(d, dsc); cff4: 686b ldr r3, [r5, #4] cff6: 4621 mov r1, r4 cff8: 4628 mov r0, r5 cffa: 4798 blx r3 if(res == LV_RES_OK) break; cffc: 2801 cmp r0, #1 res = d->open_cb(d, dsc); cffe: 4606 mov r6, r0 if(res == LV_RES_OK) break; d000: d0e4 beq.n cfcc _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { d002: 4629 mov r1, r5 d004: 4648 mov r0, r9 d006: 47d0 blx sl d008: 4605 mov r5, r0 d00a: e7d9 b.n cfc0 d00c: 00007805 .word 0x00007805 d010: 00016339 .word 0x00016339 d014: 0000ea2d .word 0x0000ea2d d018: 00016329 .word 0x00016329 d01c: 20008654 .word 0x20008654 d020: 0000e6a9 .word 0x0000e6a9 d024: 0000f019 .word 0x0000f019 d028: 0000e6b5 .word 0x0000e6b5 0000d02c : { d02c: 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); d02e: 6805 ldr r5, [r0, #0] d030: 68ac ldr r4, [r5, #8] d032: b14c cbz r4, d048 d034: 9e06 ldr r6, [sp, #24] d036: e9cd 3600 strd r3, r6, [sp] d03a: 4613 mov r3, r2 d03c: 460a mov r2, r1 d03e: 4601 mov r1, r0 d040: 4628 mov r0, r5 d042: 47a0 blx r4 } d044: b002 add sp, #8 d046: bd70 pop {r4, r5, r6, pc} lv_res_t res = LV_RES_INV; d048: 4620 mov r0, r4 d04a: e7fb b.n d044 0000d04c : { d04c: b510 push {r4, lr} d04e: 4604 mov r4, r0 if(dsc->decoder) { d050: 6800 ldr r0, [r0, #0] d052: b158 cbz r0, d06c if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); d054: 68c3 ldr r3, [r0, #12] d056: b10b cbz r3, d05c d058: 4621 mov r1, r4 d05a: 4798 blx r3 if(dsc->src_type == LV_IMG_SRC_FILE) { d05c: 7aa3 ldrb r3, [r4, #10] d05e: 2b01 cmp r3, #1 d060: d104 bne.n d06c lv_mem_free(dsc->src); d062: 4b03 ldr r3, [pc, #12] ; (d070 ) d064: 6860 ldr r0, [r4, #4] d066: 4798 blx r3 dsc->src = NULL; d068: 2300 movs r3, #0 d06a: 6063 str r3, [r4, #4] } d06c: bd10 pop {r4, pc} d06e: bf00 nop d070: 0000eae5 .word 0x0000eae5 0000d074 : { d074: b573 push {r0, r1, r4, r5, r6, lr} decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); d076: 4b0e ldr r3, [pc, #56] ; (d0b0 ) d078: 480e ldr r0, [pc, #56] ; (d0b4 ) d07a: 4798 blx r3 LV_ASSERT_MEM(decoder); d07c: 4b0e ldr r3, [pc, #56] ; (d0b8 ) decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); d07e: 4604 mov r4, r0 LV_ASSERT_MEM(decoder); d080: 4798 blx r3 d082: 4605 mov r5, r0 d084: b960 cbnz r0, d0a0 d086: 4b0d ldr r3, [pc, #52] ; (d0bc ) d088: 490d ldr r1, [pc, #52] ; (d0c0 ) d08a: 9300 str r3, [sp, #0] d08c: 22c9 movs r2, #201 ; 0xc9 d08e: 2003 movs r0, #3 d090: 4e0c ldr r6, [pc, #48] ; (d0c4 ) d092: 47b0 blx r6 d094: 480c ldr r0, [pc, #48] ; (d0c8 ) d096: 490d ldr r1, [pc, #52] ; (d0cc ) d098: 4622 mov r2, r4 d09a: 462b mov r3, r5 d09c: 4788 blx r1 d09e: e7fe b.n d09e if(decoder == NULL) return NULL; d0a0: b11c cbz r4, d0aa _lv_memset_00(decoder, sizeof(lv_img_decoder_t)); d0a2: 4b0b ldr r3, [pc, #44] ; (d0d0 ) d0a4: 2110 movs r1, #16 d0a6: 4620 mov r0, r4 d0a8: 4798 blx r3 } d0aa: 4620 mov r0, r4 d0ac: b002 add sp, #8 d0ae: bd70 pop {r4, r5, r6, pc} d0b0: 0000e619 .word 0x0000e619 d0b4: 20008654 .word 0x20008654 d0b8: 000017e1 .word 0x000017e1 d0bc: 00020170 .word 0x00020170 d0c0: 0001ff37 .word 0x0001ff37 d0c4: 0000e8e9 .word 0x0000e8e9 d0c8: 0001edbe .word 0x0001edbe d0cc: 000017e9 .word 0x000017e9 d0d0: 0000f019 .word 0x0000f019 0000d0d4 <_lv_img_decoder_init>: { d0d4: b537 push {r0, r1, r2, r4, r5, lr} _lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t)); d0d6: 4b15 ldr r3, [pc, #84] ; (d12c <_lv_img_decoder_init+0x58>) d0d8: 4815 ldr r0, [pc, #84] ; (d130 <_lv_img_decoder_init+0x5c>) d0da: 2110 movs r1, #16 d0dc: 4798 blx r3 decoder = lv_img_decoder_create(); d0de: 4b15 ldr r3, [pc, #84] ; (d134 <_lv_img_decoder_init+0x60>) d0e0: 4798 blx r3 if(decoder == NULL) { d0e2: 4604 mov r4, r0 d0e4: b9b8 cbnz r0, d116 <_lv_img_decoder_init+0x42> LV_LOG_WARN("lv_img_decoder_init: out of memory"); d0e6: 4a14 ldr r2, [pc, #80] ; (d138 <_lv_img_decoder_init+0x64>) d0e8: 9200 str r2, [sp, #0] d0ea: 2002 movs r0, #2 d0ec: 2247 movs r2, #71 ; 0x47 d0ee: 4b13 ldr r3, [pc, #76] ; (d13c <_lv_img_decoder_init+0x68>) d0f0: 4913 ldr r1, [pc, #76] ; (d140 <_lv_img_decoder_init+0x6c>) d0f2: 4d14 ldr r5, [pc, #80] ; (d144 <_lv_img_decoder_init+0x70>) d0f4: 47a8 blx r5 LV_ASSERT_MEM(decoder); d0f6: 4a14 ldr r2, [pc, #80] ; (d148 <_lv_img_decoder_init+0x74>) d0f8: 4620 mov r0, r4 d0fa: 4790 blx r2 d0fc: b998 cbnz r0, d126 <_lv_img_decoder_init+0x52> d0fe: 4b0f ldr r3, [pc, #60] ; (d13c <_lv_img_decoder_init+0x68>) d100: 490f ldr r1, [pc, #60] ; (d140 <_lv_img_decoder_init+0x6c>) d102: 9300 str r3, [sp, #0] d104: 2248 movs r2, #72 ; 0x48 d106: 2003 movs r0, #3 d108: 47a8 blx r5 d10a: 4810 ldr r0, [pc, #64] ; (d14c <_lv_img_decoder_init+0x78>) d10c: 4910 ldr r1, [pc, #64] ; (d150 <_lv_img_decoder_init+0x7c>) d10e: 2200 movs r2, #0 d110: 2300 movs r3, #0 d112: 4788 blx r1 d114: e7fe b.n d114 <_lv_img_decoder_init+0x40> decoder->info_cb = info_cb; d116: 4b0f ldr r3, [pc, #60] ; (d154 <_lv_img_decoder_init+0x80>) d118: 6003 str r3, [r0, #0] decoder->open_cb = open_cb; d11a: 4b0f ldr r3, [pc, #60] ; (d158 <_lv_img_decoder_init+0x84>) d11c: 6043 str r3, [r0, #4] decoder->read_line_cb = read_line_cb; d11e: 4b0f ldr r3, [pc, #60] ; (d15c <_lv_img_decoder_init+0x88>) d120: 6083 str r3, [r0, #8] decoder->close_cb = close_cb; d122: 4b0f ldr r3, [pc, #60] ; (d160 <_lv_img_decoder_init+0x8c>) d124: 60c3 str r3, [r0, #12] } d126: b003 add sp, #12 d128: bd30 pop {r4, r5, pc} d12a: bf00 nop d12c: 0000e605 .word 0x0000e605 d130: 20008654 .word 0x20008654 d134: 0000d075 .word 0x0000d075 d138: 000200b9 .word 0x000200b9 d13c: 00020186 .word 0x00020186 d140: 0001ff37 .word 0x0001ff37 d144: 0000e8e9 .word 0x0000e8e9 d148: 000017e1 .word 0x000017e1 d14c: 0001edbe .word 0x0001edbe d150: 000017e9 .word 0x000017e9 d154: 0000c75d .word 0x0000c75d d158: 0000cc3d .word 0x0000cc3d d15c: 0000c871 .word 0x0000c871 d160: 0000c83d .word 0x0000c83d 0000d164 : * @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); d164: 6843 ldr r3, [r0, #4] d166: 4718 bx r3 0000d168 : * @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) { d168: b410 push {r4} return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); d16a: 6804 ldr r4, [r0, #0] d16c: 46a4 mov ip, r4 } d16e: f85d 4b04 ldr.w r4, [sp], #4 return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); d172: 4760 bx ip 0000d174 : * @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) { d174: b51f push {r0, r1, r2, r3, r4, lr} d176: 4613 mov r3, r2 lv_font_glyph_dsc_t g; bool ret; ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next); d178: 4c04 ldr r4, [pc, #16] ; (d18c ) d17a: 460a mov r2, r1 d17c: a901 add r1, sp, #4 d17e: 47a0 blx r4 if(ret) return g.adv_w; d180: b108 cbz r0, d186 d182: f8bd 0004 ldrh.w r0, [sp, #4] else return 0; } d186: b004 add sp, #16 d188: bd10 pop {r4, pc} d18a: bf00 nop d18c: 0000d169 .word 0x0000d169 0000d190 : { 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]; d190: 7803 ldrb r3, [r0, #0] d192: 780a ldrb r2, [r1, #0] d194: 4293 cmp r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; d196: bf09 itett eq d198: 784b ldrbeq r3, [r1, #1] if(ref8_p[0] != element8_p[0]) return (int32_t)ref8_p[0] - element8_p[0]; d19a: 1a98 subne r0, r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; d19c: 7840 ldrbeq r0, [r0, #1] d19e: 1ac0 subeq r0, r0, r3 } d1a0: 4770 bx lr 0000d1a2 : { 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]; d1a2: 8803 ldrh r3, [r0, #0] d1a4: 880a ldrh r2, [r1, #0] d1a6: 4293 cmp r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; d1a8: bf09 itett eq d1aa: 884b ldrheq r3, [r1, #2] if(ref16_p[0] != element16_p[0]) return (int32_t)ref16_p[0] - element16_p[0]; d1ac: 1a98 subne r0, r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; d1ae: 8840 ldrheq r0, [r0, #2] d1b0: 1ac0 subeq r0, r0, r3 } d1b2: 4770 bx lr 0000d1b4 : * @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) { d1b4: 1e53 subs r3, r2, #1 { d1b6: b530 push {r4, r5, lr} switch(len) { d1b8: 2b07 cmp r3, #7 d1ba: d81f bhi.n d1fc d1bc: e8df f003 tbb [pc, r3] d1c0: 1a180423 .word 0x1a180423 d1c4: 1c1e1e1e .word 0x1c1e1e1e case 1: bit_mask = 0x1; break; case 2: bit_mask = 0x3; d1c8: 2303 movs r3, #3 break; default: bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; } uint32_t byte_pos = bit_pos >> 3; d1ca: 08cd lsrs r5, r1, #3 bit_pos = bit_pos & 0x7; d1cc: f001 0107 and.w r1, r1, #7 if(bit_pos + len >= 8) { d1d0: 440a add r2, r1 d1d2: 2a07 cmp r2, #7 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; d1d4: 5d44 ldrb r4, [r0, r5] if(bit_pos + len >= 8) { d1d6: d918 bls.n d20a uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; d1d8: 4428 add r0, r5 return (in16 >> (16 - bit_pos - len)) & bit_mask; d1da: f1c2 0210 rsb r2, r2, #16 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; d1de: 7841 ldrb r1, [r0, #1] d1e0: eb01 2104 add.w r1, r1, r4, lsl #8 return (in16 >> (16 - bit_pos - len)) & bit_mask; d1e4: b289 uxth r1, r1 d1e6: fa41 f202 asr.w r2, r1, r2 d1ea: ea03 0002 and.w r0, r3, r2 } else { return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; } } d1ee: bd30 pop {r4, r5, pc} bit_mask = 0x7; d1f0: 2307 movs r3, #7 break; d1f2: e7ea b.n d1ca bit_mask = 0xF; d1f4: 230f movs r3, #15 break; d1f6: e7e8 b.n d1ca bit_mask = 0xFF; d1f8: 23ff movs r3, #255 ; 0xff break; d1fa: e7e6 b.n d1ca bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; d1fc: 2301 movs r3, #1 d1fe: 4093 lsls r3, r2 d200: 3b01 subs r3, #1 d202: b2db uxtb r3, r3 d204: e7e1 b.n d1ca switch(len) { d206: 4613 mov r3, r2 d208: e7df b.n d1ca return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; d20a: f1c2 0208 rsb r2, r2, #8 d20e: 4114 asrs r4, r2 d210: ea03 0004 and.w r0, r3, r4 d214: e7eb b.n d1ee ... 0000d218 : * @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) { d218: 2b03 cmp r3, #3 { d21a: b530 push {r4, r5, lr} if(len == 3) { d21c: d104 bne.n d228 len = 4; switch(val) { d21e: 2a07 cmp r2, #7 d220: bf9c itt ls d222: 4b0b ldrls r3, [pc, #44] ; (d250 ) d224: 5c9a ldrbls r2, [r3, r2] len = 4; d226: 2304 movs r3, #4 break; } } uint16_t byte_pos = bit_pos >> 3; bit_pos = bit_pos & 0x7; d228: 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); d22c: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff d230: f3c1 01cf ubfx r1, r1, #3, #16 d234: f1c5 0508 rsb r5, r5, #8 bit_pos = 8 - bit_pos - len; d238: 1aed subs r5, r5, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); d23a: fa04 f303 lsl.w r3, r4, r3 d23e: f063 03ff orn r3, r3, #255 ; 0xff d242: 5c44 ldrb r4, [r0, r1] d244: 40ab lsls r3, r5 d246: 4023 ands r3, r4 out[byte_pos] |= (val << bit_pos); d248: 40aa lsls r2, r5 d24a: 431a orrs r2, r3 d24c: 5442 strb r2, [r0, r1] } d24e: bd30 pop {r4, r5, pc} d250: 000201d3 .word 0x000201d3 0000d254 : { d254: 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); d258: 4c39 ldr r4, [pc, #228] ; (d340 ) d25a: f8df a0e8 ldr.w sl, [pc, #232] ; d344 d25e: f8d4 9000 ldr.w r9, [r4] d262: 7927 ldrb r7, [r4, #4] d264: 1843 adds r3, r0, r1 d266: 4680 mov r8, r0 d268: 9300 str r3, [sp, #0] rle_state = RLE_STATE_COUNTER; d26a: f04f 0b02 mov.w fp, #2 for(i = 0; i < w; i++) { d26e: 9b00 ldr r3, [sp, #0] d270: 4543 cmp r3, r8 d272: d102 bne.n d27a } d274: b003 add sp, #12 d276: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(rle_state == RLE_STATE_SINGLE) { d27a: 7963 ldrb r3, [r4, #5] d27c: b9a3 cbnz r3, d2a8 ret = get_bits(rle_in, rle_rdp, rle_bpp); d27e: 68a6 ldr r6, [r4, #8] d280: 9301 str r3, [sp, #4] d282: 463a mov r2, r7 d284: 4631 mov r1, r6 d286: 4648 mov r0, r9 d288: 47d0 blx sl d28a: 4605 mov r5, r0 if(rle_rdp != 0 && rle_prev_v == ret) { d28c: b136 cbz r6, d29c d28e: 7b22 ldrb r2, [r4, #12] d290: 9b01 ldr r3, [sp, #4] d292: 4282 cmp r2, r0 rle_cnt = 0; d294: bf02 ittt eq d296: 7363 strbeq r3, [r4, #13] rle_state = RLE_STATE_REPEATE; d298: 2301 moveq r3, #1 d29a: 7163 strbeq r3, [r4, #5] rle_rdp += rle_bpp; d29c: 443e add r6, r7 rle_prev_v = ret; d29e: 7325 strb r5, [r4, #12] rle_rdp += rle_bpp; d2a0: 60a6 str r6, [r4, #8] out[i] = rle_next(); d2a2: f808 5b01 strb.w r5, [r8], #1 for(i = 0; i < w; i++) { d2a6: e7e2 b.n d26e else if(rle_state == RLE_STATE_REPEATE) { d2a8: 2b01 cmp r3, #1 d2aa: d131 bne.n d310 v = get_bits(rle_in, rle_rdp, 1); d2ac: 68a6 ldr r6, [r4, #8] d2ae: 461a mov r2, r3 d2b0: 4631 mov r1, r6 d2b2: 4648 mov r0, r9 d2b4: 47d0 blx sl rle_cnt++; d2b6: 7b63 ldrb r3, [r4, #13] d2b8: 3301 adds r3, #1 d2ba: b2db uxtb r3, r3 rle_rdp += 1; d2bc: 1c71 adds r1, r6, #1 if(v == 1) { d2be: 2801 cmp r0, #1 rle_cnt++; d2c0: 7363 strb r3, [r4, #13] rle_rdp += 1; d2c2: 60a1 str r1, [r4, #8] if(v == 1) { d2c4: d118 bne.n d2f8 if(rle_cnt == 11) { d2c6: 2b0b cmp r3, #11 ret = rle_prev_v; d2c8: 7b25 ldrb r5, [r4, #12] if(rle_cnt == 11) { d2ca: d1ea bne.n d2a2 rle_cnt = get_bits(rle_in, rle_rdp, 6); d2cc: 2206 movs r2, #6 d2ce: 4648 mov r0, r9 d2d0: 47d0 blx sl rle_rdp += 6; d2d2: 3607 adds r6, #7 rle_cnt = get_bits(rle_in, rle_rdp, 6); d2d4: 7360 strb r0, [r4, #13] rle_rdp += 6; d2d6: 60a6 str r6, [r4, #8] if(rle_cnt != 0) { d2d8: b110 cbz r0, d2e0 rle_state = RLE_STATE_COUNTER; d2da: f884 b005 strb.w fp, [r4, #5] d2de: e7e0 b.n d2a2 d2e0: 9001 str r0, [sp, #4] ret = get_bits(rle_in, rle_rdp, rle_bpp); d2e2: 4631 mov r1, r6 d2e4: 463a mov r2, r7 d2e6: 4648 mov r0, r9 d2e8: 47d0 blx sl rle_rdp += rle_bpp; d2ea: 443e add r6, r7 rle_state = RLE_STATE_SINGLE; d2ec: 9b01 ldr r3, [sp, #4] rle_prev_v = ret; d2ee: 7320 strb r0, [r4, #12] ret = get_bits(rle_in, rle_rdp, rle_bpp); d2f0: 4605 mov r5, r0 rle_rdp += rle_bpp; d2f2: 60a6 str r6, [r4, #8] rle_state = RLE_STATE_SINGLE; d2f4: 7163 strb r3, [r4, #5] d2f6: e7d4 b.n d2a2 ret = get_bits(rle_in, rle_rdp, rle_bpp); d2f8: 463a mov r2, r7 d2fa: 4648 mov r0, r9 d2fc: 9101 str r1, [sp, #4] d2fe: 47d0 blx sl rle_rdp += rle_bpp; d300: 9901 ldr r1, [sp, #4] rle_prev_v = ret; d302: 7320 strb r0, [r4, #12] rle_rdp += rle_bpp; d304: 4439 add r1, r7 ret = get_bits(rle_in, rle_rdp, rle_bpp); d306: 4605 mov r5, r0 rle_rdp += rle_bpp; d308: 60a1 str r1, [r4, #8] rle_state = RLE_STATE_SINGLE; d30a: f04f 0300 mov.w r3, #0 d30e: e7f1 b.n d2f4 else if(rle_state == RLE_STATE_COUNTER) { d310: 2b02 cmp r3, #2 d312: d112 bne.n d33a rle_cnt--; d314: 7b66 ldrb r6, [r4, #13] ret = rle_prev_v; d316: 7b25 ldrb r5, [r4, #12] rle_cnt--; d318: 3e01 subs r6, #1 d31a: b2f6 uxtb r6, r6 d31c: 7366 strb r6, [r4, #13] if(rle_cnt == 0) { d31e: 2e00 cmp r6, #0 d320: d1bf bne.n d2a2 ret = get_bits(rle_in, rle_rdp, rle_bpp); d322: 68a1 ldr r1, [r4, #8] d324: 9101 str r1, [sp, #4] d326: 463a mov r2, r7 d328: 4648 mov r0, r9 d32a: 47d0 blx sl rle_prev_v = ret; rle_rdp += rle_bpp; d32c: 9901 ldr r1, [sp, #4] rle_prev_v = ret; d32e: 7320 strb r0, [r4, #12] rle_rdp += rle_bpp; d330: 4439 add r1, r7 ret = get_bits(rle_in, rle_rdp, rle_bpp); d332: 4605 mov r5, r0 rle_rdp += rle_bpp; d334: 60a1 str r1, [r4, #8] rle_state = RLE_STATE_SINGLE; d336: 7166 strb r6, [r4, #5] d338: e7b3 b.n d2a2 uint8_t ret = 0; d33a: 2500 movs r5, #0 d33c: e7b1 b.n d2a2 d33e: bf00 nop d340: 200085d4 .word 0x200085d4 d344: 0000d1b5 .word 0x0000d1b5 0000d348 : * @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)); d348: 8800 ldrh r0, [r0, #0] d34a: 880b ldrh r3, [r1, #0] } d34c: 1ac0 subs r0, r0, r3 d34e: 4770 bx lr 0000d350 : { d350: b5f0 push {r4, r5, r6, r7, lr} if(letter == '\0') return 0; d352: 460c mov r4, r1 { d354: b085 sub sp, #20 if(letter == '\0') return 0; d356: b121 cbz r1, d362 d358: 6905 ldr r5, [r0, #16] if(letter == fdsc->last_letter) return fdsc->last_glyph_id; d35a: 69ab ldr r3, [r5, #24] d35c: 4299 cmp r1, r3 d35e: d146 bne.n d3ee d360: 69ec ldr r4, [r5, #28] } d362: 4620 mov r0, r4 d364: b005 add sp, #20 d366: bdf0 pop {r4, r5, r6, r7, pc} uint32_t rcp = letter - fdsc->cmaps[i].range_start; d368: 68aa ldr r2, [r5, #8] d36a: fb00 f603 mul.w r6, r0, r3 d36e: 1991 adds r1, r2, r6 d370: 5992 ldr r2, [r2, r6] if(rcp > fdsc->cmaps[i].range_length) continue; d372: 888f ldrh r7, [r1, #4] uint32_t rcp = letter - fdsc->cmaps[i].range_start; d374: 1aa2 subs r2, r4, r2 if(rcp > fdsc->cmaps[i].range_length) continue; d376: 42ba cmp r2, r7 uint32_t rcp = letter - fdsc->cmaps[i].range_start; d378: 9203 str r2, [sp, #12] if(rcp > fdsc->cmaps[i].range_length) continue; d37a: f103 0301 add.w r3, r3, #1 d37e: d838 bhi.n d3f2 if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) { d380: 7c8b ldrb r3, [r1, #18] d382: b913 cbnz r3, d38a glyph_id = fdsc->cmaps[i].glyph_id_start + rcp; d384: 88cb ldrh r3, [r1, #6] glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; d386: 4413 add r3, r2 d388: e010 b.n d3ac else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) { d38a: 2b01 cmp r3, #1 d38c: d103 bne.n d396 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp]; d38e: 68cb ldr r3, [r1, #12] d390: 5c9b ldrb r3, [r3, r2] d392: 88ca ldrh r2, [r1, #6] d394: e7f7 b.n d386 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) { d396: 2b02 cmp r3, #2 d398: d114 bne.n d3c4 uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, d39a: 481b ldr r0, [pc, #108] ; (d408 ) d39c: 8a0a ldrh r2, [r1, #16] d39e: 9000 str r0, [sp, #0] d3a0: 6889 ldr r1, [r1, #8] d3a2: 4f1a ldr r7, [pc, #104] ; (d40c ) d3a4: a803 add r0, sp, #12 d3a6: 47b8 blx r7 if(p) { d3a8: b920 cbnz r0, d3b4 uint32_t glyph_id = 0; d3aa: 2300 movs r3, #0 fdsc->last_glyph_id = glyph_id; d3ac: e9c5 4306 strd r4, r3, [r5, #24] return glyph_id; d3b0: 461c mov r4, r3 d3b2: e7d6 b.n d362 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); d3b4: 68ab ldr r3, [r5, #8] d3b6: 4433 add r3, r6 d3b8: 689a ldr r2, [r3, #8] glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; d3ba: 88db ldrh r3, [r3, #6] lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); d3bc: 1a80 subs r0, r0, r2 glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; d3be: eb03 0350 add.w r3, r3, r0, lsr #1 d3c2: e7f3 b.n d3ac else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) { d3c4: 2b03 cmp r3, #3 d3c6: d1f0 bne.n d3aa uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, d3c8: 4b0f ldr r3, [pc, #60] ; (d408 ) d3ca: 8a0a ldrh r2, [r1, #16] d3cc: 9300 str r3, [sp, #0] d3ce: 6889 ldr r1, [r1, #8] d3d0: 4f0e ldr r7, [pc, #56] ; (d40c ) d3d2: 2302 movs r3, #2 d3d4: a803 add r0, sp, #12 d3d6: 47b8 blx r7 if(p) { d3d8: 2800 cmp r0, #0 d3da: d0e6 beq.n d3aa lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); d3dc: 68aa ldr r2, [r5, #8] d3de: 4432 add r2, r6 d3e0: 6893 ldr r3, [r2, #8] d3e2: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ d3e4: 0840 lsrs r0, r0, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; d3e6: 68d3 ldr r3, [r2, #12] d3e8: 88d2 ldrh r2, [r2, #6] d3ea: 5c1b ldrb r3, [r3, r0] d3ec: e7cb b.n d386 d3ee: 2300 movs r3, #0 d3f0: 2014 movs r0, #20 for(i = 0; i < fdsc->cmap_num; i++) { d3f2: 8a6a ldrh r2, [r5, #18] d3f4: b299 uxth r1, r3 d3f6: f3c2 0209 ubfx r2, r2, #0, #10 d3fa: 428a cmp r2, r1 d3fc: d8b4 bhi.n d368 fdsc->last_letter = letter; d3fe: 61ac str r4, [r5, #24] fdsc->last_glyph_id = 0; d400: 2400 movs r4, #0 d402: 61ec str r4, [r5, #28] return 0; d404: e7ad b.n d362 d406: bf00 nop d408: 0000d349 .word 0x0000d349 d40c: 0001028d .word 0x0001028d 0000d410 : { d410: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} d414: ed2d 8b02 vpush {d8} if(unicode_letter == '\t') unicode_letter = ' '; d418: 2909 cmp r1, #9 uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d41a: 4b68 ldr r3, [pc, #416] ; (d5bc ) lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; d41c: 6905 ldr r5, [r0, #16] { d41e: b08b sub sp, #44 ; 0x2c uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d420: bf08 it eq d422: 2120 moveq r1, #32 d424: 4798 blx r3 if(!gid) return NULL; d426: 4607 mov r7, r0 d428: b928 cbnz r0, d436 d42a: 2000 movs r0, #0 } d42c: b00b add sp, #44 ; 0x2c d42e: ecbd 8b02 vpop {d8} d432: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { d436: 7d2b ldrb r3, [r5, #20] const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d438: f8d5 9004 ldr.w r9, [r5, #4] if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { d43c: 079b lsls r3, r3, #30 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d43e: eb09 08c0 add.w r8, r9, r0, lsl #3 if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { d442: d109 bne.n d458 if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index]; d444: f1b8 0f00 cmp.w r8, #0 d448: d0ef beq.n d42a d44a: f859 3030 ldr.w r3, [r9, r0, lsl #3] d44e: 6828 ldr r0, [r5, #0] d450: f3c3 0313 ubfx r3, r3, #0, #20 d454: 4418 add r0, r3 d456: e7e9 b.n d42c uint32_t gsize = gdsc->box_w * gdsc->box_h; d458: f898 4004 ldrb.w r4, [r8, #4] d45c: f898 3005 ldrb.w r3, [r8, #5] d460: fb14 f403 smulbb r4, r4, r3 if(gsize == 0) return NULL; d464: 2c00 cmp r4, #0 d466: d0e0 beq.n d42a switch(fdsc->bpp) { d468: 7ceb ldrb r3, [r5, #19] d46a: f3c3 0383 ubfx r3, r3, #2, #4 d46e: 3b01 subs r3, #1 d470: 2b03 cmp r3, #3 d472: d805 bhi.n d480 d474: e8df f003 tbb [pc, r3] d478: 53535002 .word 0x53535002 buf_size = (gsize + 7) >> 3; d47c: 3407 adds r4, #7 d47e: 08e4 lsrs r4, r4, #3 if(_lv_mem_get_size(decompr_buf) < buf_size) { d480: 4e4f ldr r6, [pc, #316] ; (d5c0 ) d482: 4b50 ldr r3, [pc, #320] ; (d5c4 ) d484: 6930 ldr r0, [r6, #16] d486: 4798 blx r3 d488: 42a0 cmp r0, r4 d48a: d34b bcc.n d524 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d48c: f859 2037 ldr.w r2, [r9, r7, lsl #3] d490: 682b ldr r3, [r5, #0] d492: 7ced ldrb r5, [r5, #19] d494: f898 7004 ldrb.w r7, [r8, #4] d498: f3c2 0213 ubfx r2, r2, #0, #20 d49c: 4413 add r3, r2 d49e: 6932 ldr r2, [r6, #16] rle_in = in; d4a0: 6033 str r3, [r6, #0] decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d4a2: ee08 2a10 vmov s16, r2 d4a6: f898 2005 ldrb.w r2, [r8, #5] d4aa: 9207 str r2, [sp, #28] d4ac: f3c5 0283 ubfx r2, r5, #2, #4 d4b0: 2a03 cmp r2, #3 rle_state = RLE_STATE_SINGLE; d4b2: 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); d4b6: 4611 mov r1, r2 rle_bpp = bpp; d4b8: 7132 strb r2, [r6, #4] d4ba: bf08 it eq d4bc: 2104 moveq r1, #4 rle_state = RLE_STATE_SINGLE; d4be: f886 b005 strb.w fp, [r6, #5] rle_rdp = 0; d4c2: f8c6 b008 str.w fp, [r6, #8] rle_prev_v = 0; d4c6: f886 b00c strb.w fp, [r6, #12] rle_cnt = 0; d4ca: f886 b00d strb.w fp, [r6, #13] uint8_t * line_buf1 = _lv_mem_buf_get(w); d4ce: 4638 mov r0, r7 d4d0: 4e3d ldr r6, [pc, #244] ; (d5c8 ) decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d4d2: 9203 str r2, [sp, #12] if(bpp == 3) wr_size = 4; d4d4: 9104 str r1, [sp, #16] uint8_t * line_buf1 = _lv_mem_buf_get(w); d4d6: 47b0 blx r6 d4d8: 4604 mov r4, r0 uint8_t * line_buf2 = _lv_mem_buf_get(w); d4da: 4638 mov r0, r7 d4dc: 47b0 blx r6 decompress_line(line_buf1, w); d4de: 4b3b ldr r3, [pc, #236] ; (d5cc ) uint8_t * line_buf2 = _lv_mem_buf_get(w); d4e0: 4606 mov r6, r0 decompress_line(line_buf1, w); d4e2: 4639 mov r1, r7 d4e4: 4620 mov r0, r4 d4e6: 4798 blx r3 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); d4e8: 46b9 mov r9, r7 d4ea: 46a0 mov r8, r4 d4ec: eb07 0a04 add.w sl, r7, r4 for(x = 0; x < w; x++) { d4f0: 45d0 cmp r8, sl d4f2: d131 bne.n d558 d4f4: 9b04 ldr r3, [sp, #16] d4f6: fb17 f303 smulbb r3, r7, r3 d4fa: 9306 str r3, [sp, #24] d4fc: 469a mov sl, r3 for(y = 1; y < h; y++) { d4fe: f04f 0801 mov.w r8, #1 d502: 9b07 ldr r3, [sp, #28] d504: 4543 cmp r3, r8 d506: dc32 bgt.n d56e _lv_mem_buf_release(line_buf1); d508: 4620 mov r0, r4 d50a: 4c31 ldr r4, [pc, #196] ; (d5d0 ) d50c: 47a0 blx r4 _lv_mem_buf_release(line_buf2); d50e: 4630 mov r0, r6 d510: 47a0 blx r4 return decompr_buf; d512: 4b2b ldr r3, [pc, #172] ; (d5c0 ) d514: 6918 ldr r0, [r3, #16] d516: e789 b.n d42c buf_size = (gsize + 3) >> 2; d518: 3403 adds r4, #3 d51a: 08a4 lsrs r4, r4, #2 break; d51c: e7b0 b.n d480 buf_size = (gsize + 1) >> 1; d51e: 3401 adds r4, #1 d520: 0864 lsrs r4, r4, #1 break; d522: e7ad b.n d480 decompr_buf = lv_mem_realloc(decompr_buf, buf_size); d524: 4621 mov r1, r4 d526: 4b2b ldr r3, [pc, #172] ; (d5d4 ) d528: 6930 ldr r0, [r6, #16] d52a: 4798 blx r3 LV_ASSERT_MEM(decompr_buf); d52c: 4b2a ldr r3, [pc, #168] ; (d5d8 ) decompr_buf = lv_mem_realloc(decompr_buf, buf_size); d52e: 6130 str r0, [r6, #16] LV_ASSERT_MEM(decompr_buf); d530: 4798 blx r3 d532: 4604 mov r4, r0 d534: b960 cbnz r0, d550 d536: 4b29 ldr r3, [pc, #164] ; (d5dc ) d538: 4929 ldr r1, [pc, #164] ; (d5e0 ) d53a: 9300 str r3, [sp, #0] d53c: 2272 movs r2, #114 ; 0x72 d53e: 2003 movs r0, #3 d540: 4d28 ldr r5, [pc, #160] ; (d5e4 ) d542: 47a8 blx r5 d544: 6932 ldr r2, [r6, #16] d546: 4828 ldr r0, [pc, #160] ; (d5e8 ) d548: 4928 ldr r1, [pc, #160] ; (d5ec ) d54a: 4623 mov r3, r4 d54c: 4788 blx r1 d54e: e7fe b.n d54e if(decompr_buf == NULL) return NULL; d550: 6933 ldr r3, [r6, #16] d552: 2b00 cmp r3, #0 d554: d19a bne.n d48c d556: e768 b.n d42a bits_write(out, wrp, line_buf1[x], bpp); d558: 9b03 ldr r3, [sp, #12] d55a: f818 2b01 ldrb.w r2, [r8], #1 d55e: 4d24 ldr r5, [pc, #144] ; (d5f0 ) d560: 4659 mov r1, fp d562: ee18 0a10 vmov r0, s16 d566: 47a8 blx r5 wrp += wr_size; d568: 9b04 ldr r3, [sp, #16] d56a: 449b add fp, r3 for(x = 0; x < w; x++) { d56c: e7c0 b.n d4f0 decompress_line(line_buf2, w); d56e: 4b17 ldr r3, [pc, #92] ; (d5cc ) d570: 4649 mov r1, r9 d572: 4630 mov r0, r6 d574: 4798 blx r3 for(x = 0; x < w; x++) { d576: 1e63 subs r3, r4, #1 d578: 9305 str r3, [sp, #20] d57a: 19f3 adds r3, r6, r7 d57c: 46b3 mov fp, r6 d57e: 9308 str r3, [sp, #32] d580: 4651 mov r1, sl d582: 9b08 ldr r3, [sp, #32] d584: 459b cmp fp, r3 d586: d106 bne.n d596 d588: 9b06 ldr r3, [sp, #24] d58a: f108 0801 add.w r8, r8, #1 d58e: 449a add sl, r3 for(y = 1; y < h; y++) { d590: fa0f f888 sxth.w r8, r8 d594: e7b5 b.n d502 line_buf1[x] = line_buf2[x] ^ line_buf1[x]; d596: 9805 ldr r0, [sp, #20] d598: f81b 2b01 ldrb.w r2, [fp], #1 d59c: f810 3f01 ldrb.w r3, [r0, #1]! d5a0: 9005 str r0, [sp, #20] d5a2: 405a eors r2, r3 d5a4: 7002 strb r2, [r0, #0] bits_write(out, wrp, line_buf1[x], bpp); d5a6: 9b03 ldr r3, [sp, #12] d5a8: 4d11 ldr r5, [pc, #68] ; (d5f0 ) d5aa: 9109 str r1, [sp, #36] ; 0x24 d5ac: ee18 0a10 vmov r0, s16 d5b0: 47a8 blx r5 wrp += wr_size; d5b2: 9b04 ldr r3, [sp, #16] d5b4: 9909 ldr r1, [sp, #36] ; 0x24 d5b6: 4419 add r1, r3 for(x = 0; x < w; x++) { d5b8: e7e3 b.n d582 d5ba: bf00 nop d5bc: 0000d351 .word 0x0000d351 d5c0: 200085d4 .word 0x200085d4 d5c4: 0000eb4d .word 0x0000eb4d d5c8: 0000eeb5 .word 0x0000eeb5 d5cc: 0000d255 .word 0x0000d255 d5d0: 0000eb69 .word 0x0000eb69 d5d4: 0000ee15 .word 0x0000ee15 d5d8: 000017e1 .word 0x000017e1 d5dc: 000201db .word 0x000201db d5e0: 0002019b .word 0x0002019b d5e4: 0000e8e9 .word 0x0000e8e9 d5e8: 0001edbe .word 0x0001edbe d5ec: 000017e9 .word 0x000017e9 d5f0: 0000d219 .word 0x0000d219 0000d5f4 : if(unicode_letter == '\t') { d5f4: 2a09 cmp r2, #9 { d5f6: 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); d5fa: f8df a13c ldr.w sl, [pc, #316] ; d738 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; d5fe: 6907 ldr r7, [r0, #16] { d600: 460c mov r4, r1 d602: 4611 mov r1, r2 unicode_letter = ' '; d604: bf08 it eq d606: 2120 moveq r1, #32 { d608: 4680 mov r8, r0 d60a: 4699 mov r9, r3 is_tab = true; d60c: bf0c ite eq d60e: 2601 moveq r6, #1 bool is_tab = false; d610: 2600 movne r6, #0 uint32_t gid = get_glyph_dsc_id(font, unicode_letter); d612: 47d0 blx sl if(!gid) return false; d614: 4605 mov r5, r0 d616: 2800 cmp r0, #0 d618: f000 8086 beq.w d728 if(fdsc->kern_dsc) { d61c: 68fb ldr r3, [r7, #12] d61e: bb3b cbnz r3, d670 int8_t kvalue = 0; d620: 2300 movs r3, #0 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d622: 6879 ldr r1, [r7, #4] int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); d624: 8a3a ldrh r2, [r7, #16] const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; d626: eb01 01c5 add.w r1, r1, r5, lsl #3 int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); d62a: 4353 muls r3, r2 uint32_t adv_w = gdsc->adv_w; d62c: 884a ldrh r2, [r1, #2] d62e: f3c2 100b ubfx r0, r2, #4, #12 int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); d632: 111b asrs r3, r3, #4 uint32_t adv_w = gdsc->adv_w; d634: 4602 mov r2, r0 if(is_tab) adv_w *= 2; d636: b10e cbz r6, d63c d638: b202 sxth r2, r0 d63a: 0052 lsls r2, r2, #1 adv_w = (adv_w + (1 << 3)) >> 4; d63c: 3308 adds r3, #8 d63e: 4413 add r3, r2 d640: 091b lsrs r3, r3, #4 dsc_out->adv_w = adv_w; d642: 8023 strh r3, [r4, #0] dsc_out->box_h = gdsc->box_h; d644: 794b ldrb r3, [r1, #5] d646: 80a3 strh r3, [r4, #4] dsc_out->box_w = gdsc->box_w; d648: 790b ldrb r3, [r1, #4] d64a: 8063 strh r3, [r4, #2] dsc_out->ofs_x = gdsc->ofs_x; d64c: f991 2006 ldrsb.w r2, [r1, #6] d650: 80e2 strh r2, [r4, #6] dsc_out->ofs_y = gdsc->ofs_y; d652: f991 2007 ldrsb.w r2, [r1, #7] d656: 8122 strh r2, [r4, #8] dsc_out->bpp = (uint8_t)fdsc->bpp; d658: 7cfa ldrb r2, [r7, #19] d65a: f3c2 0283 ubfx r2, r2, #2, #4 d65e: 72a2 strb r2, [r4, #10] if(is_tab) dsc_out->box_w = dsc_out->box_w * 2; d660: 2e00 cmp r6, #0 d662: d063 beq.n d72c d664: 005b lsls r3, r3, #1 d666: 8063 strh r3, [r4, #2] } d668: 4630 mov r0, r6 d66a: b004 add sp, #16 d66c: 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); d670: 4649 mov r1, r9 d672: 4640 mov r0, r8 d674: 47d0 blx sl if(gid_next) { d676: 2800 cmp r0, #0 d678: d0d2 beq.n d620 kvalue = get_kern_value(font, gid, gid_next); d67a: f8d8 2010 ldr.w r2, [r8, #16] const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc; d67e: f8d2 800c ldr.w r8, [r2, #12] if(fdsc->kern_classes == 0) { d682: 7cd2 ldrb r2, [r2, #19] d684: 0653 lsls r3, r2, #25 d686: d43a bmi.n d6fe if(kdsc->glyph_ids_size == 0) { d688: f898 200b ldrb.w r2, [r8, #11] d68c: f012 0203 ands.w r2, r2, #3 d690: d11b bne.n d6ca const uint8_t * g_ids = kdsc->glyph_ids; d692: 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); d696: f8d8 2008 ldr.w r2, [r8, #8] d69a: f8df a0a0 ldr.w sl, [pc, #160] ; d73c uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/ d69e: eb05 2300 add.w r3, r5, r0, lsl #8 d6a2: f8ad 300c strh.w r3, [sp, #12] uint8_t * kid_p = _lv_utils_bsearch(&g_id_both, g_ids, kdsc->pair_cnt, 2, kern_pair_8_compare); d6a6: 4b22 ldr r3, [pc, #136] ; (d730 ) d6a8: 9300 str r3, [sp, #0] d6aa: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 d6ae: 2302 movs r3, #2 d6b0: 4649 mov r1, r9 d6b2: a803 add r0, sp, #12 d6b4: 47d0 blx sl if(kid_p) { d6b6: 4603 mov r3, r0 d6b8: 2800 cmp r0, #0 d6ba: d0b2 beq.n d622 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids); d6bc: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/ d6c0: 085b lsrs r3, r3, #1 value = kdsc->values[ofs]; d6c2: f8d8 2004 ldr.w r2, [r8, #4] d6c6: 56d3 ldrsb r3, [r2, r3] d6c8: e7ab b.n d622 else if(kdsc->glyph_ids_size == 1) { d6ca: 2a01 cmp r2, #1 d6cc: d1a8 bne.n d620 const uint16_t * g_ids = kdsc->glyph_ids; d6ce: 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); d6d2: f8d8 2008 ldr.w r2, [r8, #8] d6d6: 4b17 ldr r3, [pc, #92] ; (d734 ) d6d8: 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*/ d6da: eb05 2000 add.w r0, r5, r0, lsl #8 d6de: 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); d6e0: 2304 movs r3, #4 d6e2: f8df a058 ldr.w sl, [pc, #88] ; d73c d6e6: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 d6ea: 4649 mov r1, r9 d6ec: a803 add r0, sp, #12 d6ee: 47d0 blx sl if(kid_p) { d6f0: 4603 mov r3, r0 d6f2: 2800 cmp r0, #0 d6f4: d095 beq.n d622 lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids); d6f6: eba0 0309 sub.w r3, r0, r9 ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/ d6fa: 091b lsrs r3, r3, #4 d6fc: e7e1 b.n d6c2 uint8_t left_class = kdsc->left_class_mapping[gid_left]; d6fe: f8d8 2004 ldr.w r2, [r8, #4] uint8_t right_class = kdsc->right_class_mapping[gid_right]; d702: f8d8 1008 ldr.w r1, [r8, #8] uint8_t left_class = kdsc->left_class_mapping[gid_left]; d706: 5d52 ldrb r2, [r2, r5] uint8_t right_class = kdsc->right_class_mapping[gid_right]; d708: 5c09 ldrb r1, [r1, r0] if(left_class > 0 && right_class > 0) { d70a: 2a00 cmp r2, #0 d70c: d088 beq.n d620 d70e: 2900 cmp r1, #0 d710: d086 beq.n d620 value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)]; d712: f8d8 3000 ldr.w r3, [r8] d716: f898 000d ldrb.w r0, [r8, #13] d71a: 3a01 subs r2, #1 d71c: 440b add r3, r1 d71e: fb00 3302 mla r3, r0, r2, r3 d722: f913 3c01 ldrsb.w r3, [r3, #-1] d726: e77c b.n d622 if(!gid) return false; d728: 4606 mov r6, r0 d72a: e79d b.n d668 return true; d72c: 2601 movs r6, #1 d72e: e79b b.n d668 d730: 0000d191 .word 0x0000d191 d734: 0000d1a3 .word 0x0000d1a3 d738: 0000d351 .word 0x0000d351 d73c: 0001028d .word 0x0001028d 0000d740 <_lv_font_clean_up_fmt_txt>: { d740: b510 push {r4, lr} if(decompr_buf) { d742: 4c04 ldr r4, [pc, #16] ; (d754 <_lv_font_clean_up_fmt_txt+0x14>) d744: 6920 ldr r0, [r4, #16] d746: b118 cbz r0, d750 <_lv_font_clean_up_fmt_txt+0x10> lv_mem_free(decompr_buf); d748: 4b03 ldr r3, [pc, #12] ; (d758 <_lv_font_clean_up_fmt_txt+0x18>) d74a: 4798 blx r3 decompr_buf = NULL; d74c: 2300 movs r3, #0 d74e: 6123 str r3, [r4, #16] } d750: bd10 pop {r4, pc} d752: bf00 nop d754: 200085d4 .word 0x200085d4 d758: 0000eae5 .word 0x0000eae5 0000d75c : * 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) { d75c: b510 push {r4, lr} _lv_memset_00(driver, sizeof(lv_disp_drv_t)); d75e: 4b0d ldr r3, [pc, #52] ; (d794 ) d760: 212c movs r1, #44 ; 0x2c { d762: 4604 mov r4, r0 _lv_memset_00(driver, sizeof(lv_disp_drv_t)); d764: 4798 blx r3 driver->flush_cb = NULL; driver->hor_res = LV_HOR_RES_MAX; d766: 4b0c ldr r3, [pc, #48] ; (d798 ) driver->flush_cb = NULL; d768: 2200 movs r2, #0 driver->ver_res = LV_VER_RES_MAX; driver->buffer = NULL; d76a: 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; d76e: 8923 ldrh r3, [r4, #8] driver->flush_cb = NULL; d770: 60e2 str r2, [r4, #12] driver->antialiasing = true; d772: f423 637f bic.w r3, r3, #4080 ; 0xff0 d776: f023 030f bic.w r3, r3, #15 d77a: f443 7302 orr.w r3, r3, #520 ; 0x208 d77e: f043 0301 orr.w r3, r3, #1 d782: 8123 strh r3, [r4, #8] driver->color_chroma_key = LV_COLOR_TRANSP; d784: 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; d788: e9c4 2208 strd r2, r2, [r4, #32] driver->color_chroma_key = LV_COLOR_TRANSP; d78c: 8523 strh r3, [r4, #40] ; 0x28 #if LV_USE_USER_DATA driver->user_data = NULL; #endif driver->set_px_cb = NULL; d78e: 6162 str r2, [r4, #20] } d790: bd10 pop {r4, pc} d792: bf00 nop d794: 0000f019 .word 0x0000f019 d798: 011001e0 .word 0x011001e0 0000d79c : * 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) { d79c: b5f8 push {r3, r4, r5, r6, r7, lr} d79e: 4604 mov r4, r0 d7a0: 460d mov r5, r1 d7a2: 4617 mov r7, r2 d7a4: 461e mov r6, r3 _lv_memset_00(disp_buf, sizeof(lv_disp_buf_t)); d7a6: 2124 movs r1, #36 ; 0x24 d7a8: 4b03 ldr r3, [pc, #12] ; (d7b8 ) d7aa: 4798 blx r3 disp_buf->buf1 = buf1; disp_buf->buf2 = buf2; d7ac: e9c4 5700 strd r5, r7, [r4] disp_buf->buf_act = disp_buf->buf1; disp_buf->size = size_in_px_cnt; d7b0: e9c4 5602 strd r5, r6, [r4, #8] } d7b4: bdf8 pop {r3, r4, r5, r6, r7, pc} d7b6: bf00 nop d7b8: 0000f019 .word 0x0000f019 0000d7bc : * 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) { d7bc: 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)); d7c0: 4b3b ldr r3, [pc, #236] ; (d8b0 ) d7c2: 4e3c ldr r6, [pc, #240] ; (d8b4 ) { d7c4: 4605 mov r5, r0 lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); d7c6: 483c ldr r0, [pc, #240] ; (d8b8 ) d7c8: 4798 blx r3 if(!disp) { d7ca: 4604 mov r4, r0 d7cc: b998 cbnz r0, d7f6 LV_ASSERT_MEM(disp); d7ce: 47b0 blx r6 d7d0: b120 cbz r0, d7dc return NULL; d7d2: 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; } d7d4: 4620 mov r0, r4 d7d6: b002 add sp, #8 d7d8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} LV_ASSERT_MEM(disp); d7dc: 4b37 ldr r3, [pc, #220] ; (d8bc ) d7de: 4938 ldr r1, [pc, #224] ; (d8c0 ) d7e0: 9300 str r3, [sp, #0] d7e2: 227c movs r2, #124 ; 0x7c d7e4: 2003 movs r0, #3 d7e6: 4c37 ldr r4, [pc, #220] ; (d8c4 ) d7e8: 47a0 blx r4 d7ea: 4837 ldr r0, [pc, #220] ; (d8c8 ) d7ec: 4937 ldr r1, [pc, #220] ; (d8cc ) d7ee: 2200 movs r2, #0 d7f0: 2300 movs r3, #0 d7f2: 4788 blx r1 d7f4: e7fe b.n d7f4 _lv_memset_00(disp, sizeof(lv_disp_t)); d7f6: 4b36 ldr r3, [pc, #216] ; (d8d0 ) d7f8: f44f 71b8 mov.w r1, #368 ; 0x170 d7fc: 4798 blx r3 _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); d7fe: 4629 mov r1, r5 d800: 4b34 ldr r3, [pc, #208] ; (d8d4 ) if(disp_def == NULL) disp_def = disp; d802: 4d35 ldr r5, [pc, #212] ; (d8d8 ) _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); d804: 222c movs r2, #44 ; 0x2c d806: 4620 mov r0, r4 d808: 4798 blx r3 _lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t)); d80a: 4b34 ldr r3, [pc, #208] ; (d8dc ) d80c: 214c movs r1, #76 ; 0x4c d80e: f104 0030 add.w r0, r4, #48 ; 0x30 d812: 4798 blx r3 disp->last_activity_time = 0; d814: 2300 movs r3, #0 d816: f8c4 316c str.w r3, [r4, #364] ; 0x16c if(disp_def == NULL) disp_def = disp; d81a: 682b ldr r3, [r5, #0] d81c: b903 cbnz r3, d820 d81e: 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); d820: 4623 mov r3, r4 d822: 2203 movs r2, #3 d824: 211e movs r1, #30 d826: 482e ldr r0, [pc, #184] ; (d8e0 ) d828: f8df 80cc ldr.w r8, [pc, #204] ; d8f8 lv_disp_t * disp_def_tmp = disp_def; d82c: 682f ldr r7, [r5, #0] disp_def = disp; /*Temporarily change the default screen to create the default screens on the d82e: 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); d830: 47c0 blx r8 d832: 62e0 str r0, [r4, #44] ; 0x2c LV_ASSERT_MEM(disp->refr_task); d834: 47b0 blx r6 d836: 4606 mov r6, r0 d838: b960 cbnz r0, d854 d83a: 4b20 ldr r3, [pc, #128] ; (d8bc ) d83c: 4920 ldr r1, [pc, #128] ; (d8c0 ) d83e: 9300 str r3, [sp, #0] d840: 228d movs r2, #141 ; 0x8d d842: 2003 movs r0, #3 d844: 4d1f ldr r5, [pc, #124] ; (d8c4 ) d846: 47a8 blx r5 d848: 6ae2 ldr r2, [r4, #44] ; 0x2c d84a: 481f ldr r0, [pc, #124] ; (d8c8 ) d84c: 491f ldr r1, [pc, #124] ; (d8cc ) d84e: 4633 mov r3, r6 d850: 4788 blx r1 d852: e7fe b.n d852 if(disp->refr_task == NULL) return NULL; d854: 6ae3 ldr r3, [r4, #44] ; 0x2c d856: 2b00 cmp r3, #0 d858: d0bb beq.n d7d2 disp->inv_p = 0; d85a: f8b4 3168 ldrh.w r3, [r4, #360] ; 0x168 disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ d85e: 4e21 ldr r6, [pc, #132] ; (d8e4 ) disp->inv_p = 0; d860: f36f 0309 bfc r3, #0, #10 disp->last_activity_time = 0; d864: 2100 movs r1, #0 disp->inv_p = 0; d866: f8a4 3168 strh.w r3, [r4, #360] ; 0x168 disp->last_activity_time = 0; d86a: f8c4 116c str.w r1, [r4, #364] ; 0x16c disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ d86e: 4608 mov r0, r1 d870: 47b0 blx r6 disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ d872: 2100 movs r1, #0 disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ d874: 63e0 str r0, [r4, #60] ; 0x3c disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ d876: 4608 mov r0, r1 d878: 47b0 blx r6 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ d87a: 2100 movs r1, #0 disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ d87c: 6420 str r0, [r4, #64] ; 0x40 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ d87e: 4608 mov r0, r1 d880: 47b0 blx r6 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); d882: 4e19 ldr r6, [pc, #100] ; (d8e8 ) disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ d884: 6460 str r0, [r4, #68] ; 0x44 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); d886: 2100 movs r1, #0 d888: 6c20 ldr r0, [r4, #64] ; 0x40 d88a: 47b0 blx r6 lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN); d88c: 6c60 ldr r0, [r4, #68] ; 0x44 d88e: 2100 movs r1, #0 d890: 47b0 blx r6 lv_obj_set_click(disp->top_layer, false); d892: 6c20 ldr r0, [r4, #64] ; 0x40 d894: 4e15 ldr r6, [pc, #84] ; (d8ec ) d896: 2100 movs r1, #0 d898: 47b0 blx r6 lv_obj_set_click(disp->sys_layer, false); d89a: 6c60 ldr r0, [r4, #68] ; 0x44 d89c: 2100 movs r1, #0 d89e: 47b0 blx r6 lv_obj_invalidate(disp->act_scr); d8a0: 6be0 ldr r0, [r4, #60] ; 0x3c d8a2: 4b13 ldr r3, [pc, #76] ; (d8f0 ) d8a4: 4798 blx r3 lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ d8a6: 6ae0 ldr r0, [r4, #44] ; 0x2c d8a8: 4b12 ldr r3, [pc, #72] ; (d8f4 ) disp_def = disp_def_tmp; /*Revert the default display*/ d8aa: 602f str r7, [r5, #0] lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ d8ac: 4798 blx r3 return disp; d8ae: e791 b.n d7d4 d8b0: 0000e619 .word 0x0000e619 d8b4: 000017e1 .word 0x000017e1 d8b8: 2000860c .word 0x2000860c d8bc: 00023ecf .word 0x00023ecf d8c0: 00023e9c .word 0x00023e9c d8c4: 0000e8e9 .word 0x0000e8e9 d8c8: 0001edbe .word 0x0001edbe d8cc: 000017e9 .word 0x000017e9 d8d0: 0000f019 .word 0x0000f019 d8d4: 0000ec31 .word 0x0000ec31 d8d8: 200085e8 .word 0x200085e8 d8dc: 0000e605 .word 0x0000e605 d8e0: 00004ff5 .word 0x00004ff5 d8e4: 000030e5 .word 0x000030e5 d8e8: 00002e95 .word 0x00002e95 d8ec: 00001e5d .word 0x00001e5d d8f0: 00002785 .word 0x00002785 d8f4: 0000fc41 .word 0x0000fc41 d8f8: 0000fbd1 .word 0x0000fbd1 0000d8fc : * @return pointer to the default display */ lv_disp_t * lv_disp_get_default(void) { return disp_def; } d8fc: 4b01 ldr r3, [pc, #4] ; (d904 ) d8fe: 6818 ldr r0, [r3, #0] d900: 4770 bx lr d902: bf00 nop d904: 200085e8 .word 0x200085e8 0000d908 : * @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(); d908: b910 cbnz r0, d910 return disp_def; d90a: 4b07 ldr r3, [pc, #28] ; (d928 ) d90c: 6818 ldr r0, [r3, #0] if(disp == NULL) d90e: b138 cbz r0, d920 return LV_HOR_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; d910: 7a03 ldrb r3, [r0, #8] d912: 079b lsls r3, r3, #30 d914: bf54 ite pl d916: f9b0 0000 ldrshpl.w r0, [r0] d91a: f9b0 0002 ldrshmi.w r0, [r0, #2] d91e: 4770 bx lr return LV_HOR_RES_MAX; d920: f44f 70f0 mov.w r0, #480 ; 0x1e0 } d924: 4770 bx lr d926: bf00 nop d928: 200085e8 .word 0x200085e8 0000d92c : * @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(); d92c: b910 cbnz r0, d934 return disp_def; d92e: 4b07 ldr r3, [pc, #28] ; (d94c ) d930: 6818 ldr r0, [r3, #0] if(disp == NULL) d932: b138 cbz r0, d944 return LV_VER_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; d934: 7a03 ldrb r3, [r0, #8] d936: 079b lsls r3, r3, #30 d938: bf54 ite pl d93a: f9b0 0002 ldrshpl.w r0, [r0, #2] d93e: f9b0 0000 ldrshmi.w r0, [r0] d942: 4770 bx lr return LV_VER_RES_MAX; d944: f44f 7088 mov.w r0, #272 ; 0x110 } d948: 4770 bx lr d94a: bf00 nop d94c: 200085e8 .word 0x200085e8 0000d950 : * @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(); d950: b910 cbnz r0, d958 return disp_def; d952: 4b04 ldr r3, [pc, #16] ; (d964 ) d954: 6818 ldr r0, [r3, #0] if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ d956: b118 cbz r0, d960 return disp->driver.dpi; d958: 8900 ldrh r0, [r0, #8] d95a: f3c0 0089 ubfx r0, r0, #2, #10 d95e: 4770 bx lr if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ d960: 2082 movs r0, #130 ; 0x82 } d962: 4770 bx lr d964: 200085e8 .word 0x200085e8 0000d968 : * 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) { d968: b508 push {r3, lr} if(disp == NULL) disp = lv_disp_get_default(); d96a: 4601 mov r1, r0 d96c: b910 cbnz r0, d974 return disp_def; d96e: 4b0f ldr r3, [pc, #60] ; (d9ac ) d970: 6819 ldr r1, [r3, #0] uint32_t w; if(disp == NULL) w = LV_HOR_RES_MAX; d972: b199 cbz r1, d99c else w = lv_disp_get_hor_res(disp); d974: 4b0e ldr r3, [pc, #56] ; (d9b0 ) d976: 4608 mov r0, r1 d978: 4798 blx r3 d97a: 4602 mov r2, r0 uint32_t dpi = lv_disp_get_dpi(disp); d97c: 4b0d ldr r3, [pc, #52] ; (d9b4 ) d97e: 4608 mov r0, r1 d980: 4798 blx r3 w = w * 10 / dpi; d982: 230a movs r3, #10 d984: 435a muls r2, r3 d986: fbb2 f0f0 udiv r0, r2, r0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; d98a: 281d cmp r0, #29 d98c: d909 bls.n d9a2 if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; d98e: 2831 cmp r0, #49 ; 0x31 d990: d909 bls.n d9a6 if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE; else return LV_DISP_SIZE_EXTRA_LARGE; d992: 2846 cmp r0, #70 ; 0x46 d994: bf34 ite cc d996: 2002 movcc r0, #2 d998: 2003 movcs r0, #3 } d99a: bd08 pop {r3, pc} if(disp == NULL) w = LV_HOR_RES_MAX; d99c: f44f 72f0 mov.w r2, #480 ; 0x1e0 d9a0: e7ec b.n d97c if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; d9a2: 2000 movs r0, #0 d9a4: e7f9 b.n d99a if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; d9a6: 2001 movs r0, #1 d9a8: e7f7 b.n d99a d9aa: bf00 nop d9ac: 200085e8 .word 0x200085e8 d9b0: 0000d909 .word 0x0000d909 d9b4: 0000d951 .word 0x0000d951 0000d9b8 : 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; d9b8: 6843 ldr r3, [r0, #4] d9ba: 2200 movs r2, #0 d9bc: 619a str r2, [r3, #24] disp_drv->buffer->flushing_last = 0; d9be: 61da str r2, [r3, #28] } d9c0: 4770 bx lr ... 0000d9c4 : * @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) d9c4: 4601 mov r1, r0 return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); d9c6: 4803 ldr r0, [pc, #12] ; (d9d4 ) if(disp == NULL) d9c8: b909 cbnz r1, d9ce return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); d9ca: 4b03 ldr r3, [pc, #12] ; (d9d8 ) d9cc: 4718 bx r3 else return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp); d9ce: 4b03 ldr r3, [pc, #12] ; (d9dc ) d9d0: 4718 bx r3 d9d2: bf00 nop d9d4: 2000860c .word 0x2000860c d9d8: 0000e6a9 .word 0x0000e6a9 d9dc: 0000e6b5 .word 0x0000e6b5 0000d9e0 : * @return pointer to the internal buffers */ lv_disp_buf_t * lv_disp_get_buf(lv_disp_t * disp) { return disp->driver.buffer; } d9e0: 6840 ldr r0, [r0, #4] d9e2: 4770 bx lr 0000d9e4 : * @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) d9e4: 6843 ldr r3, [r0, #4] d9e6: 6818 ldr r0, [r3, #0] d9e8: b118 cbz r0, d9f2 d9ea: 6858 ldr r0, [r3, #4] d9ec: 3800 subs r0, #0 d9ee: bf18 it ne d9f0: 2001 movne r0, #1 return true; else return false; } d9f2: 4770 bx lr 0000d9f4 : * `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) { d9f4: 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) { d9f6: 4b07 ldr r3, [pc, #28] ; (da14 ) { d9f8: 4602 mov r2, r0 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { d9fa: 4798 blx r3 d9fc: b140 cbz r0, da10 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; d9fe: 8813 ldrh r3, [r2, #0] da00: 8851 ldrh r1, [r2, #2] if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { da02: 6852 ldr r2, [r2, #4] da04: 68d0 ldr r0, [r2, #12] uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; da06: fb13 f301 smulbb r3, r3, r1 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { da0a: 1a1b subs r3, r3, r0 da0c: 4258 negs r0, r3 da0e: 4158 adcs r0, r3 return true; } else { return false; } } da10: bd08 pop {r3, pc} da12: bf00 nop da14: 0000d9e5 .word 0x0000d9e5 0000da18 : * @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) da18: 4601 mov r1, r0 return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); da1a: 4803 ldr r0, [pc, #12] ; (da28 ) if(indev == NULL) da1c: b909 cbnz r1, da22 return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); da1e: 4b03 ldr r3, [pc, #12] ; (da2c ) da20: 4718 bx r3 else return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev); da22: 4b03 ldr r3, [pc, #12] ; (da30 ) da24: 4718 bx r3 da26: bf00 nop da28: 20008618 .word 0x20008618 da2c: 0000e6a9 .word 0x0000e6a9 da30: 0000e6b5 .word 0x0000e6b5 0000da34 : * 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; da34: 4b03 ldr r3, [pc, #12] ; (da44 ) da36: 2200 movs r2, #0 da38: 701a strb r2, [r3, #0] sys_time += tick_period; da3a: 685a ldr r2, [r3, #4] da3c: 4410 add r0, r2 da3e: 6058 str r0, [r3, #4] } da40: 4770 bx lr da42: bf00 nop da44: 200085ec .word 0x200085ec 0000da48 : { #if LV_TICK_CUSTOM == 0 uint32_t result; do { tick_irq_flag = 1; result = sys_time; da48: 4b03 ldr r3, [pc, #12] ; (da58 ) da4a: 6858 ldr r0, [r3, #4] tick_irq_flag = 1; da4c: 2101 movs r1, #1 da4e: 7019 strb r1, [r3, #0] } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt. da50: 781a ldrb r2, [r3, #0] da52: 2a00 cmp r2, #0 da54: d0fb beq.n da4e return result; #else return LV_TICK_CUSTOM_SYS_TIME_EXPR; #endif } da56: 4770 bx lr da58: 200085ec .word 0x200085ec 0000da5c : * 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) { da5c: b510 push {r4, lr} uint32_t act_time = lv_tick_get(); da5e: 4b02 ldr r3, [pc, #8] ; (da68 ) { da60: 4604 mov r4, r0 uint32_t act_time = lv_tick_get(); da62: 4798 blx r3 prev_tick = UINT32_MAX - prev_tick + 1; prev_tick += act_time; } return prev_tick; } da64: 1b00 subs r0, r0, r4 da66: bd10 pop {r4, pc} da68: 0000da49 .word 0x0000da49 0000da6c : { LV_UNUSED(path); /*Calculate the current step*/ uint32_t step; if(a->time == a->act_time) { da6c: e9d1 2308 ldrd r2, r3, [r1, #32] da70: 429a cmp r2, r3 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; da72: bf1c itt ne da74: 029b lslne r3, r3, #10 da76: fb93 f3f2 sdivne r3, r3, r2 } /* 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); da7a: e9d1 0206 ldrd r0, r2, [r1, #24] step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/ da7e: bf08 it eq da80: f44f 6380 moveq.w r3, #1024 ; 0x400 new_value = (int32_t)step * (a->end - a->start); da84: 1a12 subs r2, r2, r0 da86: 4353 muls r3, r2 new_value = new_value >> LV_ANIM_RES_SHIFT; new_value += a->start; da88: eb00 20a3 add.w r0, r0, r3, asr #10 return (lv_anim_value_t)new_value; } da8c: b200 sxth r0, r0 da8e: 4770 bx lr 0000da90 : } return anim_list_changed; } static void anim_mark_list_change(void) { da90: b510 push {r4, lr} anim_list_changed = true; da92: 4c07 ldr r4, [pc, #28] ; (dab0 ) if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) da94: 4807 ldr r0, [pc, #28] ; (dab4 ) anim_list_changed = true; da96: 2301 movs r3, #1 da98: 7023 strb r3, [r4, #0] if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) da9a: 4b07 ldr r3, [pc, #28] ; (dab8 ) da9c: 4798 blx r3 da9e: 4b07 ldr r3, [pc, #28] ; (dabc ) daa0: 4601 mov r1, r0 daa2: b918 cbnz r0, daac lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); else lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); daa4: 6860 ldr r0, [r4, #4] } daa6: e8bd 4010 ldmia.w sp!, {r4, lr} lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); daaa: 4718 bx r3 daac: 2104 movs r1, #4 daae: e7f9 b.n daa4 dab0: 200085f4 .word 0x200085f4 dab4: 2000863c .word 0x2000863c dab8: 0000e6a9 .word 0x0000e6a9 dabc: 0000fb6d .word 0x0000fb6d 0000dac0 : { dac0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { dac4: 484f ldr r0, [pc, #316] ; (dc04 ) dac6: 4f50 ldr r7, [pc, #320] ; (dc08 ) dac8: 4c4e ldr r4, [pc, #312] ; (dc04 ) daca: 4d50 ldr r5, [pc, #320] ; (dc0c ) { dacc: b090 sub sp, #64 ; 0x40 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { dace: 47b8 blx r7 dad0: b9a0 cbnz r0, dafc uint32_t elaps = lv_tick_elaps(last_task_run); dad2: 4d4f ldr r5, [pc, #316] ; (dc10 ) dad4: 4b4f ldr r3, [pc, #316] ; (dc14 ) dad6: 68a8 ldr r0, [r5, #8] a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dad8: f8df 8128 ldr.w r8, [pc, #296] ; dc04 dadc: f8df 912c ldr.w r9, [pc, #300] ; dc0c _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); dae0: f8df a148 ldr.w sl, [pc, #328] ; dc2c uint32_t elaps = lv_tick_elaps(last_task_run); dae4: 4798 blx r3 dae6: 4606 mov r6, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dae8: 4846 ldr r0, [pc, #280] ; (dc04 ) daea: 47b8 blx r7 daec: 4604 mov r4, r0 while(a != NULL) { daee: b97c cbnz r4, db10 last_task_run = lv_tick_get(); daf0: 4b49 ldr r3, [pc, #292] ; (dc18 ) daf2: 4798 blx r3 daf4: 60a8 str r0, [r5, #8] } daf6: b010 add sp, #64 ; 0x40 daf8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} a->has_run = 0; dafc: f890 303c ldrb.w r3, [r0, #60] ; 0x3c db00: f36f 0341 bfc r3, #1, #1 db04: f880 303c strb.w r3, [r0, #60] ; 0x3c _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { db08: 4601 mov r1, r0 db0a: 4620 mov r0, r4 db0c: 47a8 blx r5 db0e: e7df b.n dad0 anim_list_changed = false; db10: 2300 movs r3, #0 db12: 702b strb r3, [r5, #0] if(!a->has_run) { db14: f894 303c ldrb.w r3, [r4, #60] ; 0x3c db18: 079a lsls r2, r3, #30 db1a: d46f bmi.n dbfc a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/ db1c: f043 0302 orr.w r3, r3, #2 db20: f884 303c strb.w r3, [r4, #60] ; 0x3c int32_t new_act_time = a->act_time + elaps; db24: 6a63 ldr r3, [r4, #36] ; 0x24 if(a->act_time <= 0 && new_act_time >= 0) { db26: 2b00 cmp r3, #0 db28: dc05 bgt.n db36 db2a: 42f3 cmn r3, r6 db2c: d403 bmi.n db36 if(a->start_cb) a->start_cb(a); db2e: 68a3 ldr r3, [r4, #8] db30: b10b cbz r3, db36 db32: 4620 mov r0, r4 db34: 4798 blx r3 a->act_time += elaps; db36: 6a63 ldr r3, [r4, #36] ; 0x24 db38: 4433 add r3, r6 if(a->act_time >= 0) { db3a: 2b00 cmp r3, #0 a->act_time += elaps; db3c: 6263 str r3, [r4, #36] ; 0x24 if(a->act_time >= 0) { db3e: db2e blt.n db9e if(a->act_time > a->time) a->act_time = a->time; db40: 6a22 ldr r2, [r4, #32] db42: 429a cmp r2, r3 db44: bfd4 ite le db46: 6262 strle r2, [r4, #36] ; 0x24 db48: 6263 strgt r3, [r4, #36] ; 0x24 if(a->path.cb) new_value = a->path.cb(&a->path, a); db4a: 4620 mov r0, r4 db4c: 4621 mov r1, r4 db4e: f850 3f10 ldr.w r3, [r0, #16]! db52: b353 cbz r3, dbaa db54: 4798 blx r3 if(a->exec_cb) a->exec_cb(a->var, new_value); db56: 6863 ldr r3, [r4, #4] db58: b113 cbz r3, db60 db5a: b201 sxth r1, r0 db5c: 6820 ldr r0, [r4, #0] db5e: 4798 blx r3 if(a->act_time >= a->time) { db60: e9d4 3208 ldrd r3, r2, [r4, #32] db64: 429a cmp r2, r3 db66: db1a blt.n db9e if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { db68: f894 303c ldrb.w r3, [r4, #60] ; 0x3c db6c: 8ea2 ldrh r2, [r4, #52] ; 0x34 db6e: 6ae1 ldr r1, [r4, #44] ; 0x2c db70: f013 0301 ands.w r3, r3, #1 db74: d122 bne.n dbbc db76: b9da cbnz r2, dbb0 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { db78: 2900 cmp r1, #0 db7a: d13c bne.n dbf6 _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); db7c: 2240 movs r2, #64 ; 0x40 db7e: 4621 mov r1, r4 db80: 4668 mov r0, sp db82: 47d0 blx sl _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); db84: 4621 mov r1, r4 db86: 4b25 ldr r3, [pc, #148] ; (dc1c ) db88: 4640 mov r0, r8 db8a: 4798 blx r3 lv_mem_free(a); db8c: 4b24 ldr r3, [pc, #144] ; (dc20 ) db8e: 4620 mov r0, r4 db90: 4798 blx r3 anim_mark_list_change(); db92: 4b24 ldr r3, [pc, #144] ; (dc24 ) db94: 4798 blx r3 if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp); db96: 9b03 ldr r3, [sp, #12] db98: b10b cbz r3, db9e db9a: 4668 mov r0, sp db9c: 4798 blx r3 if(anim_list_changed) db9e: 782b ldrb r3, [r5, #0] dba0: b363 cbz r3, dbfc a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dba2: 4640 mov r0, r8 dba4: 47b8 blx r7 a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dba6: 4604 mov r4, r0 dba8: e7a1 b.n daee else new_value = lv_anim_path_linear(&a->path, a); dbaa: 4b1f ldr r3, [pc, #124] ; (dc28 ) dbac: 4798 blx r3 dbae: e7d2 b.n db56 if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { dbb0: f64f 70ff movw r0, #65535 ; 0xffff dbb4: 4282 cmp r2, r0 dbb6: d004 beq.n dbc2 a->repeat_cnt--; dbb8: 3a01 subs r2, #1 dbba: 86a2 strh r2, [r4, #52] ; 0x34 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { dbbc: 8ea2 ldrh r2, [r4, #52] ; 0x34 dbbe: 2a00 cmp r2, #0 dbc0: d0da beq.n db78 a->act_time = -a->repeat_delay; /*Restart the animation*/ dbc2: 6b22 ldr r2, [r4, #48] ; 0x30 dbc4: 4252 negs r2, r2 dbc6: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { dbc8: 2900 cmp r1, #0 dbca: d0e8 beq.n db9e if(a->playback_now == 0) a->act_time = -a->playback_delay; dbcc: b913 cbnz r3, dbd4 dbce: 6aa2 ldr r2, [r4, #40] ; 0x28 dbd0: 4252 negs r2, r2 dbd2: 6262 str r2, [r4, #36] ; 0x24 a->playback_now = a->playback_now == 0 ? 1 : 0; dbd4: f083 0201 eor.w r2, r3, #1 dbd8: f894 303c ldrb.w r3, [r4, #60] ; 0x3c dbdc: f362 0300 bfi r3, r2, #0, #1 a->start = a->end; dbe0: e9d4 0206 ldrd r0, r2, [r4, #24] a->playback_now = a->playback_now == 0 ? 1 : 0; dbe4: f884 303c strb.w r3, [r4, #60] ; 0x3c a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; dbe8: 07db lsls r3, r3, #31 dbea: bf58 it pl dbec: 6ba1 ldrpl r1, [r4, #56] ; 0x38 dbee: 6221 str r1, [r4, #32] a->end = tmp; dbf0: e9c4 2006 strd r2, r0, [r4, #24] a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; dbf4: e7d3 b.n db9e if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { dbf6: 2b00 cmp r3, #0 dbf8: d0e3 beq.n dbc2 dbfa: e7bf b.n db7c a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dbfc: 4621 mov r1, r4 dbfe: 4640 mov r0, r8 dc00: 47c8 blx r9 dc02: e7d0 b.n dba6 dc04: 2000863c .word 0x2000863c dc08: 0000e6a9 .word 0x0000e6a9 dc0c: 0000e6b5 .word 0x0000e6b5 dc10: 200085f4 .word 0x200085f4 dc14: 0000da5d .word 0x0000da5d dc18: 0000da49 .word 0x0000da49 dc1c: 0000e76d .word 0x0000e76d dc20: 0000eae5 .word 0x0000eae5 dc24: 0000da91 .word 0x0000da91 dc28: 0000da6d .word 0x0000da6d dc2c: 0000ec31 .word 0x0000ec31 0000dc30 <_lv_anim_core_init>: { dc30: b538 push {r3, r4, r5, lr} _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); dc32: 2140 movs r1, #64 ; 0x40 dc34: 4809 ldr r0, [pc, #36] ; (dc5c <_lv_anim_core_init+0x2c>) dc36: 4b0a ldr r3, [pc, #40] ; (dc60 <_lv_anim_core_init+0x30>) last_task_run = lv_tick_get(); dc38: 4c0a ldr r4, [pc, #40] ; (dc64 <_lv_anim_core_init+0x34>) _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc3a: 4d0b ldr r5, [pc, #44] ; (dc68 <_lv_anim_core_init+0x38>) _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); dc3c: 4798 blx r3 last_task_run = lv_tick_get(); dc3e: 4b0b ldr r3, [pc, #44] ; (dc6c <_lv_anim_core_init+0x3c>) dc40: 4798 blx r3 _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc42: 2300 movs r3, #0 last_task_run = lv_tick_get(); dc44: 60a0 str r0, [r4, #8] _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc46: 2204 movs r2, #4 dc48: 211e movs r1, #30 dc4a: 4809 ldr r0, [pc, #36] ; (dc70 <_lv_anim_core_init+0x40>) dc4c: 47a8 blx r5 anim_mark_list_change(); /*Turn off the animation task*/ dc4e: 4b09 ldr r3, [pc, #36] ; (dc74 <_lv_anim_core_init+0x44>) _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); dc50: 6060 str r0, [r4, #4] anim_mark_list_change(); /*Turn off the animation task*/ dc52: 4798 blx r3 anim_list_changed = false; /*The list has not actaully changed*/ dc54: 2300 movs r3, #0 dc56: 7023 strb r3, [r4, #0] } dc58: bd38 pop {r3, r4, r5, pc} dc5a: bf00 nop dc5c: 2000863c .word 0x2000863c dc60: 0000e605 .word 0x0000e605 dc64: 200085f4 .word 0x200085f4 dc68: 0000fbd1 .word 0x0000fbd1 dc6c: 0000da49 .word 0x0000da49 dc70: 0000dac1 .word 0x0000dac1 dc74: 0000da91 .word 0x0000da91 0000dc78 : { dc78: b510 push {r4, lr} _lv_memset_00(a, sizeof(lv_anim_t)); dc7a: 4b0b ldr r3, [pc, #44] ; (dca8 ) { dc7c: 4604 mov r4, r0 _lv_memset_00(a, sizeof(lv_anim_t)); dc7e: 2140 movs r1, #64 ; 0x40 dc80: 4798 blx r3 a->time = 500; dc82: f44f 73fa mov.w r3, #500 ; 0x1f4 dc86: 6223 str r3, [r4, #32] a->end = 100; dc88: 2100 movs r1, #0 dc8a: 2364 movs r3, #100 ; 0x64 dc8c: 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; dc90: 4b06 ldr r3, [pc, #24] ; (dcac ) dc92: 6123 str r3, [r4, #16] a->repeat_cnt = 1; dc94: 2301 movs r3, #1 dc96: 86a3 strh r3, [r4, #52] ; 0x34 a->early_apply = 1; dc98: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 dc9c: f043 0301 orr.w r3, r3, #1 dca0: f884 3036 strb.w r3, [r4, #54] ; 0x36 } dca4: bd10 pop {r4, pc} dca6: bf00 nop dca8: 0000f019 .word 0x0000f019 dcac: 0000da6d .word 0x0000da6d 0000dcb0 : { dcb0: 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)); dcb4: 4b14 ldr r3, [pc, #80] ; (dd08 ) a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dcb6: f8df 9054 ldr.w r9, [pc, #84] ; dd0c dcba: f8df a05c ldr.w sl, [pc, #92] ; dd18 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); dcbe: f8df b05c ldr.w fp, [pc, #92] ; dd1c { dcc2: 4606 mov r6, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dcc4: 4811 ldr r0, [pc, #68] ; (dd0c ) { dcc6: 460d mov r5, r1 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dcc8: 4798 blx r3 bool del = false; dcca: f04f 0800 mov.w r8, #0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); dcce: 4604 mov r4, r0 while(a != NULL) { dcd0: b914 cbnz r4, dcd8 } dcd2: 4640 mov r0, r8 dcd4: 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); dcd8: 4621 mov r1, r4 dcda: 4648 mov r0, r9 dcdc: 47d0 blx sl if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { dcde: 6823 ldr r3, [r4, #0] dce0: 42b3 cmp r3, r6 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); dce2: 4607 mov r7, r0 if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { dce4: d10d bne.n dd02 dce6: 6863 ldr r3, [r4, #4] dce8: 42ab cmp r3, r5 dcea: d000 beq.n dcee dcec: b94d cbnz r5, dd02 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); dcee: 4621 mov r1, r4 dcf0: 4648 mov r0, r9 dcf2: 47d8 blx fp lv_mem_free(a); dcf4: 4b06 ldr r3, [pc, #24] ; (dd10 ) dcf6: 4620 mov r0, r4 dcf8: 4798 blx r3 anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in dcfa: 4b06 ldr r3, [pc, #24] ; (dd14 ) dcfc: 4798 blx r3 del = true; dcfe: f04f 0801 mov.w r8, #1 dd02: 463c mov r4, r7 dd04: e7e4 b.n dcd0 dd06: bf00 nop dd08: 0000e6a9 .word 0x0000e6a9 dd0c: 2000863c .word 0x2000863c dd10: 0000eae5 .word 0x0000eae5 dd14: 0000da91 .word 0x0000da91 dd18: 0000e6b5 .word 0x0000e6b5 dd1c: 0000e76d .word 0x0000e76d 0000dd20 : { dd20: 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*/ dd22: 6841 ldr r1, [r0, #4] { dd24: 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*/ dd26: b111 cbz r1, dd2e dd28: 6800 ldr r0, [r0, #0] dd2a: 4b1d ldr r3, [pc, #116] ; (dda0 ) dd2c: 4798 blx r3 if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) { dd2e: 481d ldr r0, [pc, #116] ; (dda4 ) dd30: 4b1d ldr r3, [pc, #116] ; (dda8 ) dd32: 4798 blx r3 dd34: b120 cbz r0, dd40 last_task_run = lv_tick_get() - 1; dd36: 4b1d ldr r3, [pc, #116] ; (ddac ) dd38: 4798 blx r3 dd3a: 4b1d ldr r3, [pc, #116] ; (ddb0 ) dd3c: 3801 subs r0, #1 dd3e: 6098 str r0, [r3, #8] lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); dd40: 4b1c ldr r3, [pc, #112] ; (ddb4 ) dd42: 4818 ldr r0, [pc, #96] ; (dda4 ) dd44: 4798 blx r3 LV_ASSERT_MEM(new_anim); dd46: 4b1c ldr r3, [pc, #112] ; (ddb8 ) lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); dd48: 4604 mov r4, r0 LV_ASSERT_MEM(new_anim); dd4a: 4798 blx r3 dd4c: 4606 mov r6, r0 dd4e: b960 cbnz r0, dd6a dd50: 4b1a ldr r3, [pc, #104] ; (ddbc ) dd52: 491b ldr r1, [pc, #108] ; (ddc0 ) dd54: 9300 str r3, [sp, #0] dd56: 226a movs r2, #106 ; 0x6a dd58: 2003 movs r0, #3 dd5a: 4d1a ldr r5, [pc, #104] ; (ddc4 ) dd5c: 47a8 blx r5 dd5e: 481a ldr r0, [pc, #104] ; (ddc8 ) dd60: 491a ldr r1, [pc, #104] ; (ddcc ) dd62: 4622 mov r2, r4 dd64: 4633 mov r3, r6 dd66: 4788 blx r1 dd68: e7fe b.n dd68 if(new_anim == NULL) return; dd6a: b1b4 cbz r4, dd9a a->time_orig = a->time; dd6c: 6a2b ldr r3, [r5, #32] dd6e: 63ab str r3, [r5, #56] ; 0x38 _lv_memcpy(new_anim, a, sizeof(lv_anim_t)); dd70: 2240 movs r2, #64 ; 0x40 dd72: 4b17 ldr r3, [pc, #92] ; (ddd0 ) dd74: 4629 mov r1, r5 dd76: 4620 mov r0, r4 dd78: 4798 blx r3 if(new_anim->early_apply) { dd7a: f894 3036 ldrb.w r3, [r4, #54] ; 0x36 dd7e: 07db lsls r3, r3, #31 dd80: d506 bpl.n dd90 if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start); dd82: 6863 ldr r3, [r4, #4] dd84: b123 cbz r3, dd90 dd86: 6820 ldr r0, [r4, #0] dd88: b110 cbz r0, dd90 dd8a: f9b4 1018 ldrsh.w r1, [r4, #24] dd8e: 4798 blx r3 anim_mark_list_change(); dd90: 4b10 ldr r3, [pc, #64] ; (ddd4 ) } dd92: b002 add sp, #8 dd94: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} anim_mark_list_change(); dd98: 4718 bx r3 } dd9a: b002 add sp, #8 dd9c: bd70 pop {r4, r5, r6, pc} dd9e: bf00 nop dda0: 0000dcb1 .word 0x0000dcb1 dda4: 2000863c .word 0x2000863c dda8: 0000e8d1 .word 0x0000e8d1 ddac: 0000da49 .word 0x0000da49 ddb0: 200085f4 .word 0x200085f4 ddb4: 0000e619 .word 0x0000e619 ddb8: 000017e1 .word 0x000017e1 ddbc: 00023f14 .word 0x00023f14 ddc0: 00023ee4 .word 0x00023ee4 ddc4: 0000e8e9 .word 0x0000e8e9 ddc8: 0001edbe .word 0x0001edbe ddcc: 000017e9 .word 0x000017e9 ddd0: 0000ec31 .word 0x0000ec31 ddd4: 0000da91 .word 0x0000da91 0000ddd8 : { ddd8: b5f8 push {r3, r4, r5, r6, r7, lr} _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { ddda: 4b09 ldr r3, [pc, #36] ; (de00 ) dddc: 4e09 ldr r6, [pc, #36] ; (de04 ) ddde: 4f0a ldr r7, [pc, #40] ; (de08 ) { dde0: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { dde2: 4808 ldr r0, [pc, #32] ; (de04 ) { dde4: 460d mov r5, r1 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { dde6: 4798 blx r3 dde8: b900 cbnz r0, ddec } ddea: bdf8 pop {r3, r4, r5, r6, r7, pc} if(a->var == var && a->exec_cb == exec_cb) { ddec: 6803 ldr r3, [r0, #0] ddee: 42a3 cmp r3, r4 ddf0: d102 bne.n ddf8 ddf2: 6843 ldr r3, [r0, #4] ddf4: 42ab cmp r3, r5 ddf6: d0f8 beq.n ddea _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { ddf8: 4601 mov r1, r0 ddfa: 4630 mov r0, r6 ddfc: 47b8 blx r7 ddfe: e7f3 b.n dde8 de00: 0000e6a9 .word 0x0000e6a9 de04: 2000863c .word 0x2000863c de08: 0000e6b5 .word 0x0000e6b5 0000de0c : int32_t d = LV_MATH_ABS((int32_t)start - end); de0c: 1a8a subs r2, r1, r2 de0e: 2a00 cmp r2, #0 de10: bfb8 it lt de12: 4252 neglt r2, r2 uint32_t time = (int32_t)((int32_t)(d * 1000) / speed); de14: f44f 737a mov.w r3, #1000 ; 0x3e8 de18: 435a muls r2, r3 de1a: fbb2 f0f0 udiv r0, r2, r0 return time; de1e: 2801 cmp r0, #1 de20: bf38 it cc de22: 2001 movcc r0, #1 de24: f64f 73ff movw r3, #65535 ; 0xffff de28: 4298 cmp r0, r3 de2a: bf28 it cs de2c: 4618 movcs r0, r3 } de2e: b280 uxth r0, r0 de30: 4770 bx lr 0000de32 : /********************** * STATIC FUNCTIONS **********************/ static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p) de32: b530 push {r4, r5, lr} { lv_coord_t r = (area->x2 - area->x1) / 2; de34: f9b0 3004 ldrsh.w r3, [r0, #4] de38: 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; de3c: 8840 ldrh r0, [r0, #2] lv_coord_t r = (area->x2 - area->x1) / 2; de3e: 1b5b subs r3, r3, r5 de40: eb03 73d3 add.w r3, r3, r3, lsr #31 lv_coord_t py = p->y - cy; de44: 1a12 subs r2, r2, r0 lv_coord_t r = (area->x2 - area->x1) / 2; de46: 105c asrs r4, r3, #1 lv_coord_t cx = area->x1 + r; de48: f3c3 034f ubfx r3, r3, #1, #16 lv_coord_t px = p->x - cx; de4c: 1b49 subs r1, r1, r5 lv_coord_t py = p->y - cy; de4e: 1ad2 subs r2, r2, r3 lv_coord_t px = p->x - cx; de50: 1ac9 subs r1, r1, r3 int32_t r_sqrd = r * r; int32_t dist = (px * px) + (py * py); de52: fb12 f202 smulbb r2, r2, r2 int32_t r_sqrd = r * r; de56: 4364 muls r4, r4 int32_t dist = (px * px) + (py * py); de58: fb11 2101 smlabb r1, r1, r1, r2 if(dist <= r_sqrd) return true; else return false; } de5c: 428c cmp r4, r1 de5e: bfb4 ite lt de60: 2000 movlt r0, #0 de62: 2001 movge r0, #1 de64: bd30 pop {r4, r5, pc} 0000de66 : area_p->y2 = area_p->y1 + h - 1; de66: 8843 ldrh r3, [r0, #2] de68: 3901 subs r1, #1 de6a: 4419 add r1, r3 de6c: 80c1 strh r1, [r0, #6] } de6e: 4770 bx lr 0000de70 : size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1); de70: f9b0 3000 ldrsh.w r3, [r0] de74: f9b0 2004 ldrsh.w r2, [r0, #4] de78: f9b0 1002 ldrsh.w r1, [r0, #2] de7c: 1ad2 subs r2, r2, r3 de7e: f9b0 3006 ldrsh.w r3, [r0, #6] de82: 1a58 subs r0, r3, r1 de84: 3001 adds r0, #1 } de86: fb02 0000 mla r0, r2, r0, r0 de8a: 4770 bx lr 0000de8c <_lv_area_intersect>: res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); de8c: f9b1 3000 ldrsh.w r3, [r1] { de90: b570 push {r4, r5, r6, lr} res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); de92: f9b2 5000 ldrsh.w r5, [r2] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); de96: f9b1 4002 ldrsh.w r4, [r1, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); de9a: f9b1 6004 ldrsh.w r6, [r1, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); de9e: f9b1 1006 ldrsh.w r1, [r1, #6] res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); dea2: 429d cmp r5, r3 dea4: bfb8 it lt dea6: 461d movlt r5, r3 res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); dea8: f9b2 3002 ldrsh.w r3, [r2, #2] res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); deac: 8005 strh r5, [r0, #0] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); deae: 42a3 cmp r3, r4 deb0: bfb8 it lt deb2: 4623 movlt r3, r4 res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); deb4: f9b2 4004 ldrsh.w r4, [r2, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); deb8: f9b2 2006 ldrsh.w r2, [r2, #6] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); debc: 8043 strh r3, [r0, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); debe: 42b4 cmp r4, r6 dec0: bfa8 it ge dec2: 4634 movge r4, r6 res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); dec4: 428a cmp r2, r1 dec6: bfa8 it ge dec8: 460a movge r2, r1 if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { deca: 42a5 cmp r5, r4 res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); decc: 8084 strh r4, [r0, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); dece: 80c2 strh r2, [r0, #6] if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { ded0: dc04 bgt.n dedc <_lv_area_intersect+0x50> ded2: 4293 cmp r3, r2 ded4: bfcc ite gt ded6: 2000 movgt r0, #0 ded8: 2001 movle r0, #1 } deda: bd70 pop {r4, r5, r6, pc} union_ok = false; dedc: 2000 movs r0, #0 dede: e7fc b.n deda <_lv_area_intersect+0x4e> 0000dee0 <_lv_area_join>: a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); dee0: f9b2 3000 ldrsh.w r3, [r2] { dee4: b510 push {r4, lr} a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); dee6: f9b1 4000 ldrsh.w r4, [r1] deea: 42a3 cmp r3, r4 deec: bfa8 it ge deee: 4623 movge r3, r4 def0: 8003 strh r3, [r0, #0] a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1); def2: f9b1 4002 ldrsh.w r4, [r1, #2] def6: f9b2 3002 ldrsh.w r3, [r2, #2] defa: 42a3 cmp r3, r4 defc: bfa8 it ge defe: 4623 movge r3, r4 df00: 8043 strh r3, [r0, #2] a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2); df02: f9b1 4004 ldrsh.w r4, [r1, #4] df06: f9b2 3004 ldrsh.w r3, [r2, #4] df0a: 42a3 cmp r3, r4 df0c: bfb8 it lt df0e: 4623 movlt r3, r4 df10: 8083 strh r3, [r0, #4] a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2); df12: f9b2 3006 ldrsh.w r3, [r2, #6] df16: f9b1 2006 ldrsh.w r2, [r1, #6] df1a: 4293 cmp r3, r2 df1c: bfb8 it lt df1e: 4613 movlt r3, r2 df20: 80c3 strh r3, [r0, #6] } df22: bd10 pop {r4, pc} 0000df24 <_lv_area_is_point_on>: { df24: 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))) { df28: f9b1 9000 ldrsh.w r9, [r1] df2c: f9b0 4000 ldrsh.w r4, [r0] df30: 45a1 cmp r9, r4 { df32: b087 sub sp, #28 df34: 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))) { df36: f2c0 8088 blt.w e04a <_lv_area_is_point_on+0x126> df3a: f9b0 3004 ldrsh.w r3, [r0, #4] df3e: 9301 str r3, [sp, #4] df40: 4599 cmp r9, r3 df42: f300 8082 bgt.w e04a <_lv_area_is_point_on+0x126> df46: f9b1 a002 ldrsh.w sl, [r1, #2] df4a: f9b0 b002 ldrsh.w fp, [r0, #2] df4e: 45da cmp sl, fp df50: db7b blt.n e04a <_lv_area_is_point_on+0x126> df52: f9b0 3006 ldrsh.w r3, [r0, #6] df56: 459a cmp sl, r3 df58: dc77 bgt.n e04a <_lv_area_is_point_on+0x126> if(radius <= 0) { df5a: 2a00 cmp r2, #0 df5c: dc03 bgt.n df66 <_lv_area_is_point_on+0x42> return true; df5e: 2001 movs r0, #1 } df60: b007 add sp, #28 df62: 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); df66: f8bd 0004 ldrh.w r0, [sp, #4] df6a: 9002 str r0, [sp, #8] df6c: b2a7 uxth r7, r4 df6e: 3001 adds r0, #1 df70: 1bc0 subs r0, r0, r7 * @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); df72: b29e uxth r6, r3 corner_area.x1 = a_p->x1; df74: f8ad 4010 strh.w r4, [sp, #16] lv_coord_t w = lv_area_get_width(a_p) / 2; df78: f3c0 34c0 ubfx r4, r0, #15, #1 df7c: fa1f fc8b uxth.w ip, fp df80: fa04 f080 sxtah r0, r4, r0 df84: 1c74 adds r4, r6, #1 df86: eba4 040c sub.w r4, r4, ip lv_coord_t h = lv_area_get_height(a_p) / 2; df8a: f3c4 35c0 ubfx r5, r4, #15, #1 df8e: fa05 f584 sxtah r5, r5, r4 lv_coord_t max_radius = LV_MATH_MIN(w, h); df92: 1040 asrs r0, r0, #1 df94: 106d asrs r5, r5, #1 corner_area.x2 = a_p->x1 + radius; df96: 42a8 cmp r0, r5 df98: bfa8 it ge df9a: 4628 movge r0, r5 df9c: 4290 cmp r0, r2 df9e: bfa8 it ge dfa0: 4610 movge r0, r2 corner_area.y2 = a_p->y1 + radius; dfa2: fa1c f480 uxtah r4, ip, r0 corner_area.x2 = a_p->x1 + radius; dfa6: fa17 f780 uxtah r7, r7, r0 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { dfaa: 2200 movs r2, #0 corner_area.x2 = a_p->x1 + radius; dfac: b285 uxth r5, r0 dfae: b2bf uxth r7, r7 corner_area.y2 = a_p->y1 + radius; dfb0: b224 sxth r4, r4 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { dfb2: a804 add r0, sp, #16 dfb4: 9303 str r3, [sp, #12] corner_area.x2 = a_p->x1 + radius; dfb6: f8ad 7014 strh.w r7, [sp, #20] corner_area.y1 = a_p->y1; dfba: f8ad b012 strh.w fp, [sp, #18] corner_area.y2 = a_p->y1 + radius; dfbe: f8ad 4016 strh.w r4, [sp, #22] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { dfc2: f7ff ffaf bl df24 <_lv_area_is_point_on> dfc6: 9b03 ldr r3, [sp, #12] dfc8: 4602 mov r2, r0 dfca: b140 cbz r0, dfde <_lv_area_is_point_on+0xba> corner_area.x2 += radius; dfcc: 443d add r5, r7 dfce: f8ad 5014 strh.w r5, [sp, #20] return lv_point_within_circle(&corner_area, p_p); dfd2: 4b1f ldr r3, [pc, #124] ; (e050 <_lv_area_is_point_on+0x12c>) dfd4: 4652 mov r2, sl dfd6: 4649 mov r1, r9 dfd8: a804 add r0, sp, #16 dfda: 4798 blx r3 dfdc: e7c0 b.n df60 <_lv_area_is_point_on+0x3c> corner_area.y1 = a_p->y2 - radius; dfde: 1b76 subs r6, r6, r5 dfe0: b2b6 uxth r6, r6 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { dfe2: 4641 mov r1, r8 dfe4: a804 add r0, sp, #16 corner_area.y1 = a_p->y2 - radius; dfe6: f8ad 6012 strh.w r6, [sp, #18] corner_area.y2 = a_p->y2; dfea: f8ad 3016 strh.w r3, [sp, #22] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { dfee: f7ff ff99 bl df24 <_lv_area_is_point_on> dff2: 4602 mov r2, r0 dff4: b130 cbz r0, e004 <_lv_area_is_point_on+0xe0> corner_area.x2 += radius; dff6: 442f add r7, r5 corner_area.y1 -= radius; dff8: 1b75 subs r5, r6, r5 corner_area.x2 += radius; dffa: f8ad 7014 strh.w r7, [sp, #20] corner_area.y1 -= radius; dffe: f8ad 5012 strh.w r5, [sp, #18] return lv_point_within_circle(&corner_area, p_p); e002: e7e6 b.n dfd2 <_lv_area_is_point_on+0xae> corner_area.x1 = a_p->x2 - radius; e004: 9b02 ldr r3, [sp, #8] e006: 1b5f subs r7, r3, r5 e008: b2bf uxth r7, r7 corner_area.x2 = a_p->x2; e00a: 9b01 ldr r3, [sp, #4] corner_area.x1 = a_p->x2 - radius; e00c: f8ad 7010 strh.w r7, [sp, #16] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e010: 4641 mov r1, r8 e012: a804 add r0, sp, #16 corner_area.x2 = a_p->x2; e014: f8ad 3014 strh.w r3, [sp, #20] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e018: f7ff ff84 bl df24 <_lv_area_is_point_on> e01c: 4602 mov r2, r0 e01e: b130 cbz r0, e02e <_lv_area_is_point_on+0x10a> corner_area.x1 -= radius; e020: 1b7f subs r7, r7, r5 corner_area.y1 -= radius; e022: 1b76 subs r6, r6, r5 corner_area.x1 -= radius; e024: f8ad 7010 strh.w r7, [sp, #16] corner_area.y1 -= radius; e028: f8ad 6012 strh.w r6, [sp, #18] return lv_point_within_circle(&corner_area, p_p); e02c: e7d1 b.n dfd2 <_lv_area_is_point_on+0xae> if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e02e: 4641 mov r1, r8 e030: a804 add r0, sp, #16 corner_area.y1 = a_p->y1; e032: f8ad b012 strh.w fp, [sp, #18] corner_area.y2 = a_p->y1 + radius; e036: f8ad 4016 strh.w r4, [sp, #22] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { e03a: f7ff ff73 bl df24 <_lv_area_is_point_on> e03e: 2800 cmp r0, #0 e040: d08d beq.n df5e <_lv_area_is_point_on+0x3a> corner_area.x1 -= radius; e042: 1b7f subs r7, r7, r5 e044: f8ad 7010 strh.w r7, [sp, #16] e048: e7c3 b.n dfd2 <_lv_area_is_point_on+0xae> return false; e04a: 2000 movs r0, #0 e04c: e788 b.n df60 <_lv_area_is_point_on+0x3c> e04e: bf00 nop e050: 0000de33 .word 0x0000de33 0000e054 <_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)) { e054: f9b0 2000 ldrsh.w r2, [r0] e058: f9b1 3004 ldrsh.w r3, [r1, #4] e05c: 429a cmp r2, r3 e05e: dc14 bgt.n e08a <_lv_area_is_on+0x36> e060: f9b0 2004 ldrsh.w r2, [r0, #4] e064: f9b1 3000 ldrsh.w r3, [r1] e068: 429a cmp r2, r3 e06a: db0e blt.n e08a <_lv_area_is_on+0x36> e06c: f9b0 2002 ldrsh.w r2, [r0, #2] e070: f9b1 3006 ldrsh.w r3, [r1, #6] e074: 429a cmp r2, r3 e076: dc08 bgt.n e08a <_lv_area_is_on+0x36> e078: f9b0 0006 ldrsh.w r0, [r0, #6] e07c: f9b1 3002 ldrsh.w r3, [r1, #2] e080: 4298 cmp r0, r3 e082: bfb4 ite lt e084: 2000 movlt r0, #0 e086: 2001 movge r0, #1 e088: 4770 bx lr return false; e08a: 2000 movs r0, #0 } e08c: 4770 bx lr ... 0000e090 <_lv_area_is_in>: { e090: 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 && e094: f9b0 7000 ldrsh.w r7, [r0] e098: f9b1 3000 ldrsh.w r3, [r1] e09c: 42bb cmp r3, r7 { e09e: 4605 mov r5, r0 e0a0: 460c mov r4, r1 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && e0a2: dc24 bgt.n e0ee <_lv_area_is_in+0x5e> e0a4: f9b0 1002 ldrsh.w r1, [r0, #2] e0a8: f9b4 3002 ldrsh.w r3, [r4, #2] e0ac: 4299 cmp r1, r3 e0ae: db1e blt.n e0ee <_lv_area_is_in+0x5e> e0b0: f9b0 1004 ldrsh.w r1, [r0, #4] e0b4: f9b4 3004 ldrsh.w r3, [r4, #4] e0b8: 4299 cmp r1, r3 e0ba: dc18 bgt.n e0ee <_lv_area_is_in+0x5e> e0bc: f9b0 3006 ldrsh.w r3, [r0, #6] e0c0: f9b4 1006 ldrsh.w r1, [r4, #6] e0c4: 428b cmp r3, r1 e0c6: bfcc ite gt e0c8: 2000 movgt r0, #0 e0ca: 2001 movle r0, #1 if(radius == 0) return is_in; e0cc: b162 cbz r2, e0e8 <_lv_area_is_in+0x58> p.y = ain_p->y1; e0ce: 886b ldrh r3, [r5, #2] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e0d0: 4e16 ldr r6, [pc, #88] ; (e12c <_lv_area_is_in+0x9c>) e0d2: 9201 str r2, [sp, #4] e0d4: a903 add r1, sp, #12 e0d6: 4620 mov r0, r4 p.x = ain_p->x1; e0d8: f8ad 700c strh.w r7, [sp, #12] p.y = ain_p->y1; e0dc: f8ad 300e strh.w r3, [sp, #14] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e0e0: 47b0 blx r6 e0e2: 9a01 ldr r2, [sp, #4] e0e4: b928 cbnz r0, e0f2 <_lv_area_is_in+0x62> e0e6: 2000 movs r0, #0 } e0e8: b004 add sp, #16 e0ea: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} bool is_in = false; e0ee: 2000 movs r0, #0 e0f0: e7ec b.n e0cc <_lv_area_is_in+0x3c> p.x = ain_p->x2; e0f2: f9b5 8004 ldrsh.w r8, [r5, #4] e0f6: f8ad 800c strh.w r8, [sp, #12] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e0fa: a903 add r1, sp, #12 e0fc: 4620 mov r0, r4 e0fe: 9201 str r2, [sp, #4] e100: 47b0 blx r6 e102: 2800 cmp r0, #0 e104: d0ef beq.n e0e6 <_lv_area_is_in+0x56> p.y = ain_p->y2; e106: 88eb ldrh r3, [r5, #6] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e108: 9a01 ldr r2, [sp, #4] p.x = ain_p->x1; e10a: f8ad 700c strh.w r7, [sp, #12] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e10e: a903 add r1, sp, #12 e110: 4620 mov r0, r4 p.y = ain_p->y2; e112: f8ad 300e strh.w r3, [sp, #14] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e116: 47b0 blx r6 e118: 2800 cmp r0, #0 e11a: d0e4 beq.n e0e6 <_lv_area_is_in+0x56> if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e11c: 9a01 ldr r2, [sp, #4] p.x = ain_p->x2; e11e: f8ad 800c strh.w r8, [sp, #12] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; e122: a903 add r1, sp, #12 e124: 4620 mov r0, r4 e126: 47b0 blx r6 e128: e7de b.n e0e8 <_lv_area_is_in+0x58> e12a: bf00 nop e12c: 0000df25 .word 0x0000df25 0000e130 <_lv_area_align>: { e130: b5f0 push {r4, r5, r6, r7, lr} e132: 8844 ldrh r4, [r0, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e134: 8805 ldrh r5, [r0, #0] switch(align) { e136: 2a14 cmp r2, #20 e138: d83f bhi.n e1ba <_lv_area_align+0x8a> e13a: e8df f012 tbh [pc, r2, lsl #1] e13e: 0015 .short 0x0015 e140: 0045003b .word 0x0045003b e144: 0061005a .word 0x0061005a e148: 007c0069 .word 0x007c0069 e14c: 00850083 .word 0x00850083 e150: 0093008c .word 0x0093008c e154: 00ad00a6 .word 0x00ad00a6 e158: 00c600b3 .word 0x00c600b3 e15c: 00d200cd .word 0x00d200cd e160: 00dc00d7 .word 0x00dc00d7 e164: 00e200df .word 0x00e200df e168: 8882 ldrh r2, [r0, #4] e16a: 880f ldrh r7, [r1, #0] e16c: 3201 adds r2, #1 e16e: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e170: f3c2 36c0 ubfx r6, r2, #15, #1 e174: fa06 f682 sxtah r6, r6, r2 e178: 888a ldrh r2, [r1, #4] e17a: 3201 adds r2, #1 e17c: 1bd2 subs r2, r2, r7 e17e: f3c2 37c0 ubfx r7, r2, #15, #1 e182: fa07 f282 sxtah r2, r7, r2 e186: 1052 asrs r2, r2, #1 e188: ebc2 0266 rsb r2, r2, r6, asr #1 res->x = lv_area_get_width(base); e18c: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e18e: 88c2 ldrh r2, [r0, #6] e190: 3201 adds r2, #1 e192: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; e194: f3c2 30c0 ubfx r0, r2, #15, #1 e198: fa00 f082 sxtah r0, r0, r2 e19c: 88ca ldrh r2, [r1, #6] e19e: 8849 ldrh r1, [r1, #2] e1a0: 3201 adds r2, #1 e1a2: 1a52 subs r2, r2, r1 e1a4: f3c2 31c0 ubfx r1, r2, #15, #1 e1a8: fa01 f282 sxtah r2, r1, r2 e1ac: 1052 asrs r2, r2, #1 e1ae: ebc2 0260 rsb r2, r2, r0, asr #1 e1b2: e001 b.n e1b8 <_lv_area_align+0x88> res->x = 0; e1b4: 2200 movs r2, #0 e1b6: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); e1b8: 805a strh r2, [r3, #2] res->x += base->x1; e1ba: 881a ldrh r2, [r3, #0] e1bc: 4415 add r5, r2 res->y += base->y1; e1be: 885a ldrh r2, [r3, #2] res->x += base->x1; e1c0: 801d strh r5, [r3, #0] res->y += base->y1; e1c2: 4414 add r4, r2 e1c4: 805c strh r4, [r3, #2] } e1c6: bdf0 pop {r4, r5, r6, r7, pc} return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e1c8: 8882 ldrh r2, [r0, #4] e1ca: 3201 adds r2, #1 e1cc: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e1ce: f3c2 30c0 ubfx r0, r2, #15, #1 e1d2: fa00 f082 sxtah r0, r0, r2 e1d6: 888a ldrh r2, [r1, #4] e1d8: 8809 ldrh r1, [r1, #0] e1da: 3201 adds r2, #1 e1dc: 1a52 subs r2, r2, r1 e1de: f3c2 31c0 ubfx r1, r2, #15, #1 e1e2: fa01 f282 sxtah r2, r1, r2 e1e6: 1052 asrs r2, r2, #1 e1e8: ebc2 0260 rsb r2, r2, r0, asr #1 res->x = lv_area_get_width(base); e1ec: 801a strh r2, [r3, #0] res->y = 0; e1ee: 2200 movs r2, #0 e1f0: e7e2 b.n e1b8 <_lv_area_align+0x88> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e1f2: 880a ldrh r2, [r1, #0] e1f4: 8889 ldrh r1, [r1, #4] e1f6: 1a52 subs r2, r2, r1 e1f8: 8881 ldrh r1, [r0, #4] e1fa: 440a add r2, r1 e1fc: 1b52 subs r2, r2, r5 e1fe: e7f5 b.n e1ec <_lv_area_align+0xbc> res->x = 0; e200: 2200 movs r2, #0 res->x = lv_area_get_width(base); e202: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); e204: 884a ldrh r2, [r1, #2] e206: 88c9 ldrh r1, [r1, #6] e208: 1a52 subs r2, r2, r1 e20a: 88c1 ldrh r1, [r0, #6] e20c: 440a add r2, r1 e20e: e047 b.n e2a0 <_lv_area_align+0x170> e210: 8882 ldrh r2, [r0, #4] e212: 880f ldrh r7, [r1, #0] e214: 3201 adds r2, #1 e216: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e218: f3c2 36c0 ubfx r6, r2, #15, #1 e21c: fa06 f682 sxtah r6, r6, r2 e220: 888a ldrh r2, [r1, #4] e222: 3201 adds r2, #1 e224: 1bd2 subs r2, r2, r7 e226: f3c2 37c0 ubfx r7, r2, #15, #1 e22a: fa07 f282 sxtah r2, r7, r2 e22e: 1052 asrs r2, r2, #1 e230: ebc2 0266 rsb r2, r2, r6, asr #1 e234: e7e5 b.n e202 <_lv_area_align+0xd2> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e236: 888e ldrh r6, [r1, #4] e238: 880a ldrh r2, [r1, #0] e23a: 1b92 subs r2, r2, r6 e23c: 8886 ldrh r6, [r0, #4] e23e: 4432 add r2, r6 e240: 1b52 subs r2, r2, r5 e242: e7de b.n e202 <_lv_area_align+0xd2> res->x = 0; e244: 2200 movs r2, #0 e246: e7a1 b.n e18c <_lv_area_align+0x5c> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e248: 888e ldrh r6, [r1, #4] e24a: 880a ldrh r2, [r1, #0] e24c: 1b92 subs r2, r2, r6 e24e: 8886 ldrh r6, [r0, #4] e250: 4432 add r2, r6 e252: 1b52 subs r2, r2, r5 e254: e79a b.n e18c <_lv_area_align+0x5c> res->x = 0; e256: 2200 movs r2, #0 res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e258: 801a strh r2, [r3, #0] res->y = -lv_area_get_height(to_align); e25a: 884a ldrh r2, [r1, #2] e25c: 88c9 ldrh r1, [r1, #6] e25e: 3a01 subs r2, #1 e260: 1a52 subs r2, r2, r1 e262: e7a9 b.n e1b8 <_lv_area_align+0x88> e264: 8882 ldrh r2, [r0, #4] e266: 880e ldrh r6, [r1, #0] e268: 3201 adds r2, #1 e26a: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e26c: f3c2 30c0 ubfx r0, r2, #15, #1 e270: fa00 f082 sxtah r0, r0, r2 e274: 888a ldrh r2, [r1, #4] e276: 3201 adds r2, #1 e278: 1b92 subs r2, r2, r6 e27a: f3c2 36c0 ubfx r6, r2, #15, #1 e27e: fa06 f282 sxtah r2, r6, r2 e282: 1052 asrs r2, r2, #1 e284: ebc2 0260 rsb r2, r2, r0, asr #1 e288: e7e6 b.n e258 <_lv_area_align+0x128> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e28a: 880a ldrh r2, [r1, #0] e28c: 888e ldrh r6, [r1, #4] e28e: 8880 ldrh r0, [r0, #4] e290: 1b92 subs r2, r2, r6 e292: 4402 add r2, r0 e294: 1b52 subs r2, r2, r5 e296: e7df b.n e258 <_lv_area_align+0x128> res->x = 0; e298: 2200 movs r2, #0 res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e29a: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e29c: 88c2 ldrh r2, [r0, #6] e29e: 3201 adds r2, #1 res->y = lv_area_get_height(base) - lv_area_get_height(to_align); e2a0: 1b12 subs r2, r2, r4 e2a2: e789 b.n e1b8 <_lv_area_align+0x88> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e2a4: 8882 ldrh r2, [r0, #4] e2a6: 3201 adds r2, #1 e2a8: 1b52 subs r2, r2, r5 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; e2aa: f3c2 36c0 ubfx r6, r2, #15, #1 e2ae: fa06 f682 sxtah r6, r6, r2 e2b2: 888a ldrh r2, [r1, #4] e2b4: 8809 ldrh r1, [r1, #0] e2b6: 3201 adds r2, #1 e2b8: 1a52 subs r2, r2, r1 e2ba: f3c2 31c0 ubfx r1, r2, #15, #1 e2be: fa01 f282 sxtah r2, r1, r2 e2c2: 1052 asrs r2, r2, #1 e2c4: ebc2 0266 rsb r2, r2, r6, asr #1 e2c8: e7e7 b.n e29a <_lv_area_align+0x16a> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); e2ca: 880a ldrh r2, [r1, #0] e2cc: 8889 ldrh r1, [r1, #4] e2ce: 1a52 subs r2, r2, r1 e2d0: 8881 ldrh r1, [r0, #4] e2d2: 440a add r2, r1 e2d4: 1b52 subs r2, r2, r5 e2d6: e7e0 b.n e29a <_lv_area_align+0x16a> res->x = -lv_area_get_width(to_align); e2d8: 880a ldrh r2, [r1, #0] e2da: 8889 ldrh r1, [r1, #4] e2dc: 3a01 subs r2, #1 e2de: 1a52 subs r2, r2, r1 e2e0: e784 b.n e1ec <_lv_area_align+0xbc> res->x = -lv_area_get_width(to_align); e2e2: 880a ldrh r2, [r1, #0] e2e4: 888e ldrh r6, [r1, #4] e2e6: 3a01 subs r2, #1 e2e8: 1b92 subs r2, r2, r6 e2ea: e74f b.n e18c <_lv_area_align+0x5c> res->x = -lv_area_get_width(to_align); e2ec: 880a ldrh r2, [r1, #0] e2ee: 888e ldrh r6, [r1, #4] e2f0: 3a01 subs r2, #1 e2f2: 1b92 subs r2, r2, r6 e2f4: e785 b.n e202 <_lv_area_align+0xd2> e2f6: 8882 ldrh r2, [r0, #4] e2f8: 3201 adds r2, #1 e2fa: e77f b.n e1fc <_lv_area_align+0xcc> e2fc: 8882 ldrh r2, [r0, #4] e2fe: 3201 adds r2, #1 e300: e7a7 b.n e252 <_lv_area_align+0x122> e302: 8882 ldrh r2, [r0, #4] e304: 3201 adds r2, #1 e306: e79b b.n e240 <_lv_area_align+0x110> 0000e308 : 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) { e308: 0783 lsls r3, r0, #30 { e30a: b510 push {r4, lr} e30c: b28c uxth r4, r1 *buf = color; e30e: bf1c itt ne e310: f820 1b02 strhne.w r1, [r0], #2 buf++; px_num--; e314: f102 32ff addne.w r2, r2, #4294967295 ; 0xffffffff } uint32_t c32 = color.full + (color.full << 16); e318: eb04 4304 add.w r3, r4, r4, lsl #16 uint32_t * buf32 = (uint32_t *)buf; while(px_num > 16) { e31c: 2a10 cmp r2, #16 e31e: 4601 mov r1, r0 e320: f100 0020 add.w r0, r0, #32 e324: d804 bhi.n e330 e326: eb01 0242 add.w r2, r1, r2, lsl #1 px_num -= 16; } buf = (lv_color_t *)buf32; while(px_num) { e32a: 428a cmp r2, r1 e32c: d10a bne.n e344 *buf = color; buf++; px_num --; } #endif } e32e: bd10 pop {r4, pc} *buf32 = c32; e330: e940 3308 strd r3, r3, [r0, #-32] *buf32 = c32; e334: e940 3306 strd r3, r3, [r0, #-24] *buf32 = c32; e338: e940 3304 strd r3, r3, [r0, #-16] *buf32 = c32; e33c: e940 3302 strd r3, r3, [r0, #-8] px_num -= 16; e340: 3a10 subs r2, #16 e342: e7eb b.n e31c *buf = color; e344: f821 4b02 strh.w r4, [r1], #2 px_num --; e348: e7ef b.n e32a 0000e34a : lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl) { e34a: b530 push {r4, r5, lr} LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t 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, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e34c: f1c1 04ff rsb r4, 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))); e350: f3c0 1545 ubfx r5, r0, #5, #6 e354: 4365 muls r5, r4 e356: 233f movs r3, #63 ; 0x3f LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e358: ebc1 1241 rsb r2, r1, r1, lsl #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e35c: fb13 5101 smlabb r1, r3, r1, r5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e360: f000 031f and.w r3, r0, #31 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e364: f248 0581 movw r5, #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))); e368: fb04 2303 mla r3, r4, 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))); e36c: f3c0 20c4 ubfx r0, r0, #11, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e370: 4369 muls r1, r5 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e372: 436b muls r3, r5 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e374: fb04 2000 mla r0, r4, r0, r2 e378: f3c1 51c5 ubfx r1, r1, #23, #6 e37c: 4368 muls r0, r5 e37e: f3c3 53c4 ubfx r3, r3, #23, #5 e382: ea43 1341 orr.w r3, r3, r1, lsl #5 e386: 0dc0 lsrs r0, r0, #23 return lv_color_mix(LV_COLOR_WHITE, c, lvl); } e388: ea43 20c0 orr.w r0, r3, r0, lsl #11 e38c: bd30 pop {r4, r5, pc} 0000e38e : e38e: f1c1 01ff rsb r1, r1, #255 ; 0xff lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl) { e392: b510 push {r4, lr} 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 1245 ubfx r2, r0, #5, #6 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e398: f000 031f and.w r3, r0, #31 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e39c: f248 0481 movw r4, #32897 ; 0x8081 e3a0: 434a muls 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))); e3a2: 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))); e3a4: f3c0 20c4 ubfx r0, r0, #11, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e3a8: 4362 muls r2, r4 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); e3aa: 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))); e3ac: 4348 muls r0, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); e3ae: 0dd2 lsrs r2, r2, #23 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); e3b0: 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))); e3b2: 0ddb lsrs r3, r3, #23 e3b4: 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))); e3b8: 0dc0 lsrs r0, r0, #23 return lv_color_mix(LV_COLOR_BLACK, c, lvl); } e3ba: ea43 20c0 orr.w r0, r3, r0, lsl #11 e3be: bd10 pop {r4, pc} 0000e3c0 : 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*/ e3c0: 1c43 adds r3, r0, #1 e3c2: 4618 mov r0, r3 while(*path != '\0') { e3c4: f813 2b01 ldrb.w r2, [r3], #1 e3c8: b12a cbz r2, e3d6 if(*path == ':' || *path == '\\' || *path == '/') { e3ca: 2a3a cmp r2, #58 ; 0x3a e3cc: d0f9 beq.n e3c2 e3ce: 2a5c cmp r2, #92 ; 0x5c e3d0: d0f7 beq.n e3c2 e3d2: 2a2f cmp r2, #47 ; 0x2f e3d4: d0f5 beq.n e3c2 break; } } return path; } e3d6: 4770 bx lr 0000e3d8 <_lv_fs_init>: _lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t)); e3d8: 4801 ldr r0, [pc, #4] ; (e3e0 <_lv_fs_init+0x8>) e3da: 4b02 ldr r3, [pc, #8] ; (e3e4 <_lv_fs_init+0xc>) e3dc: 2144 movs r1, #68 ; 0x44 e3de: 4718 bx r3 e3e0: 20008624 .word 0x20008624 e3e4: 0000e605 .word 0x0000e605 0000e3e8 : { e3e8: b538 push {r3, r4, r5, lr} e3ea: 4604 mov r4, r0 if(file_p->drv == NULL) { e3ec: 6840 ldr r0, [r0, #4] e3ee: b160 cbz r0, e40a if(file_p->drv->close_cb == NULL) { e3f0: 6903 ldr r3, [r0, #16] e3f2: b163 cbz r3, e40e lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); e3f4: 6821 ldr r1, [r4, #0] e3f6: 4798 blx r3 lv_mem_free(file_p->file_d); /*Clean up*/ e3f8: 4b06 ldr r3, [pc, #24] ; (e414 ) lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); e3fa: 4605 mov r5, r0 lv_mem_free(file_p->file_d); /*Clean up*/ e3fc: 6820 ldr r0, [r4, #0] e3fe: 4798 blx r3 file_p->file_d = NULL; e400: 2300 movs r3, #0 file_p->drv = NULL; e402: e9c4 3300 strd r3, r3, [r4] } e406: 4628 mov r0, r5 e408: bd38 pop {r3, r4, r5, pc} return LV_FS_RES_INV_PARAM; e40a: 250b movs r5, #11 e40c: e7fb b.n e406 return LV_FS_RES_NOT_IMP; e40e: 2509 movs r5, #9 e410: e7f9 b.n e406 e412: bf00 nop e414: 0000eae5 .word 0x0000eae5 0000e418 : { e418: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} e41a: 4605 mov r5, r0 if(br != NULL) *br = 0; e41c: 461c mov r4, r3 e41e: b10b cbz r3, e424 e420: 2300 movs r3, #0 e422: 6023 str r3, [r4, #0] if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; e424: 6868 ldr r0, [r5, #4] e426: b170 cbz r0, e446 if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; e428: 6986 ldr r6, [r0, #24] e42a: b176 cbz r6, e44a uint32_t br_tmp = 0; e42c: 2300 movs r3, #0 e42e: 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); e430: ab03 add r3, sp, #12 e432: 9300 str r3, [sp, #0] e434: 4613 mov r3, r2 e436: 460a mov r2, r1 e438: 6829 ldr r1, [r5, #0] e43a: 47b0 blx r6 if(br != NULL) *br = br_tmp; e43c: b10c cbz r4, e442 e43e: 9b03 ldr r3, [sp, #12] e440: 6023 str r3, [r4, #0] } e442: b004 add sp, #16 e444: bd70 pop {r4, r5, r6, pc} if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; e446: 200b movs r0, #11 e448: e7fb b.n e442 if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; e44a: 2009 movs r0, #9 e44c: e7f9 b.n e442 0000e44e : if(file_p->drv == NULL) { e44e: 6843 ldr r3, [r0, #4] { e450: b410 push {r4} e452: 460a mov r2, r1 if(file_p->drv == NULL) { e454: b13b cbz r3, e466 if(file_p->drv->seek_cb == NULL) { e456: 6a1c ldr r4, [r3, #32] e458: b14c cbz r4, e46e lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); e45a: 6801 ldr r1, [r0, #0] e45c: 4618 mov r0, r3 e45e: 4623 mov r3, r4 } e460: 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); e464: 4718 bx r3 return LV_FS_RES_INV_PARAM; e466: 200b movs r0, #11 } e468: f85d 4b04 ldr.w r4, [sp], #4 e46c: 4770 bx lr return LV_FS_RES_NOT_IMP; e46e: 2009 movs r0, #9 e470: e7fa b.n e468 ... 0000e474 : { e474: b570 push {r4, r5, r6, lr} _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { e476: 4b07 ldr r3, [pc, #28] ; (e494 ) e478: 4d07 ldr r5, [pc, #28] ; (e498 ) e47a: 4e08 ldr r6, [pc, #32] ; (e49c ) { e47c: 4604 mov r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { e47e: 4806 ldr r0, [pc, #24] ; (e498 ) e480: 4798 blx r3 e482: b900 cbnz r0, e486 } e484: bd70 pop {r4, r5, r6, pc} if(drv->letter == letter) { e486: 7803 ldrb r3, [r0, #0] e488: 42a3 cmp r3, r4 e48a: d0fb beq.n e484 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { e48c: 4601 mov r1, r0 e48e: 4628 mov r0, r5 e490: 47b0 blx r6 e492: e7f6 b.n e482 e494: 0000e6a9 .word 0x0000e6a9 e498: 20008624 .word 0x20008624 e49c: 0000e6b5 .word 0x0000e6b5 0000e4a0 : file_p->drv = NULL; e4a0: 2300 movs r3, #0 { e4a2: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} file_p->file_d = NULL; e4a6: e9c0 3300 strd r3, r3, [r0] { e4aa: 4604 mov r4, r0 e4ac: 4617 mov r7, r2 if(path == NULL) return LV_FS_RES_INV_PARAM; e4ae: 460e mov r6, r1 e4b0: 2900 cmp r1, #0 e4b2: d043 beq.n e53c file_p->drv = lv_fs_get_drv(letter); e4b4: 7808 ldrb r0, [r1, #0] e4b6: 4b23 ldr r3, [pc, #140] ; (e544 ) e4b8: 4798 blx r3 e4ba: 6060 str r0, [r4, #4] if(file_p->drv == NULL) { e4bc: b928 cbnz r0, e4ca file_p->file_d = NULL; e4be: 6020 str r0, [r4, #0] return LV_FS_RES_NOT_EX; e4c0: 2503 movs r5, #3 } e4c2: 4628 mov r0, r5 e4c4: b002 add sp, #8 e4c6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(file_p->drv->ready_cb != NULL) { e4ca: 6883 ldr r3, [r0, #8] e4cc: b12b cbz r3, e4da if(file_p->drv->ready_cb(file_p->drv) == false) { e4ce: 4798 blx r3 e4d0: b918 cbnz r0, e4da file_p->file_d = NULL; e4d2: e9c4 0000 strd r0, r0, [r4] return LV_FS_RES_HW_ERR; e4d6: 2501 movs r5, #1 e4d8: e7f3 b.n e4c2 file_p->file_d = lv_mem_alloc(file_p->drv->file_size); e4da: 6863 ldr r3, [r4, #4] e4dc: 8858 ldrh r0, [r3, #2] e4de: 4b1a ldr r3, [pc, #104] ; (e548 ) e4e0: 4798 blx r3 LV_ASSERT_MEM(file_p->file_d); e4e2: 4b1a ldr r3, [pc, #104] ; (e54c ) file_p->file_d = lv_mem_alloc(file_p->drv->file_size); e4e4: 6020 str r0, [r4, #0] LV_ASSERT_MEM(file_p->file_d); e4e6: 4798 blx r3 e4e8: 4605 mov r5, r0 e4ea: b960 cbnz r0, e506 e4ec: 4b18 ldr r3, [pc, #96] ; (e550 ) e4ee: 4919 ldr r1, [pc, #100] ; (e554 ) e4f0: 9300 str r3, [sp, #0] e4f2: 226f movs r2, #111 ; 0x6f e4f4: 2003 movs r0, #3 e4f6: 4e18 ldr r6, [pc, #96] ; (e558 ) e4f8: 47b0 blx r6 e4fa: 6822 ldr r2, [r4, #0] e4fc: 4817 ldr r0, [pc, #92] ; (e55c ) e4fe: 4918 ldr r1, [pc, #96] ; (e560 ) e500: 462b mov r3, r5 e502: 4788 blx r1 e504: e7fe b.n e504 if(file_p->file_d == NULL) { e506: 6821 ldr r1, [r4, #0] e508: b911 cbnz r1, e510 file_p->drv = NULL; e50a: 6061 str r1, [r4, #4] return LV_FS_RES_OUT_OF_MEM; /* Out of memory */ e50c: 250a movs r5, #10 e50e: e7d8 b.n e4c2 if(file_p->drv->open_cb == NULL) { e510: f8d4 8004 ldr.w r8, [r4, #4] e514: f8d8 500c ldr.w r5, [r8, #12] e518: b195 cbz r5, e540 const char * real_path = lv_fs_get_real_path(path); e51a: 4b12 ldr r3, [pc, #72] ; (e564 ) e51c: 4630 mov r0, r6 e51e: 4798 blx r3 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); e520: 463b mov r3, r7 const char * real_path = lv_fs_get_real_path(path); e522: 4602 mov r2, r0 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); e524: 4640 mov r0, r8 e526: 47a8 blx r5 if(res != LV_FS_RES_OK) { e528: 4605 mov r5, r0 e52a: 2800 cmp r0, #0 e52c: d0c9 beq.n e4c2 lv_mem_free(file_p->file_d); e52e: 4b0e ldr r3, [pc, #56] ; (e568 ) e530: 6820 ldr r0, [r4, #0] e532: 4798 blx r3 file_p->file_d = NULL; e534: 2300 movs r3, #0 file_p->drv = NULL; e536: e9c4 3300 strd r3, r3, [r4] e53a: e7c2 b.n e4c2 if(path == NULL) return LV_FS_RES_INV_PARAM; e53c: 250b movs r5, #11 e53e: e7c0 b.n e4c2 return LV_FS_RES_NOT_IMP; e540: 2509 movs r5, #9 e542: e7be b.n e4c2 e544: 0000e475 .word 0x0000e475 e548: 0000ea2d .word 0x0000ea2d e54c: 000017e1 .word 0x000017e1 e550: 00023f6d .word 0x00023f6d e554: 00023f2c .word 0x00023f2c e558: 0000e8e9 .word 0x0000e8e9 e55c: 0001edbe .word 0x0001edbe e560: 000017e9 .word 0x000017e9 e564: 0000e3c1 .word 0x0000e3c1 e568: 0000eae5 .word 0x0000eae5 0000e56c : { e56c: b510 push {r4, lr} for(i = strlen(fn); i > 0; i--) { e56e: 4b09 ldr r3, [pc, #36] ; (e594 ) { e570: 4604 mov r4, r0 for(i = strlen(fn); i > 0; i--) { e572: 4798 blx r3 e574: b908 cbnz r0, e57a return ""; /*No extension if a '\' or '/' found*/ e576: 4808 ldr r0, [pc, #32] ; (e598 ) e578: e004 b.n e584 if(fn[i] == '.') { e57a: 5c23 ldrb r3, [r4, r0] e57c: 2b2e cmp r3, #46 ; 0x2e e57e: d102 bne.n e586 return &fn[i + 1]; e580: 3001 adds r0, #1 e582: 4420 add r0, r4 } e584: bd10 pop {r4, pc} else if(fn[i] == '/' || fn[i] == '\\') { e586: 2b2f cmp r3, #47 ; 0x2f e588: d0f5 beq.n e576 e58a: 2b5c cmp r3, #92 ; 0x5c e58c: d0f3 beq.n e576 for(i = strlen(fn); i > 0; i--) { e58e: 3801 subs r0, #1 e590: e7f0 b.n e574 e592: bf00 nop e594: 00016339 .word 0x00016339 e598: 0001f7d8 .word 0x0001f7d8 0000e59c <_lv_memcpy_small.constprop.0.isra.0>: while(len) { e59c: 3901 subs r1, #1 e59e: 1d03 adds r3, r0, #4 *d8 = *s8; e5a0: f811 2f01 ldrb.w r2, [r1, #1]! e5a4: f800 2b01 strb.w r2, [r0], #1 while(len) { e5a8: 4298 cmp r0, r3 e5aa: d1f9 bne.n e5a0 <_lv_memcpy_small.constprop.0.isra.0+0x4> s8++; len--; } return dst; } e5ac: 4770 bx lr ... 0000e5b0 : * @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) { e5b0: b507 push {r0, r1, r2, lr} e5b2: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the prev node of `NULL`*/ e5b4: b129 cbz r1, e5c2 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); e5b6: 6800 ldr r0, [r0, #0] e5b8: 4408 add r0, r1 if(prev) e5ba: b12a cbz r2, e5c8 _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); e5bc: 4b04 ldr r3, [pc, #16] ; (e5d0 ) e5be: a901 add r1, sp, #4 e5c0: 4798 blx r3 else _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); } e5c2: b003 add sp, #12 e5c4: f85d fb04 ldr.w pc, [sp], #4 _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); e5c8: 4b02 ldr r3, [pc, #8] ; (e5d4 ) e5ca: 2104 movs r1, #4 e5cc: 4798 blx r3 e5ce: e7f8 b.n e5c2 e5d0: 0000e59d .word 0x0000e59d e5d4: 0000f019 .word 0x0000f019 0000e5d8 : * @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) { e5d8: b507 push {r0, r1, r2, lr} e5da: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the next node of `NULL`*/ e5dc: b131 cbz r1, e5ec 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); e5de: 6803 ldr r3, [r0, #0] e5e0: 3304 adds r3, #4 e5e2: 18c8 adds r0, r1, r3 if(next) e5e4: b12a cbz r2, e5f2 _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); e5e6: 4b05 ldr r3, [pc, #20] ; (e5fc ) e5e8: a901 add r1, sp, #4 e5ea: 4798 blx r3 else _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); } e5ec: b003 add sp, #12 e5ee: f85d fb04 ldr.w pc, [sp], #4 _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); e5f2: 4b03 ldr r3, [pc, #12] ; (e600 ) e5f4: 2104 movs r1, #4 e5f6: 4798 blx r3 e5f8: e7f8 b.n e5ec e5fa: bf00 nop e5fc: 0000e59d .word 0x0000e59d e600: 0000f019 .word 0x0000f019 0000e604 <_lv_ll_init>: ll_p->head = NULL; e604: 2300 movs r3, #0 ll_p->tail = NULL; e606: e9c0 3301 strd r3, r3, [r0, #4] if(node_size & 0x3) { e60a: 078b lsls r3, r1, #30 node_size = node_size & (~0x3); e60c: bf1c itt ne e60e: f021 0103 bicne.w r1, r1, #3 node_size += 4; e612: 3104 addne r1, #4 ll_p->n_size = node_size; e614: 6001 str r1, [r0, #0] } e616: 4770 bx lr 0000e618 <_lv_ll_ins_head>: { e618: b570 push {r4, r5, r6, lr} e61a: 4604 mov r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); e61c: 6800 ldr r0, [r0, #0] e61e: 4b0d ldr r3, [pc, #52] ; (e654 <_lv_ll_ins_head+0x3c>) e620: 3008 adds r0, #8 e622: 4798 blx r3 if(n_new != NULL) { e624: 4605 mov r5, r0 e626: b190 cbz r0, e64e <_lv_ll_ins_head+0x36> node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/ e628: 4601 mov r1, r0 e62a: 2200 movs r2, #0 e62c: 4620 mov r0, r4 e62e: 4e0a ldr r6, [pc, #40] ; (e658 <_lv_ll_ins_head+0x40>) e630: 47b0 blx r6 node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/ e632: 4629 mov r1, r5 e634: 6862 ldr r2, [r4, #4] e636: 4b09 ldr r3, [pc, #36] ; (e65c <_lv_ll_ins_head+0x44>) e638: 4620 mov r0, r4 e63a: 4798 blx r3 if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/ e63c: 6861 ldr r1, [r4, #4] e63e: b111 cbz r1, e646 <_lv_ll_ins_head+0x2e> node_set_prev(ll_p, ll_p->head, n_new); e640: 462a mov r2, r5 e642: 4620 mov r0, r4 e644: 47b0 blx r6 if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ e646: 68a3 ldr r3, [r4, #8] ll_p->head = n_new; /*Set the new head in the dsc.*/ e648: 6065 str r5, [r4, #4] if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ e64a: b903 cbnz r3, e64e <_lv_ll_ins_head+0x36> ll_p->tail = n_new; e64c: 60a5 str r5, [r4, #8] } e64e: 4628 mov r0, r5 e650: bd70 pop {r4, r5, r6, pc} e652: bf00 nop e654: 0000ea2d .word 0x0000ea2d e658: 0000e5b1 .word 0x0000e5b1 e65c: 0000e5d9 .word 0x0000e5d9 0000e660 <_lv_ll_ins_tail>: { 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_tail+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_tail+0x36> node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/ 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_tail+0x40>) e678: 47b0 blx r6 node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/ e67a: 4629 mov r1, r5 e67c: 68a2 ldr r2, [r4, #8] e67e: 4b09 ldr r3, [pc, #36] ; (e6a4 <_lv_ll_ins_tail+0x44>) e680: 4620 mov r0, r4 e682: 4798 blx r3 if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/ e684: 68a1 ldr r1, [r4, #8] e686: b111 cbz r1, e68e <_lv_ll_ins_tail+0x2e> node_set_next(ll_p, ll_p->tail, n_new); e688: 462a mov r2, r5 e68a: 4620 mov r0, r4 e68c: 47b0 blx r6 if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ e68e: 6863 ldr r3, [r4, #4] ll_p->tail = n_new; /*Set the new tail in the dsc.*/ e690: 60a5 str r5, [r4, #8] if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ e692: b903 cbnz r3, e696 <_lv_ll_ins_tail+0x36> ll_p->head = n_new; e694: 6065 str r5, [r4, #4] } e696: 4628 mov r0, r5 e698: bd70 pop {r4, r5, r6, pc} e69a: bf00 nop e69c: 0000ea2d .word 0x0000ea2d e6a0: 0000e5d9 .word 0x0000e5d9 e6a4: 0000e5b1 .word 0x0000e5b1 0000e6a8 <_lv_ll_get_head>: if(ll_p != NULL) { e6a8: b100 cbz r0, e6ac <_lv_ll_get_head+0x4> head = ll_p->head; e6aa: 6840 ldr r0, [r0, #4] } e6ac: 4770 bx lr 0000e6ae <_lv_ll_get_tail>: if(ll_p != NULL) { e6ae: b100 cbz r0, e6b2 <_lv_ll_get_tail+0x4> tail = ll_p->tail; e6b0: 6880 ldr r0, [r0, #8] } e6b2: 4770 bx lr 0000e6b4 <_lv_ll_get_next>: { e6b4: b507 push {r0, r1, r2, lr} void * next = NULL; e6b6: 2300 movs r3, #0 e6b8: 9301 str r3, [sp, #4] if(ll_p != NULL) { e6ba: b128 cbz r0, e6c8 <_lv_ll_get_next+0x14> _lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *)); e6bc: 6803 ldr r3, [r0, #0] e6be: 3304 adds r3, #4 e6c0: 4419 add r1, r3 e6c2: a801 add r0, sp, #4 e6c4: 4b02 ldr r3, [pc, #8] ; (e6d0 <_lv_ll_get_next+0x1c>) e6c6: 4798 blx r3 } e6c8: 9801 ldr r0, [sp, #4] e6ca: b003 add sp, #12 e6cc: f85d fb04 ldr.w pc, [sp], #4 e6d0: 0000e59d .word 0x0000e59d 0000e6d4 <_lv_ll_get_prev>: { e6d4: b507 push {r0, r1, r2, lr} void * prev = NULL; e6d6: 2300 movs r3, #0 e6d8: 9301 str r3, [sp, #4] if(ll_p != NULL) { e6da: b120 cbz r0, e6e6 <_lv_ll_get_prev+0x12> _lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *)); e6dc: 6803 ldr r3, [r0, #0] e6de: a801 add r0, sp, #4 e6e0: 4419 add r1, r3 e6e2: 4b03 ldr r3, [pc, #12] ; (e6f0 <_lv_ll_get_prev+0x1c>) e6e4: 4798 blx r3 } e6e6: 9801 ldr r0, [sp, #4] e6e8: b003 add sp, #12 e6ea: f85d fb04 ldr.w pc, [sp], #4 e6ee: bf00 nop e6f0: 0000e59d .word 0x0000e59d 0000e6f4 <_lv_ll_ins_prev>: { e6f4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} e6f8: 460e mov r6, r1 if(NULL == ll_p || NULL == n_act) return NULL; e6fa: 4604 mov r4, r0 e6fc: b340 cbz r0, e750 <_lv_ll_ins_prev+0x5c> e6fe: b349 cbz r1, e754 <_lv_ll_ins_prev+0x60> if(_lv_ll_get_head(ll_p) == n_act) { e700: 6843 ldr r3, [r0, #4] e702: 4299 cmp r1, r3 e704: d103 bne.n e70e <_lv_ll_ins_prev+0x1a> } e706: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} n_new = _lv_ll_ins_head(ll_p); e70a: 4b13 ldr r3, [pc, #76] ; (e758 <_lv_ll_ins_prev+0x64>) e70c: 4718 bx r3 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); e70e: 6800 ldr r0, [r0, #0] e710: 4b12 ldr r3, [pc, #72] ; (e75c <_lv_ll_ins_prev+0x68>) e712: 3008 adds r0, #8 e714: 4798 blx r3 if(n_new == NULL) return NULL; e716: 4605 mov r5, r0 e718: b1b8 cbz r0, e74a <_lv_ll_ins_prev+0x56> n_prev = _lv_ll_get_prev(ll_p, n_act); e71a: 4b11 ldr r3, [pc, #68] ; (e760 <_lv_ll_ins_prev+0x6c>) node_set_next(ll_p, n_prev, n_new); e71c: f8df 8048 ldr.w r8, [pc, #72] ; e768 <_lv_ll_ins_prev+0x74> n_prev = _lv_ll_get_prev(ll_p, n_act); e720: 4631 mov r1, r6 e722: 4620 mov r0, r4 e724: 4798 blx r3 node_set_next(ll_p, n_prev, n_new); e726: 462a mov r2, r5 n_prev = _lv_ll_get_prev(ll_p, n_act); e728: 4607 mov r7, r0 node_set_next(ll_p, n_prev, n_new); e72a: 4601 mov r1, r0 e72c: 4620 mov r0, r4 e72e: 47c0 blx r8 node_set_prev(ll_p, n_new, n_prev); e730: 463a mov r2, r7 e732: 4629 mov r1, r5 e734: 4f0b ldr r7, [pc, #44] ; (e764 <_lv_ll_ins_prev+0x70>) e736: 4620 mov r0, r4 e738: 47b8 blx r7 node_set_prev(ll_p, n_act, n_new); e73a: 462a mov r2, r5 e73c: 4631 mov r1, r6 e73e: 4620 mov r0, r4 e740: 47b8 blx r7 node_set_next(ll_p, n_new, n_act); e742: 4632 mov r2, r6 e744: 4629 mov r1, r5 e746: 4620 mov r0, r4 e748: 47c0 blx r8 } e74a: 4628 mov r0, r5 e74c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if(NULL == ll_p || NULL == n_act) return NULL; e750: 4605 mov r5, r0 e752: e7fa b.n e74a <_lv_ll_ins_prev+0x56> e754: 460d mov r5, r1 e756: e7f8 b.n e74a <_lv_ll_ins_prev+0x56> e758: 0000e619 .word 0x0000e619 e75c: 0000ea2d .word 0x0000ea2d e760: 0000e6d5 .word 0x0000e6d5 e764: 0000e5b1 .word 0x0000e5b1 e768: 0000e5d9 .word 0x0000e5d9 0000e76c <_lv_ll_remove>: { e76c: b570 push {r4, r5, r6, lr} e76e: 460d mov r5, r1 if(ll_p != NULL) { e770: 4604 mov r4, r0 e772: b1f8 cbz r0, e7b4 <_lv_ll_remove+0x48> if(_lv_ll_get_head(ll_p) == node_p) { e774: 6843 ldr r3, [r0, #4] e776: 4299 cmp r1, r3 e778: d10c bne.n e794 <_lv_ll_remove+0x28> ll_p->head = _lv_ll_get_next(ll_p, node_p); e77a: 4629 mov r1, r5 e77c: 4b17 ldr r3, [pc, #92] ; (e7dc <_lv_ll_remove+0x70>) e77e: 4620 mov r0, r4 e780: 4798 blx r3 e782: 4601 mov r1, r0 e784: 6060 str r0, [r4, #4] if(ll_p->head == NULL) { e786: b908 cbnz r0, e78c <_lv_ll_remove+0x20> ll_p->tail = NULL; e788: 60a0 str r0, [r4, #8] } e78a: bd70 pop {r4, r5, r6, pc} node_set_prev(ll_p, ll_p->head, NULL); e78c: 2200 movs r2, #0 node_set_prev(ll_p, n_next, n_prev); e78e: 4b14 ldr r3, [pc, #80] ; (e7e0 <_lv_ll_remove+0x74>) e790: 4620 mov r0, r4 e792: e00c b.n e7ae <_lv_ll_remove+0x42> else if(_lv_ll_get_tail(ll_p) == node_p) { e794: 6883 ldr r3, [r0, #8] e796: 4299 cmp r1, r3 e798: d10e bne.n e7b8 <_lv_ll_remove+0x4c> ll_p->tail = _lv_ll_get_prev(ll_p, node_p); e79a: 4b12 ldr r3, [pc, #72] ; (e7e4 <_lv_ll_remove+0x78>) e79c: 4798 blx r3 e79e: 4601 mov r1, r0 e7a0: 60a0 str r0, [r4, #8] if(ll_p->tail == NULL) { e7a2: b908 cbnz r0, e7a8 <_lv_ll_remove+0x3c> ll_p->head = NULL; e7a4: 6060 str r0, [r4, #4] e7a6: e7f0 b.n e78a <_lv_ll_remove+0x1e> node_set_next(ll_p, ll_p->tail, NULL); e7a8: 4b0f ldr r3, [pc, #60] ; (e7e8 <_lv_ll_remove+0x7c>) e7aa: 2200 movs r2, #0 e7ac: 4620 mov r0, r4 } e7ae: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} node_set_prev(ll_p, n_next, n_prev); e7b2: 4718 bx r3 if(_lv_ll_get_head(ll_p) == node_p) { e7b4: 2900 cmp r1, #0 e7b6: d0e0 beq.n e77a <_lv_ll_remove+0xe> lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); e7b8: 4629 mov r1, r5 e7ba: 4b0a ldr r3, [pc, #40] ; (e7e4 <_lv_ll_remove+0x78>) e7bc: 4620 mov r0, r4 e7be: 4798 blx r3 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); e7c0: 4629 mov r1, r5 lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); e7c2: 4606 mov r6, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); e7c4: 4b05 ldr r3, [pc, #20] ; (e7dc <_lv_ll_remove+0x70>) e7c6: 4620 mov r0, r4 e7c8: 4798 blx r3 node_set_next(ll_p, n_prev, n_next); e7ca: 4631 mov r1, r6 e7cc: 4602 mov r2, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); e7ce: 4605 mov r5, r0 node_set_next(ll_p, n_prev, n_next); e7d0: 4b05 ldr r3, [pc, #20] ; (e7e8 <_lv_ll_remove+0x7c>) e7d2: 4620 mov r0, r4 e7d4: 4798 blx r3 node_set_prev(ll_p, n_next, n_prev); e7d6: 4632 mov r2, r6 e7d8: 4629 mov r1, r5 e7da: e7d8 b.n e78e <_lv_ll_remove+0x22> e7dc: 0000e6b5 .word 0x0000e6b5 e7e0: 0000e5b1 .word 0x0000e5b1 e7e4: 0000e6d5 .word 0x0000e6d5 e7e8: 0000e5d9 .word 0x0000e5d9 0000e7ec <_lv_ll_chg_list>: { e7ec: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} e7f0: 460c mov r4, r1 e7f2: 461e mov r6, r3 _lv_ll_remove(ll_ori_p, node); e7f4: 4611 mov r1, r2 e7f6: 4b16 ldr r3, [pc, #88] ; (e850 <_lv_ll_chg_list+0x64>) e7f8: f8df 805c ldr.w r8, [pc, #92] ; e858 <_lv_ll_chg_list+0x6c> e7fc: 4f15 ldr r7, [pc, #84] ; (e854 <_lv_ll_chg_list+0x68>) { e7fe: 4615 mov r5, r2 _lv_ll_remove(ll_ori_p, node); e800: 4798 blx r3 if(head) { e802: b196 cbz r6, e82a <_lv_ll_chg_list+0x3e> node_set_prev(ll_new_p, node, NULL); e804: 2200 movs r2, #0 e806: 4629 mov r1, r5 e808: 4620 mov r0, r4 e80a: 47c0 blx r8 node_set_next(ll_new_p, node, ll_new_p->head); e80c: 4629 mov r1, r5 e80e: 6862 ldr r2, [r4, #4] e810: 4620 mov r0, r4 e812: 47b8 blx r7 if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/ e814: 6861 ldr r1, [r4, #4] e816: b111 cbz r1, e81e <_lv_ll_chg_list+0x32> node_set_prev(ll_new_p, ll_new_p->head, node); e818: 462a mov r2, r5 e81a: 4620 mov r0, r4 e81c: 47c0 blx r8 if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ e81e: 68a3 ldr r3, [r4, #8] ll_new_p->head = node; /*Set the new head in the dsc.*/ e820: 6065 str r5, [r4, #4] if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ e822: b903 cbnz r3, e826 <_lv_ll_chg_list+0x3a> ll_new_p->tail = node; e824: 60a5 str r5, [r4, #8] } e826: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} node_set_prev(ll_new_p, node, ll_new_p->tail); e82a: 68a2 ldr r2, [r4, #8] e82c: 4629 mov r1, r5 e82e: 4620 mov r0, r4 e830: 47c0 blx r8 node_set_next(ll_new_p, node, NULL); e832: 4629 mov r1, r5 e834: 4632 mov r2, r6 e836: 4620 mov r0, r4 e838: 47b8 blx r7 if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/ e83a: 68a1 ldr r1, [r4, #8] e83c: b111 cbz r1, e844 <_lv_ll_chg_list+0x58> node_set_next(ll_new_p, ll_new_p->tail, node); e83e: 462a mov r2, r5 e840: 4620 mov r0, r4 e842: 47b8 blx r7 if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ e844: 6863 ldr r3, [r4, #4] ll_new_p->tail = node; /*Set the new tail in the dsc.*/ e846: 60a5 str r5, [r4, #8] if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ e848: 2b00 cmp r3, #0 e84a: d1ec bne.n e826 <_lv_ll_chg_list+0x3a> ll_new_p->head = node; e84c: 6065 str r5, [r4, #4] } e84e: e7ea b.n e826 <_lv_ll_chg_list+0x3a> e850: 0000e76d .word 0x0000e76d e854: 0000e5d9 .word 0x0000e5d9 e858: 0000e5b1 .word 0x0000e5b1 0000e85c <_lv_ll_move_before>: if(n_act == n_after) return; /*Can't move before itself*/ e85c: 4291 cmp r1, r2 { e85e: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} e862: 4604 mov r4, r0 e864: 460d mov r5, r1 e866: 4617 mov r7, r2 if(n_act == n_after) return; /*Can't move before itself*/ e868: d022 beq.n e8b0 <_lv_ll_move_before+0x54> if(n_after != NULL) e86a: b31a cbz r2, e8b4 <_lv_ll_move_before+0x58> n_before = _lv_ll_get_prev(ll_p, n_after); e86c: 4b14 ldr r3, [pc, #80] ; (e8c0 <_lv_ll_move_before+0x64>) e86e: 4611 mov r1, r2 e870: 4798 blx r3 e872: 4606 mov r6, r0 if(n_act == n_before) return; /*Already before `n_after`*/ e874: 42ae cmp r6, r5 e876: d01b beq.n e8b0 <_lv_ll_move_before+0x54> _lv_ll_remove(ll_p, n_act); e878: 4b12 ldr r3, [pc, #72] ; (e8c4 <_lv_ll_move_before+0x68>) node_set_next(ll_p, n_before, n_act); e87a: f8df 804c ldr.w r8, [pc, #76] ; e8c8 <_lv_ll_move_before+0x6c> node_set_prev(ll_p, n_act, n_before); e87e: f8df 904c ldr.w r9, [pc, #76] ; e8cc <_lv_ll_move_before+0x70> _lv_ll_remove(ll_p, n_act); e882: 4629 mov r1, r5 e884: 4620 mov r0, r4 e886: 4798 blx r3 node_set_next(ll_p, n_before, n_act); e888: 462a mov r2, r5 e88a: 4631 mov r1, r6 e88c: 4620 mov r0, r4 e88e: 47c0 blx r8 node_set_prev(ll_p, n_act, n_before); e890: 4632 mov r2, r6 e892: 4629 mov r1, r5 e894: 4620 mov r0, r4 e896: 47c8 blx r9 node_set_prev(ll_p, n_after, n_act); e898: 462a mov r2, r5 e89a: 4639 mov r1, r7 e89c: 4620 mov r0, r4 e89e: 47c8 blx r9 node_set_next(ll_p, n_act, n_after); e8a0: 463a mov r2, r7 e8a2: 4629 mov r1, r5 e8a4: 4620 mov r0, r4 e8a6: 47c0 blx r8 if(n_after == NULL) ll_p->tail = n_act; e8a8: b907 cbnz r7, e8ac <_lv_ll_move_before+0x50> e8aa: 60a5 str r5, [r4, #8] if(n_before == NULL) ll_p->head = n_act; e8ac: b906 cbnz r6, e8b0 <_lv_ll_move_before+0x54> e8ae: 6065 str r5, [r4, #4] } e8b0: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(ll_p != NULL) { e8b4: b108 cbz r0, e8ba <_lv_ll_move_before+0x5e> tail = ll_p->tail; e8b6: 6886 ldr r6, [r0, #8] e8b8: e7dc b.n e874 <_lv_ll_move_before+0x18> void * tail = NULL; e8ba: 4606 mov r6, r0 e8bc: e7da b.n e874 <_lv_ll_move_before+0x18> e8be: bf00 nop e8c0: 0000e6d5 .word 0x0000e6d5 e8c4: 0000e76d .word 0x0000e76d e8c8: 0000e5d9 .word 0x0000e5d9 e8cc: 0000e5b1 .word 0x0000e5b1 0000e8d0 <_lv_ll_is_empty>: if(ll_p == NULL) return true; e8d0: b130 cbz r0, e8e0 <_lv_ll_is_empty+0x10> if(ll_p->head == NULL && ll_p->tail == NULL) return true; e8d2: 6843 ldr r3, [r0, #4] e8d4: b933 cbnz r3, e8e4 <_lv_ll_is_empty+0x14> e8d6: 6880 ldr r0, [r0, #8] e8d8: fab0 f080 clz r0, r0 e8dc: 0940 lsrs r0, r0, #5 e8de: 4770 bx lr if(ll_p == NULL) return true; e8e0: 2001 movs r0, #1 e8e2: 4770 bx lr return false; e8e4: 2000 movs r0, #0 } e8e6: 4770 bx lr 0000e8e8 <_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, ...) { e8e8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} e8ec: 461f mov r7, r3 if(level >= _LV_LOG_LEVEL_NUM) return; /*Invalid level*/ if(level >= LV_LOG_LEVEL) { e8ee: 1e43 subs r3, r0, #1 e8f0: b2db uxtb r3, r3 e8f2: 2b04 cmp r3, #4 { e8f4: b0c5 sub sp, #276 ; 0x114 e8f6: 4604 mov r4, r0 e8f8: 460d mov r5, r1 e8fa: 4616 mov r6, r2 if(level >= LV_LOG_LEVEL) { e8fc: d817 bhi.n e92e <_lv_log_add+0x46> va_list args; va_start(args, format); e8fe: ab4d add r3, sp, #308 ; 0x134 char buf[256]; lv_vsnprintf(buf, sizeof(buf), format, args); e900: f10d 0910 add.w r9, sp, #16 e904: f8df 8030 ldr.w r8, [pc, #48] ; e938 <_lv_log_add+0x50> va_start(args, format); e908: 9303 str r3, [sp, #12] lv_vsnprintf(buf, sizeof(buf), format, args); e90a: 9a4c ldr r2, [sp, #304] ; 0x130 e90c: f44f 7180 mov.w r1, #256 ; 0x100 e910: 4648 mov r0, r9 e912: 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); e914: 4b07 ldr r3, [pc, #28] ; (e934 <_lv_log_add+0x4c>) e916: f8d3 8000 ldr.w r8, [r3] e91a: f1b8 0f00 cmp.w r8, #0 e91e: d006 beq.n e92e <_lv_log_add+0x46> e920: f8cd 9000 str.w r9, [sp] e924: 463b mov r3, r7 e926: 4632 mov r2, r6 e928: 4629 mov r1, r5 e92a: 4620 mov r0, r4 e92c: 47c0 blx r8 #endif } } e92e: b045 add sp, #276 ; 0x114 e930: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} e934: 20008784 .word 0x20008784 e938: 0000f821 .word 0x0000f821 0000e93c <_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; e93c: f44f 73b4 mov.w r3, #360 ; 0x168 e940: fb90 f2f3 sdiv r2, r0, r3 e944: fb02 0013 mls r0, r2, r3, r0 e948: b200 sxth r0, r0 if(angle < 0) angle = 360 + angle; e94a: 2800 cmp r0, #0 e94c: bfbc itt lt e94e: 18c0 addlt r0, r0, r3 e950: b200 sxthlt r0, r0 if(angle < 90) { e952: 2859 cmp r0, #89 ; 0x59 e954: 4b0e ldr r3, [pc, #56] ; (e990 <_lv_trigo_sin+0x54>) e956: dc02 bgt.n e95e <_lv_trigo_sin+0x22> ret = sin0_90_table[angle]; } else if(angle >= 90 && angle < 180) { angle = 180 - angle; ret = sin0_90_table[angle]; e958: f933 0010 ldrsh.w r0, [r3, r0, lsl #1] e95c: 4770 bx lr else if(angle >= 90 && angle < 180) { e95e: b280 uxth r0, r0 e960: f1a0 025a sub.w r2, r0, #90 ; 0x5a e964: 2a59 cmp r2, #89 ; 0x59 e966: d803 bhi.n e970 <_lv_trigo_sin+0x34> angle = 180 - angle; e968: f1c0 00b4 rsb r0, r0, #180 ; 0xb4 ret = sin0_90_table[angle]; e96c: b280 uxth r0, r0 e96e: e7f3 b.n e958 <_lv_trigo_sin+0x1c> } else if(angle >= 180 && angle < 270) { e970: f1a0 02b4 sub.w r2, r0, #180 ; 0xb4 e974: b292 uxth r2, r2 e976: 2a59 cmp r2, #89 ; 0x59 angle = angle - 180; ret = -sin0_90_table[angle]; } else { /*angle >=270*/ angle = 360 - angle; e978: bf85 ittet hi e97a: f5c0 70b4 rsbhi r0, r0, #360 ; 0x168 ret = -sin0_90_table[angle]; e97e: b280 uxthhi r0, r0 ret = -sin0_90_table[angle]; e980: f833 0012 ldrhls.w r0, [r3, r2, lsl #1] ret = -sin0_90_table[angle]; e984: f833 0010 ldrhhi.w r0, [r3, r0, lsl #1] e988: 4240 negs r0, r0 e98a: b200 sxth r0, r0 } return ret; } e98c: 4770 bx lr e98e: bf00 nop e990: 00023f88 .word 0x00023f88 0000e994 <_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) { e994: b530 push {r4, r5, lr} x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/ e996: 0200 lsls r0, r0, #8 uint32_t root = 0; e998: 2300 movs r3, #0 uint32_t trial; // http://ww1.microchip.com/...en/AppNotes/91040a.pdf do { trial = root + mask; e99a: 18d4 adds r4, r2, r3 if((uint32_t)trial * trial <= x) root = trial; e99c: fb04 f504 mul.w r5, r4, r4 e9a0: 42a8 cmp r0, r5 e9a2: bf28 it cs e9a4: 4623 movcs r3, r4 mask = mask >> 1; } while(mask); e9a6: 0852 lsrs r2, r2, #1 e9a8: d1f7 bne.n e99a <_lv_sqrt+0x6> q->i = (uint32_t) root >> 4; e9aa: 091a lsrs r2, r3, #4 q->f = (uint32_t)(root & 0xf) << 4; e9ac: 011b lsls r3, r3, #4 e9ae: b2db uxtb r3, r3 q->i = (uint32_t) root >> 4; e9b0: 800a strh r2, [r1, #0] q->f = (uint32_t)(root & 0xf) << 4; e9b2: 804b strh r3, [r1, #2] } e9b4: bd30 pop {r4, r5, pc} ... 0000e9b8 : 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; e9b8: 4a07 ldr r2, [pc, #28] ; (e9d8 ) { e9ba: 4603 mov r3, r0 next_e = (lv_mem_ent_t *)work_mem; e9bc: 6810 ldr r0, [r2, #0] if(act_e == NULL) { /*NULL means: get the first entry*/ e9be: b153 cbz r3, e9d6 } 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]; e9c0: f853 2b04 ldr.w r2, [r3], #4 e9c4: eb03 0352 add.w r3, r3, r2, lsr #1 if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL; e9c8: 1d19 adds r1, r3, #4 e9ca: f500 4280 add.w r2, r0, #16384 ; 0x4000 e9ce: 4291 cmp r1, r2 e9d0: bf34 ite cc e9d2: 4618 movcc r0, r3 e9d4: 2000 movcs r0, #0 } return next_e; } e9d6: 4770 bx lr e9d8: 20008788 .word 0x20008788 0000e9dc : size = size & (~0x7); size += 8; } #else /*Round the size up to 4*/ if(size & 0x3) { e9dc: 078b lsls r3, r1, #30 size = size & (~0x3); e9de: bf18 it ne e9e0: 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)) { e9e4: 6802 ldr r2, [r0, #0] size += 4; e9e6: bf18 it ne e9e8: 3104 addne r1, #4 { e9ea: b510 push {r4, lr} if(e->header.s.d_size == size + sizeof(lv_mem_header_t)) { e9ec: 1d0c adds r4, r1, #4 e9ee: ebb4 0f52 cmp.w r4, r2, lsr #1 e9f2: f3c2 035e ubfx r3, r2, #1, #31 e9f6: d00b beq.n ea10 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) { e9f8: 428b cmp r3, r1 e9fa: d004 beq.n ea06 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); e9fc: 3b04 subs r3, #4 after_new_e->header.s.used = 0; e9fe: 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); ea00: 1a5b subs r3, r3, r1 after_new_e->header.s.used = 0; ea02: 005b lsls r3, r3, #1 ea04: 6053 str r3, [r2, #4] } /* Set the new size for the original entry */ e->header.s.d_size = (uint32_t)size; ea06: 6803 ldr r3, [r0, #0] ea08: f361 035f bfi r3, r1, #1, #31 ea0c: 6003 str r3, [r0, #0] } ea0e: bd10 pop {r4, pc} ea10: 4619 mov r1, r3 ea12: e7f8 b.n ea06 0000ea14 <_lv_mem_init>: work_mem = (uint8_t *)work_mem_int; ea14: 4a03 ldr r2, [pc, #12] ; (ea24 <_lv_mem_init+0x10>) ea16: 4b04 ldr r3, [pc, #16] ; (ea28 <_lv_mem_init+0x14>) ea18: 6013 str r3, [r2, #0] full->header.s.used = 0; ea1a: f647 72f8 movw r2, #32760 ; 0x7ff8 ea1e: 601a str r2, [r3, #0] } ea20: 4770 bx lr ea22: bf00 nop ea24: 20008788 .word 0x20008788 ea28: 20008794 .word 0x20008794 0000ea2c : { ea2c: b573 push {r0, r1, r4, r5, r6, lr} if(size == 0) { ea2e: 4605 mov r5, r0 ea30: b1e8 cbz r0, ea6e if(size & 0x3) { ea32: 0782 lsls r2, r0, #30 size = size & (~0x3); ea34: bf18 it ne ea36: f020 0503 bicne.w r5, r0, #3 e = ent_get_next(e); ea3a: 4e12 ldr r6, [pc, #72] ; (ea84 ) size += 4; ea3c: bf18 it ne ea3e: 3504 addne r5, #4 lv_mem_ent_t * e = NULL; ea40: 2400 movs r4, #0 e = ent_get_next(e); ea42: 4620 mov r0, r4 ea44: 47b0 blx r6 if(e != NULL) { ea46: 4604 mov r4, r0 ea48: b198 cbz r0, ea72 if(e->header.s.used == 0 && e->header.s.d_size >= size) { ea4a: 7803 ldrb r3, [r0, #0] ea4c: 07db lsls r3, r3, #31 ea4e: d4f8 bmi.n ea42 ea50: 6803 ldr r3, [r0, #0] ea52: ebb5 0f53 cmp.w r5, r3, lsr #1 ea56: d8f4 bhi.n ea42 ent_trunc(e, size); ea58: 4b0b ldr r3, [pc, #44] ; (ea88 ) ea5a: 4629 mov r1, r5 ea5c: 4798 blx r3 e->header.s.used = 1; ea5e: 7803 ldrb r3, [r0, #0] ea60: f043 0301 orr.w r3, r3, #1 ea64: f804 3b04 strb.w r3, [r4], #4 } ea68: 4620 mov r0, r4 ea6a: b002 add sp, #8 ea6c: bd70 pop {r4, r5, r6, pc} return &zero_mem; ea6e: 4c07 ldr r4, [pc, #28] ; (ea8c ) ea70: e7fa b.n ea68 if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory"); ea72: 4b07 ldr r3, [pc, #28] ; (ea90 ) ea74: 9300 str r3, [sp, #0] ea76: 4907 ldr r1, [pc, #28] ; (ea94 ) ea78: 4b07 ldr r3, [pc, #28] ; (ea98 ) ea7a: 4d08 ldr r5, [pc, #32] ; (ea9c ) ea7c: 22d1 movs r2, #209 ; 0xd1 ea7e: 2002 movs r0, #2 ea80: 47a8 blx r5 ea82: e7f1 b.n ea68 ea84: 0000e9b9 .word 0x0000e9b9 ea88: 0000e9dd .word 0x0000e9dd ea8c: 2000878c .word 0x2000878c ea90: 0002406d .word 0x0002406d ea94: 0002403e .word 0x0002403e ea98: 00024152 .word 0x00024152 ea9c: 0000e8e9 .word 0x0000e8e9 0000eaa0 : { eaa0: b538 push {r3, r4, r5, lr} next_e = (lv_mem_ent_t *)work_mem; eaa2: 4b0e ldr r3, [pc, #56] ; (eadc ) e_free = ent_get_next(e_free); eaa4: 4d0e ldr r5, [pc, #56] ; (eae0 ) next_e = (lv_mem_ent_t *)work_mem; eaa6: 681c ldr r4, [r3, #0] while(e_free != NULL) { eaa8: b904 cbnz r4, eaac } eaaa: bd38 pop {r3, r4, r5, pc} e_free = ent_get_next(e_free); eaac: 4620 mov r0, r4 eaae: 47a8 blx r5 if(e_free->header.s.used != 0) { eab0: 7823 ldrb r3, [r4, #0] eab2: 07da lsls r2, r3, #31 eab4: d50f bpl.n ead6 { eab6: 4604 mov r4, r0 eab8: e7f6 b.n eaa8 if(e_next->header.s.used == 0) { eaba: 7803 ldrb r3, [r0, #0] eabc: 07db lsls r3, r3, #31 eabe: d4fa bmi.n eab6 e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header); eac0: 6823 ldr r3, [r4, #0] eac2: 6801 ldr r1, [r0, #0] eac4: f3c3 025e ubfx r2, r3, #1, #31 eac8: 3204 adds r2, #4 eaca: eb02 0251 add.w r2, r2, r1, lsr #1 eace: f362 035f bfi r3, r2, #1, #31 ead2: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); ead4: 47a8 blx r5 while(e_next != NULL) { ead6: 2800 cmp r0, #0 ead8: d1ef bne.n eaba eada: e7e6 b.n eaaa eadc: 20008788 .word 0x20008788 eae0: 0000e9b9 .word 0x0000e9b9 0000eae4 : if(data == &zero_mem) return; eae4: 4a16 ldr r2, [pc, #88] ; (eb40 ) eae6: 1d13 adds r3, r2, #4 eae8: 4298 cmp r0, r3 { eaea: b570 push {r4, r5, r6, lr} eaec: 4604 mov r4, r0 if(data == &zero_mem) return; eaee: d010 beq.n eb12 if(data == NULL) return; eaf0: b178 cbz r0, eb12 e->header.s.used = 0; eaf2: f810 3c04 ldrb.w r3, [r0, #-4] eaf6: f36f 0300 bfc r3, #0, #1 eafa: f800 3c04 strb.w r3, [r0, #-4] full_defrag_cnt++; eafe: 8913 ldrh r3, [r2, #8] eb00: 3301 adds r3, #1 eb02: b29b uxth r3, r3 if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { eb04: 2b0f cmp r3, #15 full_defrag_cnt++; eb06: 8113 strh r3, [r2, #8] if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { eb08: d814 bhi.n eb34 e_next = ent_get_next(e); eb0a: 4d0e ldr r5, [pc, #56] ; (eb44 ) eb0c: 3804 subs r0, #4 e_next = ent_get_next(e_next); eb0e: 47a8 blx r5 while(e_next != NULL) { eb10: b900 cbnz r0, eb14 } eb12: bd70 pop {r4, r5, r6, pc} if(e_next->header.s.used == 0) { eb14: 7803 ldrb r3, [r0, #0] eb16: 07db lsls r3, r3, #31 eb18: d4fb bmi.n eb12 e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); eb1a: f854 3c04 ldr.w r3, [r4, #-4] eb1e: 6801 ldr r1, [r0, #0] eb20: f3c3 025e ubfx r2, r3, #1, #31 eb24: 3204 adds r2, #4 eb26: eb02 0251 add.w r2, r2, r1, lsr #1 eb2a: f362 035f bfi r3, r2, #1, #31 eb2e: f844 3c04 str.w r3, [r4, #-4] eb32: e7ec b.n eb0e full_defrag_cnt = 0; eb34: 2300 movs r3, #0 eb36: 8113 strh r3, [r2, #8] } eb38: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_mem_defrag(); eb3c: 4b02 ldr r3, [pc, #8] ; (eb48 ) eb3e: 4718 bx r3 eb40: 20008788 .word 0x20008788 eb44: 0000e9b9 .word 0x0000e9b9 eb48: 0000eaa1 .word 0x0000eaa1 0000eb4c <_lv_mem_get_size>: if(data == NULL) return 0; eb4c: b140 cbz r0, eb60 <_lv_mem_get_size+0x14> if(data == &zero_mem) return 0; eb4e: 4b05 ldr r3, [pc, #20] ; (eb64 <_lv_mem_get_size+0x18>) eb50: 4298 cmp r0, r3 eb52: d004 beq.n eb5e <_lv_mem_get_size+0x12> return e->header.s.d_size; eb54: f850 0c04 ldr.w r0, [r0, #-4] eb58: f3c0 005e ubfx r0, r0, #1, #31 eb5c: 4770 bx lr if(data == NULL) return 0; eb5e: 2000 movs r0, #0 } eb60: 4770 bx lr eb62: bf00 nop eb64: 2000878c .word 0x2000878c 0000eb68 <_lv_mem_buf_release>: if(mem_buf_small[i].p == p) { eb68: 4b16 ldr r3, [pc, #88] ; (ebc4 <_lv_mem_buf_release+0x5c>) eb6a: 681a ldr r2, [r3, #0] eb6c: 4290 cmp r0, r2 { eb6e: b513 push {r0, r1, r4, lr} if(mem_buf_small[i].p == p) { eb70: d00b beq.n eb8a <_lv_mem_buf_release+0x22> eb72: 689a ldr r2, [r3, #8] eb74: 4290 cmp r0, r2 eb76: d10a bne.n eb8e <_lv_mem_buf_release+0x26> eb78: 2201 movs r2, #1 mem_buf_small[i].used = 0; eb7a: eb03 03c2 add.w r3, r3, r2, lsl #3 eb7e: 799a ldrb r2, [r3, #6] eb80: f36f 0200 bfc r2, #0, #1 eb84: 719a strb r2, [r3, #6] } eb86: b002 add sp, #8 eb88: bd10 pop {r4, pc} if(mem_buf_small[i].p == p) { eb8a: 2200 movs r2, #0 eb8c: e7f5 b.n eb7a <_lv_mem_buf_release+0x12> if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { eb8e: 4a0e ldr r2, [pc, #56] ; (ebc8 <_lv_mem_buf_release+0x60>) if(mem_buf_small[i].p == p) { eb90: 2300 movs r3, #0 if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { eb92: f852 4033 ldr.w r4, [r2, r3, lsl #3] eb96: 4284 cmp r4, r0 eb98: eb02 01c3 add.w r1, r2, r3, lsl #3 eb9c: d104 bne.n eba8 <_lv_mem_buf_release+0x40> LV_GC_ROOT(_lv_mem_buf[i]).used = 0; eb9e: 798b ldrb r3, [r1, #6] eba0: f36f 0300 bfc r3, #0, #1 eba4: 718b strb r3, [r1, #6] return; eba6: e7ee b.n eb86 <_lv_mem_buf_release+0x1e> for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { eba8: 3301 adds r3, #1 ebaa: 2b10 cmp r3, #16 ebac: d1f1 bne.n eb92 <_lv_mem_buf_release+0x2a> LV_LOG_ERROR("lv_mem_buf_release: p is not a known buffer") ebae: 4b07 ldr r3, [pc, #28] ; (ebcc <_lv_mem_buf_release+0x64>) ebb0: 9300 str r3, [sp, #0] ebb2: 4907 ldr r1, [pc, #28] ; (ebd0 <_lv_mem_buf_release+0x68>) ebb4: 4b07 ldr r3, [pc, #28] ; (ebd4 <_lv_mem_buf_release+0x6c>) ebb6: 4c08 ldr r4, [pc, #32] ; (ebd8 <_lv_mem_buf_release+0x70>) ebb8: f240 2232 movw r2, #562 ; 0x232 ebbc: 2003 movs r0, #3 ebbe: 47a0 blx r4 ebc0: e7e1 b.n eb86 <_lv_mem_buf_release+0x1e> ebc2: bf00 nop ebc4: 20000044 .word 0x20000044 ebc8: 20008674 .word 0x20008674 ebcc: 00024086 .word 0x00024086 ebd0: 0002403e .word 0x0002403e ebd4: 0002415f .word 0x0002415f ebd8: 0000e8e9 .word 0x0000e8e9 0000ebdc <_lv_mem_buf_free_all>: mem_buf_small[i].used = 0; ebdc: 4b11 ldr r3, [pc, #68] ; (ec24 <_lv_mem_buf_free_all+0x48>) ebde: 799a ldrb r2, [r3, #6] ebe0: f36f 0200 bfc r2, #0, #1 { ebe4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} mem_buf_small[i].used = 0; ebe8: 719a strb r2, [r3, #6] ebea: 7b9a ldrb r2, [r3, #14] ebec: 4c0e ldr r4, [pc, #56] ; (ec28 <_lv_mem_buf_free_all+0x4c>) lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); ebee: f8df 803c ldr.w r8, [pc, #60] ; ec2c <_lv_mem_buf_free_all+0x50> mem_buf_small[i].used = 0; ebf2: f36f 0200 bfc r2, #0, #1 ebf6: 2500 movs r5, #0 ebf8: 739a strb r2, [r3, #14] for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ebfa: 4627 mov r7, r4 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; ebfc: 462e mov r6, r5 if(LV_GC_ROOT(_lv_mem_buf[i]).p) { ebfe: 6820 ldr r0, [r4, #0] ec00: b140 cbz r0, ec14 <_lv_mem_buf_free_all+0x38> lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); ec02: 47c0 blx r8 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; ec04: eb07 03c5 add.w r3, r7, r5, lsl #3 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; ec08: 6026 str r6, [r4, #0] LV_GC_ROOT(_lv_mem_buf[i]).used = 0; ec0a: 799a ldrb r2, [r3, #6] ec0c: f366 0200 bfi r2, r6, #0, #1 ec10: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = 0; ec12: 80a6 strh r6, [r4, #4] for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ec14: 3501 adds r5, #1 ec16: 2d10 cmp r5, #16 ec18: f104 0408 add.w r4, r4, #8 ec1c: d1ef bne.n ebfe <_lv_mem_buf_free_all+0x22> } ec1e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} ec22: bf00 nop ec24: 20000044 .word 0x20000044 ec28: 20008674 .word 0x20008674 ec2c: 0000eae5 .word 0x0000eae5 0000ec30 <_lv_memcpy>: { ec30: b570 push {r4, r5, r6, lr} lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; ec32: f000 0503 and.w r5, r0, #3 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; ec36: f001 0603 and.w r6, r1, #3 if(s_align != d_align) { ec3a: 42b5 cmp r5, r6 lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; ec3c: 4604 mov r4, r0 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; ec3e: 460b mov r3, r1 if(s_align != d_align) { ec40: f040 8098 bne.w ed74 <_lv_memcpy+0x144> if(d_align) { ec44: 2d00 cmp r5, #0 ec46: f040 80a8 bne.w ed9a <_lv_memcpy+0x16a> uint8_t * d8 = dst; ec4a: 4605 mov r5, r0 ec4c: 462b mov r3, r5 while(len > 32) { ec4e: 2a20 cmp r2, #32 ec50: 461c mov r4, r3 ec52: f101 0520 add.w r5, r1, #32 ec56: f103 0320 add.w r3, r3, #32 ec5a: f200 80b0 bhi.w edbe <_lv_memcpy+0x18e> while(len > 4) { ec5e: 2a04 cmp r2, #4 ec60: 460e mov r6, r1 ec62: f240 809f bls.w eda4 <_lv_memcpy+0x174> COPY32; ec66: f851 3b04 ldr.w r3, [r1], #4 ec6a: f844 3b04 str.w r3, [r4], #4 len -= 4; ec6e: 3a04 subs r2, #4 ec70: e7f5 b.n ec5e <_lv_memcpy+0x2e> REPEAT8(COPY8); ec72: f813 1c20 ldrb.w r1, [r3, #-32] ec76: f804 1c20 strb.w r1, [r4, #-32] ec7a: f813 1c1f ldrb.w r1, [r3, #-31] ec7e: f804 1c1f strb.w r1, [r4, #-31] ec82: f813 1c1e ldrb.w r1, [r3, #-30] ec86: f804 1c1e strb.w r1, [r4, #-30] ec8a: f813 1c1d ldrb.w r1, [r3, #-29] ec8e: f804 1c1d strb.w r1, [r4, #-29] ec92: f813 1c1c ldrb.w r1, [r3, #-28] ec96: f804 1c1c strb.w r1, [r4, #-28] ec9a: f813 1c1b ldrb.w r1, [r3, #-27] ec9e: f804 1c1b strb.w r1, [r4, #-27] eca2: f813 1c1a ldrb.w r1, [r3, #-26] eca6: f804 1c1a strb.w r1, [r4, #-26] ecaa: f813 1c19 ldrb.w r1, [r3, #-25] ecae: f804 1c19 strb.w r1, [r4, #-25] REPEAT8(COPY8); ecb2: f813 1c18 ldrb.w r1, [r3, #-24] ecb6: f804 1c18 strb.w r1, [r4, #-24] ecba: f813 1c17 ldrb.w r1, [r3, #-23] ecbe: f804 1c17 strb.w r1, [r4, #-23] ecc2: f813 1c16 ldrb.w r1, [r3, #-22] ecc6: f804 1c16 strb.w r1, [r4, #-22] ecca: f813 1c15 ldrb.w r1, [r3, #-21] ecce: f804 1c15 strb.w r1, [r4, #-21] ecd2: f813 1c14 ldrb.w r1, [r3, #-20] ecd6: f804 1c14 strb.w r1, [r4, #-20] ecda: f813 1c13 ldrb.w r1, [r3, #-19] ecde: f804 1c13 strb.w r1, [r4, #-19] ece2: f813 1c12 ldrb.w r1, [r3, #-18] ece6: f804 1c12 strb.w r1, [r4, #-18] ecea: f813 1c11 ldrb.w r1, [r3, #-17] ecee: f804 1c11 strb.w r1, [r4, #-17] REPEAT8(COPY8); ecf2: f813 1c10 ldrb.w r1, [r3, #-16] ecf6: f804 1c10 strb.w r1, [r4, #-16] ecfa: f813 1c0f ldrb.w r1, [r3, #-15] ecfe: f804 1c0f strb.w r1, [r4, #-15] ed02: f813 1c0e ldrb.w r1, [r3, #-14] ed06: f804 1c0e strb.w r1, [r4, #-14] ed0a: f813 1c0d ldrb.w r1, [r3, #-13] ed0e: f804 1c0d strb.w r1, [r4, #-13] ed12: f813 1c0c ldrb.w r1, [r3, #-12] ed16: f804 1c0c strb.w r1, [r4, #-12] ed1a: f813 1c0b ldrb.w r1, [r3, #-11] ed1e: f804 1c0b strb.w r1, [r4, #-11] ed22: f813 1c0a ldrb.w r1, [r3, #-10] ed26: f804 1c0a strb.w r1, [r4, #-10] ed2a: f813 1c09 ldrb.w r1, [r3, #-9] ed2e: f804 1c09 strb.w r1, [r4, #-9] REPEAT8(COPY8); ed32: f813 1c08 ldrb.w r1, [r3, #-8] ed36: f804 1c08 strb.w r1, [r4, #-8] ed3a: f813 1c07 ldrb.w r1, [r3, #-7] ed3e: f804 1c07 strb.w r1, [r4, #-7] ed42: f813 1c06 ldrb.w r1, [r3, #-6] ed46: f804 1c06 strb.w r1, [r4, #-6] ed4a: f813 1c05 ldrb.w r1, [r3, #-5] ed4e: f804 1c05 strb.w r1, [r4, #-5] ed52: f813 1c04 ldrb.w r1, [r3, #-4] ed56: f804 1c04 strb.w r1, [r4, #-4] ed5a: f813 1c03 ldrb.w r1, [r3, #-3] ed5e: f804 1c03 strb.w r1, [r4, #-3] ed62: f813 1c02 ldrb.w r1, [r3, #-2] ed66: f804 1c02 strb.w r1, [r4, #-2] ed6a: f813 1c01 ldrb.w r1, [r3, #-1] ed6e: f804 1c01 strb.w r1, [r4, #-1] len -= 32; ed72: 3a20 subs r2, #32 while(len > 32) { ed74: 2a20 cmp r2, #32 ed76: 461d mov r5, r3 ed78: 4621 mov r1, r4 ed7a: f103 0320 add.w r3, r3, #32 ed7e: f104 0420 add.w r4, r4, #32 ed82: f63f af76 bhi.w ec72 <_lv_memcpy+0x42> ed86: 1e6b subs r3, r5, #1 ed88: 440a add r2, r1 while(len) { ed8a: 4291 cmp r1, r2 ed8c: d100 bne.n ed90 <_lv_memcpy+0x160> } ed8e: bd70 pop {r4, r5, r6, pc} COPY8 ed90: f813 4f01 ldrb.w r4, [r3, #1]! ed94: f801 4b01 strb.w r4, [r1], #1 len--; ed98: e7f7 b.n ed8a <_lv_memcpy+0x15a> d_align = ALIGN_MASK + 1 - d_align; ed9a: f1c5 0504 rsb r5, r5, #4 ed9e: 4405 add r5, r0 eda0: 461e mov r6, r3 while(d_align && len) { eda2: b912 cbnz r2, edaa <_lv_memcpy+0x17a> eda4: 1e73 subs r3, r6, #1 eda6: 4422 add r2, r4 eda8: e030 b.n ee0c <_lv_memcpy+0x1dc> COPY8; edaa: f813 1b01 ldrb.w r1, [r3], #1 edae: f804 1b01 strb.w r1, [r4], #1 while(d_align && len) { edb2: 42ac cmp r4, r5 COPY8; edb4: 4619 mov r1, r3 len--; edb6: f102 32ff add.w r2, r2, #4294967295 ; 0xffffffff while(d_align && len) { edba: d1f1 bne.n eda0 <_lv_memcpy+0x170> edbc: e746 b.n ec4c <_lv_memcpy+0x1c> REPEAT8(COPY32) edbe: f855 1c20 ldr.w r1, [r5, #-32] edc2: f843 1c20 str.w r1, [r3, #-32] edc6: f855 1c1c ldr.w r1, [r5, #-28] edca: f843 1c1c str.w r1, [r3, #-28] edce: f855 1c18 ldr.w r1, [r5, #-24] edd2: f843 1c18 str.w r1, [r3, #-24] edd6: f855 1c14 ldr.w r1, [r5, #-20] edda: f843 1c14 str.w r1, [r3, #-20] edde: f855 1c10 ldr.w r1, [r5, #-16] ede2: f843 1c10 str.w r1, [r3, #-16] ede6: f855 1c0c ldr.w r1, [r5, #-12] edea: f843 1c0c str.w r1, [r3, #-12] edee: f855 1c08 ldr.w r1, [r5, #-8] edf2: f843 1c08 str.w r1, [r3, #-8] edf6: f855 1c04 ldr.w r1, [r5, #-4] edfa: f843 1c04 str.w r1, [r3, #-4] len -= 32; edfe: 3a20 subs r2, #32 ee00: 4629 mov r1, r5 ee02: e724 b.n ec4e <_lv_memcpy+0x1e> COPY8 ee04: f813 1f01 ldrb.w r1, [r3, #1]! ee08: f804 1b01 strb.w r1, [r4], #1 while(len) { ee0c: 4294 cmp r4, r2 ee0e: d1f9 bne.n ee04 <_lv_memcpy+0x1d4> ee10: e7bd b.n ed8e <_lv_memcpy+0x15e> ... 0000ee14 : if(new_size & 0x3) { ee14: 078b lsls r3, r1, #30 { ee16: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} ee18: 460d mov r5, r1 new_size = new_size & (~0x3); ee1a: bf18 it ne ee1c: f021 0503 bicne.w r5, r1, #3 { ee20: 4604 mov r4, r0 new_size += 4; ee22: bf18 it ne ee24: 3504 addne r5, #4 if(data_p != NULL) { ee26: b128 cbz r0, ee34 if(e->header.s.used == 0) { ee28: f810 3c04 ldrb.w r3, [r0, #-4] data_p = NULL; ee2c: f013 0f01 tst.w r3, #1 ee30: bf08 it eq ee32: 2400 moveq r4, #0 uint32_t old_size = _lv_mem_get_size(data_p); ee34: 4b16 ldr r3, [pc, #88] ; (ee90 ) ee36: 4620 mov r0, r4 ee38: 4798 blx r3 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ ee3a: 4285 cmp r5, r0 uint32_t old_size = _lv_mem_get_size(data_p); ee3c: 4607 mov r7, r0 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ ee3e: d004 beq.n ee4a if(new_size < old_size) { ee40: d205 bcs.n ee4e ent_trunc(e, new_size); ee42: 4b14 ldr r3, [pc, #80] ; (ee94 ) ee44: 4629 mov r1, r5 ee46: 1f20 subs r0, r4, #4 ee48: 4798 blx r3 return &e->first_data; ee4a: 4626 mov r6, r4 ee4c: e00d b.n ee6a new_p = lv_mem_alloc(new_size); ee4e: 4b12 ldr r3, [pc, #72] ; (ee98 ) ee50: 4628 mov r0, r5 ee52: 4798 blx r3 if(new_p == NULL) { ee54: 4606 mov r6, r0 ee56: b958 cbnz r0, ee70 LV_LOG_WARN("Couldn't allocate memory"); ee58: 4b10 ldr r3, [pc, #64] ; (ee9c ) ee5a: 9300 str r3, [sp, #0] ee5c: 4910 ldr r1, [pc, #64] ; (eea0 ) ee5e: 4b11 ldr r3, [pc, #68] ; (eea4 ) ee60: 4c11 ldr r4, [pc, #68] ; (eea8 ) ee62: f240 123f movw r2, #319 ; 0x13f ee66: 2002 movs r0, #2 ee68: 47a0 blx r4 } ee6a: 4630 mov r0, r6 ee6c: b003 add sp, #12 ee6e: bdf0 pop {r4, r5, r6, r7, pc} if(data_p != NULL) { ee70: 2c00 cmp r4, #0 ee72: d0fa beq.n ee6a if(old_size != 0) { ee74: 2f00 cmp r7, #0 ee76: d0f8 beq.n ee6a _lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size)); ee78: 42bd cmp r5, r7 ee7a: 462a mov r2, r5 ee7c: 4b0b ldr r3, [pc, #44] ; (eeac ) ee7e: bf28 it cs ee80: 463a movcs r2, r7 ee82: 4621 mov r1, r4 ee84: 4798 blx r3 lv_mem_free(data_p); ee86: 4b0a ldr r3, [pc, #40] ; (eeb0 ) ee88: 4620 mov r0, r4 ee8a: 4798 blx r3 ee8c: e7ed b.n ee6a ee8e: bf00 nop ee90: 0000eb4d .word 0x0000eb4d ee94: 0000e9dd .word 0x0000e9dd ee98: 0000ea2d .word 0x0000ea2d ee9c: 0002406d .word 0x0002406d eea0: 0002403e .word 0x0002403e eea4: 00024173 .word 0x00024173 eea8: 0000e8e9 .word 0x0000e8e9 eeac: 0000ec31 .word 0x0000ec31 eeb0: 0000eae5 .word 0x0000eae5 0000eeb4 <_lv_mem_buf_get>: { eeb4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} if(size == 0) return NULL; eeb6: b190 cbz r0, eede <_lv_mem_buf_get+0x2a> if(size <= MEM_BUF_SMALL_SIZE) { eeb8: 2810 cmp r0, #16 eeba: d812 bhi.n eee2 <_lv_mem_buf_get+0x2e> if(mem_buf_small[i].used == 0) { eebc: 4a36 ldr r2, [pc, #216] ; (ef98 <_lv_mem_buf_get+0xe4>) eebe: 7993 ldrb r3, [r2, #6] eec0: f013 0301 ands.w r3, r3, #1 eec4: d003 beq.n eece <_lv_mem_buf_get+0x1a> eec6: 7b93 ldrb r3, [r2, #14] eec8: 07de lsls r6, r3, #31 eeca: d40a bmi.n eee2 <_lv_mem_buf_get+0x2e> eecc: 2301 movs r3, #1 mem_buf_small[i].used = 1; eece: eb02 00c3 add.w r0, r2, r3, lsl #3 eed2: 7981 ldrb r1, [r0, #6] eed4: f041 0101 orr.w r1, r1, #1 eed8: 7181 strb r1, [r0, #6] return mem_buf_small[i].p; eeda: f852 0033 ldr.w r0, [r2, r3, lsl #3] } eede: b003 add sp, #12 eee0: 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) { eee2: 4c2e ldr r4, [pc, #184] ; (ef9c <_lv_mem_buf_get+0xe8>) if(mem_buf_small[i].used == 0) { eee4: 2300 movs r3, #0 eee6: 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) { eeea: 1d27 adds r7, r4, #4 eeec: eb04 06c3 add.w r6, r4, r3, lsl #3 eef0: 79b5 ldrb r5, [r6, #6] eef2: 4629 mov r1, r5 eef4: 07ed lsls r5, r5, #31 eef6: d413 bmi.n ef20 <_lv_mem_buf_get+0x6c> eef8: f837 5033 ldrh.w r5, [r7, r3, lsl #3] eefc: 4285 cmp r5, r0 eefe: d30f bcc.n ef20 <_lv_mem_buf_get+0x6c> if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) { ef00: d105 bne.n ef0e <_lv_mem_buf_get+0x5a> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef02: f041 0101 orr.w r1, r1, #1 return LV_GC_ROOT(_lv_mem_buf[i]).p; ef06: f854 0033 ldr.w r0, [r4, r3, lsl #3] LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef0a: 71b1 strb r1, [r6, #6] return LV_GC_ROOT(_lv_mem_buf[i]).p; ef0c: e7e7 b.n eede <_lv_mem_buf_get+0x2a> else if(i_guess < 0) { ef0e: 1c56 adds r6, r2, #1 ef10: d101 bne.n ef16 <_lv_mem_buf_get+0x62> i_guess = i; ef12: b25a sxtb r2, r3 ef14: e004 b.n ef20 <_lv_mem_buf_get+0x6c> else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) { ef16: eb04 01c2 add.w r1, r4, r2, lsl #3 ef1a: 8889 ldrh r1, [r1, #4] ef1c: 42a9 cmp r1, r5 ef1e: d8f8 bhi.n ef12 <_lv_mem_buf_get+0x5e> for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ef20: 3301 adds r3, #1 ef22: 2b10 cmp r3, #16 ef24: d1e2 bne.n eeec <_lv_mem_buf_get+0x38> if(i_guess >= 0) { ef26: 1c55 adds r5, r2, #1 ef28: d008 beq.n ef3c <_lv_mem_buf_get+0x88> LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; ef2a: eb04 01c2 add.w r1, r4, r2, lsl #3 return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; ef2e: f854 0032 ldr.w r0, [r4, r2, lsl #3] LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; ef32: 798b ldrb r3, [r1, #6] ef34: f043 0301 orr.w r3, r3, #1 ef38: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; ef3a: e7d0 b.n eede <_lv_mem_buf_get+0x2a> ef3c: 2500 movs r5, #0 if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) { ef3e: eb04 03c5 add.w r3, r4, r5, lsl #3 ef42: 7999 ldrb r1, [r3, #6] ef44: 460a mov r2, r1 ef46: 07c9 lsls r1, r1, #31 ef48: d417 bmi.n ef7a <_lv_mem_buf_get+0xc6> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef4a: f042 0201 orr.w r2, r2, #1 LV_GC_ROOT(_lv_mem_buf[i]).size = size; ef4e: 8098 strh r0, [r3, #4] LV_GC_ROOT(_lv_mem_buf[i]).used = 1; ef50: 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); ef52: 4601 mov r1, r0 ef54: 4b12 ldr r3, [pc, #72] ; (efa0 <_lv_mem_buf_get+0xec>) ef56: f854 0035 ldr.w r0, [r4, r5, lsl #3] ef5a: 4798 blx r3 ef5c: f844 0035 str.w r0, [r4, r5, lsl #3] if(LV_GC_ROOT(_lv_mem_buf[i]).p == NULL) { ef60: b940 cbnz r0, ef74 <_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)") ef62: 4b10 ldr r3, [pc, #64] ; (efa4 <_lv_mem_buf_get+0xf0>) ef64: 9300 str r3, [sp, #0] ef66: 4910 ldr r1, [pc, #64] ; (efa8 <_lv_mem_buf_get+0xf4>) ef68: 4b10 ldr r3, [pc, #64] ; (efac <_lv_mem_buf_get+0xf8>) ef6a: 4e11 ldr r6, [pc, #68] ; (efb0 <_lv_mem_buf_get+0xfc>) ef6c: f44f 7204 mov.w r2, #528 ; 0x210 ef70: 2003 movs r0, #3 ef72: 47b0 blx r6 return LV_GC_ROOT(_lv_mem_buf[i]).p; ef74: f854 0035 ldr.w r0, [r4, r5, lsl #3] ef78: e7b1 b.n eede <_lv_mem_buf_get+0x2a> for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { ef7a: 3501 adds r5, #1 ef7c: 2d10 cmp r5, #16 ef7e: d1de bne.n ef3e <_lv_mem_buf_get+0x8a> LV_LOG_ERROR("lv_mem_buf_get: no free buffer. Increase LV_DRAW_BUF_MAX_NUM."); ef80: 4b0c ldr r3, [pc, #48] ; (efb4 <_lv_mem_buf_get+0x100>) ef82: 9300 str r3, [sp, #0] ef84: 2003 movs r0, #3 ef86: 4b09 ldr r3, [pc, #36] ; (efac <_lv_mem_buf_get+0xf8>) ef88: 4907 ldr r1, [pc, #28] ; (efa8 <_lv_mem_buf_get+0xf4>) ef8a: 4c09 ldr r4, [pc, #36] ; (efb0 <_lv_mem_buf_get+0xfc>) ef8c: f240 2216 movw r2, #534 ; 0x216 ef90: 47a0 blx r4 return NULL; ef92: 2000 movs r0, #0 ef94: e7a3 b.n eede <_lv_mem_buf_get+0x2a> ef96: bf00 nop ef98: 20000044 .word 0x20000044 ef9c: 20008674 .word 0x20008674 efa0: 0000ee15 .word 0x0000ee15 efa4: 000240b2 .word 0x000240b2 efa8: 0002403e .word 0x0002403e efac: 00024182 .word 0x00024182 efb0: 0000e8e9 .word 0x0000e8e9 efb4: 00024114 .word 0x00024114 0000efb8 <_lv_memset>: if(d_align) { efb8: f010 0303 ands.w r3, r0, #3 { efbc: b410 push {r4} if(d_align) { efbe: d009 beq.n efd4 <_lv_memset+0x1c> d_align = ALIGN_MASK + 1 - d_align; efc0: f1c3 0304 rsb r3, r3, #4 efc4: 4403 add r3, r0 while(d_align && len) { efc6: b12a cbz r2, efd4 <_lv_memset+0x1c> *d8 = v; efc8: f800 1b01 strb.w r1, [r0], #1 while(d_align && len) { efcc: 4298 cmp r0, r3 len--; efce: f102 32ff add.w r2, r2, #4294967295 ; 0xffffffff while(d_align && len) { efd2: d1f8 bne.n efc6 <_lv_memset+0xe> uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); efd4: eb01 2401 add.w r4, r1, r1, lsl #8 efd8: eb04 4401 add.w r4, r4, r1, lsl #16 efdc: eb04 6401 add.w r4, r4, r1, lsl #24 while(len > 32) { efe0: 4603 mov r3, r0 efe2: 2a20 cmp r2, #32 efe4: 4618 mov r0, r3 efe6: f103 0320 add.w r3, r3, #32 efea: d805 bhi.n eff8 <_lv_memset+0x40> while(len > 4) { efec: 2a04 cmp r2, #4 efee: d80d bhi.n f00c <_lv_memset+0x54> *d8 = v; eff0: 4b08 ldr r3, [pc, #32] ; (f014 <_lv_memset+0x5c>) } eff2: f85d 4b04 ldr.w r4, [sp], #4 *d8 = v; eff6: 4718 bx r3 SET32(v32); eff8: e943 4408 strd r4, r4, [r3, #-32] SET32(v32); effc: e943 4406 strd r4, r4, [r3, #-24] SET32(v32); f000: e943 4404 strd r4, r4, [r3, #-16] SET32(v32); f004: e943 4402 strd r4, r4, [r3, #-8] len -= 32; f008: 3a20 subs r2, #32 f00a: e7ea b.n efe2 <_lv_memset+0x2a> SET32(v32); f00c: f840 4b04 str.w r4, [r0], #4 len -= 4; f010: 3a04 subs r2, #4 f012: e7eb b.n efec <_lv_memset+0x34> f014: 00016305 .word 0x00016305 0000f018 <_lv_memset_00>: if(d_align) { f018: f010 0303 ands.w r3, r0, #3 { f01c: 460a mov r2, r1 if(d_align) { f01e: d10d bne.n f03c <_lv_memset_00+0x24> f020: 4603 mov r3, r0 SET32(0); f022: 2100 movs r1, #0 while(len > 32) { f024: 2a20 cmp r2, #32 f026: 4618 mov r0, r3 f028: f103 0320 add.w r3, r3, #32 f02c: d815 bhi.n f05a <_lv_memset_00+0x42> SET32(0); f02e: 2300 movs r3, #0 while(len > 4) { f030: 2a04 cmp r2, #4 f032: d908 bls.n f046 <_lv_memset_00+0x2e> SET32(0); f034: f840 3b04 str.w r3, [r0], #4 len -= 4; f038: 3a04 subs r2, #4 f03a: e7f9 b.n f030 <_lv_memset_00+0x18> d_align = ALIGN_MASK + 1 - d_align; f03c: f1c3 0304 rsb r3, r3, #4 f040: 4403 add r3, r0 *d8 = 0x00; f042: 2100 movs r1, #0 while(d_align && len) { f044: b912 cbnz r2, f04c <_lv_memset_00+0x34> *d8 = 0; f046: 4b0a ldr r3, [pc, #40] ; (f070 <_lv_memset_00+0x58>) f048: 2100 movs r1, #0 f04a: 4718 bx r3 *d8 = 0x00; f04c: f800 1b01 strb.w r1, [r0], #1 while(d_align && len) { f050: 4283 cmp r3, r0 len--; f052: f102 32ff add.w r2, r2, #4294967295 ; 0xffffffff while(d_align && len) { f056: d1f5 bne.n f044 <_lv_memset_00+0x2c> f058: e7e2 b.n f020 <_lv_memset_00+0x8> SET32(0); f05a: e943 1108 strd r1, r1, [r3, #-32] SET32(0); f05e: e943 1106 strd r1, r1, [r3, #-24] SET32(0); f062: e943 1104 strd r1, r1, [r3, #-16] SET32(0); f066: e943 1102 strd r1, r1, [r3, #-8] len -= 32; f06a: 3a20 subs r2, #32 f06c: e7da b.n f024 <_lv_memset_00+0xc> f06e: bf00 nop f070: 00016305 .word 0x00016305 0000f074 <_lv_memset_ff>: if(d_align) { f074: f010 0303 ands.w r3, r0, #3 { f078: 460a mov r2, r1 if(d_align) { f07a: d10f bne.n f09c <_lv_memset_ff+0x28> f07c: 4603 mov r3, r0 SET32(0xFFFFFFFF); f07e: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff while(len > 32) { f082: 2a20 cmp r2, #32 f084: 4618 mov r0, r3 f086: f103 0320 add.w r3, r3, #32 f08a: d816 bhi.n f0ba <_lv_memset_ff+0x46> SET32(0xFFFFFFFF); f08c: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff while(len > 4) { f090: 2a04 cmp r2, #4 f092: d908 bls.n f0a6 <_lv_memset_ff+0x32> SET32(0xFFFFFFFF); f094: f840 3b04 str.w r3, [r0], #4 len -= 4; f098: 3a04 subs r2, #4 f09a: e7f9 b.n f090 <_lv_memset_ff+0x1c> d_align = ALIGN_MASK + 1 - d_align; f09c: f1c3 0304 rsb r3, r3, #4 f0a0: 4403 add r3, r0 *d8 = 0xFF; f0a2: 21ff movs r1, #255 ; 0xff while(d_align && len) { f0a4: b912 cbnz r2, f0ac <_lv_memset_ff+0x38> *d8 = 0xFF; f0a6: 4b0a ldr r3, [pc, #40] ; (f0d0 <_lv_memset_ff+0x5c>) f0a8: 21ff movs r1, #255 ; 0xff f0aa: 4718 bx r3 *d8 = 0xFF; f0ac: f800 1b01 strb.w r1, [r0], #1 while(d_align && len) { f0b0: 4283 cmp r3, r0 len--; f0b2: f102 32ff add.w r2, r2, #4294967295 ; 0xffffffff while(d_align && len) { f0b6: d1f5 bne.n f0a4 <_lv_memset_ff+0x30> f0b8: e7e0 b.n f07c <_lv_memset_ff+0x8> SET32(0xFFFFFFFF); f0ba: e943 1108 strd r1, r1, [r3, #-32] SET32(0xFFFFFFFF); f0be: e943 1106 strd r1, r1, [r3, #-24] SET32(0xFFFFFFFF); f0c2: e943 1104 strd r1, r1, [r3, #-16] SET32(0xFFFFFFFF); f0c6: e943 1102 strd r1, r1, [r3, #-8] len -= 32; f0ca: 3a20 subs r2, #32 f0cc: e7d9 b.n f082 <_lv_memset_ff+0xe> f0ce: bf00 nop f0d0: 00016305 .word 0x00016305 0000f0d4 <_out_buffer>: // internal buffer output static inline void _out_buffer(char character, void * buffer, size_t idx, size_t maxlen) { if(idx < maxlen) { f0d4: 429a cmp r2, r3 ((char *)buffer)[idx] = character; f0d6: bf38 it cc f0d8: 5488 strbcc r0, [r1, r2] } } f0da: 4770 bx lr 0000f0dc <_out_null>: { (void)character; (void)buffer; (void)idx; (void)maxlen; } f0dc: 4770 bx lr 0000f0de <_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) { f0de: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} f0e2: 4617 mov r7, r2 f0e4: e9dd 6211 ldrd r6, r2, [sp, #68] ; 0x44 // pad leading zeros if(!(flags & FLAGS_LEFT)) { f0e8: f012 0a02 ands.w sl, r2, #2 { f0ec: 4680 mov r8, r0 f0ee: e9dd 540c ldrd r5, r4, [sp, #48] ; 0x30 f0f2: e9dd 0c0f ldrd r0, ip, [sp, #60] ; 0x3c f0f6: f89d e038 ldrb.w lr, [sp, #56] ; 0x38 if(!(flags & FLAGS_LEFT)) { f0fa: d11f bne.n f13c <_ntoa_format+0x5e> if(width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { f0fc: f002 0901 and.w r9, r2, #1 f100: b14e cbz r6, f116 <_ntoa_format+0x38> f102: f1b9 0f00 cmp.w r9, #0 f106: d006 beq.n f116 <_ntoa_format+0x38> f108: f1be 0f00 cmp.w lr, #0 f10c: d102 bne.n f114 <_ntoa_format+0x36> f10e: f012 0f0c tst.w r2, #12 f112: d000 beq.n f116 <_ntoa_format+0x38> width--; f114: 3e01 subs r6, #1 } while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = '0'; f116: f04f 0b30 mov.w fp, #48 ; 0x30 f11a: e002 b.n f122 <_ntoa_format+0x44> f11c: f805 b004 strb.w fp, [r5, r4] f120: 3401 adds r4, #1 while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f122: 45a4 cmp ip, r4 f124: d901 bls.n f12a <_ntoa_format+0x4c> f126: 2c20 cmp r4, #32 f128: d1f8 bne.n f11c <_ntoa_format+0x3e> } while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = '0'; f12a: f04f 0b30 mov.w fp, #48 ; 0x30 while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f12e: f1b9 0f00 cmp.w r9, #0 f132: d003 beq.n f13c <_ntoa_format+0x5e> f134: 42a6 cmp r6, r4 f136: d901 bls.n f13c <_ntoa_format+0x5e> f138: 2c20 cmp r4, #32 f13a: d137 bne.n f1ac <_ntoa_format+0xce> } } // handle hash if(flags & FLAGS_HASH) { f13c: f012 0f10 tst.w r2, #16 f140: d019 beq.n f176 <_ntoa_format+0x98> if(!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) { f142: f412 6f80 tst.w r2, #1024 ; 0x400 f146: d136 bne.n f1b6 <_ntoa_format+0xd8> f148: b3ac cbz r4, f1b6 <_ntoa_format+0xd8> f14a: 4564 cmp r4, ip f14c: d001 beq.n f152 <_ntoa_format+0x74> f14e: 42b4 cmp r4, r6 f150: d131 bne.n f1b6 <_ntoa_format+0xd8> len--; if(len && (base == 16U)) { f152: f1b4 0c01 subs.w ip, r4, #1 f156: d02d beq.n f1b4 <_ntoa_format+0xd6> f158: 2810 cmp r0, #16 f15a: d16a bne.n f232 <_ntoa_format+0x154> len--; f15c: 3c02 subs r4, #2 } } if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f15e: 0690 lsls r0, r2, #26 f160: d431 bmi.n f1c6 <_ntoa_format+0xe8> f162: 2c1f cmp r4, #31 f164: d80f bhi.n f186 <_ntoa_format+0xa8> buf[len++] = 'x'; f166: 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'; f168: 5528 strb r0, [r5, r4] f16a: 3401 adds r4, #1 } if(len < PRINTF_NTOA_BUFFER_SIZE) { f16c: 2c1f cmp r4, #31 f16e: d80a bhi.n f186 <_ntoa_format+0xa8> buf[len++] = '0'; f170: 2030 movs r0, #48 ; 0x30 f172: 5528 strb r0, [r5, r4] f174: 3401 adds r4, #1 } } if(len < PRINTF_NTOA_BUFFER_SIZE) { f176: 2c20 cmp r4, #32 f178: d005 beq.n f186 <_ntoa_format+0xa8> if(negative) { f17a: f1be 0f00 cmp.w lr, #0 f17e: d026 beq.n f1ce <_ntoa_format+0xf0> buf[len++] = '-'; f180: 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++] = ' '; f182: 5528 strb r0, [r5, r4] f184: 3401 adds r4, #1 if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { f186: 0792 lsls r2, r2, #30 f188: d03b beq.n f202 <_ntoa_format+0x124> f18a: 463a mov r2, r7 f18c: 4425 add r5, r4 f18e: 4414 add r4, r2 while(len) { f190: 42a2 cmp r2, r4 f192: d13a bne.n f20a <_ntoa_format+0x12c> if(flags & FLAGS_LEFT) { f194: f1ba 0f00 cmp.w sl, #0 f198: d004 beq.n f1a4 <_ntoa_format+0xc6> f19a: 1bd5 subs r5, r2, r7 while(idx - start_idx < width) { f19c: 42b5 cmp r5, r6 f19e: eb05 0407 add.w r4, r5, r7 f1a2: d33d bcc.n f220 <_ntoa_format+0x142> } } return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); } f1a4: 4620 mov r0, r4 f1a6: b003 add sp, #12 f1a8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} buf[len++] = '0'; f1ac: f805 b004 strb.w fp, [r5, r4] f1b0: 3401 adds r4, #1 f1b2: e7bc b.n f12e <_ntoa_format+0x50> f1b4: 4664 mov r4, ip if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f1b6: 2810 cmp r0, #16 f1b8: d0d1 beq.n f15e <_ntoa_format+0x80> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f1ba: 2802 cmp r0, #2 f1bc: d1d6 bne.n f16c <_ntoa_format+0x8e> f1be: 2c1f cmp r4, #31 f1c0: d8e1 bhi.n f186 <_ntoa_format+0xa8> buf[len++] = 'b'; f1c2: 2062 movs r0, #98 ; 0x62 f1c4: e7d0 b.n f168 <_ntoa_format+0x8a> else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f1c6: 2c1f cmp r4, #31 f1c8: d8dd bhi.n f186 <_ntoa_format+0xa8> buf[len++] = 'X'; f1ca: 2058 movs r0, #88 ; 0x58 f1cc: e7cc b.n f168 <_ntoa_format+0x8a> else if(flags & FLAGS_PLUS) { f1ce: 0750 lsls r0, r2, #29 f1d0: d501 bpl.n f1d6 <_ntoa_format+0xf8> buf[len++] = '+'; // ignore the space if the '+' exists f1d2: 202b movs r0, #43 ; 0x2b f1d4: e7d5 b.n f182 <_ntoa_format+0xa4> else if(flags & FLAGS_SPACE) { f1d6: 0710 lsls r0, r2, #28 f1d8: d5d5 bpl.n f186 <_ntoa_format+0xa8> buf[len++] = ' '; f1da: 2020 movs r0, #32 f1dc: e7d1 b.n f182 <_ntoa_format+0xa4> out(' ', buffer, idx++, maxlen); f1de: 2020 movs r0, #32 f1e0: e9cd 1300 strd r1, r3, [sp] f1e4: 47c0 blx r8 for(i = len; i < width; i++) { f1e6: e9dd 1300 ldrd r1, r3, [sp] f1ea: f109 0901 add.w r9, r9, #1 f1ee: 454e cmp r6, r9 f1f0: eb0b 0209 add.w r2, fp, r9 f1f4: d8f3 bhi.n f1de <_ntoa_format+0x100> f1f6: 1b32 subs r2, r6, r4 f1f8: 42b4 cmp r4, r6 f1fa: bf88 it hi f1fc: 2200 movhi r2, #0 f1fe: 443a add r2, r7 f200: e7c4 b.n f18c <_ntoa_format+0xae> f202: 46a1 mov r9, r4 f204: eba7 0b04 sub.w fp, r7, r4 f208: e7f1 b.n f1ee <_ntoa_format+0x110> out(buf[--len], buffer, idx++, maxlen); f20a: f102 0901 add.w r9, r2, #1 f20e: f815 0d01 ldrb.w r0, [r5, #-1]! f212: e9cd 1300 strd r1, r3, [sp] f216: 47c0 blx r8 f218: e9dd 1300 ldrd r1, r3, [sp] f21c: 464a mov r2, r9 f21e: e7b7 b.n f190 <_ntoa_format+0xb2> out(' ', buffer, idx++, maxlen); f220: 4622 mov r2, r4 f222: 2020 movs r0, #32 f224: 9301 str r3, [sp, #4] f226: 9100 str r1, [sp, #0] f228: 3501 adds r5, #1 f22a: 47c0 blx r8 f22c: e9dd 1300 ldrd r1, r3, [sp] f230: e7b4 b.n f19c <_ntoa_format+0xbe> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { f232: 2802 cmp r0, #2 f234: 4664 mov r4, ip f236: d199 bne.n f16c <_ntoa_format+0x8e> f238: e7c3 b.n f1c2 <_ntoa_format+0xe4> ... 0000f23c <_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) { f23c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} f240: b091 sub sp, #68 ; 0x44 f242: 9d18 ldr r5, [sp, #96] ; 0x60 f244: 9e1a ldr r6, [sp, #104] ; 0x68 f246: 9f1d ldr r7, [sp, #116] ; 0x74 char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { f248: b90d cbnz r5, f24e <_ntoa_long+0x12> flags &= ~FLAGS_HASH; f24a: f027 0710 bic.w r7, r7, #16 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { f24e: 057c lsls r4, r7, #21 f250: d500 bpl.n f254 <_ntoa_long+0x18> f252: b315 cbz r5, f29a <_ntoa_long+0x5e> f254: f017 0f20 tst.w r7, #32 f258: bf14 ite ne f25a: f04f 0e41 movne.w lr, #65 ; 0x41 f25e: 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; f262: 46ac mov ip, r5 f264: f10d 0820 add.w r8, sp, #32 f268: 2500 movs r5, #0 f26a: f1ae 0e0a sub.w lr, lr, #10 const char digit = (char)(value % base); f26e: fbbc f9f6 udiv r9, ip, r6 f272: fb06 c919 mls r9, r6, r9, ip f276: fa5f f489 uxtb.w r4, r9 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f27a: f1b9 0f09 cmp.w r9, #9 f27e: bf94 ite ls f280: 3430 addls r4, #48 ; 0x30 f282: 4474 addhi r4, lr f284: b2e4 uxtb r4, r4 value /= base; } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f286: 45b4 cmp ip, r6 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f288: f808 4b01 strb.w r4, [r8], #1 value /= base; f28c: fbbc f4f6 udiv r4, ip, r6 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f290: f105 0501 add.w r5, r5, #1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f294: d301 bcc.n f29a <_ntoa_long+0x5e> f296: 2d20 cmp r5, #32 f298: d110 bne.n f2bc <_ntoa_long+0x80> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); f29a: 9c1c ldr r4, [sp, #112] ; 0x70 f29c: 9405 str r4, [sp, #20] f29e: 9c1b ldr r4, [sp, #108] ; 0x6c f2a0: 9706 str r7, [sp, #24] f2a2: e9cd 6403 strd r6, r4, [sp, #12] f2a6: f89d 4064 ldrb.w r4, [sp, #100] ; 0x64 f2aa: e9cd 5401 strd r5, r4, [sp, #4] f2ae: ac08 add r4, sp, #32 f2b0: 9400 str r4, [sp, #0] f2b2: 4c03 ldr r4, [pc, #12] ; (f2c0 <_ntoa_long+0x84>) f2b4: 47a0 blx r4 } f2b6: b011 add sp, #68 ; 0x44 f2b8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} value /= base; f2bc: 46a4 mov ip, r4 f2be: e7d6 b.n f26e <_ntoa_long+0x32> f2c0: 0000f0df .word 0x0000f0df 0000f2c4 <_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) { f2c4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f2c8: ed2d 8b04 vpush {d8-d9} f2cc: b093 sub sp, #76 ; 0x4c f2ce: e9dd 6420 ldrd r6, r4, [sp, #128] ; 0x80 f2d2: 469a mov sl, r3 char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { f2d4: ea56 0304 orrs.w r3, r6, r4 flags &= ~FLAGS_HASH; f2d8: bf02 ittt eq f2da: 9b28 ldreq r3, [sp, #160] ; 0xa0 f2dc: f023 0310 biceq.w r3, r3, #16 f2e0: 9328 streq r3, [sp, #160] ; 0xa0 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { f2e2: 9b28 ldr r3, [sp, #160] ; 0xa0 f2e4: 055b lsls r3, r3, #21 { f2e6: e9dd b924 ldrd fp, r9, [sp, #144] ; 0x90 f2ea: ee08 0a10 vmov s16, r0 f2ee: ee08 1a90 vmov s17, r1 f2f2: ee09 2a10 vmov s18, r2 if(!(flags & FLAGS_PRECISION) || value) { f2f6: d502 bpl.n f2fe <_ntoa_long_long+0x3a> f2f8: ea56 0304 orrs.w r3, r6, r4 f2fc: d03f beq.n f37e <_ntoa_long_long+0xba> f2fe: 9b28 ldr r3, [sp, #160] ; 0xa0 f300: f013 0f20 tst.w r3, #32 f304: bf14 ite ne f306: 2341 movne r3, #65 ; 0x41 f308: 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; f30a: 3b0a subs r3, #10 f30c: f10d 0828 add.w r8, sp, #40 ; 0x28 f310: 2500 movs r5, #0 f312: 9309 str r3, [sp, #36] ; 0x24 const char digit = (char)(value % base); f314: 4621 mov r1, r4 f316: 4f1b ldr r7, [pc, #108] ; (f384 <_ntoa_long_long+0xc0>) f318: 465a mov r2, fp f31a: 464b mov r3, r9 f31c: 4630 mov r0, r6 f31e: 47b8 blx r7 f320: b2d2 uxtb r2, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f322: 2a09 cmp r2, #9 f324: bf8a itet hi f326: 9b09 ldrhi r3, [sp, #36] ; 0x24 f328: 3230 addls r2, #48 ; 0x30 f32a: 18d2 addhi r2, r2, r3 value /= base; } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f32c: 455e cmp r6, fp buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f32e: b2d2 uxtb r2, r2 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f330: eb74 0409 sbcs.w r4, r4, r9 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; f334: f808 2b01 strb.w r2, [r8], #1 f338: f105 0501 add.w r5, r5, #1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); f33c: d301 bcc.n f342 <_ntoa_long_long+0x7e> f33e: 2d20 cmp r5, #32 f340: d11a bne.n f378 <_ntoa_long_long+0xb4> } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); f342: 9b28 ldr r3, [sp, #160] ; 0xa0 f344: 9306 str r3, [sp, #24] f346: 9b27 ldr r3, [sp, #156] ; 0x9c f348: 9305 str r3, [sp, #20] f34a: 9b26 ldr r3, [sp, #152] ; 0x98 f34c: 4c0e ldr r4, [pc, #56] ; (f388 <_ntoa_long_long+0xc4>) f34e: e9cd b303 strd fp, r3, [sp, #12] f352: f89d 3088 ldrb.w r3, [sp, #136] ; 0x88 f356: e9cd 5301 strd r5, r3, [sp, #4] f35a: ab0a add r3, sp, #40 ; 0x28 f35c: 9300 str r3, [sp, #0] f35e: ee19 2a10 vmov r2, s18 f362: ee18 1a90 vmov r1, s17 f366: ee18 0a10 vmov r0, s16 f36a: 4653 mov r3, sl f36c: 47a0 blx r4 } f36e: b013 add sp, #76 ; 0x4c f370: ecbd 8b04 vpop {d8-d9} f374: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} value /= base; f378: 4606 mov r6, r0 f37a: 460c mov r4, r1 f37c: e7ca b.n f314 <_ntoa_long_long+0x50> size_t len = 0U; f37e: 2500 movs r5, #0 f380: e7df b.n f342 <_ntoa_long_long+0x7e> f382: bf00 nop f384: 00015f41 .word 0x00015f41 f388: 0000f0df .word 0x0000f0df 0000f38c <_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) f38c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} f390: 4617 mov r7, r2 f392: 461e mov r6, r3 unsigned int flags, width, precision, n; size_t idx = 0U; if(!buffer) { // use null output function out = _out_null; f394: 4aac ldr r2, [pc, #688] ; (f648 <_vsnprintf.constprop.0+0x2bc>) f396: 4bad ldr r3, [pc, #692] ; (f64c <_vsnprintf.constprop.0+0x2c0>) static int _vsnprintf(out_fct_type out, char * buffer, const size_t maxlen, const char * format, va_list va) f398: 4689 mov r9, r1 out = _out_null; f39a: 1e01 subs r1, r0, #0 static int _vsnprintf(out_fct_type out, char * buffer, const size_t maxlen, const char * format, va_list va) f39c: b091 sub sp, #68 ; 0x44 out = _out_null; f39e: bf14 ite ne f3a0: 4693 movne fp, r2 f3a2: 469b moveq fp, r3 out('%', buffer, idx++, maxlen); format++; break; default : out(*format, buffer, idx++, maxlen); f3a4: 2500 movs r5, #0 while(*format) { f3a6: 7838 ldrb r0, [r7, #0] f3a8: b958 cbnz r0, f3c2 <_vsnprintf.constprop.0+0x36> break; } } // termination out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen); f3aa: 454d cmp r5, r9 f3ac: bf2c ite cs f3ae: f109 32ff addcs.w r2, r9, #4294967295 ; 0xffffffff f3b2: 462a movcc r2, r5 f3b4: 464b mov r3, r9 f3b6: 2000 movs r0, #0 f3b8: 47d8 blx fp // return written chars without terminating \0 return (int)idx; } f3ba: 4628 mov r0, r5 f3bc: b011 add sp, #68 ; 0x44 f3be: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(*format != '%') { f3c2: 2825 cmp r0, #37 ; 0x25 format++; f3c4: f107 0701 add.w r7, r7, #1 if(*format != '%') { f3c8: d006 beq.n f3d8 <_vsnprintf.constprop.0+0x4c> out(*format, buffer, idx++, maxlen); f3ca: 1c6c adds r4, r5, #1 f3cc: 464b mov r3, r9 f3ce: 462a mov r2, r5 f3d0: 910a str r1, [sp, #40] ; 0x28 out(*format, buffer, idx++, maxlen); f3d2: 47d8 blx fp f3d4: 4625 mov r5, r4 f3d6: e0d2 b.n f57e <_vsnprintf.constprop.0+0x1f2> flags = 0U; f3d8: 2300 movs r3, #0 f3da: e006 b.n f3ea <_vsnprintf.constprop.0+0x5e> switch(*format) { f3dc: 2a2d cmp r2, #45 ; 0x2d f3de: d016 beq.n f40e <_vsnprintf.constprop.0+0x82> f3e0: 2a30 cmp r2, #48 ; 0x30 f3e2: d10c bne.n f3fe <_vsnprintf.constprop.0+0x72> flags |= FLAGS_ZEROPAD; f3e4: f043 0301 orr.w r3, r3, #1 format++; f3e8: 4607 mov r7, r0 switch(*format) { f3ea: 4638 mov r0, r7 f3ec: f810 2b01 ldrb.w r2, [r0], #1 f3f0: 2a2b cmp r2, #43 ; 0x2b f3f2: d00f beq.n f414 <_vsnprintf.constprop.0+0x88> f3f4: d8f2 bhi.n f3dc <_vsnprintf.constprop.0+0x50> f3f6: 2a20 cmp r2, #32 f3f8: d00f beq.n f41a <_vsnprintf.constprop.0+0x8e> f3fa: 2a23 cmp r2, #35 ; 0x23 f3fc: d010 beq.n f420 <_vsnprintf.constprop.0+0x94> if(_is_digit(*format)) { f3fe: f1a2 0430 sub.w r4, r2, #48 ; 0x30 f402: 2c09 cmp r4, #9 f404: d82c bhi.n f460 <_vsnprintf.constprop.0+0xd4> unsigned int i = 0U; f406: f04f 0800 mov.w r8, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); f40a: 240a movs r4, #10 f40c: e010 b.n f430 <_vsnprintf.constprop.0+0xa4> flags |= FLAGS_LEFT; f40e: f043 0302 orr.w r3, r3, #2 } while(n); f412: e7e9 b.n f3e8 <_vsnprintf.constprop.0+0x5c> flags |= FLAGS_PLUS; f414: f043 0304 orr.w r3, r3, #4 } while(n); f418: e7e6 b.n f3e8 <_vsnprintf.constprop.0+0x5c> flags |= FLAGS_SPACE; f41a: f043 0308 orr.w r3, r3, #8 } while(n); f41e: e7e3 b.n f3e8 <_vsnprintf.constprop.0+0x5c> flags |= FLAGS_HASH; f420: f043 0310 orr.w r3, r3, #16 } while(n); f424: e7e0 b.n f3e8 <_vsnprintf.constprop.0+0x5c> i = i * 10U + (unsigned int)(*((*str)++) - '0'); f426: fb04 2208 mla r2, r4, r8, r2 f42a: f1a2 0830 sub.w r8, r2, #48 ; 0x30 f42e: 4607 mov r7, r0 while(_is_digit(**str)) { f430: 4638 mov r0, r7 f432: f810 2b01 ldrb.w r2, [r0], #1 f436: f1a2 0c30 sub.w ip, r2, #48 ; 0x30 f43a: f1bc 0f09 cmp.w ip, #9 f43e: d9f2 bls.n f426 <_vsnprintf.constprop.0+0x9a> if(*format == '.') { f440: 783a ldrb r2, [r7, #0] f442: 2a2e cmp r2, #46 ; 0x2e f444: d15a bne.n f4fc <_vsnprintf.constprop.0+0x170> if(_is_digit(*format)) { f446: 7878 ldrb r0, [r7, #1] f448: f1a0 0430 sub.w r4, r0, #48 ; 0x30 f44c: 2c09 cmp r4, #9 format++; f44e: f107 0201 add.w r2, r7, #1 flags |= FLAGS_PRECISION; f452: f443 6380 orr.w r3, r3, #1024 ; 0x400 if(_is_digit(*format)) { f456: d848 bhi.n f4ea <_vsnprintf.constprop.0+0x15e> unsigned int i = 0U; f458: 2400 movs r4, #0 i = i * 10U + (unsigned int)(*((*str)++) - '0'); f45a: f04f 0e0a mov.w lr, #10 f45e: e014 b.n f48a <_vsnprintf.constprop.0+0xfe> else if(*format == '*') { f460: 2a2a cmp r2, #42 ; 0x2a f462: d10a bne.n f47a <_vsnprintf.constprop.0+0xee> const int w = va_arg(va, int); f464: f856 8b04 ldr.w r8, [r6], #4 if(w < 0) { f468: f1b8 0f00 cmp.w r8, #0 flags |= FLAGS_LEFT; // reverse padding f46c: bfbc itt lt f46e: f043 0302 orrlt.w r3, r3, #2 width = (unsigned int) - w; f472: f1c8 0800 rsblt r8, r8, #0 const int w = va_arg(va, int); f476: 4607 mov r7, r0 f478: e7e2 b.n f440 <_vsnprintf.constprop.0+0xb4> width = 0U; f47a: f04f 0800 mov.w r8, #0 f47e: e7df b.n f440 <_vsnprintf.constprop.0+0xb4> i = i * 10U + (unsigned int)(*((*str)++) - '0'); f480: fb0e 0004 mla r0, lr, r4, r0 f484: f1a0 0430 sub.w r4, r0, #48 ; 0x30 f488: 463a mov r2, r7 while(_is_digit(**str)) { f48a: 4617 mov r7, r2 f48c: f817 0b01 ldrb.w r0, [r7], #1 f490: f1a0 0c30 sub.w ip, r0, #48 ; 0x30 f494: f1bc 0f09 cmp.w ip, #9 f498: d9f2 bls.n f480 <_vsnprintf.constprop.0+0xf4> f49a: 4617 mov r7, r2 switch(*format) { f49c: 463a mov r2, r7 f49e: f812 0b01 ldrb.w r0, [r2], #1 f4a2: 286c cmp r0, #108 ; 0x6c f4a4: d033 beq.n f50e <_vsnprintf.constprop.0+0x182> f4a6: d82b bhi.n f500 <_vsnprintf.constprop.0+0x174> f4a8: 2868 cmp r0, #104 ; 0x68 f4aa: d037 beq.n f51c <_vsnprintf.constprop.0+0x190> f4ac: 286a cmp r0, #106 ; 0x6a f4ae: d03f beq.n f530 <_vsnprintf.constprop.0+0x1a4> switch(*format) { f4b0: f817 eb01 ldrb.w lr, [r7], #1 f4b4: f1be 0f78 cmp.w lr, #120 ; 0x78 f4b8: d811 bhi.n f4de <_vsnprintf.constprop.0+0x152> f4ba: f1be 0f63 cmp.w lr, #99 ; 0x63 f4be: d83a bhi.n f536 <_vsnprintf.constprop.0+0x1aa> f4c0: f1be 0f62 cmp.w lr, #98 ; 0x62 f4c4: f000 80a2 beq.w f60c <_vsnprintf.constprop.0+0x280> f4c8: f1be 0f63 cmp.w lr, #99 ; 0x63 f4cc: f000 80fc beq.w f6c8 <_vsnprintf.constprop.0+0x33c> f4d0: f1be 0f25 cmp.w lr, #37 ; 0x25 f4d4: d003 beq.n f4de <_vsnprintf.constprop.0+0x152> f4d6: f1be 0f58 cmp.w lr, #88 ; 0x58 f4da: f000 8093 beq.w f604 <_vsnprintf.constprop.0+0x278> out(*format, buffer, idx++, maxlen); f4de: 1c6c adds r4, r5, #1 f4e0: 464b mov r3, r9 f4e2: 462a mov r2, r5 f4e4: 910a str r1, [sp, #40] ; 0x28 f4e6: 4670 mov r0, lr f4e8: e773 b.n f3d2 <_vsnprintf.constprop.0+0x46> else if(*format == '*') { f4ea: 282a cmp r0, #42 ; 0x2a f4ec: d105 bne.n f4fa <_vsnprintf.constprop.0+0x16e> precision = prec > 0 ? (unsigned int)prec : 0U; f4ee: f856 4b04 ldr.w r4, [r6], #4 format++; f4f2: 3702 adds r7, #2 precision = prec > 0 ? (unsigned int)prec : 0U; f4f4: ea24 74e4 bic.w r4, r4, r4, asr #31 format++; f4f8: e7d0 b.n f49c <_vsnprintf.constprop.0+0x110> format++; f4fa: 4617 mov r7, r2 precision = 0U; f4fc: 2400 movs r4, #0 f4fe: e7cd b.n f49c <_vsnprintf.constprop.0+0x110> switch(*format) { f500: 2874 cmp r0, #116 ; 0x74 f502: d001 beq.n f508 <_vsnprintf.constprop.0+0x17c> f504: 287a cmp r0, #122 ; 0x7a f506: d1d3 bne.n f4b0 <_vsnprintf.constprop.0+0x124> flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); f508: f443 7380 orr.w r3, r3, #256 ; 0x100 f50c: e00b b.n f526 <_vsnprintf.constprop.0+0x19a> if(*format == 'l') { f50e: 7878 ldrb r0, [r7, #1] f510: 286c cmp r0, #108 ; 0x6c f512: d1f9 bne.n f508 <_vsnprintf.constprop.0+0x17c> flags |= FLAGS_LONG_LONG; f514: f443 7340 orr.w r3, r3, #768 ; 0x300 format++; f518: 3702 adds r7, #2 f51a: e7c9 b.n f4b0 <_vsnprintf.constprop.0+0x124> if(*format == 'h') { f51c: 7878 ldrb r0, [r7, #1] f51e: 2868 cmp r0, #104 ; 0x68 f520: d003 beq.n f52a <_vsnprintf.constprop.0+0x19e> flags |= FLAGS_SHORT; f522: f043 0380 orr.w r3, r3, #128 ; 0x80 format++; f526: 4617 mov r7, r2 break; f528: e7c2 b.n f4b0 <_vsnprintf.constprop.0+0x124> flags |= FLAGS_CHAR; f52a: f043 03c0 orr.w r3, r3, #192 ; 0xc0 f52e: e7f3 b.n f518 <_vsnprintf.constprop.0+0x18c> flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); f530: f443 7300 orr.w r3, r3, #512 ; 0x200 break; f534: e7f7 b.n f526 <_vsnprintf.constprop.0+0x19a> f536: f1ae 0c64 sub.w ip, lr, #100 ; 0x64 f53a: 4845 ldr r0, [pc, #276] ; (f650 <_vsnprintf.constprop.0+0x2c4>) f53c: fa5f fc8c uxtb.w ip, ip f540: 2201 movs r2, #1 f542: fa02 f20c lsl.w r2, r2, ip f546: 4002 ands r2, r0 f548: d11b bne.n f582 <_vsnprintf.constprop.0+0x1f6> f54a: f1be 0f73 cmp.w lr, #115 ; 0x73 f54e: f000 80fb beq.w f748 <_vsnprintf.constprop.0+0x3bc> f552: f1be 0f70 cmp.w lr, #112 ; 0x70 f556: d1c2 bne.n f4de <_vsnprintf.constprop.0+0x152> flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE; f558: f043 0321 orr.w r3, r3, #33 ; 0x21 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, f55c: 9305 str r3, [sp, #20] f55e: 2308 movs r3, #8 f560: e9cd 4303 strd r4, r3, [sp, #12] f564: 2310 movs r3, #16 f566: e9cd 2301 strd r2, r3, [sp, #4] f56a: f856 3b04 ldr.w r3, [r6], #4 f56e: 9300 str r3, [sp, #0] f570: 462a mov r2, r5 f572: 4c38 ldr r4, [pc, #224] ; (f654 <_vsnprintf.constprop.0+0x2c8>) f574: 910a str r1, [sp, #40] ; 0x28 f576: 464b mov r3, r9 f578: 4658 mov r0, fp f57a: 47a0 blx r4 f57c: 4605 mov r5, r0 out(*format, buffer, idx++, maxlen); f57e: 990a ldr r1, [sp, #40] ; 0x28 break; f580: e711 b.n f3a6 <_vsnprintf.constprop.0+0x1a> if(*format == 'x' || *format == 'X') { f582: f1be 0f78 cmp.w lr, #120 ; 0x78 f586: d03f beq.n f608 <_vsnprintf.constprop.0+0x27c> f588: f1be 0f6f cmp.w lr, #111 ; 0x6f f58c: f000 8144 beq.w f818 <_vsnprintf.constprop.0+0x48c> if((*format != 'i') && (*format != 'd')) { f590: f1be 0f69 cmp.w lr, #105 ; 0x69 flags &= ~FLAGS_HASH; // no hash for dec format f594: f023 0310 bic.w r3, r3, #16 base = 10U; f598: f04f 020a mov.w r2, #10 if((*format != 'i') && (*format != 'd')) { f59c: d002 beq.n f5a4 <_vsnprintf.constprop.0+0x218> f59e: f1be 0f64 cmp.w lr, #100 ; 0x64 f5a2: d134 bne.n f60e <_vsnprintf.constprop.0+0x282> if(flags & FLAGS_PRECISION) { f5a4: 0558 lsls r0, r3, #21 flags &= ~FLAGS_ZEROPAD; f5a6: bf48 it mi f5a8: f023 0301 bicmi.w r3, r3, #1 if((*format == 'i') || (*format == 'd')) { f5ac: f1be 0f69 cmp.w lr, #105 ; 0x69 if(flags & FLAGS_LONG_LONG) { f5b0: f403 7c00 and.w ip, r3, #512 ; 0x200 if((*format == 'i') || (*format == 'd')) { f5b4: d002 beq.n f5bc <_vsnprintf.constprop.0+0x230> f5b6: f1be 0f64 cmp.w lr, #100 ; 0x64 f5ba: d14f bne.n f65c <_vsnprintf.constprop.0+0x2d0> if(flags & FLAGS_LONG_LONG) { f5bc: f1bc 0f00 cmp.w ip, #0 f5c0: d028 beq.n f614 <_vsnprintf.constprop.0+0x288> const long long value = va_arg(va, long long); f5c2: 3607 adds r6, #7 f5c4: f026 0607 bic.w r6, r6, #7 f5c8: 46b2 mov sl, r6 f5ca: 6876 ldr r6, [r6, #4] f5cc: f85a 0b08 ldr.w r0, [sl], #8 idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base, f5d0: 9406 str r4, [sp, #24] f5d2: e9cd 8307 strd r8, r3, [sp, #28] f5d6: 2300 movs r3, #0 f5d8: 9305 str r3, [sp, #20] f5da: 0ff3 lsrs r3, r6, #31 f5dc: 2e00 cmp r6, #0 f5de: 9302 str r3, [sp, #8] f5e0: 9204 str r2, [sp, #16] f5e2: 4603 mov r3, r0 f5e4: da02 bge.n f5ec <_vsnprintf.constprop.0+0x260> f5e6: 4243 negs r3, r0 f5e8: eb66 0646 sbc.w r6, r6, r6, lsl #1 f5ec: e9cd 3600 strd r3, r6, [sp] idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); f5f0: 4c19 ldr r4, [pc, #100] ; (f658 <_vsnprintf.constprop.0+0x2cc>) f5f2: 910a str r1, [sp, #40] ; 0x28 f5f4: 464b mov r3, r9 f5f6: 462a mov r2, r5 f5f8: 4658 mov r0, fp f5fa: 47a0 blx r4 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f5fc: 990a ldr r1, [sp, #40] ; 0x28 f5fe: 4605 mov r5, r0 break; f600: 4656 mov r6, sl f602: e6d0 b.n f3a6 <_vsnprintf.constprop.0+0x1a> flags |= FLAGS_UPPERCASE; f604: f043 0320 orr.w r3, r3, #32 base = 16U; f608: 2210 movs r2, #16 f60a: e000 b.n f60e <_vsnprintf.constprop.0+0x282> switch(*format) { f60c: 2202 movs r2, #2 flags &= ~(FLAGS_PLUS | FLAGS_SPACE); f60e: f023 030c bic.w r3, r3, #12 f612: e7c7 b.n f5a4 <_vsnprintf.constprop.0+0x218> else if(flags & FLAGS_LONG) { f614: 05d8 lsls r0, r3, #23 idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); f616: f106 0a04 add.w sl, r6, #4 else if(flags & FLAGS_LONG) { f61a: d501 bpl.n f620 <_vsnprintf.constprop.0+0x294> int) : va_arg(va, int); f61c: 6830 ldr r0, [r6, #0] f61e: e002 b.n f626 <_vsnprintf.constprop.0+0x29a> const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, f620: 0658 lsls r0, r3, #25 f622: d50c bpl.n f63e <_vsnprintf.constprop.0+0x2b2> f624: 7830 ldrb r0, [r6, #0] idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision, f626: e9cd 2402 strd r2, r4, [sp, #8] f62a: e9cd 8304 strd r8, r3, [sp, #16] f62e: 2800 cmp r0, #0 f630: ea4f 73d0 mov.w r3, r0, lsr #31 f634: 9301 str r3, [sp, #4] f636: bfb8 it lt f638: 4240 neglt r0, r0 idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f63a: 9000 str r0, [sp, #0] f63c: e02d b.n f69a <_vsnprintf.constprop.0+0x30e> int) : va_arg(va, int); f63e: 0618 lsls r0, r3, #24 f640: d5ec bpl.n f61c <_vsnprintf.constprop.0+0x290> f642: f9b6 0000 ldrsh.w r0, [r6] f646: e7ee b.n f626 <_vsnprintf.constprop.0+0x29a> f648: 0000f0d5 .word 0x0000f0d5 f64c: 0000f0dd .word 0x0000f0dd f650: 00120821 .word 0x00120821 f654: 0000f23d .word 0x0000f23d f658: 0000f2c5 .word 0x0000f2c5 if(flags & FLAGS_LONG_LONG) { f65c: f1bc 0f00 cmp.w ip, #0 f660: d00f beq.n f682 <_vsnprintf.constprop.0+0x2f6> idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); f662: e9cd 8307 strd r8, r3, [sp, #28] f666: 2300 movs r3, #0 f668: e9cd 2304 strd r2, r3, [sp, #16] f66c: f106 0a07 add.w sl, r6, #7 f670: f02a 0a07 bic.w sl, sl, #7 f674: 9406 str r4, [sp, #24] f676: 9302 str r3, [sp, #8] f678: e8fa 2302 ldrd r2, r3, [sl], #8 f67c: e9cd 2300 strd r2, r3, [sp] f680: e7b6 b.n f5f0 <_vsnprintf.constprop.0+0x264> else if(flags & FLAGS_LONG) { f682: 05d8 lsls r0, r3, #23 idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); f684: f106 0a04 add.w sl, r6, #4 else if(flags & FLAGS_LONG) { f688: d50e bpl.n f6a8 <_vsnprintf.constprop.0+0x31c> idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); f68a: e9cd 8304 strd r8, r3, [sp, #16] f68e: e9cd 2402 strd r2, r4, [sp, #8] f692: f8cd c004 str.w ip, [sp, #4] f696: 6833 ldr r3, [r6, #0] f698: 9300 str r3, [sp, #0] idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f69a: 4c60 ldr r4, [pc, #384] ; (f81c <_vsnprintf.constprop.0+0x490>) f69c: 910a str r1, [sp, #40] ; 0x28 f69e: 464b mov r3, r9 f6a0: 462a mov r2, r5 f6a2: 4658 mov r0, fp f6a4: 47a0 blx r4 f6a6: e7a9 b.n f5fc <_vsnprintf.constprop.0+0x270> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); f6a8: 0658 lsls r0, r3, #25 f6aa: d507 bpl.n f6bc <_vsnprintf.constprop.0+0x330> f6ac: 7830 ldrb r0, [r6, #0] idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); f6ae: e9cd 8304 strd r8, r3, [sp, #16] f6b2: 2300 movs r3, #0 f6b4: e9cd 2402 strd r2, r4, [sp, #8] f6b8: 9301 str r3, [sp, #4] f6ba: e7be b.n f63a <_vsnprintf.constprop.0+0x2ae> f6bc: 6830 ldr r0, [r6, #0] unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); f6be: f013 0f80 tst.w r3, #128 ; 0x80 f6c2: bf18 it ne f6c4: b280 uxthne r0, r0 f6c6: e7f2 b.n f6ae <_vsnprintf.constprop.0+0x322> if(!(flags & FLAGS_LEFT)) { f6c8: f013 0402 ands.w r4, r3, #2 f6cc: d026 beq.n f71c <_vsnprintf.constprop.0+0x390> unsigned int l = 1U; f6ce: f04f 0a01 mov.w sl, #1 out((char)va_arg(va, int), buffer, idx++, maxlen); f6d2: 1c6b adds r3, r5, #1 f6d4: 930a str r3, [sp, #40] ; 0x28 f6d6: 910b str r1, [sp, #44] ; 0x2c f6d8: f816 0b04 ldrb.w r0, [r6], #4 f6dc: 464b mov r3, r9 f6de: 462a mov r2, r5 f6e0: 47d8 blx fp if(flags & FLAGS_LEFT) { f6e2: 990b ldr r1, [sp, #44] ; 0x2c f6e4: b374 cbz r4, f744 <_vsnprintf.constprop.0+0x3b8> out((char)va_arg(va, int), buffer, idx++, maxlen); f6e6: 9a0a ldr r2, [sp, #40] ; 0x28 f6e8: 4654 mov r4, sl f6ea: e021 b.n f730 <_vsnprintf.constprop.0+0x3a4> out(' ', buffer, idx++, maxlen); f6ec: 910a str r1, [sp, #40] ; 0x28 f6ee: 464b mov r3, r9 f6f0: 2020 movs r0, #32 f6f2: 47d8 blx fp f6f4: 990a ldr r1, [sp, #40] ; 0x28 f6f6: eb05 020a add.w r2, r5, sl while(l++ < width) { f6fa: f10a 0a01 add.w sl, sl, #1 f6fe: 45c2 cmp sl, r8 f700: d3f4 bcc.n f6ec <_vsnprintf.constprop.0+0x360> f702: f1b8 0f00 cmp.w r8, #0 f706: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff f70a: bf08 it eq f70c: 2300 moveq r3, #0 f70e: f108 0a01 add.w sl, r8, #1 f712: 441d add r5, r3 f714: bf08 it eq f716: f04f 0a02 moveq.w sl, #2 f71a: e7da b.n f6d2 <_vsnprintf.constprop.0+0x346> f71c: 46a2 mov sl, r4 f71e: e7ea b.n f6f6 <_vsnprintf.constprop.0+0x36a> out(' ', buffer, idx++, maxlen); f720: 910b str r1, [sp, #44] ; 0x2c f722: 464b mov r3, r9 f724: 2020 movs r0, #32 f726: 1c55 adds r5, r2, #1 f728: 47d8 blx fp f72a: 990b ldr r1, [sp, #44] ; 0x2c f72c: 3401 adds r4, #1 f72e: 462a mov r2, r5 while(l++ < width) { f730: 4544 cmp r4, r8 f732: d3f5 bcc.n f720 <_vsnprintf.constprop.0+0x394> f734: 9a0a ldr r2, [sp, #40] ; 0x28 f736: eba8 030a sub.w r3, r8, sl f73a: 45d0 cmp r8, sl f73c: bf38 it cc f73e: 2300 movcc r3, #0 f740: 441a add r2, r3 f742: 920a str r2, [sp, #40] ; 0x28 break; f744: 9d0a ldr r5, [sp, #40] ; 0x28 f746: e62e b.n f3a6 <_vsnprintf.constprop.0+0x1a> const char * p = va_arg(va, char *); f748: 4632 mov r2, r6 unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); f74a: 2c00 cmp r4, #0 const char * p = va_arg(va, char *); f74c: f852 6b04 ldr.w r6, [r2], #4 f750: 920a str r2, [sp, #40] ; 0x28 unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); f752: bf14 ite ne f754: 4620 movne r0, r4 f756: f04f 30ff moveq.w r0, #4294967295 ; 0xffffffff f75a: 4430 add r0, r6 f75c: 4632 mov r2, r6 for(s = str; *s && maxsize--; ++s); f75e: f892 c000 ldrb.w ip, [r2] f762: f1bc 0f00 cmp.w ip, #0 f766: d001 beq.n f76c <_vsnprintf.constprop.0+0x3e0> f768: 4290 cmp r0, r2 f76a: d111 bne.n f790 <_vsnprintf.constprop.0+0x404> return (unsigned int)(s - str); f76c: eba2 0a06 sub.w sl, r2, r6 if(flags & FLAGS_PRECISION) { f770: f413 6280 ands.w r2, r3, #1024 ; 0x400 f774: 920b str r2, [sp, #44] ; 0x2c f776: d002 beq.n f77e <_vsnprintf.constprop.0+0x3f2> l = (l < precision ? l : precision); f778: 45a2 cmp sl, r4 f77a: bf28 it cs f77c: 46a2 movcs sl, r4 if(!(flags & FLAGS_LEFT)) { f77e: f013 0302 ands.w r3, r3, #2 f782: 930c str r3, [sp, #48] ; 0x30 f784: d11c bne.n f7c0 <_vsnprintf.constprop.0+0x434> f786: ebaa 0305 sub.w r3, sl, r5 f78a: 462a mov r2, r5 f78c: 930e str r3, [sp, #56] ; 0x38 f78e: e009 b.n f7a4 <_vsnprintf.constprop.0+0x418> for(s = str; *s && maxsize--; ++s); f790: 3201 adds r2, #1 f792: e7e4 b.n f75e <_vsnprintf.constprop.0+0x3d2> out(' ', buffer, idx++, maxlen); f794: 1c53 adds r3, r2, #1 f796: 930d str r3, [sp, #52] ; 0x34 f798: 910f str r1, [sp, #60] ; 0x3c f79a: 464b mov r3, r9 f79c: 2020 movs r0, #32 f79e: 47d8 blx fp f7a0: 9a0d ldr r2, [sp, #52] ; 0x34 f7a2: 990f ldr r1, [sp, #60] ; 0x3c while(l++ < width) { f7a4: 9b0e ldr r3, [sp, #56] ; 0x38 f7a6: 18d3 adds r3, r2, r3 f7a8: 4543 cmp r3, r8 f7aa: d3f3 bcc.n f794 <_vsnprintf.constprop.0+0x408> f7ac: eba8 030a sub.w r3, r8, sl f7b0: 45d0 cmp r8, sl f7b2: bf38 it cc f7b4: 2300 movcc r3, #0 f7b6: f10a 0201 add.w r2, sl, #1 f7ba: 441d add r5, r3 f7bc: eb03 0a02 add.w sl, r3, r2 f7c0: 1bab subs r3, r5, r6 f7c2: 930d str r3, [sp, #52] ; 0x34 f7c4: e005 b.n f7d2 <_vsnprintf.constprop.0+0x446> f7c6: 461c mov r4, r3 out(*(p++), buffer, idx++, maxlen); f7c8: 910e str r1, [sp, #56] ; 0x38 f7ca: 464b mov r3, r9 f7cc: 462a mov r2, r5 f7ce: 47d8 blx fp f7d0: 990e ldr r1, [sp, #56] ; 0x38 f7d2: 9b0d ldr r3, [sp, #52] ; 0x34 f7d4: 199d adds r5, r3, r6 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { f7d6: f816 0b01 ldrb.w r0, [r6], #1 f7da: b128 cbz r0, f7e8 <_vsnprintf.constprop.0+0x45c> f7dc: 9b0b ldr r3, [sp, #44] ; 0x2c f7de: 2b00 cmp r3, #0 f7e0: d0f2 beq.n f7c8 <_vsnprintf.constprop.0+0x43c> f7e2: 1e63 subs r3, r4, #1 f7e4: 2c00 cmp r4, #0 f7e6: d1ee bne.n f7c6 <_vsnprintf.constprop.0+0x43a> if(flags & FLAGS_LEFT) { f7e8: 9b0c ldr r3, [sp, #48] ; 0x30 f7ea: b19b cbz r3, f814 <_vsnprintf.constprop.0+0x488> f7ec: 462a mov r2, r5 f7ee: ebaa 0405 sub.w r4, sl, r5 f7f2: e006 b.n f802 <_vsnprintf.constprop.0+0x476> out(' ', buffer, idx++, maxlen); f7f4: 910b str r1, [sp, #44] ; 0x2c f7f6: 464b mov r3, r9 f7f8: 2020 movs r0, #32 f7fa: 1c56 adds r6, r2, #1 f7fc: 47d8 blx fp f7fe: 990b ldr r1, [sp, #44] ; 0x2c f800: 4632 mov r2, r6 while(l++ < width) { f802: 18a3 adds r3, r4, r2 f804: 4598 cmp r8, r3 f806: d8f5 bhi.n f7f4 <_vsnprintf.constprop.0+0x468> f808: eba8 030a sub.w r3, r8, sl f80c: 45d0 cmp r8, sl f80e: bf38 it cc f810: 2300 movcc r3, #0 f812: 441d add r5, r3 const char * p = va_arg(va, char *); f814: 9e0a ldr r6, [sp, #40] ; 0x28 break; f816: e5c6 b.n f3a6 <_vsnprintf.constprop.0+0x1a> if(*format == 'x' || *format == 'X') { f818: 2208 movs r2, #8 f81a: e6f8 b.n f60e <_vsnprintf.constprop.0+0x282> f81c: 0000f23d .word 0x0000f23d 0000f820 : va_end(va); return ret; } int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va) { f820: b410 push {r4} return _vsnprintf(_out_buffer, buffer, count, format, va); f822: 4c02 ldr r4, [pc, #8] ; (f82c ) f824: 46a4 mov ip, r4 } f826: f85d 4b04 ldr.w r4, [sp], #4 return _vsnprintf(_out_buffer, buffer, count, format, va); f82a: 4760 bx ip f82c: 0000f38d .word 0x0000f38d 0000f830 <_lv_task_core_init>: /** * Init the lv_task module */ void _lv_task_core_init(void) { f830: b508 push {r3, lr} _lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t)); f832: 4805 ldr r0, [pc, #20] ; (f848 <_lv_task_core_init+0x18>) f834: 4b05 ldr r3, [pc, #20] ; (f84c <_lv_task_core_init+0x1c>) f836: 2118 movs r1, #24 f838: 4798 blx r3 task_list_changed = false; f83a: 4b05 ldr r3, [pc, #20] ; (f850 <_lv_task_core_init+0x20>) f83c: 2200 movs r2, #0 f83e: 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; f840: 2201 movs r2, #1 f842: 705a strb r2, [r3, #1] } f844: bd08 pop {r3, pc} f846: bf00 nop f848: 20008600 .word 0x20008600 f84c: 0000e605 .word 0x0000e605 f850: 2000c7b4 .word 0x2000c7b4 0000f854 : { f854: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); f856: 4b36 ldr r3, [pc, #216] ; (f930 ) f858: 4836 ldr r0, [pc, #216] ; (f934 ) f85a: 4798 blx r3 if(NULL == tmp) { f85c: 4605 mov r5, r0 f85e: b1e0 cbz r0, f89a tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); f860: 4e34 ldr r6, [pc, #208] ; (f934 ) f862: 4c35 ldr r4, [pc, #212] ; (f938 ) if(tmp->prio <= DEF_PRIO) { f864: 7d2b ldrb r3, [r5, #20] f866: f003 0307 and.w r3, r3, #7 f86a: 2b03 cmp r3, #3 new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); f86c: 4629 mov r1, r5 if(tmp->prio <= DEF_PRIO) { f86e: d82e bhi.n f8ce new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); f870: 4b32 ldr r3, [pc, #200] ; (f93c ) f872: 4830 ldr r0, [pc, #192] ; (f934 ) f874: 4798 blx r3 LV_ASSERT_MEM(new_task); f876: 4b32 ldr r3, [pc, #200] ; (f940 ) new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); f878: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); f87a: 4798 blx r3 f87c: 4605 mov r5, r0 f87e: bb08 cbnz r0, f8c4 f880: 4b30 ldr r3, [pc, #192] ; (f944 ) f882: 4931 ldr r1, [pc, #196] ; (f948 ) f884: 9300 str r3, [sp, #0] f886: 22db movs r2, #219 ; 0xdb f888: 2003 movs r0, #3 f88a: 4e30 ldr r6, [pc, #192] ; (f94c ) f88c: 47b0 blx r6 f88e: 4830 ldr r0, [pc, #192] ; (f950 ) f890: 4930 ldr r1, [pc, #192] ; (f954 ) f892: 4622 mov r2, r4 f894: 462b mov r3, r5 f896: 4788 blx r1 f898: e7fe b.n f898 new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); f89a: 4b2f ldr r3, [pc, #188] ; (f958 ) f89c: 4825 ldr r0, [pc, #148] ; (f934 ) f89e: 4798 blx r3 LV_ASSERT_MEM(new_task); f8a0: 4b27 ldr r3, [pc, #156] ; (f940 ) new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); f8a2: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); f8a4: 4798 blx r3 f8a6: 4605 mov r5, r0 f8a8: b960 cbnz r0, f8c4 f8aa: 4b26 ldr r3, [pc, #152] ; (f944 ) f8ac: 4926 ldr r1, [pc, #152] ; (f948 ) f8ae: 9300 str r3, [sp, #0] f8b0: 22d3 movs r2, #211 ; 0xd3 f8b2: 2003 movs r0, #3 f8b4: 4e25 ldr r6, [pc, #148] ; (f94c ) f8b6: 47b0 blx r6 f8b8: 4825 ldr r0, [pc, #148] ; (f950 ) f8ba: 4926 ldr r1, [pc, #152] ; (f954 ) f8bc: 4622 mov r2, r4 f8be: 462b mov r3, r5 f8c0: 4788 blx r1 f8c2: e7fe b.n f8c2 if(new_task == NULL) return NULL; f8c4: b9ec cbnz r4, f902 f8c6: 2400 movs r4, #0 } f8c8: 4620 mov r0, r4 f8ca: b003 add sp, #12 f8cc: bdf0 pop {r4, r5, r6, r7, pc} tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); f8ce: 4630 mov r0, r6 f8d0: 47a0 blx r4 } while(tmp != NULL); f8d2: 4605 mov r5, r0 f8d4: 2800 cmp r0, #0 f8d6: d1c5 bne.n f864 new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); f8d8: 4b20 ldr r3, [pc, #128] ; (f95c ) f8da: 4816 ldr r0, [pc, #88] ; (f934 ) f8dc: 4798 blx r3 LV_ASSERT_MEM(new_task); f8de: 4b18 ldr r3, [pc, #96] ; (f940 ) new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); f8e0: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); f8e2: 4798 blx r3 f8e4: 2800 cmp r0, #0 f8e6: d1ed bne.n f8c4 f8e8: 4b16 ldr r3, [pc, #88] ; (f944 ) f8ea: 4917 ldr r1, [pc, #92] ; (f948 ) f8ec: 9300 str r3, [sp, #0] f8ee: 22e5 movs r2, #229 ; 0xe5 f8f0: 2003 movs r0, #3 f8f2: 4e16 ldr r6, [pc, #88] ; (f94c ) f8f4: 47b0 blx r6 f8f6: 4816 ldr r0, [pc, #88] ; (f950 ) f8f8: 4916 ldr r1, [pc, #88] ; (f954 ) f8fa: 4622 mov r2, r4 f8fc: 462b mov r3, r5 f8fe: 4788 blx r1 f900: e7fe b.n f900 new_task->period = DEF_PERIOD; f902: f44f 73fa mov.w r3, #500 ; 0x1f4 f906: 6023 str r3, [r4, #0] new_task->prio = DEF_PRIO; f908: 7d23 ldrb r3, [r4, #20] task_list_changed = true; f90a: 4d15 ldr r5, [pc, #84] ; (f960 ) new_task->prio = DEF_PRIO; f90c: 2203 movs r2, #3 f90e: f362 0302 bfi r3, r2, #0, #3 new_task->task_cb = NULL; f912: 2700 movs r7, #0 new_task->prio = DEF_PRIO; f914: 7523 strb r3, [r4, #20] new_task->repeat_count = -1; f916: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff task_list_changed = true; f91a: 2601 movs r6, #1 new_task->repeat_count = -1; f91c: 6123 str r3, [r4, #16] new_task->task_cb = NULL; f91e: 60a7 str r7, [r4, #8] new_task->last_run = lv_tick_get(); f920: 4b10 ldr r3, [pc, #64] ; (f964 ) task_list_changed = true; f922: 702e strb r6, [r5, #0] new_task->last_run = lv_tick_get(); f924: 4798 blx r3 new_task->user_data = NULL; f926: 60e7 str r7, [r4, #12] new_task->last_run = lv_tick_get(); f928: 6060 str r0, [r4, #4] task_created = true; f92a: 70ae strb r6, [r5, #2] return new_task; f92c: e7cc b.n f8c8 f92e: bf00 nop f930: 0000e6a9 .word 0x0000e6a9 f934: 20008600 .word 0x20008600 f938: 0000e6b5 .word 0x0000e6b5 f93c: 0000e6f5 .word 0x0000e6f5 f940: 000017e1 .word 0x000017e1 f944: 000241c2 .word 0x000241c2 f948: 00024192 .word 0x00024192 f94c: 0000e8e9 .word 0x0000e8e9 f950: 0001edbe .word 0x0001edbe f954: 000017e9 .word 0x000017e9 f958: 0000e619 .word 0x0000e619 f95c: 0000e661 .word 0x0000e661 f960: 2000c7b4 .word 0x2000c7b4 f964: 0000da49 .word 0x0000da49 0000f968 : { f968: b570 push {r4, r5, r6, lr} _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); f96a: 4601 mov r1, r0 { f96c: 4604 mov r4, r0 _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); f96e: 4b07 ldr r3, [pc, #28] ; (f98c ) f970: 4807 ldr r0, [pc, #28] ; (f990 ) task_list_changed = true; f972: 4d08 ldr r5, [pc, #32] ; (f994 ) _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); f974: 4798 blx r3 task_list_changed = true; f976: 2601 movs r6, #1 lv_mem_free(task); f978: 4b07 ldr r3, [pc, #28] ; (f998 ) task_list_changed = true; f97a: 702e strb r6, [r5, #0] lv_mem_free(task); f97c: 4620 mov r0, r4 f97e: 4798 blx r3 if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ f980: 4b06 ldr r3, [pc, #24] ; (f99c ) f982: 681b ldr r3, [r3, #0] f984: 42a3 cmp r3, r4 f986: bf08 it eq f988: 70ee strbeq r6, [r5, #3] } f98a: bd70 pop {r4, r5, r6, pc} f98c: 0000e76d .word 0x0000e76d f990: 20008600 .word 0x20008600 f994: 2000c7b4 .word 0x2000c7b4 f998: 0000eae5 .word 0x0000eae5 f99c: 20008670 .word 0x20008670 0000f9a0 : * 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) { f9a0: 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); f9a2: 4b12 ldr r3, [pc, #72] ; (f9ec ) { f9a4: 4604 mov r4, r0 uint32_t elp = lv_tick_elaps(task->last_run); f9a6: 6840 ldr r0, [r0, #4] f9a8: 4798 blx r3 if(lv_task_time_remaining(task) == 0) { f9aa: 6823 ldr r3, [r4, #0] f9ac: 4298 cmp r0, r3 f9ae: d31b bcc.n f9e8 task->last_run = lv_tick_get(); f9b0: 4b0f ldr r3, [pc, #60] ; (f9f0 ) task_deleted = false; f9b2: 4d10 ldr r5, [pc, #64] ; (f9f4 ) task->last_run = lv_tick_get(); f9b4: 4798 blx r3 task_deleted = false; f9b6: 2300 movs r3, #0 f9b8: 70eb strb r3, [r5, #3] task_created = false; f9ba: 70ab strb r3, [r5, #2] if(task->task_cb) task->task_cb(task); f9bc: 68a3 ldr r3, [r4, #8] task->last_run = lv_tick_get(); f9be: 6060 str r0, [r4, #4] if(task->task_cb) task->task_cb(task); f9c0: b943 cbnz r3, f9d4 if(task->repeat_count > 0) { f9c2: 6923 ldr r3, [r4, #16] f9c4: 2b00 cmp r3, #0 f9c6: dc0c bgt.n f9e2 if(task->repeat_count == 0) { f9c8: 6923 ldr r3, [r4, #16] f9ca: b943 cbnz r3, f9de lv_task_del(task); f9cc: 4b0a ldr r3, [pc, #40] ; (f9f8 ) f9ce: 4620 mov r0, r4 f9d0: 4798 blx r3 f9d2: e004 b.n f9de if(task->task_cb) task->task_cb(task); f9d4: 4620 mov r0, r4 f9d6: 4798 blx r3 if(task_deleted == false) { /*The task might be deleted by itself as well*/ f9d8: 78eb ldrb r3, [r5, #3] f9da: 2b00 cmp r3, #0 f9dc: d0f1 beq.n f9c2 lv_task_del(task); f9de: 2001 movs r0, #1 } f9e0: bd38 pop {r3, r4, r5, pc} task->repeat_count--; f9e2: 3b01 subs r3, #1 f9e4: 6123 str r3, [r4, #16] f9e6: e7ef b.n f9c8 bool exec = false; f9e8: 2000 movs r0, #0 f9ea: e7f9 b.n f9e0 f9ec: 0000da5d .word 0x0000da5d f9f0: 0000da49 .word 0x0000da49 f9f4: 2000c7b4 .word 0x2000c7b4 f9f8: 0000f969 .word 0x0000f969 0000f9fc : { f9fc: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} if(already_running) return 1; fa00: f8df b15c ldr.w fp, [pc, #348] ; fb60 fa04: f89b 4004 ldrb.w r4, [fp, #4] fa08: 2001 movs r0, #1 fa0a: b934 cbnz r4, fa1a if(lv_task_run == false) { fa0c: f89b 2001 ldrb.w r2, [fp, #1] already_running = true; fa10: f88b 0004 strb.w r0, [fp, #4] if(lv_task_run == false) { fa14: b91a cbnz r2, fa1e already_running = false; /*Release mutex*/ fa16: f88b 2004 strb.w r2, [fp, #4] } fa1a: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} handler_start = lv_tick_get(); fa1e: f8df 8144 ldr.w r8, [pc, #324] ; fb64 LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa22: f8df a138 ldr.w sl, [pc, #312] ; fb5c fa26: f8df 9140 ldr.w r9, [pc, #320] ; fb68 handler_start = lv_tick_get(); fa2a: 47c0 blx r8 fa2c: f8cb 0008 str.w r0, [fp, #8] task_deleted = false; fa30: 2200 movs r2, #0 LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa32: 4650 mov r0, sl task_deleted = false; fa34: f88b 2003 strb.w r2, [fp, #3] task_created = false; fa38: f88b 2002 strb.w r2, [fp, #2] LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa3c: 47c8 blx r9 fa3e: 4d43 ldr r5, [pc, #268] ; (fb4c ) if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { fa40: 4f43 ldr r7, [pc, #268] ; (fb50 ) LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fa42: 6028 str r0, [r5, #0] while(LV_GC_ROOT(_lv_task_act)) { fa44: 6829 ldr r1, [r5, #0] fa46: b189 cbz r1, fa6c next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); fa48: 4b42 ldr r3, [pc, #264] ; (fb54 ) fa4a: 4650 mov r0, sl fa4c: 4798 blx r3 fa4e: 4606 mov r6, r0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) { fa50: 6828 ldr r0, [r5, #0] fa52: 7d02 ldrb r2, [r0, #20] fa54: f012 0107 ands.w r1, r2, #7 fa58: d008 beq.n fa6c if(LV_GC_ROOT(_lv_task_act) == task_interrupter) { fa5a: 42a0 cmp r0, r4 fa5c: d050 beq.n fb00 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) { fa5e: 2905 cmp r1, #5 fa60: d139 bne.n fad6 lv_task_exec(LV_GC_ROOT(_lv_task_act)); fa62: 47b8 blx r7 if(task_created || task_deleted) { fa64: f89b 2002 ldrb.w r2, [fp, #2] fa68: 2a00 cmp r2, #0 fa6a: d062 beq.n fb32 busy_time += lv_tick_elaps(handler_start); fa6c: 4c3a ldr r4, [pc, #232] ; (fb58 ) fa6e: f8db 0008 ldr.w r0, [fp, #8] fa72: 47a0 blx r4 fa74: f8db 200c ldr.w r2, [fp, #12] fa78: 4410 add r0, r2 fa7a: f8cb 000c str.w r0, [fp, #12] uint32_t idle_period_time = lv_tick_elaps(idle_period_start); fa7e: f8db 0014 ldr.w r0, [fp, #20] fa82: 47a0 blx r4 if(idle_period_time >= IDLE_MEAS_PERIOD) { fa84: f5b0 7ffa cmp.w r0, #500 ; 0x1f4 fa88: d316 bcc.n fab8 idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/ fa8a: f8db 200c ldr.w r2, [fp, #12] fa8e: 2164 movs r1, #100 ; 0x64 fa90: 434a muls r2, r1 fa92: f44f 71fa mov.w r1, #500 ; 0x1f4 fa96: fbb2 f2f1 udiv r2, r2, r1 fa9a: b2d2 uxtb r2, r2 idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/ fa9c: 2a64 cmp r2, #100 ; 0x64 fa9e: bf9a itte ls faa0: f1c2 0264 rsbls r2, r2, #100 ; 0x64 faa4: b2d2 uxtbls r2, r2 faa6: 2200 movhi r2, #0 faa8: f88b 2010 strb.w r2, [fp, #16] busy_time = 0; faac: 2200 movs r2, #0 faae: f8cb 200c str.w r2, [fp, #12] idle_period_start = lv_tick_get(); fab2: 47c0 blx r8 fab4: f8cb 0014 str.w r0, [fp, #20] time_till_next = LV_NO_TASK_READY; fab8: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fabc: 4827 ldr r0, [pc, #156] ; (fb5c ) time_till_next = LV_NO_TASK_READY; fabe: f8cb 2018 str.w r2, [fp, #24] next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fac2: 47c8 blx r9 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ fac4: 4e25 ldr r6, [pc, #148] ; (fb5c ) fac6: 4f23 ldr r7, [pc, #140] ; (fb54 ) next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); fac8: 4605 mov r5, r0 while(next) { faca: b9e5 cbnz r5, fb06 return time_till_next; facc: f8db 0018 ldr.w r0, [fp, #24] already_running = false; /*Release the mutex*/ fad0: f88b 5004 strb.w r5, [fp, #4] return time_till_next; fad4: e7a1 b.n fa1a else if(task_interrupter) { fad6: b134 cbz r4, fae6 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) { fad8: 7d21 ldrb r1, [r4, #20] fada: f002 0207 and.w r2, r2, #7 fade: f001 0107 and.w r1, r1, #7 fae2: 428a cmp r2, r1 fae4: d9be bls.n fa64 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { fae6: 47b8 blx r7 fae8: 2800 cmp r0, #0 faea: d0bb beq.n fa64 if(!task_created && !task_deleted) { faec: f89b 2002 ldrb.w r2, [fp, #2] faf0: 2a00 cmp r2, #0 faf2: d1bb bne.n fa6c faf4: f89b 2003 ldrb.w r2, [fp, #3] faf8: 2a00 cmp r2, #0 fafa: d1b7 bne.n fa6c task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */ fafc: 682c ldr r4, [r5, #0] } while(!end_flag); fafe: e797 b.n fa30 task_interrupter = NULL; /*From this point only task after the interrupter comes, so fb00: 2400 movs r4, #0 LV_GC_ROOT(_lv_task_act) = next; fb02: 602e str r6, [r5, #0] fb04: e79e b.n fa44 if(next->prio != LV_TASK_PRIO_OFF) { fb06: 7d2a ldrb r2, [r5, #20] fb08: 0753 lsls r3, r2, #29 fb0a: d00d beq.n fb28 uint32_t elp = lv_tick_elaps(task->last_run); fb0c: 6868 ldr r0, [r5, #4] fb0e: 47a0 blx r4 if(elp >= task->period) fb10: 682a ldr r2, [r5, #0] fb12: 4290 cmp r0, r2 return 0; return task->period - elp; fb14: bf38 it cc fb16: 1a10 subcc r0, r2, r0 if(delay < time_till_next) fb18: f8db 2018 ldr.w r2, [fp, #24] return 0; fb1c: bf28 it cs fb1e: 2000 movcs r0, #0 if(delay < time_till_next) fb20: 4282 cmp r2, r0 time_till_next = delay; fb22: bf88 it hi fb24: f8cb 0018 strhi.w r0, [fp, #24] next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ fb28: 4629 mov r1, r5 fb2a: 4630 mov r0, r6 fb2c: 47b8 blx r7 fb2e: 4605 mov r5, r0 fb30: e7cb b.n faca if(task_created || task_deleted) { fb32: f89b 2003 ldrb.w r2, [fp, #3] fb36: 2a00 cmp r2, #0 fb38: d198 bne.n fa6c if(task_list_changed) { fb3a: f89b 1000 ldrb.w r1, [fp] fb3e: 2900 cmp r1, #0 fb40: d0df beq.n fb02 task_list_changed = false; fb42: f88b 2000 strb.w r2, [fp] task_interrupter = NULL; fb46: 4614 mov r4, r2 fb48: e772 b.n fa30 fb4a: bf00 nop fb4c: 20008670 .word 0x20008670 fb50: 0000f9a1 .word 0x0000f9a1 fb54: 0000e6b5 .word 0x0000e6b5 fb58: 0000da5d .word 0x0000da5d fb5c: 20008600 .word 0x20008600 fb60: 2000c7b4 .word 0x2000c7b4 fb64: 0000da49 .word 0x0000da49 fb68: 0000e6a9 .word 0x0000e6a9 0000fb6c : { fb6c: b5f8 push {r3, r4, r5, r6, r7, lr} if(task->prio == prio) return; fb6e: 7d03 ldrb r3, [r0, #20] fb70: f003 0307 and.w r3, r3, #7 fb74: 428b cmp r3, r1 { fb76: 4604 mov r4, r0 fb78: 460d mov r5, r1 if(task->prio == prio) return; fb7a: d018 beq.n fbae _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { fb7c: 480f ldr r0, [pc, #60] ; (fbbc ) fb7e: 4b10 ldr r3, [pc, #64] ; (fbc0 ) fb80: 4e0e ldr r6, [pc, #56] ; (fbbc ) fb82: 4f10 ldr r7, [pc, #64] ; (fbc4 ) fb84: 4798 blx r3 fb86: 4602 mov r2, r0 fb88: b132 cbz r2, fb98 if(i->prio <= prio) { fb8a: 7d13 ldrb r3, [r2, #20] fb8c: f003 0307 and.w r3, r3, #7 fb90: 429d cmp r5, r3 fb92: db0d blt.n fbb0 if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i); fb94: 42a2 cmp r2, r4 fb96: d003 beq.n fba0 _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL); fb98: 4808 ldr r0, [pc, #32] ; (fbbc ) fb9a: 4b0b ldr r3, [pc, #44] ; (fbc8 ) fb9c: 4621 mov r1, r4 fb9e: 4798 blx r3 task_list_changed = true; fba0: 4b0a ldr r3, [pc, #40] ; (fbcc ) fba2: 2201 movs r2, #1 fba4: 701a strb r2, [r3, #0] task->prio = prio; fba6: 7d23 ldrb r3, [r4, #20] fba8: f365 0302 bfi r3, r5, #0, #3 fbac: 7523 strb r3, [r4, #20] } fbae: bdf8 pop {r3, r4, r5, r6, r7, pc} _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { fbb0: 4611 mov r1, r2 fbb2: 4630 mov r0, r6 fbb4: 47b8 blx r7 fbb6: 4602 mov r2, r0 fbb8: e7e6 b.n fb88 fbba: bf00 nop fbbc: 20008600 .word 0x20008600 fbc0: 0000e6a9 .word 0x0000e6a9 fbc4: 0000e6b5 .word 0x0000e6b5 fbc8: 0000e85d .word 0x0000e85d fbcc: 2000c7b4 .word 0x2000c7b4 0000fbd0 : { fbd0: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} fbd4: 461e mov r6, r3 lv_task_t * new_task = lv_task_create_basic(); fbd6: 4b12 ldr r3, [pc, #72] ; (fc20 ) { fbd8: 9203 str r2, [sp, #12] fbda: 460f mov r7, r1 fbdc: 4680 mov r8, r0 lv_task_t * new_task = lv_task_create_basic(); fbde: 4798 blx r3 LV_ASSERT_MEM(new_task); fbe0: 4b10 ldr r3, [pc, #64] ; (fc24 ) lv_task_t * new_task = lv_task_create_basic(); fbe2: 4604 mov r4, r0 LV_ASSERT_MEM(new_task); fbe4: 4798 blx r3 fbe6: 9903 ldr r1, [sp, #12] fbe8: 4605 mov r5, r0 fbea: b968 cbnz r0, fc08 fbec: 4b0e ldr r3, [pc, #56] ; (fc28 ) fbee: 490f ldr r1, [pc, #60] ; (fc2c ) fbf0: 9300 str r3, [sp, #0] fbf2: f44f 7283 mov.w r2, #262 ; 0x106 fbf6: 2003 movs r0, #3 fbf8: 4e0d ldr r6, [pc, #52] ; (fc30 ) fbfa: 47b0 blx r6 fbfc: 480d ldr r0, [pc, #52] ; (fc34 ) fbfe: 490e ldr r1, [pc, #56] ; (fc38 ) fc00: 4622 mov r2, r4 fc02: 462b mov r3, r5 fc04: 4788 blx r1 fc06: e7fe b.n fc06 if(new_task == NULL) return NULL; fc08: b134 cbz r4, fc18 lv_task_set_prio(new_task, prio); fc0a: 4b0c ldr r3, [pc, #48] ; (fc3c ) task->task_cb = task_cb; fc0c: f8c4 8008 str.w r8, [r4, #8] task->period = period; fc10: 6027 str r7, [r4, #0] lv_task_set_prio(new_task, prio); fc12: 4620 mov r0, r4 fc14: 4798 blx r3 new_task->user_data = user_data; fc16: 60e6 str r6, [r4, #12] } fc18: 4620 mov r0, r4 fc1a: b004 add sp, #16 fc1c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} fc20: 0000f855 .word 0x0000f855 fc24: 000017e1 .word 0x000017e1 fc28: 000241d7 .word 0x000241d7 fc2c: 00024192 .word 0x00024192 fc30: 0000e8e9 .word 0x0000e8e9 fc34: 0001edbe .word 0x0001edbe fc38: 000017e9 .word 0x000017e9 fc3c: 0000fb6d .word 0x0000fb6d 0000fc40 : { fc40: b510 push {r4, lr} task->last_run = lv_tick_get() - task->period - 1; fc42: 4b04 ldr r3, [pc, #16] ; (fc54 ) { fc44: 4604 mov r4, r0 task->last_run = lv_tick_get() - task->period - 1; fc46: 4798 blx r3 fc48: 6823 ldr r3, [r4, #0] fc4a: 1ac3 subs r3, r0, r3 fc4c: 3b01 subs r3, #1 fc4e: 6063 str r3, [r4, #4] } fc50: bd10 pop {r4, pc} fc52: bf00 nop fc54: 0000da49 .word 0x0000da49 0000fc58 : * @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) fc58: f990 2000 ldrsb.w r2, [r0] fc5c: 7803 ldrb r3, [r0, #0] fc5e: 2a00 cmp r2, #0 fc60: da0f bge.n fc82 return 1; else if((str[0] & 0xE0) == 0xC0) fc62: f003 02e0 and.w r2, r3, #224 ; 0xe0 fc66: 2ac0 cmp r2, #192 ; 0xc0 fc68: d00d beq.n fc86 return 2; else if((str[0] & 0xF0) == 0xE0) fc6a: f003 02f0 and.w r2, r3, #240 ; 0xf0 fc6e: 2ae0 cmp r2, #224 ; 0xe0 fc70: d00b beq.n fc8a return 3; else if((str[0] & 0xF8) == 0xF0) fc72: f003 00f8 and.w r0, r3, #248 ; 0xf8 fc76: f1a0 03f0 sub.w r3, r0, #240 ; 0xf0 fc7a: 4258 negs r0, r3 fc7c: 4158 adcs r0, r3 fc7e: 0080 lsls r0, r0, #2 fc80: 4770 bx lr return 1; fc82: 2001 movs r0, #1 fc84: 4770 bx lr return 2; fc86: 2002 movs r0, #2 fc88: 4770 bx lr return 3; fc8a: 2003 movs r0, #3 return 4; return 0; /*If the char was invalid tell it's 1 byte long*/ } fc8c: 4770 bx lr 0000fc8e : * 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) { fc8e: b573 push {r0, r1, r4, r5, r6, lr} * */ uint32_t result = 0; /*Dummy 'i' pointer is required*/ uint32_t i_tmp = 0; fc90: 2300 movs r3, #0 fc92: 9301 str r3, [sp, #4] if(i == NULL) i = &i_tmp; fc94: b901 cbnz r1, fc98 fc96: a901 add r1, sp, #4 /*Normal ASCII*/ if((txt[*i] & 0x80) == 0) { fc98: 680a ldr r2, [r1, #0] fc9a: 5685 ldrsb r5, [r0, r2] fc9c: 5c83 ldrb r3, [r0, r2] fc9e: 2d00 cmp r5, #0 result = txt[*i]; (*i)++; fca0: f102 0401 add.w r4, r2, #1 if((txt[*i] & 0x80) == 0) { fca4: db03 blt.n fcae result = txt[*i]; fca6: 4618 mov r0, r3 (*i)++; fca8: 600c str r4, [r1, #0] else { (*i)++; /*Not UTF-8 char. Go the next.*/ } } return result; } fcaa: b002 add sp, #8 fcac: bd70 pop {r4, r5, r6, pc} if((txt[*i] & 0xE0) == 0xC0) { fcae: f003 05e0 and.w r5, r3, #224 ; 0xe0 fcb2: 2dc0 cmp r5, #192 ; 0xc0 fcb4: d110 bne.n fcd8 (*i)++; fcb6: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fcb8: 5d00 ldrb r0, [r0, r4] fcba: f000 04c0 and.w r4, r0, #192 ; 0xc0 fcbe: 2c80 cmp r4, #128 ; 0x80 fcc0: d001 beq.n fcc6 uint32_t result = 0; fcc2: 2000 movs r0, #0 fcc4: e7f1 b.n fcaa result = (uint32_t)(txt[*i] & 0x1F) << 6; fcc6: 019b lsls r3, r3, #6 fcc8: f403 63f8 and.w r3, r3, #1984 ; 0x7c0 result += (txt[*i] & 0x3F); fccc: f000 003f and.w r0, r0, #63 ; 0x3f fcd0: 4418 add r0, r3 (*i)++; fcd2: 3202 adds r2, #2 (*i)++; fcd4: 600a str r2, [r1, #0] fcd6: e7e8 b.n fcaa else if((txt[*i] & 0xF0) == 0xE0) { fcd8: f003 05f0 and.w r5, r3, #240 ; 0xf0 fcdc: 2de0 cmp r5, #224 ; 0xe0 fcde: d117 bne.n fd10 (*i)++; fce0: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fce2: 5d04 ldrb r4, [r0, r4] fce4: f004 05c0 and.w r5, r4, #192 ; 0xc0 fce8: 2d80 cmp r5, #128 ; 0x80 fcea: d1ea bne.n fcc2 (*i)++; fcec: 1c95 adds r5, r2, #2 fcee: 600d str r5, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fcf0: 5d45 ldrb r5, [r0, r5] fcf2: f005 00c0 and.w r0, r5, #192 ; 0xc0 fcf6: 2880 cmp r0, #128 ; 0x80 fcf8: d1e3 bne.n fcc2 result = (uint32_t)(txt[*i] & 0x0F) << 12; fcfa: 0318 lsls r0, r3, #12 fcfc: b280 uxth r0, r0 result += (txt[*i] & 0x3F); fcfe: f005 053f and.w r5, r5, #63 ; 0x3f result += (uint32_t)(txt[*i] & 0x3F) << 6; fd02: 01a4 lsls r4, r4, #6 fd04: 4428 add r0, r5 fd06: f404 647c and.w r4, r4, #4032 ; 0xfc0 result += (txt[*i] & 0x3F); fd0a: 4420 add r0, r4 (*i)++; fd0c: 3203 adds r2, #3 fd0e: e7e1 b.n fcd4 else if((txt[*i] & 0xF8) == 0xF0) { fd10: f003 05f8 and.w r5, r3, #248 ; 0xf8 fd14: 2df0 cmp r5, #240 ; 0xf0 (*i)++; fd16: 600c str r4, [r1, #0] else if((txt[*i] & 0xF8) == 0xF0) { fd18: d1d3 bne.n fcc2 if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd1a: 5d04 ldrb r4, [r0, r4] fd1c: f004 05c0 and.w r5, r4, #192 ; 0xc0 fd20: 2d80 cmp r5, #128 ; 0x80 fd22: d1ce bne.n fcc2 (*i)++; fd24: 1c95 adds r5, r2, #2 fd26: 600d str r5, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd28: 5d45 ldrb r5, [r0, r5] fd2a: f005 06c0 and.w r6, r5, #192 ; 0xc0 fd2e: 2e80 cmp r6, #128 ; 0x80 fd30: d1c7 bne.n fcc2 (*i)++; fd32: 1cd6 adds r6, r2, #3 fd34: 600e str r6, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ fd36: 5d80 ldrb r0, [r0, r6] fd38: f000 06c0 and.w r6, r0, #192 ; 0xc0 fd3c: 2e80 cmp r6, #128 ; 0x80 fd3e: d1c0 bne.n fcc2 result = (uint32_t)(txt[*i] & 0x07) << 18; fd40: 049b lsls r3, r3, #18 result += (uint32_t)(txt[*i] & 0x3F) << 12; fd42: 0324 lsls r4, r4, #12 result += (uint32_t)(txt[*i] & 0x3F) << 6; fd44: 01ad lsls r5, r5, #6 result += txt[*i] & 0x3F; fd46: f000 003f and.w r0, r0, #63 ; 0x3f result = (uint32_t)(txt[*i] & 0x07) << 18; fd4a: f403 13e0 and.w r3, r3, #1835008 ; 0x1c0000 result += (uint32_t)(txt[*i] & 0x3F) << 12; fd4e: f404 347c and.w r4, r4, #258048 ; 0x3f000 result += (uint32_t)(txt[*i] & 0x3F) << 6; fd52: f405 657c and.w r5, r5, #4032 ; 0xfc0 result += (uint32_t)(txt[*i] & 0x3F) << 12; fd56: 431c orrs r4, r3 result += txt[*i] & 0x3F; fd58: 4405 add r5, r0 fd5a: 1928 adds r0, r5, r4 (*i)++; fd5c: 3204 adds r2, #4 fd5e: e7b9 b.n fcd4 0000fd60 : { uint8_t c_size; uint8_t cnt = 0; /*Try to find a !0 long UTF-8 char by stepping one character back*/ (*i)--; fd60: 680b ldr r3, [r1, #0] { fd62: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} (*i)--; fd64: 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]); fd66: 4f0d ldr r7, [pc, #52] ; (fd9c ) (*i)--; fd68: 600b str r3, [r1, #0] { fd6a: 4606 mov r6, r0 fd6c: 460c mov r4, r1 (*i)--; fd6e: 2504 movs r5, #4 c_size = _lv_txt_encoded_size(&txt[*i]); fd70: 6820 ldr r0, [r4, #0] fd72: 683b ldr r3, [r7, #0] fd74: 4430 add r0, r6 fd76: 4798 blx r3 if(c_size == 0) { fd78: 6823 ldr r3, [r4, #0] fd7a: b948 cbnz r0, fd90 if(*i != 0) fd7c: b12b cbz r3, fd8a if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ fd7e: 3d01 subs r5, #1 (*i)--; fd80: 3b01 subs r3, #1 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ fd82: f015 05ff ands.w r5, r5, #255 ; 0xff (*i)--; fd86: 6023 str r3, [r4, #0] if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ fd88: d1f2 bne.n fd70 fd8a: 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; } fd8c: b003 add sp, #12 fd8e: bdf0 pop {r4, r5, r6, r7, pc} uint32_t i_tmp = *i; fd90: 9301 str r3, [sp, #4] uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/ fd92: a901 add r1, sp, #4 fd94: 687b ldr r3, [r7, #4] fd96: 4630 mov r0, r6 fd98: 4798 blx r3 return letter; fd9a: e7f7 b.n fd8c fd9c: 20000054 .word 0x20000054 0000fda0 : * @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) { fda0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} uint32_t i; uint32_t byte_cnt = 0; fda4: 2400 movs r4, #0 for(i = 0; i < utf8_id; i++) { uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); fda6: f8df 8028 ldr.w r8, [pc, #40] ; fdd0 { fdaa: 4607 mov r7, r0 fdac: 460d mov r5, r1 for(i = 0; i < utf8_id; i++) { fdae: 4626 mov r6, r4 fdb0: 42ae cmp r6, r5 fdb2: d102 bne.n fdba byte_cnt += c_size > 0 ? c_size : 1; } return byte_cnt; } fdb4: 4620 mov r0, r4 fdb6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); fdba: 1938 adds r0, r7, r4 fdbc: f8d8 3000 ldr.w r3, [r8] fdc0: 4798 blx r3 byte_cnt += c_size > 0 ? c_size : 1; fdc2: 2801 cmp r0, #1 fdc4: bf38 it cc fdc6: 2001 movcc r0, #1 fdc8: fa54 f480 uxtab r4, r4, r0 for(i = 0; i < utf8_id; i++) { fdcc: 3601 adds r6, #1 fdce: e7ef b.n fdb0 fdd0: 20000054 .word 0x20000054 0000fdd4 : * @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) { fdd4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} uint32_t i = 0; fdd6: 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*/ fdd8: 4f07 ldr r7, [pc, #28] ; (fdf8 ) uint32_t i = 0; fdda: 9401 str r4, [sp, #4] { fddc: 4606 mov r6, r0 fdde: 460d mov r5, r1 while(i < byte_id) { fde0: 9b01 ldr r3, [sp, #4] fde2: 42ab cmp r3, r5 fde4: d302 bcc.n fdec char_cnt++; } return char_cnt; } fde6: 4620 mov r0, r4 fde8: b003 add sp, #12 fdea: bdf0 pop {r4, r5, r6, r7, pc} _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ fdec: 687b ldr r3, [r7, #4] fdee: a901 add r1, sp, #4 fdf0: 4630 mov r0, r6 fdf2: 4798 blx r3 char_cnt++; fdf4: 3401 adds r4, #1 fdf6: e7f3 b.n fde0 fdf8: 20000054 .word 0x20000054 0000fdfc : * 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) { fdfc: b573 push {r0, r1, r4, r5, r6, lr} uint32_t len = 0; uint32_t i = 0; fdfe: 2400 movs r4, #0 while(txt[i] != '\0') { _lv_txt_encoded_next(txt, &i); fe00: 4e07 ldr r6, [pc, #28] ; (fe20 ) uint32_t i = 0; fe02: 9401 str r4, [sp, #4] { fe04: 4605 mov r5, r0 while(txt[i] != '\0') { fe06: 9b01 ldr r3, [sp, #4] fe08: 5ceb ldrb r3, [r5, r3] fe0a: b913 cbnz r3, fe12 len++; } return len; } fe0c: 4620 mov r0, r4 fe0e: b002 add sp, #8 fe10: bd70 pop {r4, r5, r6, pc} _lv_txt_encoded_next(txt, &i); fe12: 6873 ldr r3, [r6, #4] fe14: a901 add r1, sp, #4 fe16: 4628 mov r0, r5 fe18: 4798 blx r3 len++; fe1a: 3401 adds r4, #1 fe1c: e7f3 b.n fe06 fe1e: bf00 nop fe20: 20000054 .word 0x20000054 0000fe24 : if(letter_uni < 128) return letter_uni; fe24: 287f cmp r0, #127 ; 0x7f { fe26: b082 sub sp, #8 if(letter_uni < 128) return letter_uni; fe28: d911 bls.n fe4e if(letter_uni < 0x0800) { fe2a: f5b0 6f00 cmp.w r0, #2048 ; 0x800 fe2e: d210 bcs.n fe52 bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0; fe30: 0983 lsrs r3, r0, #6 fe32: f063 033f orn r3, r3, #63 ; 0x3f bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; fe36: f000 003f and.w r0, r0, #63 ; 0x3f bytes[0] = ((letter_uni >> 6) & 0x1F) | 0xC0; fe3a: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; fe3e: f060 007f orn r0, r0, #127 ; 0x7f bytes[2] = 0; fe42: 2300 movs r3, #0 bytes[1] = ((letter_uni >> 0) & 0x3F) | 0x80; fe44: f88d 0005 strb.w r0, [sp, #5] bytes[2] = 0; fe48: f8ad 3006 strh.w r3, [sp, #6] return *res_p; fe4c: 9801 ldr r0, [sp, #4] } fe4e: b002 add sp, #8 fe50: 4770 bx lr else if(letter_uni < 0x010000) { fe52: f5b0 3f80 cmp.w r0, #65536 ; 0x10000 fe56: d214 bcs.n fe82 bytes[0] = ((letter_uni >> 12) & 0x0F) | 0xE0; fe58: 0b03 lsrs r3, r0, #12 fe5a: f063 031f orn r3, r3, #31 fe5e: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; fe62: f3c0 1385 ubfx r3, r0, #6, #6 fe66: f063 037f orn r3, r3, #127 ; 0x7f bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; fe6a: f000 003f and.w r0, r0, #63 ; 0x3f bytes[1] = ((letter_uni >> 6) & 0x3F) | 0x80; fe6e: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; fe72: f060 007f orn r0, r0, #127 ; 0x7f bytes[3] = 0; fe76: 2300 movs r3, #0 bytes[2] = ((letter_uni >> 0) & 0x3F) | 0x80; fe78: f88d 0006 strb.w r0, [sp, #6] bytes[3] = 0; fe7c: f88d 3007 strb.w r3, [sp, #7] fe80: e7e4 b.n fe4c else if(letter_uni < 0x110000) { fe82: f5b0 1f88 cmp.w r0, #1114112 ; 0x110000 fe86: d2e1 bcs.n fe4c bytes[0] = ((letter_uni >> 18) & 0x07) | 0xF0; fe88: 0c83 lsrs r3, r0, #18 fe8a: f063 030f orn r3, r3, #15 fe8e: f88d 3004 strb.w r3, [sp, #4] bytes[1] = ((letter_uni >> 12) & 0x3F) | 0x80; fe92: f3c0 3305 ubfx r3, r0, #12, #6 fe96: f063 037f orn r3, r3, #127 ; 0x7f fe9a: f88d 3005 strb.w r3, [sp, #5] bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; fe9e: f3c0 1385 ubfx r3, r0, #6, #6 bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; fea2: f000 003f and.w r0, r0, #63 ; 0x3f bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; fea6: f063 037f orn r3, r3, #127 ; 0x7f bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; feaa: f060 007f orn r0, r0, #127 ; 0x7f bytes[2] = ((letter_uni >> 6) & 0x3F) | 0x80; feae: f88d 3006 strb.w r3, [sp, #6] bytes[3] = ((letter_uni >> 0) & 0x3F) | 0x80; feb2: f88d 0007 strb.w r0, [sp, #7] feb6: e7c9 b.n fe4c 0000feb8 : if((c & 0x80) != 0) { feb8: 0603 lsls r3, r0, #24 feba: d512 bpl.n fee2 swapped = (c8[0] << 24) + (c8[1] << 16) + (c8[2] << 8) + (c8[3]); febc: f3c0 2207 ubfx r2, r0, #8, #8 fec0: 0603 lsls r3, r0, #24 fec2: eb03 4302 add.w r3, r3, r2, lsl #16 fec6: f3c0 4207 ubfx r2, r0, #16, #8 feca: eb03 2302 add.w r3, r3, r2, lsl #8 fece: eb03 6010 add.w r0, r3, r0, lsr #24 fed2: 2304 movs r3, #4 if((swapped & 0xFF) == 0) fed4: b2c2 uxtb r2, r0 fed6: b902 cbnz r2, feda swapped = (swapped >> 8); /*Ignore leading zeros (they were in the end originally)*/ fed8: 0a00 lsrs r0, r0, #8 for(i = 0; i < 4; i++) { feda: 3b01 subs r3, #1 fedc: f013 03ff ands.w r3, r3, #255 ; 0xff fee0: d1f8 bne.n fed4 } fee2: 4770 bx lr 0000fee4 <_lv_txt_is_cmd>: if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { fee4: 2923 cmp r1, #35 ; 0x23 fee6: d116 bne.n ff16 <_lv_txt_is_cmd+0x32> if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/ fee8: 7802 ldrb r2, [r0, #0] feea: b95a cbnz r2, ff04 <_lv_txt_is_cmd+0x20> *state = LV_TXT_CMD_STATE_PAR; feec: 2301 movs r3, #1 *state = LV_TXT_CMD_STATE_WAIT; feee: 7003 strb r3, [r0, #0] if(*state == LV_TXT_CMD_STATE_PAR) { fef0: 7802 ldrb r2, [r0, #0] fef2: 2a01 cmp r2, #1 fef4: d104 bne.n ff00 <_lv_txt_is_cmd+0x1c> if(c == ' ') { fef6: 2920 cmp r1, #32 *state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/ fef8: bf04 itt eq fefa: 2302 moveq r3, #2 fefc: 7003 strbeq r3, [r0, #0] ret = true; fefe: 4613 mov r3, r2 } ff00: 4618 mov r0, r3 ff02: 4770 bx lr else if(*state == LV_TXT_CMD_STATE_PAR) { ff04: 2a01 cmp r2, #1 ff06: f04f 0300 mov.w r3, #0 ff0a: d0f0 beq.n feee <_lv_txt_is_cmd+0xa> else if(*state == LV_TXT_CMD_STATE_IN) { ff0c: 2a02 cmp r2, #2 ff0e: d1ef bne.n fef0 <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_WAIT; ff10: 7003 strb r3, [r0, #0] ret = true; ff12: 2301 movs r3, #1 ff14: e7ec b.n fef0 <_lv_txt_is_cmd+0xc> bool ret = false; ff16: 2300 movs r3, #0 ff18: e7ea b.n fef0 <_lv_txt_is_cmd+0xc> ... 0000ff1c <_lv_txt_get_width>: { ff1c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ff20: 4688 mov r8, r1 ff22: b085 sub sp, #20 ff24: 4617 mov r7, r2 ff26: 461e mov r6, r3 if(txt == NULL) return 0; ff28: 4605 mov r5, r0 ff2a: 2400 movs r4, #0 ff2c: 2800 cmp r0, #0 ff2e: d03e beq.n ffae <_lv_txt_get_width+0x92> if(font == NULL) return 0; ff30: 2a00 cmp r2, #0 ff32: d03e beq.n ffb2 <_lv_txt_get_width+0x96> uint32_t i = 0; ff34: 9403 str r4, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; ff36: f88d 400b strb.w r4, [sp, #11] if(length != 0) { ff3a: 2900 cmp r1, #0 ff3c: d035 beq.n ffaa <_lv_txt_get_width+0x8e> if((flag & LV_TXT_FLAG_RECOLOR) != 0) { ff3e: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 uint32_t letter = _lv_txt_encoded_next(txt, &i); ff42: f8df a07c ldr.w sl, [pc, #124] ; ffc0 <_lv_txt_get_width+0xa4> if((flag & LV_TXT_FLAG_RECOLOR) != 0) { ff46: f009 0901 and.w r9, r9, #1 uint32_t letter = _lv_txt_encoded_next(txt, &i); ff4a: f8da 3004 ldr.w r3, [sl, #4] ff4e: a903 add r1, sp, #12 ff50: 4628 mov r0, r5 ff52: 4798 blx r3 ff54: 4683 mov fp, r0 uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL); ff56: 9803 ldr r0, [sp, #12] ff58: f8da 2004 ldr.w r2, [sl, #4] ff5c: 2100 movs r1, #0 ff5e: 4428 add r0, r5 ff60: 4790 blx r2 ff62: 4602 mov r2, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { ff64: f1b9 0f00 cmp.w r9, #0 ff68: d111 bne.n ff8e <_lv_txt_get_width+0x72> lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); ff6a: 4b13 ldr r3, [pc, #76] ; (ffb8 <_lv_txt_get_width+0x9c>) ff6c: 4659 mov r1, fp ff6e: 4638 mov r0, r7 ff70: 4798 blx r3 if(char_width > 0) { ff72: b203 sxth r3, r0 ff74: 2b00 cmp r3, #0 ff76: dc14 bgt.n ffa2 <_lv_txt_get_width+0x86> while(i < length) { ff78: 9b03 ldr r3, [sp, #12] ff7a: 4598 cmp r8, r3 ff7c: d8e5 bhi.n ff4a <_lv_txt_get_width+0x2e> if(width > 0) { ff7e: 2c00 cmp r4, #0 ff80: dd01 ble.n ff86 <_lv_txt_get_width+0x6a> width -= letter_space; /*Trim the last letter space. Important if the text is center ff82: 1ba6 subs r6, r4, r6 ff84: b234 sxth r4, r6 } ff86: 4620 mov r0, r4 ff88: b005 add sp, #20 ff8a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} ff8e: 9001 str r0, [sp, #4] if(_lv_txt_is_cmd(&cmd_state, letter) != false) { ff90: 4b0a ldr r3, [pc, #40] ; (ffbc <_lv_txt_get_width+0xa0>) ff92: 4659 mov r1, fp ff94: f10d 000b add.w r0, sp, #11 ff98: 4798 blx r3 ff9a: 9a01 ldr r2, [sp, #4] ff9c: 2800 cmp r0, #0 ff9e: d0e4 beq.n ff6a <_lv_txt_get_width+0x4e> ffa0: e7ea b.n ff78 <_lv_txt_get_width+0x5c> width += letter_space; ffa2: 4434 add r4, r6 ffa4: 4420 add r0, r4 ffa6: b204 sxth r4, r0 ffa8: e7e6 b.n ff78 <_lv_txt_get_width+0x5c> lv_coord_t width = 0; ffaa: 460c mov r4, r1 ffac: e7eb b.n ff86 <_lv_txt_get_width+0x6a> if(txt == NULL) return 0; ffae: 4604 mov r4, r0 ffb0: e7e9 b.n ff86 <_lv_txt_get_width+0x6a> ffb2: 4614 mov r4, r2 ffb4: e7e7 b.n ff86 <_lv_txt_get_width+0x6a> ffb6: bf00 nop ffb8: 0000d175 .word 0x0000d175 ffbc: 0000fee5 .word 0x0000fee5 ffc0: 20000054 .word 0x20000054 0000ffc4 <_lv_txt_get_next_line>: { ffc4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} ffc8: b08f sub sp, #60 ; 0x3c ffca: 4699 mov r9, r3 ffcc: f89d 3060 ldrb.w r3, [sp, #96] ; 0x60 ffd0: 9102 str r1, [sp, #8] ffd2: 9204 str r2, [sp, #16] ffd4: 9303 str r3, [sp, #12] if(txt == NULL) return 0; ffd6: 4607 mov r7, r0 ffd8: b198 cbz r0, 10002 <_lv_txt_get_next_line+0x3e> if(font == NULL) return 0; ffda: 2900 cmp r1, #0 ffdc: f000 80d2 beq.w 10184 <_lv_txt_get_next_line+0x1c0> if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) { ffe0: 9b03 ldr r3, [sp, #12] ffe2: f013 0312 ands.w r3, r3, #18 ffe6: d00f beq.n 10008 <_lv_txt_get_next_line+0x44> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { ffe8: 2000 movs r0, #0 ffea: e000 b.n ffee <_lv_txt_get_next_line+0x2a> ffec: 3001 adds r0, #1 ffee: 5c3b ldrb r3, [r7, r0] fff0: 2b0a cmp r3, #10 fff2: f000 80c9 beq.w 10188 <_lv_txt_get_next_line+0x1c4> fff6: 2b0d cmp r3, #13 fff8: f000 80c6 beq.w 10188 <_lv_txt_get_next_line+0x1c4> fffc: 2b00 cmp r3, #0 fffe: d1f5 bne.n ffec <_lv_txt_get_next_line+0x28> return i; 10000: b280 uxth r0, r0 } 10002: b00f add sp, #60 ; 0x3c 10004: 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; 10008: 9a03 ldr r2, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 1000a: f88d 302b strb.w r3, [sp, #43] ; 0x2b if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 1000e: f012 0202 ands.w r2, r2, #2 10012: 9205 str r2, [sp, #20] 10014: f647 4218 movw r2, #31768 ; 0x7c18 10018: bf18 it ne 1001a: 4691 movne r9, r2 uint32_t i = 0; /* Iterating index into txt */ 1001c: 930b str r3, [sp, #44] ; 0x2c while(txt[i] != '\0' && max_width > 0) { 1001e: 9b0b ldr r3, [sp, #44] ; 0x2c 10020: 9300 str r3, [sp, #0] 10022: eb07 0b03 add.w fp, r7, r3 10026: 5cfb ldrb r3, [r7, r3] 10028: 2b00 cmp r3, #0 1002a: f000 808e beq.w 1014a <_lv_txt_get_next_line+0x186> 1002e: f1b9 0f00 cmp.w r9, #0 10032: f340 808a ble.w 1014a <_lv_txt_get_next_line+0x186> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 10036: 9a05 ldr r2, [sp, #20] 10038: f647 4318 movw r3, #31768 ; 0x7c18 1003c: 2a00 cmp r2, #0 1003e: bf08 it eq 10040: 464b moveq r3, r9 10042: 9307 str r3, [sp, #28] letter = _lv_txt_encoded_next(txt, &i_next); 10044: 4b51 ldr r3, [pc, #324] ; (1018c <_lv_txt_get_next_line+0x1c8>) uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 10046: 2500 movs r5, #0 letter = _lv_txt_encoded_next(txt, &i_next); 10048: 685b ldr r3, [r3, #4] uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 1004a: e9cd 550c strd r5, r5, [sp, #48] ; 0x30 letter = _lv_txt_encoded_next(txt, &i_next); 1004e: a90c add r1, sp, #48 ; 0x30 10050: 4658 mov r0, fp 10052: 4798 blx r3 i_next_next = i_next; 10054: 9b0c ldr r3, [sp, #48] ; 0x30 10056: 930d str r3, [sp, #52] ; 0x34 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 10058: 9b03 ldr r3, [sp, #12] uint32_t word_len = 0; /* Number of characters in the transversed word */ 1005a: 9501 str r5, [sp, #4] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1005c: f003 0301 and.w r3, r3, #1 letter = _lv_txt_encoded_next(txt, &i_next); 10060: 4680 mov r8, r0 uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */ 10062: f04f 3aff mov.w sl, #4294967295 ; 0xffffffff lv_coord_t cur_w = 0; /* Pixel Width of transversed string */ 10066: 462e mov r6, r5 uint32_t letter_next = 0; /* Letter at i_next */ 10068: 462a mov r2, r5 uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 1006a: 462c mov r4, r5 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1006c: 9308 str r3, [sp, #32] while(txt[i] != '\0') { 1006e: f81b 3004 ldrb.w r3, [fp, r4] 10072: b943 cbnz r3, 10086 <_lv_txt_get_next_line+0xc2> if(break_index == NO_BREAK_FOUND) { 10074: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 10078: d052 beq.n 10120 <_lv_txt_get_next_line+0x15c> if(force) return break_index; 1007a: 9b00 ldr r3, [sp, #0] 1007c: 2b00 cmp r3, #0 1007e: d16e bne.n 1015e <_lv_txt_get_next_line+0x19a> 10080: fa1f f48a uxth.w r4, sl 10084: e055 b.n 10132 <_lv_txt_get_next_line+0x16e> letter_next = _lv_txt_encoded_next(txt, &i_next_next); 10086: 4b41 ldr r3, [pc, #260] ; (1018c <_lv_txt_get_next_line+0x1c8>) 10088: a90d add r1, sp, #52 ; 0x34 1008a: 685b ldr r3, [r3, #4] 1008c: 4658 mov r0, fp 1008e: 4798 blx r3 word_len++; 10090: 9b01 ldr r3, [sp, #4] 10092: 3301 adds r3, #1 10094: 9306 str r3, [sp, #24] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 10096: 9b08 ldr r3, [sp, #32] letter_next = _lv_txt_encoded_next(txt, &i_next_next); 10098: 4602 mov r2, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 1009a: b173 cbz r3, 100ba <_lv_txt_get_next_line+0xf6> 1009c: 9009 str r0, [sp, #36] ; 0x24 if(_lv_txt_is_cmd(cmd_state, letter) != false) { 1009e: 4b3c ldr r3, [pc, #240] ; (10190 <_lv_txt_get_next_line+0x1cc>) 100a0: 4641 mov r1, r8 100a2: f10d 002b add.w r0, sp, #43 ; 0x2b 100a6: 4798 blx r3 100a8: 9a09 ldr r2, [sp, #36] ; 0x24 100aa: b130 cbz r0, 100ba <_lv_txt_get_next_line+0xf6> i_next = i_next_next; 100ac: e9dd 430c ldrd r4, r3, [sp, #48] ; 0x30 100b0: 930c str r3, [sp, #48] ; 0x30 100b2: 9b06 ldr r3, [sp, #24] 100b4: 9301 str r3, [sp, #4] letter_next = _lv_txt_encoded_next(txt, &i_next_next); 100b6: 4690 mov r8, r2 100b8: e7d9 b.n 1006e <_lv_txt_get_next_line+0xaa> letter_w = lv_font_get_glyph_width(font, letter, letter_next); 100ba: 4b36 ldr r3, [pc, #216] ; (10194 <_lv_txt_get_next_line+0x1d0>) 100bc: 9802 ldr r0, [sp, #8] 100be: 9209 str r2, [sp, #36] ; 0x24 100c0: 4641 mov r1, r8 100c2: 4798 blx r3 cur_w += letter_w; 100c4: 4406 add r6, r0 if(letter_w > 0) { 100c6: b200 sxth r0, r0 100c8: 2800 cmp r0, #0 cur_w += letter_space; 100ca: bfc8 it gt 100cc: 9b04 ldrgt r3, [sp, #16] if(letter_w > 0) { 100ce: 9a09 ldr r2, [sp, #36] ; 0x24 cur_w += letter_w; 100d0: b2b6 uxth r6, r6 cur_w += letter_space; 100d2: bfc4 itt gt 100d4: 18f6 addgt r6, r6, r3 100d6: b2b6 uxthgt r6, r6 if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 100d8: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 100dc: b236 sxth r6, r6 100de: d105 bne.n 100ec <_lv_txt_get_next_line+0x128> 100e0: 9b04 ldr r3, [sp, #16] 100e2: 9907 ldr r1, [sp, #28] 100e4: 1af3 subs r3, r6, r3 100e6: 428b cmp r3, r1 100e8: bfc8 it gt 100ea: 46a2 movgt sl, r4 if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 100ec: f1b8 0f0a cmp.w r8, #10 100f0: d010 beq.n 10114 <_lv_txt_get_next_line+0x150> 100f2: f1b8 0f0d cmp.w r8, #13 100f6: d00d beq.n 10114 <_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++) { 100f8: 4827 ldr r0, [pc, #156] ; (10198 <_lv_txt_get_next_line+0x1d4>) 100fa: 2300 movs r3, #0 100fc: b2d9 uxtb r1, r3 100fe: 5c41 ldrb r1, [r0, r1] 10100: b921 cbnz r1, 1010c <_lv_txt_get_next_line+0x148> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 10102: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 10106: bf08 it eq 10108: 4635 moveq r5, r6 1010a: e7cf b.n 100ac <_lv_txt_get_next_line+0xe8> if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) { 1010c: 4588 cmp r8, r1 1010e: f103 0301 add.w r3, r3, #1 10112: d1f3 bne.n 100fc <_lv_txt_get_next_line+0x138> if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w; 10114: 2c00 cmp r4, #0 10116: d1ad bne.n 10074 <_lv_txt_get_next_line+0xb0> 10118: f1ba 3fff cmp.w sl, #4294967295 ; 0xffffffff 1011c: d1ad bne.n 1007a <_lv_txt_get_next_line+0xb6> 1011e: 4635 mov r5, r6 if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next; 10120: 9b01 ldr r3, [sp, #4] 10122: b123 cbz r3, 1012e <_lv_txt_get_next_line+0x16a> 10124: f1b8 0f0d cmp.w r8, #13 10128: d102 bne.n 10130 <_lv_txt_get_next_line+0x16c> 1012a: 2a0a cmp r2, #10 1012c: d100 bne.n 10130 <_lv_txt_get_next_line+0x16c> 1012e: 9c0c ldr r4, [sp, #48] ; 0x30 return i; 10130: b2a4 uxth r4, r4 max_width -= word_w; 10132: eba9 0505 sub.w r5, r9, r5 if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 10136: 9b0b ldr r3, [sp, #44] ; 0x2c max_width -= word_w; 10138: fa0f f985 sxth.w r9, r5 if(advance == 0) { 1013c: b994 cbnz r4, 10164 <_lv_txt_get_next_line+0x1a0> if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 1013e: b95b cbnz r3, 10158 <_lv_txt_get_next_line+0x194> 10140: 4b12 ldr r3, [pc, #72] ; (1018c <_lv_txt_get_next_line+0x1c8>) 10142: a90b add r1, sp, #44 ; 0x2c 10144: 685b ldr r3, [r3, #4] 10146: 4638 mov r0, r7 10148: 4798 blx r3 if(i == 0) { 1014a: 9b0b ldr r3, [sp, #44] ; 0x2c 1014c: b923 cbnz r3, 10158 <_lv_txt_get_next_line+0x194> _lv_txt_encoded_next(txt, &i); 1014e: 4b0f ldr r3, [pc, #60] ; (1018c <_lv_txt_get_next_line+0x1c8>) 10150: a90b add r1, sp, #44 ; 0x2c 10152: 685b ldr r3, [r3, #4] 10154: 4638 mov r0, r7 10156: 4798 blx r3 return i; 10158: f8bd 002c ldrh.w r0, [sp, #44] ; 0x2c 1015c: e751 b.n 10002 <_lv_txt_get_next_line+0x3e> if(word_w_ptr != NULL) *word_w_ptr = 0; /* Return no word */ 1015e: 2500 movs r5, #0 return 0; 10160: 462c mov r4, r5 10162: e7e6 b.n 10132 <_lv_txt_get_next_line+0x16e> i += advance; 10164: 441c add r4, r3 if(txt[0] == '\n' || txt[0] == '\r') break; 10166: 783b ldrb r3, [r7, #0] i += advance; 10168: 940b str r4, [sp, #44] ; 0x2c if(txt[0] == '\n' || txt[0] == '\r') break; 1016a: 2b0a cmp r3, #10 1016c: d0ed beq.n 1014a <_lv_txt_get_next_line+0x186> 1016e: 2b0d cmp r3, #13 10170: d0eb beq.n 1014a <_lv_txt_get_next_line+0x186> if(txt[i] == '\n' || txt[i] == '\r') { 10172: 5d3b ldrb r3, [r7, r4] 10174: 2b0a cmp r3, #10 10176: d002 beq.n 1017e <_lv_txt_get_next_line+0x1ba> 10178: 2b0d cmp r3, #13 1017a: f47f af50 bne.w 1001e <_lv_txt_get_next_line+0x5a> i++; /* Include the following newline in the current line */ 1017e: 3401 adds r4, #1 10180: 940b str r4, [sp, #44] ; 0x2c break; 10182: e7e2 b.n 1014a <_lv_txt_get_next_line+0x186> if(txt == NULL) return 0; 10184: 9802 ldr r0, [sp, #8] 10186: e73c b.n 10002 <_lv_txt_get_next_line+0x3e> if(txt[i] != '\0') i++; /*To go beyond `\n`*/ 10188: 3001 adds r0, #1 1018a: e739 b.n 10000 <_lv_txt_get_next_line+0x3c> 1018c: 20000054 .word 0x20000054 10190: 0000fee5 .word 0x0000fee5 10194: 0000d175 .word 0x0000d175 10198: 000241e6 .word 0x000241e6 0001019c <_lv_txt_get_size>: { 1019c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 101a0: b089 sub sp, #36 ; 0x24 size_res->x = 0; 101a2: 2500 movs r5, #0 { 101a4: 4698 mov r8, r3 101a6: f89d 3050 ldrb.w r3, [sp, #80] ; 0x50 101aa: f9bd b048 ldrsh.w fp, [sp, #72] ; 0x48 101ae: f9bd a04c ldrsh.w sl, [sp, #76] ; 0x4c 101b2: 9304 str r3, [sp, #16] 101b4: 4604 mov r4, r0 101b6: 4616 mov r6, r2 size_res->x = 0; 101b8: 8005 strh r5, [r0, #0] size_res->y = 0; 101ba: 8045 strh r5, [r0, #2] if(text == NULL) return; 101bc: 9103 str r1, [sp, #12] 101be: b329 cbz r1, 1020c <_lv_txt_get_size+0x70> if(font == NULL) return; 101c0: b322 cbz r2, 1020c <_lv_txt_get_size+0x70> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 101c2: 9b04 ldr r3, [sp, #16] 101c4: f013 0f02 tst.w r3, #2 101c8: f647 4318 movw r3, #31768 ; 0x7c18 101cc: bf18 it ne 101ce: 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; 101d0: f9b2 3008 ldrsh.w r3, [r2, #8] 101d4: 9306 str r3, [sp, #24] uint16_t letter_height = lv_font_get_line_height(font); 101d6: 8913 ldrh r3, [r2, #8] 101d8: 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)) { 101da: 445b add r3, fp 101dc: 9307 str r3, [sp, #28] while(text[line_start] != '\0') { 101de: 9b03 ldr r3, [sp, #12] 101e0: eb03 0905 add.w r9, r3, r5 101e4: 5d5b ldrb r3, [r3, r5] 101e6: b9a3 cbnz r3, 10212 <_lv_txt_get_size+0x76> if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { 101e8: b155 cbz r5, 10200 <_lv_txt_get_size+0x64> 101ea: f819 3c01 ldrb.w r3, [r9, #-1] 101ee: 2b0a cmp r3, #10 101f0: d001 beq.n 101f6 <_lv_txt_get_size+0x5a> 101f2: 2b0d cmp r3, #13 101f4: d104 bne.n 10200 <_lv_txt_get_size+0x64> size_res->y += letter_height + line_space; 101f6: 9b05 ldr r3, [sp, #20] 101f8: 8862 ldrh r2, [r4, #2] 101fa: 445b add r3, fp 101fc: 4413 add r3, r2 101fe: 8063 strh r3, [r4, #2] if(size_res->y == 0) 10200: f9b4 3002 ldrsh.w r3, [r4, #2] 10204: 2b00 cmp r3, #0 10206: d131 bne.n 1026c <_lv_txt_get_size+0xd0> size_res->y = letter_height; 10208: 9b06 ldr r3, [sp, #24] size_res->y -= line_space; 1020a: 8063 strh r3, [r4, #2] } 1020c: b009 add sp, #36 ; 0x24 1020e: 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); 10212: 9b04 ldr r3, [sp, #16] 10214: 9300 str r3, [sp, #0] 10216: 4642 mov r2, r8 10218: 4653 mov r3, sl 1021a: 4631 mov r1, r6 1021c: 4f15 ldr r7, [pc, #84] ; (10274 <_lv_txt_get_size+0xd8>) 1021e: 4648 mov r0, r9 10220: 47b8 blx r7 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 10222: f9b4 3002 ldrsh.w r3, [r4, #2] 10226: 9a07 ldr r2, [sp, #28] 10228: 4413 add r3, r2 1022a: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 1022e: 4601 mov r1, r0 10230: 4405 add r5, r0 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 10232: d30b bcc.n 1024c <_lv_txt_get_size+0xb0> LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height"); 10234: 4b10 ldr r3, [pc, #64] ; (10278 <_lv_txt_get_size+0xdc>) 10236: 4c11 ldr r4, [pc, #68] ; (1027c <_lv_txt_get_size+0xe0>) 10238: 9312 str r3, [sp, #72] ; 0x48 1023a: 4911 ldr r1, [pc, #68] ; (10280 <_lv_txt_get_size+0xe4>) 1023c: 4b11 ldr r3, [pc, #68] ; (10284 <_lv_txt_get_size+0xe8>) 1023e: 2271 movs r2, #113 ; 0x71 10240: 2002 movs r0, #2 10242: 46a4 mov ip, r4 } 10244: b009 add sp, #36 ; 0x24 10246: 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"); 1024a: 4760 bx ip size_res->y += line_space; 1024c: 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, 1024e: 9b04 ldr r3, [sp, #16] 10250: 9300 str r3, [sp, #0] 10252: 4648 mov r0, r9 10254: 4643 mov r3, r8 10256: f8df 9030 ldr.w r9, [pc, #48] ; 10288 <_lv_txt_get_size+0xec> 1025a: 4632 mov r2, r6 1025c: 47c8 blx r9 size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 1025e: f9b4 3000 ldrsh.w r3, [r4] 10262: 4298 cmp r0, r3 10264: bfb8 it lt 10266: 4618 movlt r0, r3 10268: 8020 strh r0, [r4, #0] line_start = new_line_start; 1026a: e7b8 b.n 101de <_lv_txt_get_size+0x42> size_res->y -= line_space; 1026c: eba3 030b sub.w r3, r3, fp 10270: e7cb b.n 1020a <_lv_txt_get_size+0x6e> 10272: bf00 nop 10274: 0000ffc5 .word 0x0000ffc5 10278: 0002421d .word 0x0002421d 1027c: 0000e8e9 .word 0x0000e8e9 10280: 000241ee .word 0x000241ee 10284: 0002425d .word 0x0002425d 10288: 0000ff1d .word 0x0000ff1d 0001028c <_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)) { 1028c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 10290: 9d08 ldr r5, [sp, #32] 10292: 4680 mov r8, r0 10294: 460f mov r7, r1 10296: 4614 mov r4, r2 10298: 4699 mov r9, r3 const char * middle; int32_t c; for(middle = base; n != 0;) { 1029a: b90c cbnz r4, 102a0 <_lv_utils_bsearch+0x14> } else { return (char *)middle; } } return NULL; 1029c: 4626 mov r6, r4 1029e: e012 b.n 102c6 <_lv_utils_bsearch+0x3a> middle += (n / 2) * size; 102a0: ea4f 0a54 mov.w sl, r4, lsr #1 102a4: fb09 760a mla r6, r9, sl, r7 if((c = (*cmp)(key, middle)) > 0) { 102a8: 4631 mov r1, r6 102aa: 4640 mov r0, r8 102ac: 47a8 blx r5 102ae: 2800 cmp r0, #0 102b0: dd08 ble.n 102c4 <_lv_utils_bsearch+0x38> n = (n / 2) - ((n & 1) == 0); 102b2: 43e4 mvns r4, r4 102b4: f004 0401 and.w r4, r4, #1 102b8: ebaa 0a04 sub.w sl, sl, r4 base = (middle += size); 102bc: eb06 0709 add.w r7, r6, r9 { 102c0: 4654 mov r4, sl 102c2: e7ea b.n 1029a <_lv_utils_bsearch+0xe> else if(c < 0) { 102c4: d1fc bne.n 102c0 <_lv_utils_bsearch+0x34> } 102c6: 4630 mov r0, r6 102c8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 000102cc : * 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; 102cc: 4b01 ldr r3, [pc, #4] ; (102d4 ) 102ce: 6018 str r0, [r3, #0] } 102d0: 4770 bx lr 102d2: bf00 nop 102d4: 2000c7d0 .word 0x2000c7d0 000102d8 : * 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; 102d8: 4b01 ldr r3, [pc, #4] ; (102e0 ) 102da: 681b ldr r3, [r3, #0] } 102dc: 68d8 ldr r0, [r3, #12] 102de: 4770 bx lr 102e0: 2000c7d0 .word 0x2000c7d0 000102e4 : return act_theme->flags; } void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name) { act_theme->apply_xcb(obj, name); 102e4: 4b01 ldr r3, [pc, #4] ; (102ec ) 102e6: 681b ldr r3, [r3, #0] 102e8: 681b ldr r3, [r3, #0] 102ea: 4718 bx r3 102ec: 2000c7d0 .word 0x2000c7d0 000102f0 : 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)), 102f0: f3c0 1303 ubfx r3, r0, #4, #4 { 102f4: b510 push {r4, lr} return lv_color_make((uint8_t)(((c >> 4) & 0xF0) | ((c >> 8) & 0xF)), (uint8_t)((c & 0xF0) | ((c & 0xF0) >> 4)), 102f6: f000 01f0 and.w r1, r0, #240 ; 0xf0 102fa: b2c4 uxtb r4, r0 102fc: f3c0 1207 ubfx r2, r0, #4, #8 return LV_COLOR_MAKE(r, g, b); 10300: 4319 orrs r1, r3 (uint8_t)((c & 0xF) | ((c & 0xF) << 4))); 10302: 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)), 10306: ea43 1304 orr.w r3, r3, r4, lsl #4 1030a: f022 020f bic.w r2, r2, #15 1030e: 0889 lsrs r1, r1, #2 10310: ea42 2010 orr.w r0, r2, r0, lsr #8 10314: f3c3 03c4 ubfx r3, r3, #3, #5 10318: ea43 1341 orr.w r3, r3, r1, lsl #5 1031c: f3c0 00c4 ubfx r0, r0, #3, #5 } 10320: ea43 20c0 orr.w r0, r3, r0, lsl #11 10324: bd10 pop {r4, pc} ... 00010328 : static void theme_apply(lv_obj_t * obj, lv_theme_style_t name) { lv_style_list_t * list; switch(name) { 10328: 3901 subs r1, #1 { 1032a: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1032e: 4604 mov r4, r0 switch(name) { 10330: 2927 cmp r1, #39 ; 0x27 10332: d834 bhi.n 1039e 10334: e8df f011 tbh [pc, r1, lsl #1] 10338: 00390028 .word 0x00390028 1033c: 008200bb .word 0x008200bb 10340: 004f0044 .word 0x004f0044 10344: 00b70347 .word 0x00b70347 10348: 0256010f .word 0x0256010f 1034c: 036f0039 .word 0x036f0039 10350: 03950220 .word 0x03950220 10354: 00b700b7 .word 0x00b700b7 10358: 00b70071 .word 0x00b70071 1035c: 00b70151 .word 0x00b70151 10360: 021501f7 .word 0x021501f7 10364: 012a0385 .word 0x012a0385 10368: 01ef013b .word 0x01ef013b 1036c: 01d30166 .word 0x01d30166 10370: 031b00eb .word 0x031b00eb 10374: 00d70337 .word 0x00d70337 10378: 02840098 .word 0x02840098 1037c: 01b9018e .word 0x01b9018e 10380: 01c702f0 .word 0x01c702f0 10384: 02e502be .word 0x02e502be case LV_THEME_NONE: break; case LV_THEME_SCR: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 10388: 4b99 ldr r3, [pc, #612] ; (105f0 ) 1038a: 2100 movs r1, #0 1038c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 1038e: 4b99 ldr r3, [pc, #612] ; (105f4 ) 10390: 2100 movs r1, #0 10392: 4620 mov r0, r4 10394: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 10396: 4b98 ldr r3, [pc, #608] ; (105f8 ) 10398: 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); 1039a: 4b98 ldr r3, [pc, #608] ; (105fc ) 1039c: 4798 blx r3 #endif default: break; } lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 1039e: 4620 mov r0, r4 103a0: 4b97 ldr r3, [pc, #604] ; (10600 ) } 103a2: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 103a6: 21ff movs r1, #255 ; 0xff 103a8: 4718 bx r3 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 103aa: 4b91 ldr r3, [pc, #580] ; (105f0 ) 103ac: 2100 movs r1, #0 103ae: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 103b0: 4b90 ldr r3, [pc, #576] ; (105f4 ) 103b2: 2100 movs r1, #0 103b4: 4620 mov r0, r4 103b6: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 103b8: 4b8f ldr r3, [pc, #572] ; (105f8 ) 103ba: 6819 ldr r1, [r3, #0] 103bc: 3104 adds r1, #4 103be: e7ec b.n 1039a lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 103c0: 4b8b ldr r3, [pc, #556] ; (105f0 ) 103c2: 2100 movs r1, #0 103c4: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 103c6: 4b8b ldr r3, [pc, #556] ; (105f4 ) 103c8: 2100 movs r1, #0 103ca: 4620 mov r0, r4 103cc: 4798 blx r3 _lv_style_list_add_style(list, &styles->btn); 103ce: 4b8a ldr r3, [pc, #552] ; (105f8 ) 103d0: 6819 ldr r1, [r3, #0] 103d2: 3110 adds r1, #16 103d4: e7e1 b.n 1039a _lv_style_list_add_style(list, &styles->bg); 103d6: 4e88 ldr r6, [pc, #544] ; (105f8 ) lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 103d8: f8df 9214 ldr.w r9, [pc, #532] ; 105f0 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 103dc: f8df 8214 ldr.w r8, [pc, #532] ; 105f4 _lv_style_list_add_style(list, &styles->bg); 103e0: 4d86 ldr r5, [pc, #536] ; (105fc ) lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 103e2: 2100 movs r1, #0 103e4: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 103e6: 2100 movs r1, #0 103e8: 4620 mov r0, r4 103ea: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 103ec: 6831 ldr r1, [r6, #0] 103ee: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 103f0: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 103f2: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 103f4: 6831 ldr r1, [r6, #0] 103f6: 3118 adds r1, #24 _lv_style_list_add_style(list, &styles->kb_bg); 103f8: 4638 mov r0, r7 103fa: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN); 103fc: 2101 movs r1, #1 103fe: 4620 mov r0, r4 10400: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 10402: 2101 movs r1, #1 10404: 4620 mov r0, r4 10406: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 10408: 6831 ldr r1, [r6, #0] 1040a: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 1040c: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1040e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 10410: 6831 ldr r1, [r6, #0] 10412: 4638 mov r0, r7 10414: 3108 adds r1, #8 _lv_style_list_add_style(list, &styles->gauge_needle); 10416: 47a8 blx r5 break; 10418: e7c1 b.n 1039e lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 1041a: 2100 movs r1, #0 1041c: f8df 91d0 ldr.w r9, [pc, #464] ; 105f0 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 10420: f8df 81d0 ldr.w r8, [pc, #464] ; 105f4 _lv_style_list_add_style(list, &styles->scr); 10424: 4e74 ldr r6, [pc, #464] ; (105f8 ) 10426: 4d75 ldr r5, [pc, #468] ; (105fc ) lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 10428: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 1042a: 2100 movs r1, #0 1042c: 4620 mov r0, r4 1042e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->scr); 10430: 6831 ldr r1, [r6, #0] list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 10432: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->scr); 10434: 47a8 blx r5 _lv_style_list_add_style(list, &styles->kb_bg); 10436: 6831 ldr r1, [r6, #0] 10438: 3168 adds r1, #104 ; 0x68 1043a: e7dd b.n 103f8 lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 1043c: f8df 81b0 ldr.w r8, [pc, #432] ; 105f0 _lv_style_list_add_style(list, &styles->bar_bg); 10440: 4e6d ldr r6, [pc, #436] ; (105f8 ) list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 10442: 4f6c ldr r7, [pc, #432] ; (105f4 ) _lv_style_list_add_style(list, &styles->bar_bg); 10444: 4d6d ldr r5, [pc, #436] ; (105fc ) lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 10446: 2100 movs r1, #0 10448: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 1044a: 2100 movs r1, #0 1044c: 4620 mov r0, r4 1044e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 10450: 6831 ldr r1, [r6, #0] 10452: 3124 adds r1, #36 ; 0x24 10454: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC); 10456: 2101 movs r1, #1 10458: 4620 mov r0, r4 1045a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); 1045c: 2101 movs r1, #1 1045e: 4620 mov r0, r4 10460: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 10462: 6831 ldr r1, [r6, #0] 10464: 3128 adds r1, #40 ; 0x28 10466: e7d6 b.n 10416 lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 10468: f8df 8184 ldr.w r8, [pc, #388] ; 105f0 _lv_style_list_add_style(list, &styles->bar_bg); 1046c: 4e62 ldr r6, [pc, #392] ; (105f8 ) list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 1046e: 4f61 ldr r7, [pc, #388] ; (105f4 ) _lv_style_list_add_style(list, &styles->bar_bg); 10470: 4d62 ldr r5, [pc, #392] ; (105fc ) lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 10472: 2100 movs r1, #0 10474: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 10476: 2100 movs r1, #0 10478: 4620 mov r0, r4 1047a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 1047c: 6831 ldr r1, [r6, #0] 1047e: 3124 adds r1, #36 ; 0x24 10480: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC); 10482: 2101 movs r1, #1 10484: 4620 mov r0, r4 10486: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); 10488: 2101 movs r1, #1 1048a: 4620 mov r0, r4 1048c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 1048e: 6831 ldr r1, [r6, #0] 10490: 3128 adds r1, #40 ; 0x28 10492: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB); 10494: 2102 movs r1, #2 10496: 4620 mov r0, r4 10498: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); 1049a: 2102 movs r1, #2 1049c: 4620 mov r0, r4 1049e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sw_knob); 104a0: 6831 ldr r1, [r6, #0] 104a2: 319c adds r1, #156 ; 0x9c 104a4: e7b7 b.n 10416 lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN); 104a6: 4b52 ldr r3, [pc, #328] ; (105f0 ) 104a8: 2100 movs r1, #0 104aa: 4798 blx r3 break; 104ac: e777 b.n 1039e lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 104ae: f8df 9140 ldr.w r9, [pc, #320] ; 105f0 _lv_style_list_add_style(list, &styles->bg); 104b2: 4e51 ldr r6, [pc, #324] ; (105f8 ) list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 104b4: f8df 813c ldr.w r8, [pc, #316] ; 105f4 _lv_style_list_add_style(list, &styles->bg); 104b8: 4d50 ldr r5, [pc, #320] ; (105fc ) lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 104ba: 2100 movs r1, #0 104bc: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 104be: 2100 movs r1, #0 104c0: 4620 mov r0, r4 104c2: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 104c4: 6831 ldr r1, [r6, #0] 104c6: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 104c8: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 104ca: 47a8 blx r5 _lv_style_list_add_style(list, &styles->arc_bg); 104cc: 6831 ldr r1, [r6, #0] 104ce: 4638 mov r0, r7 104d0: 3120 adds r1, #32 104d2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC); 104d4: 2101 movs r1, #1 104d6: 4620 mov r0, r4 104d8: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); 104da: 2101 movs r1, #1 104dc: 4620 mov r0, r4 104de: 47c0 blx r8 _lv_style_list_add_style(list, &styles->arc_indic); 104e0: 6831 ldr r1, [r6, #0] 104e2: 311c adds r1, #28 104e4: e797 b.n 10416 lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 104e6: f8df 8108 ldr.w r8, [pc, #264] ; 105f0 _lv_style_list_add_style(list, &styles->arc_bg); 104ea: 4e43 ldr r6, [pc, #268] ; (105f8 ) list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 104ec: 4f41 ldr r7, [pc, #260] ; (105f4 ) _lv_style_list_add_style(list, &styles->arc_bg); 104ee: 4d43 ldr r5, [pc, #268] ; (105fc ) lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 104f0: 2100 movs r1, #0 104f2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 104f4: 2100 movs r1, #0 104f6: 4620 mov r0, r4 104f8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_bg); 104fa: 6831 ldr r1, [r6, #0] 104fc: 3120 adds r1, #32 104fe: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC); 10500: 4620 mov r0, r4 10502: 2101 movs r1, #1 10504: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); 10506: 2101 movs r1, #1 10508: 4620 mov r0, r4 1050a: 47b8 blx r7 1050c: e7e8 b.n 104e0 _lv_style_list_add_style(list, &styles->bar_bg); 1050e: 4e3a ldr r6, [pc, #232] ; (105f8 ) lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 10510: f8df 80dc ldr.w r8, [pc, #220] ; 105f0 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 10514: 4f37 ldr r7, [pc, #220] ; (105f4 ) _lv_style_list_add_style(list, &styles->bar_bg); 10516: 4d39 ldr r5, [pc, #228] ; (105fc ) lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 10518: 2100 movs r1, #0 1051a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 1051c: 2100 movs r1, #0 1051e: 4620 mov r0, r4 10520: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 10522: 6831 ldr r1, [r6, #0] 10524: 3124 adds r1, #36 ; 0x24 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 10526: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bar_bg); 10528: 47a8 blx r5 _lv_style_list_add_style(list, &styles->slider_bg); 1052a: 6831 ldr r1, [r6, #0] 1052c: 4648 mov r0, r9 1052e: 3194 adds r1, #148 ; 0x94 10530: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC); 10532: 2101 movs r1, #1 10534: 4620 mov r0, r4 10536: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); 10538: 2101 movs r1, #1 1053a: 4620 mov r0, r4 1053c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 1053e: 6831 ldr r1, [r6, #0] 10540: 3128 adds r1, #40 ; 0x28 10542: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB); 10544: 2102 movs r1, #2 10546: 4620 mov r0, r4 10548: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); 1054a: 2102 movs r1, #2 1054c: 4620 mov r0, r4 1054e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->slider_knob); 10550: 6831 ldr r1, [r6, #0] 10552: 3190 adds r1, #144 ; 0x90 10554: e75f b.n 10416 _lv_style_list_add_style(list, &styles->cb_bg); 10556: 4f28 ldr r7, [pc, #160] ; (105f8 ) lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 10558: f8df 8094 ldr.w r8, [pc, #148] ; 105f0 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 1055c: 4e25 ldr r6, [pc, #148] ; (105f4 ) _lv_style_list_add_style(list, &styles->cb_bg); 1055e: 4d27 ldr r5, [pc, #156] ; (105fc ) lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 10560: 2100 movs r1, #0 10562: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 10564: 2100 movs r1, #0 10566: 4620 mov r0, r4 10568: 47b0 blx r6 _lv_style_list_add_style(list, &styles->cb_bg); 1056a: 6839 ldr r1, [r7, #0] 1056c: 314c adds r1, #76 ; 0x4c 1056e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET); 10570: 2140 movs r1, #64 ; 0x40 10572: 4620 mov r0, r4 10574: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 10576: 2140 movs r1, #64 ; 0x40 10578: 4620 mov r0, r4 1057a: 47b0 blx r6 _lv_style_list_add_style(list, &styles->btn); 1057c: 6839 ldr r1, [r7, #0] 1057e: 3110 adds r1, #16 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 10580: 4606 mov r6, r0 _lv_style_list_add_style(list, &styles->btn); 10582: 47a8 blx r5 _lv_style_list_add_style(list, &styles->cb_bullet); 10584: 6839 ldr r1, [r7, #0] 10586: 4630 mov r0, r6 10588: 3150 adds r1, #80 ; 0x50 1058a: e744 b.n 10416 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 1058c: 4b18 ldr r3, [pc, #96] ; (105f0 ) _lv_style_list_add_style(list, &styles->bg); 1058e: 4f1a ldr r7, [pc, #104] ; (105f8 ) 10590: 4e1a ldr r6, [pc, #104] ; (105fc ) lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 10592: 2100 movs r1, #0 10594: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 10596: 4b17 ldr r3, [pc, #92] ; (105f4 ) 10598: 2100 movs r1, #0 1059a: 4620 mov r0, r4 1059c: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 1059e: 6839 ldr r1, [r7, #0] 105a0: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 105a2: 4605 mov r5, r0 _lv_style_list_add_style(list, &styles->bg); 105a4: 47b0 blx r6 _lv_style_list_add_style(list, &styles->mbox_bg); 105a6: 6839 ldr r1, [r7, #0] 105a8: 317c adds r1, #124 ; 0x7c _lv_style_list_add_style(list, &styles->lmeter); 105aa: 4628 mov r0, r5 105ac: e07b b.n 106a6 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 105ae: f8df 8040 ldr.w r8, [pc, #64] ; 105f0 _lv_style_list_add_style(list, &styles->pad_small); 105b2: 4e11 ldr r6, [pc, #68] ; (105f8 ) list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 105b4: 4f0f ldr r7, [pc, #60] ; (105f4 ) _lv_style_list_add_style(list, &styles->pad_small); 105b6: 4d11 ldr r5, [pc, #68] ; (105fc ) lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 105b8: 2140 movs r1, #64 ; 0x40 105ba: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 105bc: 2140 movs r1, #64 ; 0x40 105be: 4620 mov r0, r4 105c0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 105c2: 6831 ldr r1, [r6, #0] 105c4: 3118 adds r1, #24 105c6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN); 105c8: 2141 movs r1, #65 ; 0x41 105ca: 4620 mov r0, r4 105cc: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); 105ce: 2141 movs r1, #65 ; 0x41 105d0: 4620 mov r0, r4 105d2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->btn); 105d4: 6831 ldr r1, [r6, #0] 105d6: 3110 adds r1, #16 105d8: e71d b.n 10416 lv_obj_clean_style_list(obj, LV_LED_PART_MAIN); 105da: 4b05 ldr r3, [pc, #20] ; (105f0 ) 105dc: 2100 movs r1, #0 105de: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); 105e0: 4b04 ldr r3, [pc, #16] ; (105f4 ) 105e2: 2100 movs r1, #0 105e4: 4620 mov r0, r4 105e6: 4798 blx r3 _lv_style_list_add_style(list, &styles->led); 105e8: 4b03 ldr r3, [pc, #12] ; (105f8 ) 105ea: 6819 ldr r1, [r3, #0] 105ec: 316c adds r1, #108 ; 0x6c 105ee: e6d4 b.n 1039a 105f0: 00002549 .word 0x00002549 105f4: 0000248d .word 0x0000248d 105f8: 2000c7d4 .word 0x2000c7d4 105fc: 00005619 .word 0x00005619 10600: 00002d91 .word 0x00002d91 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 10604: f8df 82a8 ldr.w r8, [pc, #680] ; 108b0 _lv_style_list_add_style(list, &styles->bg); 10608: 4ea6 ldr r6, [pc, #664] ; (108a4 ) list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 1060a: 4fa7 ldr r7, [pc, #668] ; (108a8 ) _lv_style_list_add_style(list, &styles->bg); 1060c: 4da7 ldr r5, [pc, #668] ; (108ac ) lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 1060e: 2100 movs r1, #0 10610: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 10612: 2100 movs r1, #0 10614: 4620 mov r0, r4 10616: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10618: 6831 ldr r1, [r6, #0] 1061a: 3104 adds r1, #4 1061c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 1061e: 2140 movs r1, #64 ; 0x40 10620: 4620 mov r0, r4 10622: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 10624: 2140 movs r1, #64 ; 0x40 10626: 4620 mov r0, r4 10628: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_inner); 1062a: 6831 ldr r1, [r6, #0] 1062c: 3114 adds r1, #20 _lv_style_list_add_style(list, &styles->scr); 1062e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 10630: 2101 movs r1, #1 10632: 4620 mov r0, r4 10634: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 10636: 2101 movs r1, #1 10638: 4620 mov r0, r4 1063a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1063c: 6831 ldr r1, [r6, #0] 1063e: 3180 adds r1, #128 ; 0x80 10640: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 10642: 2102 movs r1, #2 10644: 4620 mov r0, r4 10646: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 10648: 2102 movs r1, #2 1064a: 4620 mov r0, r4 1064c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 1064e: 6831 ldr r1, [r6, #0] 10650: 3184 adds r1, #132 ; 0x84 10652: e6e0 b.n 10416 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 10654: 4d96 ldr r5, [pc, #600] ; (108b0 ) _lv_style_list_add_style(list, &styles->scr); 10656: 4f93 ldr r7, [pc, #588] ; (108a4 ) list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 10658: f8df 824c ldr.w r8, [pc, #588] ; 108a8 _lv_style_list_add_style(list, &styles->scr); 1065c: 4e93 ldr r6, [pc, #588] ; (108ac ) lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 1065e: 2100 movs r1, #0 10660: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 10662: 2100 movs r1, #0 10664: 4620 mov r0, r4 10666: 47c0 blx r8 _lv_style_list_add_style(list, &styles->scr); 10668: 6839 ldr r1, [r7, #0] 1066a: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); 1066c: 2140 movs r1, #64 ; 0x40 1066e: 4620 mov r0, r4 10670: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG); 10672: 2141 movs r1, #65 ; 0x41 10674: 4620 mov r0, r4 10676: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); 10678: 2141 movs r1, #65 ; 0x41 1067a: 4620 mov r0, r4 1067c: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 1067e: 6839 ldr r1, [r7, #0] 10680: 31a8 adds r1, #168 ; 0xa8 10682: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC); 10684: 2143 movs r1, #67 ; 0x43 10686: 4620 mov r0, r4 10688: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); 1068a: 2143 movs r1, #67 ; 0x43 1068c: 4620 mov r0, r4 1068e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_indic); 10690: 6839 ldr r1, [r7, #0] 10692: 31ac adds r1, #172 ; 0xac 10694: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 10696: 2142 movs r1, #66 ; 0x42 10698: 4620 mov r0, r4 1069a: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 1069c: 2142 movs r1, #66 ; 0x42 1069e: 4620 mov r0, r4 106a0: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns); 106a2: 6839 ldr r1, [r7, #0] 106a4: 31a4 adds r1, #164 ; 0xa4 _lv_style_list_add_style(list, &styles->lmeter); 106a6: 47b0 blx r6 break; 106a8: e679 b.n 1039e lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 106aa: 4d81 ldr r5, [pc, #516] ; (108b0 ) 106ac: 2100 movs r1, #0 106ae: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 106b0: 2140 movs r1, #64 ; 0x40 106b2: 4620 mov r0, r4 106b4: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 106b6: 4b7c ldr r3, [pc, #496] ; (108a8 ) 106b8: 2140 movs r1, #64 ; 0x40 106ba: 4620 mov r0, r4 106bc: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 106be: 4b79 ldr r3, [pc, #484] ; (108a4 ) 106c0: 6819 ldr r1, [r3, #0] 106c2: 31b0 adds r1, #176 ; 0xb0 106c4: e669 b.n 1039a lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 106c6: 2100 movs r1, #0 106c8: f8df 81e4 ldr.w r8, [pc, #484] ; 108b0 _lv_style_list_add_style(list, &styles->scr); 106cc: 4e75 ldr r6, [pc, #468] ; (108a4 ) list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 106ce: 4f76 ldr r7, [pc, #472] ; (108a8 ) _lv_style_list_add_style(list, &styles->scr); 106d0: 4d76 ldr r5, [pc, #472] ; (108ac ) lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 106d2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 106d4: 2100 movs r1, #0 106d6: 4620 mov r0, r4 106d8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 106da: 6831 ldr r1, [r6, #0] 106dc: e7a7 b.n 1062e _lv_style_list_add_style(list, &styles->bg); 106de: 4e71 ldr r6, [pc, #452] ; (108a4 ) lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 106e0: f8df 91cc ldr.w r9, [pc, #460] ; 108b0 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 106e4: f8df 81c0 ldr.w r8, [pc, #448] ; 108a8 _lv_style_list_add_style(list, &styles->bg); 106e8: 4d70 ldr r5, [pc, #448] ; (108ac ) lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 106ea: 2100 movs r1, #0 106ec: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 106ee: 2100 movs r1, #0 106f0: 4620 mov r0, r4 106f2: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 106f4: 6831 ldr r1, [r6, #0] 106f6: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 106f8: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 106fa: 47a8 blx r5 _lv_style_list_add_style(list, &styles->roller_bg); 106fc: 6831 ldr r1, [r6, #0] 106fe: 4638 mov r0, r7 10700: 3188 adds r1, #136 ; 0x88 10702: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED); 10704: 2103 movs r1, #3 10706: 4620 mov r0, r4 10708: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); 1070a: 2103 movs r1, #3 1070c: 4620 mov r0, r4 1070e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->roller_sel); 10710: 6831 ldr r1, [r6, #0] 10712: 318c adds r1, #140 ; 0x8c 10714: e67f b.n 10416 lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN); 10716: 4b66 ldr r3, [pc, #408] ; (108b0 ) 10718: 2100 movs r1, #0 1071a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN); 1071c: 4b62 ldr r3, [pc, #392] ; (108a8 ) 1071e: 2100 movs r1, #0 10720: 4620 mov r0, r4 10722: 4798 blx r3 break; 10724: e63b b.n 1039e lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 10726: 4f62 ldr r7, [pc, #392] ; (108b0 ) _lv_style_list_add_style(list, &styles->bg); 10728: 4e5e ldr r6, [pc, #376] ; (108a4 ) list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 1072a: f8df 917c ldr.w r9, [pc, #380] ; 108a8 _lv_style_list_add_style(list, &styles->bg); 1072e: 4d5f ldr r5, [pc, #380] ; (108ac ) lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 10730: 2100 movs r1, #0 10732: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 10734: 2100 movs r1, #0 10736: 4620 mov r0, r4 10738: 47c8 blx r9 _lv_style_list_add_style(list, &styles->bg); 1073a: 6831 ldr r1, [r6, #0] 1073c: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 1073e: 4680 mov r8, r0 _lv_style_list_add_style(list, &styles->bg); 10740: 47a8 blx r5 _lv_style_list_add_style(list, &styles->list_bg); 10742: 6831 ldr r1, [r6, #0] 10744: 4640 mov r0, r8 10746: 3174 adds r1, #116 ; 0x74 10748: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE); 1074a: 2140 movs r1, #64 ; 0x40 1074c: 4620 mov r0, r4 1074e: 47b8 blx r7 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR); 10750: 2101 movs r1, #1 10752: 4620 mov r0, r4 10754: 47b8 blx r7 list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); 10756: 2101 movs r1, #1 10758: 4620 mov r0, r4 1075a: 47c8 blx r9 _lv_style_list_add_style(list, &styles->sb); 1075c: 6831 ldr r1, [r6, #0] 1075e: 3180 adds r1, #128 ; 0x80 10760: e659 b.n 10416 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 10762: 4b53 ldr r3, [pc, #332] ; (108b0 ) 10764: 2100 movs r1, #0 10766: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 10768: 4b4f ldr r3, [pc, #316] ; (108a8 ) 1076a: 2100 movs r1, #0 1076c: 4620 mov r0, r4 1076e: 4798 blx r3 _lv_style_list_add_style(list, &styles->list_btn); 10770: 4b4c ldr r3, [pc, #304] ; (108a4 ) 10772: 6819 ldr r1, [r3, #0] 10774: 3178 adds r1, #120 ; 0x78 10776: e610 b.n 1039a _lv_style_list_add_style(list, &styles->bg); 10778: 4e4a ldr r6, [pc, #296] ; (108a4 ) lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 1077a: f8df 8134 ldr.w r8, [pc, #308] ; 108b0 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 1077e: 4f4a ldr r7, [pc, #296] ; (108a8 ) _lv_style_list_add_style(list, &styles->bg); 10780: 4d4a ldr r5, [pc, #296] ; (108ac ) lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 10782: 2100 movs r1, #0 10784: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 10786: 2100 movs r1, #0 10788: 4620 mov r0, r4 1078a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1078c: 6831 ldr r1, [r6, #0] 1078e: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 10790: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 10792: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 10794: 6831 ldr r1, [r6, #0] 10796: 4648 mov r0, r9 10798: 3108 adds r1, #8 1079a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1079c: 6831 ldr r1, [r6, #0] 1079e: 4648 mov r0, r9 107a0: 3118 adds r1, #24 107a2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); 107a4: 2140 movs r1, #64 ; 0x40 107a6: 4620 mov r0, r4 107a8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 107aa: 2140 movs r1, #64 ; 0x40 107ac: 4620 mov r0, r4 107ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 107b0: 6831 ldr r1, [r6, #0] 107b2: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 107b4: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 107b6: 47a8 blx r5 _lv_style_list_add_style(list, &styles->ddlist_page); 107b8: 6831 ldr r1, [r6, #0] 107ba: 4648 mov r0, r9 107bc: 3154 adds r1, #84 ; 0x54 107be: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 107c0: 2141 movs r1, #65 ; 0x41 107c2: 4620 mov r0, r4 107c4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 107c6: 2141 movs r1, #65 ; 0x41 107c8: 4620 mov r0, r4 107ca: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 107cc: 6831 ldr r1, [r6, #0] 107ce: 3180 adds r1, #128 ; 0x80 107d0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); 107d2: 2142 movs r1, #66 ; 0x42 107d4: 4620 mov r0, r4 107d6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); 107d8: 2142 movs r1, #66 ; 0x42 107da: 4620 mov r0, r4 107dc: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ddlist_sel); 107de: 6831 ldr r1, [r6, #0] 107e0: 3158 adds r1, #88 ; 0x58 107e2: e618 b.n 10416 _lv_style_list_add_style(list, &styles->bg); 107e4: 4e2f ldr r6, [pc, #188] ; (108a4 ) lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 107e6: f8df 90c8 ldr.w r9, [pc, #200] ; 108b0 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 107ea: f8df 80bc ldr.w r8, [pc, #188] ; 108a8 _lv_style_list_add_style(list, &styles->bg); 107ee: 4d2f ldr r5, [pc, #188] ; (108ac ) lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 107f0: 2100 movs r1, #0 107f2: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 107f4: 2100 movs r1, #0 107f6: 4620 mov r0, r4 107f8: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 107fa: 6831 ldr r1, [r6, #0] 107fc: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 107fe: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 10800: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_bg); 10802: 6831 ldr r1, [r6, #0] 10804: 4638 mov r0, r7 10806: 3140 adds r1, #64 ; 0x40 10808: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1080a: 6831 ldr r1, [r6, #0] 1080c: 4638 mov r0, r7 1080e: 3118 adds r1, #24 10810: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG); 10812: 2101 movs r1, #1 10814: 4620 mov r0, r4 10816: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 10818: 2101 movs r1, #1 1081a: 4620 mov r0, r4 1081c: 47c0 blx r8 _lv_style_list_add_style(list, &styles->pad_small); 1081e: 6831 ldr r1, [r6, #0] 10820: 3118 adds r1, #24 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 10822: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->pad_small); 10824: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_series_bg); 10826: 6831 ldr r1, [r6, #0] 10828: 4638 mov r0, r7 1082a: 3144 adds r1, #68 ; 0x44 1082c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES); 1082e: 2102 movs r1, #2 10830: 4620 mov r0, r4 10832: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); 10834: 2102 movs r1, #2 10836: 4620 mov r0, r4 10838: 47c0 blx r8 _lv_style_list_add_style(list, &styles->chart_series); 1083a: 6831 ldr r1, [r6, #0] 1083c: 3148 adds r1, #72 ; 0x48 1083e: e5ea b.n 10416 lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 10840: f8df 806c ldr.w r8, [pc, #108] ; 108b0 _lv_style_list_add_style(list, &styles->bg); 10844: 4e17 ldr r6, [pc, #92] ; (108a4 ) list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 10846: 4f18 ldr r7, [pc, #96] ; (108a8 ) _lv_style_list_add_style(list, &styles->bg); 10848: 4d18 ldr r5, [pc, #96] ; (108ac ) lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 1084a: 2100 movs r1, #0 1084c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 1084e: 2100 movs r1, #0 10850: 4620 mov r0, r4 10852: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10854: 6831 ldr r1, [r6, #0] 10856: 3104 adds r1, #4 10858: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1); 1085a: 2101 movs r1, #1 1085c: 4620 mov r0, r4 1085e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1); 10860: 2101 movs r1, #1 10862: 4620 mov r0, r4 10864: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 10866: 6831 ldr r1, [r6, #0] 10868: 31a0 adds r1, #160 ; 0xa0 1086a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2); 1086c: 2102 movs r1, #2 1086e: 4620 mov r0, r4 10870: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2); 10872: 2102 movs r1, #2 10874: 4620 mov r0, r4 10876: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 10878: 6831 ldr r1, [r6, #0] 1087a: 31a0 adds r1, #160 ; 0xa0 1087c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3); 1087e: 2103 movs r1, #3 10880: 4620 mov r0, r4 10882: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3); 10884: 2103 movs r1, #3 10886: 4620 mov r0, r4 10888: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 1088a: 6831 ldr r1, [r6, #0] 1088c: 31a0 adds r1, #160 ; 0xa0 1088e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4); 10890: 2104 movs r1, #4 10892: 4620 mov r0, r4 10894: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4); 10896: 2104 movs r1, #4 10898: 4620 mov r0, r4 1089a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 1089c: 6831 ldr r1, [r6, #0] 1089e: 31a0 adds r1, #160 ; 0xa0 108a0: e5b9 b.n 10416 108a2: bf00 nop 108a4: 2000c7d4 .word 0x2000c7d4 108a8: 0000248d .word 0x0000248d 108ac: 00005619 .word 0x00005619 108b0: 00002549 .word 0x00002549 lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 108b4: f8df 8200 ldr.w r8, [pc, #512] ; 10ab8 _lv_style_list_add_style(list, &styles->scr); 108b8: 4e7c ldr r6, [pc, #496] ; (10aac ) list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 108ba: 4f7d ldr r7, [pc, #500] ; (10ab0 ) _lv_style_list_add_style(list, &styles->scr); 108bc: 4d7d ldr r5, [pc, #500] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 108be: 2100 movs r1, #0 108c0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 108c2: 2100 movs r1, #0 108c4: 4620 mov r0, r4 108c6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 108c8: 6831 ldr r1, [r6, #0] 108ca: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR); 108cc: 2142 movs r1, #66 ; 0x42 108ce: 4620 mov r0, r4 108d0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); 108d2: 2142 movs r1, #66 ; 0x42 108d4: 4620 mov r0, r4 108d6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 108d8: 6831 ldr r1, [r6, #0] 108da: 3180 adds r1, #128 ; 0x80 108dc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 108de: 2141 movs r1, #65 ; 0x41 108e0: 4620 mov r0, r4 108e2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 108e4: 2141 movs r1, #65 ; 0x41 108e6: 4620 mov r0, r4 108e8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 108ea: 6831 ldr r1, [r6, #0] 108ec: 31b0 adds r1, #176 ; 0xb0 108ee: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER); 108f0: 2140 movs r1, #64 ; 0x40 108f2: 4620 mov r0, r4 108f4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); 108f6: 2140 movs r1, #64 ; 0x40 108f8: 4620 mov r0, r4 108fa: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 108fc: 6831 ldr r1, [r6, #0] 108fe: 31a8 adds r1, #168 ; 0xa8 10900: e589 b.n 10416 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 10902: 4b6d ldr r3, [pc, #436] ; (10ab8 ) 10904: 2100 movs r1, #0 10906: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 10908: 4b69 ldr r3, [pc, #420] ; (10ab0 ) 1090a: 2100 movs r1, #0 1090c: 4620 mov r0, r4 1090e: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_btns); 10910: 4b66 ldr r3, [pc, #408] ; (10aac ) 10912: 6819 ldr r1, [r3, #0] 10914: 31a4 adds r1, #164 ; 0xa4 10916: e540 b.n 1039a lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 10918: f8df 819c ldr.w r8, [pc, #412] ; 10ab8 _lv_style_list_add_style(list, &styles->bg); 1091c: 4e63 ldr r6, [pc, #396] ; (10aac ) list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 1091e: 4f64 ldr r7, [pc, #400] ; (10ab0 ) _lv_style_list_add_style(list, &styles->bg); 10920: 4d64 ldr r5, [pc, #400] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 10922: 2100 movs r1, #0 10924: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 10926: 2100 movs r1, #0 10928: 4620 mov r0, r4 1092a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1092c: 6831 ldr r1, [r6, #0] 1092e: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 10930: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 10932: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 10934: 6831 ldr r1, [r6, #0] 10936: 4648 mov r0, r9 10938: 3118 adds r1, #24 1093a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 1093c: 4620 mov r0, r4 1093e: 2104 movs r1, #4 10940: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 10942: 2104 movs r1, #4 10944: 4620 mov r0, r4 10946: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_placeholder); 10948: 6831 ldr r1, [r6, #0] 1094a: 31b8 adds r1, #184 ; 0xb8 1094c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR); 1094e: 4620 mov r0, r4 10950: 2103 movs r1, #3 10952: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); 10954: 2103 movs r1, #3 10956: 4620 mov r0, r4 10958: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_cursor); 1095a: 6831 ldr r1, [r6, #0] 1095c: 31b4 adds r1, #180 ; 0xb4 1095e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 10960: 4620 mov r0, r4 10962: 2101 movs r1, #1 10964: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 10966: 2101 movs r1, #1 10968: 4620 mov r0, r4 1096a: 47b8 blx r7 1096c: e6f6 b.n 1075c _lv_style_list_add_style(list, &styles->bg); 1096e: 4e4f ldr r6, [pc, #316] ; (10aac ) lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 10970: f8df 9144 ldr.w r9, [pc, #324] ; 10ab8 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 10974: f8df 8138 ldr.w r8, [pc, #312] ; 10ab0 _lv_style_list_add_style(list, &styles->bg); 10978: 4d4e ldr r5, [pc, #312] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 1097a: 2100 movs r1, #0 1097c: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 1097e: 2100 movs r1, #0 10980: 4620 mov r0, r4 10982: 47c0 blx r8 _lv_style_list_add_style(list, &styles->bg); 10984: 6831 ldr r1, [r6, #0] 10986: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 10988: 4607 mov r7, r0 _lv_style_list_add_style(list, &styles->bg); 1098a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1098c: 6831 ldr r1, [r6, #0] 1098e: 4638 mov r0, r7 10990: 3118 adds r1, #24 10992: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR); 10994: 2103 movs r1, #3 10996: 4620 mov r0, r4 10998: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); 1099a: 2103 movs r1, #3 1099c: 4620 mov r0, r4 1099e: 47c0 blx r8 _lv_style_list_add_style(list, &styles->spinbox_cursor); 109a0: 6831 ldr r1, [r6, #0] 109a2: 3198 adds r1, #152 ; 0x98 109a4: e537 b.n 10416 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 109a6: 4b44 ldr r3, [pc, #272] ; (10ab8 ) _lv_style_list_add_style(list, &styles->bg); 109a8: 4f40 ldr r7, [pc, #256] ; (10aac ) 109aa: 4e42 ldr r6, [pc, #264] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 109ac: 2100 movs r1, #0 109ae: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 109b0: 4b3f ldr r3, [pc, #252] ; (10ab0 ) 109b2: 2100 movs r1, #0 109b4: 4620 mov r0, r4 109b6: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 109b8: 6839 ldr r1, [r7, #0] 109ba: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 109bc: 4605 mov r5, r0 _lv_style_list_add_style(list, &styles->bg); 109be: 47b0 blx r6 _lv_style_list_add_style(list, &styles->bg_click); 109c0: 6839 ldr r1, [r7, #0] 109c2: 3108 adds r1, #8 109c4: e5f1 b.n 105aa lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 109c6: f8df 80f0 ldr.w r8, [pc, #240] ; 10ab8 _lv_style_list_add_style(list, &styles->bg); 109ca: 4e38 ldr r6, [pc, #224] ; (10aac ) list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 109cc: 4f38 ldr r7, [pc, #224] ; (10ab0 ) _lv_style_list_add_style(list, &styles->bg); 109ce: 4d39 ldr r5, [pc, #228] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 109d0: 2100 movs r1, #0 109d2: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 109d4: 2100 movs r1, #0 109d6: 4620 mov r0, r4 109d8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 109da: 6831 ldr r1, [r6, #0] 109dc: 3104 adds r1, #4 109de: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE); 109e0: 2103 movs r1, #3 109e2: 4620 mov r0, r4 109e4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); 109e6: 2103 movs r1, #3 109e8: 4620 mov r0, r4 109ea: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_date_nums); 109ec: 6831 ldr r1, [r6, #0] 109ee: 312c adds r1, #44 ; 0x2c 109f0: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER); 109f2: 2101 movs r1, #1 109f4: 4620 mov r0, r4 109f6: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); 109f8: 2101 movs r1, #1 109fa: 4620 mov r0, r4 109fc: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_header); 109fe: 6831 ldr r1, [r6, #0] 10a00: 3130 adds r1, #48 ; 0x30 10a02: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 10a04: 2102 movs r1, #2 10a06: 4620 mov r0, r4 10a08: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 10a0a: 2102 movs r1, #2 10a0c: 4620 mov r0, r4 10a0e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_daynames); 10a10: 6831 ldr r1, [r6, #0] 10a12: 3134 adds r1, #52 ; 0x34 10a14: e4ff b.n 10416 lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 10a16: f8df 80a0 ldr.w r8, [pc, #160] ; 10ab8 _lv_style_list_add_style(list, &styles->cpicker_bg); 10a1a: 4e24 ldr r6, [pc, #144] ; (10aac ) list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 10a1c: 4f24 ldr r7, [pc, #144] ; (10ab0 ) _lv_style_list_add_style(list, &styles->cpicker_bg); 10a1e: 4d25 ldr r5, [pc, #148] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 10a20: 2100 movs r1, #0 10a22: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 10a24: 2100 movs r1, #0 10a26: 4620 mov r0, r4 10a28: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_bg); 10a2a: 6831 ldr r1, [r6, #0] 10a2c: 3138 adds r1, #56 ; 0x38 10a2e: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB); 10a30: 2101 movs r1, #1 10a32: 4620 mov r0, r4 10a34: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); 10a36: 2101 movs r1, #1 10a38: 4620 mov r0, r4 10a3a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_indic); 10a3c: 6831 ldr r1, [r6, #0] 10a3e: 313c adds r1, #60 ; 0x3c 10a40: e4e9 b.n 10416 lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 10a42: 4b1d ldr r3, [pc, #116] ; (10ab8 ) _lv_style_list_add_style(list, &styles->bg); 10a44: 4f19 ldr r7, [pc, #100] ; (10aac ) 10a46: 4e1b ldr r6, [pc, #108] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 10a48: 2100 movs r1, #0 10a4a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 10a4c: 4b18 ldr r3, [pc, #96] ; (10ab0 ) 10a4e: 2100 movs r1, #0 10a50: 4620 mov r0, r4 10a52: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 10a54: 6839 ldr r1, [r7, #0] 10a56: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 10a58: 4605 mov r5, r0 _lv_style_list_add_style(list, &styles->bg); 10a5a: 47b0 blx r6 _lv_style_list_add_style(list, &styles->lmeter); 10a5c: 6839 ldr r1, [r7, #0] 10a5e: 3170 adds r1, #112 ; 0x70 10a60: e5a3 b.n 105aa _lv_style_list_add_style(list, &styles->bg); 10a62: 4e12 ldr r6, [pc, #72] ; (10aac ) lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 10a64: f8df 8050 ldr.w r8, [pc, #80] ; 10ab8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 10a68: 4f11 ldr r7, [pc, #68] ; (10ab0 ) _lv_style_list_add_style(list, &styles->bg); 10a6a: 4d12 ldr r5, [pc, #72] ; (10ab4 ) lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 10a6c: 2100 movs r1, #0 10a6e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 10a70: 2100 movs r1, #0 10a72: 4620 mov r0, r4 10a74: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 10a76: 6831 ldr r1, [r6, #0] 10a78: 3104 adds r1, #4 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 10a7a: 4681 mov r9, r0 _lv_style_list_add_style(list, &styles->bg); 10a7c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->gauge_main); 10a7e: 6831 ldr r1, [r6, #0] 10a80: 4648 mov r0, r9 10a82: 315c adds r1, #92 ; 0x5c 10a84: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR); 10a86: 2101 movs r1, #1 10a88: 4620 mov r0, r4 10a8a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); 10a8c: 2101 movs r1, #1 10a8e: 4620 mov r0, r4 10a90: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_strong); 10a92: 6831 ldr r1, [r6, #0] 10a94: 3160 adds r1, #96 ; 0x60 10a96: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE); 10a98: 2102 movs r1, #2 10a9a: 4620 mov r0, r4 10a9c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); 10a9e: 2102 movs r1, #2 10aa0: 4620 mov r0, r4 10aa2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_needle); 10aa4: 6831 ldr r1, [r6, #0] 10aa6: 3164 adds r1, #100 ; 0x64 10aa8: e4b5 b.n 10416 10aaa: bf00 nop 10aac: 2000c7d4 .word 0x2000c7d4 10ab0: 0000248d .word 0x0000248d 10ab4: 00005619 .word 0x00005619 10ab8: 00002549 .word 0x00002549 00010abc : * STATIC FUNCTIONS **********************/ static void style_init_reset(lv_style_t * style) { if(inited) lv_style_reset(style); 10abc: 4b03 ldr r3, [pc, #12] ; (10acc ) 10abe: 791b ldrb r3, [r3, #4] 10ac0: b10b cbz r3, 10ac6 10ac2: 4b03 ldr r3, [pc, #12] ; (10ad0 ) else lv_style_init(style); 10ac4: 4718 bx r3 10ac6: 4b03 ldr r3, [pc, #12] ; (10ad4 ) 10ac8: e7fc b.n 10ac4 10aca: bf00 nop 10acc: 2000c7d4 .word 0x2000c7d4 10ad0: 00005795 .word 0x00005795 10ad4: 00005531 .word 0x00005531 00010ad8 : { 10ad8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->sw_knob); 10adc: 4d3a ldr r5, [pc, #232] ; (10bc8 ) 10ade: 4b3b ldr r3, [pc, #236] ; (10bcc ) 10ae0: 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) 10ae2: 4e3b ldr r6, [pc, #236] ; (10bd0 ) lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10ae4: 4c3b ldr r4, [pc, #236] ; (10bd4 ) style_init_reset(&styles->sw_knob); 10ae6: 309c adds r0, #156 ; 0x9c 10ae8: 4798 blx r3 lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 10aea: 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) 10aec: 4b3a ldr r3, [pc, #232] ; (10bd8 ) 10aee: 22ff movs r2, #255 ; 0xff 10af0: 212c movs r1, #44 ; 0x2c 10af2: 309c adds r0, #156 ; 0x9c 10af4: 4798 blx r3 lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); 10af6: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10af8: 4b38 ldr r3, [pc, #224] ; (10bdc ) 10afa: 2129 movs r1, #41 ; 0x29 10afc: 881a ldrh r2, [r3, #0] 10afe: 4b38 ldr r3, [pc, #224] ; (10be0 ) 10b00: 309c adds r0, #156 ; 0x9c 10b02: 4798 blx r3 lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10b04: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10b06: f647 72ff movw r2, #32767 ; 0x7fff 10b0a: 2101 movs r1, #1 10b0c: 309c adds r0, #156 ; 0x9c 10b0e: 47b0 blx r6 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b10: 2000 movs r0, #0 10b12: 682f ldr r7, [r5, #0] 10b14: 47a0 blx r4 10b16: 283b cmp r0, #59 ; 0x3b 10b18: f107 079c add.w r7, r7, #156 ; 0x9c 10b1c: dd47 ble.n 10bae 10b1e: 2000 movs r0, #0 10b20: 47a0 blx r4 10b22: f06f 0327 mvn.w r3, #39 ; 0x27 10b26: f100 0214 add.w r2, r0, #20 10b2a: fb92 f2f3 sdiv r2, r2, r3 10b2e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 10b30: 4638 mov r0, r7 10b32: 2110 movs r1, #16 10b34: 47b0 blx r6 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b36: 2000 movs r0, #0 10b38: 682f ldr r7, [r5, #0] 10b3a: 47a0 blx r4 10b3c: 283b cmp r0, #59 ; 0x3b 10b3e: f107 079c add.w r7, r7, #156 ; 0x9c 10b42: dd37 ble.n 10bb4 10b44: 2000 movs r0, #0 10b46: 47a0 blx r4 10b48: f06f 0327 mvn.w r3, #39 ; 0x27 10b4c: f100 0214 add.w r2, r0, #20 10b50: fb92 f2f3 sdiv r2, r2, r3 10b54: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 10b56: 4638 mov r0, r7 10b58: 2111 movs r1, #17 10b5a: 47b0 blx r6 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b5c: 2000 movs r0, #0 10b5e: 682f ldr r7, [r5, #0] 10b60: 47a0 blx r4 10b62: 283b cmp r0, #59 ; 0x3b 10b64: f107 079c add.w r7, r7, #156 ; 0x9c 10b68: dd27 ble.n 10bba 10b6a: 2000 movs r0, #0 10b6c: 47a0 blx r4 10b6e: f06f 0327 mvn.w r3, #39 ; 0x27 10b72: f100 0214 add.w r2, r0, #20 10b76: fb92 f2f3 sdiv r2, r2, r3 10b7a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 10b7c: 2112 movs r1, #18 10b7e: 4638 mov r0, r7 10b80: 47b0 blx r6 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10b82: 2000 movs r0, #0 10b84: 682d ldr r5, [r5, #0] 10b86: 47a0 blx r4 10b88: 283b cmp r0, #59 ; 0x3b 10b8a: f105 059c add.w r5, r5, #156 ; 0x9c 10b8e: dd17 ble.n 10bc0 10b90: 2000 movs r0, #0 10b92: 47a0 blx r4 10b94: f06f 0327 mvn.w r3, #39 ; 0x27 10b98: f100 0214 add.w r2, r0, #20 10b9c: fb92 f2f3 sdiv r2, r2, r3 10ba0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 10ba2: 4628 mov r0, r5 10ba4: 4633 mov r3, r6 10ba6: 2113 movs r1, #19 } 10ba8: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 10bac: 4718 bx r3 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10bae: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10bb2: e7bd b.n 10b30 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10bb4: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10bb8: e7cd b.n 10b56 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10bba: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10bbe: e7dd b.n 10b7c lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 10bc0: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff 10bc4: e7ed b.n 10ba2 10bc6: bf00 nop 10bc8: 2000c7d4 .word 0x2000c7d4 10bcc: 00010abd .word 0x00010abd 10bd0: 00005879 .word 0x00005879 10bd4: 0000d951 .word 0x0000d951 10bd8: 00005a19 .word 0x00005a19 10bdc: 00024272 .word 0x00024272 10be0: 00005949 .word 0x00005949 00010be4 : { 10be4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->lmeter); 10be8: 4d6b ldr r5, [pc, #428] ; (10d98 ) 10bea: 4b6c ldr r3, [pc, #432] ; (10d9c ) 10bec: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10bee: 4e6c ldr r6, [pc, #432] ; (10da0 ) lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10bf0: 4c6c ldr r4, [pc, #432] ; (10da4 ) style_init_reset(&styles->lmeter); 10bf2: 3070 adds r0, #112 ; 0x70 10bf4: 4798 blx r3 lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10bf6: 6828 ldr r0, [r5, #0] 10bf8: f647 72ff movw r2, #32767 ; 0x7fff 10bfc: 2101 movs r1, #1 10bfe: 3070 adds r0, #112 ; 0x70 10c00: 47b0 blx r6 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10c02: 2000 movs r0, #0 10c04: 682f ldr r7, [r5, #0] 10c06: 47a0 blx r4 10c08: eb00 0080 add.w r0, r0, r0, lsl #2 10c0c: 0080 lsls r0, r0, #2 10c0e: 28ef cmp r0, #239 ; 0xef 10c10: f107 0770 add.w r7, r7, #112 ; 0x70 10c14: f340 80b2 ble.w 10d7c 10c18: 2000 movs r0, #0 10c1a: 47a0 blx r4 10c1c: 2314 movs r3, #20 10c1e: 2250 movs r2, #80 ; 0x50 10c20: fb00 2203 mla r2, r0, r3, r2 10c24: 23a0 movs r3, #160 ; 0xa0 10c26: fb92 f2f3 sdiv r2, r2, r3 10c2a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 10c2c: 4638 mov r0, r7 10c2e: 2112 movs r1, #18 10c30: 47b0 blx r6 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10c32: 2000 movs r0, #0 10c34: 682f ldr r7, [r5, #0] 10c36: 47a0 blx r4 10c38: eb00 0080 add.w r0, r0, r0, lsl #2 10c3c: 0080 lsls r0, r0, #2 10c3e: 28ef cmp r0, #239 ; 0xef 10c40: f107 0770 add.w r7, r7, #112 ; 0x70 10c44: f340 809c ble.w 10d80 10c48: 2000 movs r0, #0 10c4a: 47a0 blx r4 10c4c: 2314 movs r3, #20 10c4e: 2250 movs r2, #80 ; 0x50 10c50: fb00 2203 mla r2, r0, r3, r2 10c54: 23a0 movs r3, #160 ; 0xa0 10c56: fb92 f2f3 sdiv r2, r2, r3 10c5a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 10c5c: 4638 mov r0, r7 10c5e: 2113 movs r1, #19 10c60: 47b0 blx r6 lv_style_set_pad_top(&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 8086 ble.w 10d84 10c78: 2000 movs r0, #0 10c7a: 47a0 blx r4 10c7c: 2314 movs r3, #20 10c7e: 2250 movs r2, #80 ; 0x50 10c80: fb00 2203 mla r2, r0, r3, r2 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_TOP, pad_top, lv_style_int_t, _int, scalar) 10c8c: 4638 mov r0, r7 10c8e: 2110 movs r1, #16 10c90: 47b0 blx r6 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 10c92: 2000 movs r0, #0 10c94: 682f ldr r7, [r5, #0] 10c96: 47a0 blx r4 10c98: ebc0 1000 rsb r0, r0, r0, lsl #4 10c9c: 0040 lsls r0, r0, #1 10c9e: 28ef cmp r0, #239 ; 0xef 10ca0: f107 0770 add.w r7, r7, #112 ; 0x70 10ca4: dd70 ble.n 10d88 10ca6: 2000 movs r0, #0 10ca8: 47a0 blx r4 10caa: 231e movs r3, #30 10cac: 2250 movs r2, #80 ; 0x50 10cae: fb00 2203 mla r2, r0, r3, r2 10cb2: 23a0 movs r3, #160 ; 0xa0 10cb4: fb92 f2f3 sdiv r2, r2, r3 10cb8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 10cba: 4638 mov r0, r7 10cbc: 2114 movs r1, #20 10cbe: 47b0 blx r6 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 10cc0: 2000 movs r0, #0 10cc2: 682f ldr r7, [r5, #0] 10cc4: 47a0 blx r4 10cc6: eb00 0080 add.w r0, r0, r0, lsl #2 10cca: eb00 0080 add.w r0, r0, r0, lsl #2 10cce: 28ef cmp r0, #239 ; 0xef 10cd0: f107 0770 add.w r7, r7, #112 ; 0x70 10cd4: dd5a ble.n 10d8c 10cd6: 2000 movs r0, #0 10cd8: 47a0 blx r4 10cda: 2319 movs r3, #25 10cdc: 2250 movs r2, #80 ; 0x50 10cde: fb00 2203 mla r2, r0, r3, r2 10ce2: 23a0 movs r3, #160 ; 0xa0 10ce4: fb92 f2f3 sdiv r2, r2, r3 10ce8: 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) 10cea: 4638 mov r0, r7 10cec: 21c0 movs r1, #192 ; 0xc0 10cee: 47b0 blx r6 lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 10cf0: 6828 ldr r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 10cf2: 4f2d ldr r7, [pc, #180] ; (10da8 ) 10cf4: 89aa ldrh r2, [r5, #12] 10cf6: 2199 movs r1, #153 ; 0x99 10cf8: 3070 adds r0, #112 ; 0x70 10cfa: 47b8 blx r7 lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 10cfc: 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) 10cfe: 89aa ldrh r2, [r5, #12] 10d00: 21c9 movs r1, #201 ; 0xc9 10d02: 3070 adds r0, #112 ; 0x70 10d04: 47b8 blx r7 lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 10d06: 6828 ldr r0, [r5, #0] 10d08: 4b28 ldr r3, [pc, #160] ; (10dac ) 10d0a: f100 0870 add.w r8, r0, #112 ; 0x70 10d0e: f640 0088 movw r0, #2184 ; 0x888 10d12: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 10d14: 21ca movs r1, #202 ; 0xca 10d16: 4602 mov r2, r0 10d18: 4640 mov r0, r8 10d1a: 47b8 blx r7 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 10d1c: 2000 movs r0, #0 10d1e: 682f ldr r7, [r5, #0] 10d20: 47a0 blx r4 10d22: eb00 0080 add.w r0, r0, r0, lsl #2 10d26: 0040 lsls r0, r0, #1 10d28: 28ef cmp r0, #239 ; 0xef 10d2a: f107 0770 add.w r7, r7, #112 ; 0x70 10d2e: dd2f ble.n 10d90 10d30: 2000 movs r0, #0 10d32: 47a0 blx r4 10d34: 230a movs r3, #10 10d36: 2250 movs r2, #80 ; 0x50 10d38: fb00 2203 mla r2, r0, r3, r2 10d3c: 23a0 movs r3, #160 ; 0xa0 10d3e: fb92 f2f3 sdiv r2, r2, r3 10d42: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 10d44: 2190 movs r1, #144 ; 0x90 10d46: 4638 mov r0, r7 10d48: 47b0 blx r6 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 10d4a: 2000 movs r0, #0 10d4c: 682d ldr r5, [r5, #0] 10d4e: 47a0 blx r4 10d50: ebc0 00c0 rsb r0, r0, r0, lsl #3 10d54: 28ef cmp r0, #239 ; 0xef 10d56: f105 0570 add.w r5, r5, #112 ; 0x70 10d5a: dd1b ble.n 10d94 10d5c: 2000 movs r0, #0 10d5e: 47a0 blx r4 10d60: 2307 movs r3, #7 10d62: 2250 movs r2, #80 ; 0x50 10d64: fb00 2203 mla r2, r0, r3, r2 10d68: 23a0 movs r3, #160 ; 0xa0 10d6a: fb92 f2f3 sdiv r2, r2, r3 10d6e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 10d70: 4628 mov r0, r5 10d72: 4633 mov r3, r6 10d74: 21c3 movs r1, #195 ; 0xc3 } 10d76: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 10d7a: 4718 bx r3 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10d7c: 2201 movs r2, #1 10d7e: e755 b.n 10c2c lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10d80: 2201 movs r2, #1 10d82: e76b b.n 10c5c lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 10d84: 2201 movs r2, #1 10d86: e781 b.n 10c8c lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 10d88: 2201 movs r2, #1 10d8a: e796 b.n 10cba lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 10d8c: 2201 movs r2, #1 10d8e: e7ac b.n 10cea lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 10d90: 2201 movs r2, #1 10d92: e7d7 b.n 10d44 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 10d94: 2201 movs r2, #1 10d96: e7eb b.n 10d70 10d98: 2000c7d4 .word 0x2000c7d4 10d9c: 00010abd .word 0x00010abd 10da0: 00005879 .word 0x00005879 10da4: 0000d951 .word 0x0000d951 10da8: 00005949 .word 0x00005949 10dac: 000102f1 .word 0x000102f1 00010db0 : { 10db0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->led); 10db4: 4c32 ldr r4, [pc, #200] ; (10e80 ) 10db6: 4b33 ldr r3, [pc, #204] ; (10e84 ) 10db8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10dba: 4f33 ldr r7, [pc, #204] ; (10e88 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10dbc: 4e33 ldr r6, [pc, #204] ; (10e8c ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 10dbe: 4d34 ldr r5, [pc, #208] ; (10e90 ) 10dc0: 306c adds r0, #108 ; 0x6c 10dc2: 4798 blx r3 lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); 10dc4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10dc6: 22ff movs r2, #255 ; 0xff 10dc8: 212c movs r1, #44 ; 0x2c 10dca: 306c adds r0, #108 ; 0x6c 10dcc: 47b8 blx r7 lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 10dce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10dd0: 89a2 ldrh r2, [r4, #12] 10dd2: 2129 movs r1, #41 ; 0x29 10dd4: 306c adds r0, #108 ; 0x6c 10dd6: 47b0 blx r6 lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); 10dd8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 10dda: 2202 movs r2, #2 10ddc: 2130 movs r1, #48 ; 0x30 10dde: 306c adds r0, #108 ; 0x6c 10de0: 47a8 blx r5 lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); 10de2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 10de4: 227f movs r2, #127 ; 0x7f 10de6: 213c movs r1, #60 ; 0x3c 10de8: 306c adds r0, #108 ; 0x6c 10dea: 47b8 blx r7 lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); 10dec: 6820 ldr r0, [r4, #0] 10dee: 4b29 ldr r3, [pc, #164] ; (10e94 ) 10df0: f100 076c add.w r7, r0, #108 ; 0x6c 10df4: 214c movs r1, #76 ; 0x4c 10df6: 89a0 ldrh r0, [r4, #12] 10df8: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 10dfa: 2139 movs r1, #57 ; 0x39 10dfc: 4602 mov r2, r0 10dfe: 4638 mov r0, r7 10e00: 47b0 blx r6 lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10e02: 6820 ldr r0, [r4, #0] lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 10e04: 4f24 ldr r7, [pc, #144] ; (10e98 ) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10e06: f647 72ff movw r2, #32767 ; 0x7fff 10e0a: 2101 movs r1, #1 10e0c: 306c adds r0, #108 ; 0x6c 10e0e: 47a8 blx r5 10e10: 6823 ldr r3, [r4, #0] 10e12: 2000 movs r0, #0 10e14: f103 086c add.w r8, r3, #108 ; 0x6c 10e18: 47b8 blx r7 10e1a: ebc0 1000 rsb r0, r0, r0, lsl #4 10e1e: 28ef cmp r0, #239 ; 0xef 10e20: dd2a ble.n 10e78 10e22: 2000 movs r0, #0 10e24: 47b8 blx r7 10e26: 230f movs r3, #15 10e28: 2250 movs r2, #80 ; 0x50 10e2a: fb00 2203 mla r2, r0, r3, r2 10e2e: 23a0 movs r3, #160 ; 0xa0 10e30: fb92 f2f3 sdiv r2, r2, r3 10e34: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 10e36: 2150 movs r1, #80 ; 0x50 10e38: 4640 mov r0, r8 10e3a: 47a8 blx r5 lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 10e3c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 10e3e: 89a2 ldrh r2, [r4, #12] 10e40: 2159 movs r1, #89 ; 0x59 10e42: 306c adds r0, #108 ; 0x6c 10e44: 47b0 blx r6 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 10e46: 2000 movs r0, #0 10e48: 6824 ldr r4, [r4, #0] 10e4a: 47b8 blx r7 10e4c: eb00 0080 add.w r0, r0, r0, lsl #2 10e50: 28ef cmp r0, #239 ; 0xef 10e52: f104 046c add.w r4, r4, #108 ; 0x6c 10e56: dd11 ble.n 10e7c 10e58: 2000 movs r0, #0 10e5a: 47b8 blx r7 10e5c: 2305 movs r3, #5 10e5e: 2250 movs r2, #80 ; 0x50 10e60: fb00 2203 mla r2, r0, r3, r2 10e64: 23a0 movs r3, #160 ; 0xa0 10e66: fb92 f2f3 sdiv r2, r2, r3 10e6a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 10e6c: 4620 mov r0, r4 10e6e: 462b mov r3, r5 10e70: 2153 movs r1, #83 ; 0x53 } 10e72: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 10e76: 4718 bx r3 lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 10e78: 2201 movs r2, #1 10e7a: e7dc b.n 10e36 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 10e7c: 2201 movs r2, #1 10e7e: e7f5 b.n 10e6c 10e80: 2000c7d4 .word 0x2000c7d4 10e84: 00010abd .word 0x00010abd 10e88: 00005a19 .word 0x00005a19 10e8c: 00005949 .word 0x00005949 10e90: 00005879 .word 0x00005879 10e94: 0000e34b .word 0x0000e34b 10e98: 0000d951 .word 0x0000d951 00010e9c : return LV_COLOR_MAKE(r, g, b); 10e9c: f3c0 2285 ubfx r2, r0, #10, #6 10ea0: f3c0 03c4 ubfx r3, r0, #3, #5 10ea4: ea43 1342 orr.w r3, r3, r2, lsl #5 10ea8: f3c0 40c4 ubfx r0, r0, #19, #5 } 10eac: ea43 20c0 orr.w r0, r3, r0, lsl #11 10eb0: 4770 bx lr ... 00010eb4 : { 10eb4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} style_init_reset(&styles->bar_bg); 10eb8: 4c43 ldr r4, [pc, #268] ; (10fc8 ) 10eba: f8df 9134 ldr.w r9, [pc, #308] ; 10ff0 10ebe: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10ec0: 4e42 ldr r6, [pc, #264] ; (10fcc ) _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10ec2: 4f43 ldr r7, [pc, #268] ; (10fd0 ) 10ec4: f8df 812c ldr.w r8, [pc, #300] ; 10ff4 10ec8: 3024 adds r0, #36 ; 0x24 10eca: 47c8 blx r9 lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10ecc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10ece: f647 72ff movw r2, #32767 ; 0x7fff 10ed2: 2101 movs r1, #1 10ed4: 3024 adds r0, #36 ; 0x24 10ed6: 47b0 blx r6 lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 10ed8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10eda: 22ff movs r2, #255 ; 0xff 10edc: 3024 adds r0, #36 ; 0x24 10ede: 212c movs r1, #44 ; 0x2c 10ee0: 47b8 blx r7 lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 10ee2: 6a23 ldr r3, [r4, #32] 10ee4: 6825 ldr r5, [r4, #0] 10ee6: f013 0f02 tst.w r3, #2 10eea: bf14 ite ne 10eec: 4839 ldrne r0, [pc, #228] ; (10fd4 ) 10eee: 483a ldreq r0, [pc, #232] ; (10fd8 ) 10ef0: 47c0 blx r8 10ef2: 3524 adds r5, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10ef4: 4602 mov r2, r0 10ef6: 2129 movs r1, #41 ; 0x29 10ef8: 4628 mov r0, r5 10efa: 4d38 ldr r5, [pc, #224] ; (10fdc ) 10efc: 47a8 blx r5 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 10efe: 6823 ldr r3, [r4, #0] 10f00: f103 0a24 add.w sl, r3, #36 ; 0x24 10f04: 6a23 ldr r3, [r4, #32] 10f06: 079a lsls r2, r3, #30 10f08: d558 bpl.n 10fbc 10f0a: 4835 ldr r0, [pc, #212] ; (10fe0 ) 10f0c: 47c0 blx r8 10f0e: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 10f10: 2179 movs r1, #121 ; 0x79 10f12: 4650 mov r0, sl 10f14: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); 10f16: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 10f18: 89a2 ldrh r2, [r4, #12] 10f1a: 2149 movs r1, #73 ; 0x49 10f1c: 3024 adds r0, #36 ; 0x24 10f1e: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); 10f20: 6820 ldr r0, [r4, #0] 10f22: 89e2 ldrh r2, [r4, #14] 10f24: f240 4149 movw r1, #1097 ; 0x449 10f28: 3024 adds r0, #36 ; 0x24 10f2a: 47a8 blx r5 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 10f2c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 10f2e: 2200 movs r2, #0 10f30: 214c movs r1, #76 ; 0x4c 10f32: 3024 adds r0, #36 ; 0x24 10f34: 47b8 blx r7 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); 10f36: 6820 ldr r0, [r4, #0] 10f38: 227f movs r2, #127 ; 0x7f 10f3a: f44f 7113 mov.w r1, #588 ; 0x24c 10f3e: 3024 adds r0, #36 ; 0x24 10f40: 47b8 blx r7 lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3); 10f42: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 10f44: 2203 movs r2, #3 10f46: 2140 movs r1, #64 ; 0x40 10f48: 3024 adds r0, #36 ; 0x24 10f4a: 47b0 blx r6 lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 10f4c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 10f4e: 2296 movs r2, #150 ; 0x96 10f50: 21b0 movs r1, #176 ; 0xb0 10f52: 3024 adds r0, #36 ; 0x24 10f54: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 10f56: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 10f58: 224c movs r2, #76 ; 0x4c 10f5a: 21b7 movs r1, #183 ; 0xb7 10f5c: 3024 adds r0, #36 ; 0x24 10f5e: 47b0 blx r6 style_init_reset(&styles->bar_indic); 10f60: 6820 ldr r0, [r4, #0] 10f62: 3028 adds r0, #40 ; 0x28 10f64: 47c8 blx r9 lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 10f66: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 10f68: 22ff movs r2, #255 ; 0xff 10f6a: 212c movs r1, #44 ; 0x2c 10f6c: 3028 adds r0, #40 ; 0x28 10f6e: 47b8 blx r7 lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 10f70: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 10f72: f647 72ff movw r2, #32767 ; 0x7fff 10f76: 2101 movs r1, #1 10f78: 3028 adds r0, #40 ; 0x28 10f7a: 47b0 blx r6 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); 10f7c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 10f7e: 89a2 ldrh r2, [r4, #12] 10f80: 2129 movs r1, #41 ; 0x29 10f82: 3028 adds r0, #40 ; 0x28 10f84: 47a8 blx r5 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); 10f86: 6820 ldr r0, [r4, #0] 10f88: 4b16 ldr r3, [pc, #88] ; (10fe4 ) 10f8a: f100 0628 add.w r6, r0, #40 ; 0x28 10f8e: f640 0088 movw r0, #2184 ; 0x888 10f92: 4798 blx r3 10f94: f242 0129 movw r1, #8233 ; 0x2029 10f98: 4602 mov r2, r0 10f9a: 4630 mov r0, r6 10f9c: 47a8 blx r5 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 10f9e: 6a23 ldr r3, [r4, #32] 10fa0: 6820 ldr r0, [r4, #0] 10fa2: 079b lsls r3, r3, #30 10fa4: f100 0628 add.w r6, r0, #40 ; 0x28 10fa8: d50b bpl.n 10fc2 10faa: 480f ldr r0, [pc, #60] ; (10fe8 ) 10fac: 47c0 blx r8 10fae: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 10fb0: 4630 mov r0, r6 10fb2: 462b mov r3, r5 10fb4: 2179 movs r1, #121 ; 0x79 } 10fb6: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 10fba: 4718 bx r3 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 10fbc: 4b0b ldr r3, [pc, #44] ; (10fec ) 10fbe: 881a ldrh r2, [r3, #0] 10fc0: e7a6 b.n 10f10 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 10fc2: 4b0a ldr r3, [pc, #40] ; (10fec ) 10fc4: 881a ldrh r2, [r3, #0] 10fc6: e7f3 b.n 10fb0 10fc8: 2000c7d4 .word 0x2000c7d4 10fcc: 00005879 .word 0x00005879 10fd0: 00005a19 .word 0x00005a19 10fd4: 00d4d7d9 .word 0x00d4d7d9 10fd8: 0045494d .word 0x0045494d 10fdc: 00005949 .word 0x00005949 10fe0: 0031404f .word 0x0031404f 10fe4: 000102f1 .word 0x000102f1 10fe8: 0041404f .word 0x0041404f 10fec: 00024272 .word 0x00024272 10ff0: 00010abd .word 0x00010abd 10ff4: 00010e9d .word 0x00010e9d 00010ff8 : { 10ff8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} style_init_reset(&styles->slider_knob); 10ffc: 4c7d ldr r4, [pc, #500] ; (111f4 ) 10ffe: 4f7e ldr r7, [pc, #504] ; (111f8 ) 11000: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11002: 4d7e ldr r5, [pc, #504] ; (111fc ) 11004: 3090 adds r0, #144 ; 0x90 11006: 47b8 blx r7 lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 11008: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1100a: 4b7d ldr r3, [pc, #500] ; (11200 ) 1100c: 22ff movs r2, #255 ; 0xff 1100e: 212c movs r1, #44 ; 0x2c 11010: 3090 adds r0, #144 ; 0x90 11012: 4798 blx r3 lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 11014: 6a23 ldr r3, [r4, #32] 11016: 6820 ldr r0, [r4, #0] 11018: 079a lsls r2, r3, #30 1101a: bf56 itet pl 1101c: 4b79 ldrpl r3, [pc, #484] ; (11204 ) 1101e: 89a2 ldrhmi r2, [r4, #12] 11020: 881a ldrhpl r2, [r3, #0] 11022: 3090 adds r0, #144 ; 0x90 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11024: 2129 movs r1, #41 ; 0x29 11026: 47a8 blx r5 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 11028: 6a23 ldr r3, [r4, #32] 1102a: 6826 ldr r6, [r4, #0] 1102c: 079b lsls r3, r3, #30 1102e: f106 0690 add.w r6, r6, #144 ; 0x90 11032: f140 80cc bpl.w 111ce 11036: 4874 ldr r0, [pc, #464] ; (11208 ) 11038: 4b74 ldr r3, [pc, #464] ; (1120c ) 1103a: 4798 blx r3 1103c: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1103e: 4630 mov r0, r6 11040: 2179 movs r1, #121 ; 0x79 11042: 47a8 blx r5 lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 11044: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11046: 4e72 ldr r6, [pc, #456] ; (11210 ) lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 11048: 4d72 ldr r5, [pc, #456] ; (11214 ) 1104a: f647 72ff movw r2, #32767 ; 0x7fff 1104e: 2101 movs r1, #1 11050: 3090 adds r0, #144 ; 0x90 11052: 47b0 blx r6 11054: 6823 ldr r3, [r4, #0] 11056: 2000 movs r0, #0 11058: f103 0890 add.w r8, r3, #144 ; 0x90 1105c: 47a8 blx r5 1105e: ebc0 00c0 rsb r0, r0, r0, lsl #3 11062: 28ef cmp r0, #239 ; 0xef 11064: f340 80b6 ble.w 111d4 11068: 2000 movs r0, #0 1106a: 47a8 blx r5 1106c: 2307 movs r3, #7 1106e: 2250 movs r2, #80 ; 0x50 11070: fb00 2203 mla r2, r0, r3, r2 11074: 23a0 movs r3, #160 ; 0xa0 11076: fb92 f2f3 sdiv r2, r2, r3 1107a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1107c: 4640 mov r0, r8 1107e: 2112 movs r1, #18 11080: 47b0 blx r6 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 11082: 6823 ldr r3, [r4, #0] 11084: 2000 movs r0, #0 11086: f103 0890 add.w r8, r3, #144 ; 0x90 1108a: 47a8 blx r5 1108c: ebc0 00c0 rsb r0, r0, r0, lsl #3 11090: 28ef cmp r0, #239 ; 0xef 11092: f340 80a1 ble.w 111d8 11096: 2000 movs r0, #0 11098: 47a8 blx r5 1109a: 2307 movs r3, #7 1109c: 2250 movs r2, #80 ; 0x50 1109e: fb00 2203 mla r2, r0, r3, r2 110a2: 23a0 movs r3, #160 ; 0xa0 110a4: fb92 f2f3 sdiv r2, r2, r3 110a8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 110aa: 4640 mov r0, r8 110ac: 2113 movs r1, #19 110ae: 47b0 blx r6 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 110b0: 6823 ldr r3, [r4, #0] 110b2: 2000 movs r0, #0 110b4: f103 0890 add.w r8, r3, #144 ; 0x90 110b8: 47a8 blx r5 110ba: ebc0 00c0 rsb r0, r0, r0, lsl #3 110be: 28ef cmp r0, #239 ; 0xef 110c0: f340 808c ble.w 111dc 110c4: 2000 movs r0, #0 110c6: 47a8 blx r5 110c8: 2307 movs r3, #7 110ca: 2250 movs r2, #80 ; 0x50 110cc: fb00 2203 mla r2, r0, r3, r2 110d0: 23a0 movs r3, #160 ; 0xa0 110d2: fb92 f2f3 sdiv r2, r2, r3 110d6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 110d8: 4640 mov r0, r8 110da: 2110 movs r1, #16 110dc: 47b0 blx r6 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 110de: 6823 ldr r3, [r4, #0] 110e0: 2000 movs r0, #0 110e2: f103 0890 add.w r8, r3, #144 ; 0x90 110e6: 47a8 blx r5 110e8: ebc0 00c0 rsb r0, r0, r0, lsl #3 110ec: 28ef cmp r0, #239 ; 0xef 110ee: dd77 ble.n 111e0 110f0: 2000 movs r0, #0 110f2: 47a8 blx r5 110f4: 2307 movs r3, #7 110f6: 2250 movs r2, #80 ; 0x50 110f8: fb00 2203 mla r2, r0, r3, r2 110fc: 23a0 movs r3, #160 ; 0xa0 110fe: fb92 f2f3 sdiv r2, r2, r3 11102: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 11104: 2111 movs r1, #17 11106: 4640 mov r0, r8 11108: 47b0 blx r6 style_init_reset(&styles->slider_bg); 1110a: 6820 ldr r0, [r4, #0] 1110c: 3094 adds r0, #148 ; 0x94 1110e: 47b8 blx r7 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11110: 2000 movs r0, #0 11112: 6827 ldr r7, [r4, #0] 11114: 47a8 blx r5 11116: eb00 0080 add.w r0, r0, r0, lsl #2 1111a: 0040 lsls r0, r0, #1 1111c: 28ef cmp r0, #239 ; 0xef 1111e: f107 0794 add.w r7, r7, #148 ; 0x94 11122: dd5f ble.n 111e4 11124: 2000 movs r0, #0 11126: 47a8 blx r5 11128: 230a movs r3, #10 1112a: 2250 movs r2, #80 ; 0x50 1112c: fb00 2203 mla r2, r0, r3, r2 11130: 23a0 movs r3, #160 ; 0xa0 11132: fb92 f2f3 sdiv r2, r2, r3 11136: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar) 11138: 4638 mov r0, r7 1113a: 2117 movs r1, #23 1113c: 47b0 blx r6 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1113e: 2000 movs r0, #0 11140: 6827 ldr r7, [r4, #0] 11142: 47a8 blx r5 11144: eb00 0080 add.w r0, r0, r0, lsl #2 11148: 0040 lsls r0, r0, #1 1114a: 28ef cmp r0, #239 ; 0xef 1114c: f107 0794 add.w r7, r7, #148 ; 0x94 11150: dd4a ble.n 111e8 11152: 2000 movs r0, #0 11154: 47a8 blx r5 11156: 230a movs r3, #10 11158: 2250 movs r2, #80 ; 0x50 1115a: fb00 2203 mla r2, r0, r3, r2 1115e: 23a0 movs r3, #160 ; 0xa0 11160: fb92 f2f3 sdiv r2, r2, r3 11164: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar) 11166: 4638 mov r0, r7 11168: 2118 movs r1, #24 1116a: 47b0 blx r6 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1116c: 2000 movs r0, #0 1116e: 6827 ldr r7, [r4, #0] 11170: 47a8 blx r5 11172: eb00 0080 add.w r0, r0, r0, lsl #2 11176: 0040 lsls r0, r0, #1 11178: 28ef cmp r0, #239 ; 0xef 1117a: f107 0794 add.w r7, r7, #148 ; 0x94 1117e: dd35 ble.n 111ec 11180: 2000 movs r0, #0 11182: 47a8 blx r5 11184: 230a movs r3, #10 11186: 2250 movs r2, #80 ; 0x50 11188: fb00 2203 mla r2, r0, r3, r2 1118c: 23a0 movs r3, #160 ; 0xa0 1118e: fb92 f2f3 sdiv r2, r2, r3 11192: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar) 11194: 2115 movs r1, #21 11196: 4638 mov r0, r7 11198: 47b0 blx r6 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1119a: 2000 movs r0, #0 1119c: 6824 ldr r4, [r4, #0] 1119e: 47a8 blx r5 111a0: eb00 0080 add.w r0, r0, r0, lsl #2 111a4: 0040 lsls r0, r0, #1 111a6: 28ef cmp r0, #239 ; 0xef 111a8: f104 0494 add.w r4, r4, #148 ; 0x94 111ac: dd20 ble.n 111f0 111ae: 2000 movs r0, #0 111b0: 47a8 blx r5 111b2: 230a movs r3, #10 111b4: 2250 movs r2, #80 ; 0x50 111b6: fb00 2203 mla r2, r0, r3, r2 111ba: 23a0 movs r3, #160 ; 0xa0 111bc: fb92 f2f3 sdiv r2, r2, r3 111c0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar) 111c2: 4620 mov r0, r4 111c4: 4633 mov r3, r6 111c6: 2116 movs r1, #22 } 111c8: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} 111cc: 4718 bx r3 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 111ce: 4b0d ldr r3, [pc, #52] ; (11204 ) 111d0: 881a ldrh r2, [r3, #0] 111d2: e734 b.n 1103e lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 111d4: 2201 movs r2, #1 111d6: e751 b.n 1107c lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 111d8: 2201 movs r2, #1 111da: e766 b.n 110aa lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 111dc: 2201 movs r2, #1 111de: e77b b.n 110d8 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 111e0: 2201 movs r2, #1 111e2: e78f b.n 11104 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 111e4: 2201 movs r2, #1 111e6: e7a7 b.n 11138 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 111e8: 2201 movs r2, #1 111ea: e7bc b.n 11166 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 111ec: 2201 movs r2, #1 111ee: e7d1 b.n 11194 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 111f0: 2201 movs r2, #1 111f2: e7e6 b.n 111c2 111f4: 2000c7d4 .word 0x2000c7d4 111f8: 00010abd .word 0x00010abd 111fc: 00005949 .word 0x00005949 11200: 00005a19 .word 0x00005a19 11204: 00024272 .word 0x00024272 11208: 0031404f .word 0x0031404f 1120c: 00010e9d .word 0x00010e9d 11210: 00005879 .word 0x00005879 11214: 0000d951 .word 0x0000d951 00011218 : { 11218: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} style_init_reset(&styles->gauge_main); 1121c: 4cb6 ldr r4, [pc, #728] ; (114f8 ) 1121e: f8df 82f4 ldr.w r8, [pc, #756] ; 11514 11222: 6820 ldr r0, [r4, #0] lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 11224: f8df 92f0 ldr.w r9, [pc, #752] ; 11518 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 11228: 4fb4 ldr r7, [pc, #720] ; (114fc ) style_init_reset(&styles->gauge_main); 1122a: 305c adds r0, #92 ; 0x5c 1122c: 47c0 blx r8 lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1122e: 6820 ldr r0, [r4, #0] 11230: f100 055c add.w r5, r0, #92 ; 0x5c 11234: f640 0088 movw r0, #2184 ; 0x888 11238: 47c8 blx r9 1123a: 2199 movs r1, #153 ; 0x99 1123c: 4602 mov r2, r0 1123e: 4628 mov r0, r5 11240: 47b8 blx r7 lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 11242: 6820 ldr r0, [r4, #0] 11244: f100 055c add.w r5, r0, #92 ; 0x5c 11248: f640 0088 movw r0, #2184 ; 0x888 1124c: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 1124e: 21c9 movs r1, #201 ; 0xc9 11250: 4602 mov r2, r0 11252: 4628 mov r0, r5 11254: 47b8 blx r7 lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); 11256: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 11258: 89a2 ldrh r2, [r4, #12] lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 1125a: 4da9 ldr r5, [pc, #676] ; (11500 ) 1125c: 21ca movs r1, #202 ; 0xca 1125e: 305c adds r0, #92 ; 0x5c 11260: 47b8 blx r7 11262: 2000 movs r0, #0 11264: 6826 ldr r6, [r4, #0] 11266: 47a8 blx r5 11268: eb00 0080 add.w r0, r0, r0, lsl #2 1126c: 28ef cmp r0, #239 ; 0xef 1126e: f106 065c add.w r6, r6, #92 ; 0x5c 11272: f340 818d ble.w 11590 11276: 2000 movs r0, #0 11278: 47a8 blx r5 1127a: 2305 movs r3, #5 1127c: 2250 movs r2, #80 ; 0x50 1127e: fb00 2203 mla r2, r0, r3, r2 11282: 23a0 movs r3, #160 ; 0xa0 11284: fb92 f2f3 sdiv r2, r2, r3 11288: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1128a: 4630 mov r0, r6 1128c: 2190 movs r1, #144 ; 0x90 1128e: 4e9d ldr r6, [pc, #628] ; (11504 ) 11290: 47b0 blx r6 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 11292: 6823 ldr r3, [r4, #0] 11294: 2000 movs r0, #0 11296: f103 0a5c add.w sl, r3, #92 ; 0x5c 1129a: 47a8 blx r5 1129c: 283b cmp r0, #59 ; 0x3b 1129e: f340 8179 ble.w 11594 112a2: 2000 movs r0, #0 112a4: 47a8 blx r5 112a6: 2328 movs r3, #40 ; 0x28 112a8: f100 0214 add.w r2, r0, #20 112ac: fb92 f2f3 sdiv r2, r2, r3 112b0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 112b2: 4650 mov r0, sl 112b4: 21c3 movs r1, #195 ; 0xc3 112b6: 47b0 blx r6 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 112b8: 6823 ldr r3, [r4, #0] 112ba: 2000 movs r0, #0 112bc: f103 0a5c add.w sl, r3, #92 ; 0x5c 112c0: 47a8 blx r5 112c2: 281d cmp r0, #29 112c4: f340 8168 ble.w 11598 112c8: 2000 movs r0, #0 112ca: 47a8 blx r5 112cc: 2314 movs r3, #20 112ce: f100 020a add.w r2, r0, #10 112d2: fb92 f2f3 sdiv r2, r2, r3 112d6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) 112d8: 4650 mov r0, sl 112da: 21c2 movs r1, #194 ; 0xc2 112dc: 47b0 blx r6 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 112de: 6823 ldr r3, [r4, #0] 112e0: 2000 movs r0, #0 112e2: f103 0a5c add.w sl, r3, #92 ; 0x5c 112e6: 47a8 blx r5 112e8: eb00 0080 add.w r0, r0, r0, lsl #2 112ec: 0080 lsls r0, r0, #2 112ee: 28ef cmp r0, #239 ; 0xef 112f0: f340 8154 ble.w 1159c 112f4: 2000 movs r0, #0 112f6: 47a8 blx r5 112f8: 2314 movs r3, #20 112fa: 2250 movs r2, #80 ; 0x50 112fc: fb00 2203 mla r2, r0, r3, r2 11300: 23a0 movs r3, #160 ; 0xa0 11302: fb92 f2f3 sdiv r2, r2, r3 11306: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 11308: 4650 mov r0, sl 1130a: 2112 movs r1, #18 1130c: 47b0 blx r6 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1130e: 6823 ldr r3, [r4, #0] 11310: 2000 movs r0, #0 11312: f103 0a5c add.w sl, r3, #92 ; 0x5c 11316: 47a8 blx r5 11318: eb00 0080 add.w r0, r0, r0, lsl #2 1131c: 0080 lsls r0, r0, #2 1131e: 28ef cmp r0, #239 ; 0xef 11320: f340 813e ble.w 115a0 11324: 2000 movs r0, #0 11326: 47a8 blx r5 11328: 2314 movs r3, #20 1132a: 2250 movs r2, #80 ; 0x50 1132c: fb00 2203 mla r2, r0, r3, r2 11330: 23a0 movs r3, #160 ; 0xa0 11332: fb92 f2f3 sdiv r2, r2, r3 11336: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 11338: 4650 mov r0, sl 1133a: 2113 movs r1, #19 1133c: 47b0 blx r6 lv_style_set_pad_top(&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 8128 ble.w 115a4 11354: 2000 movs r0, #0 11356: 47a8 blx r5 11358: 2314 movs r3, #20 1135a: 2250 movs r2, #80 ; 0x50 1135c: fb00 2203 mla r2, r0, r3, r2 11360: 23a0 movs r3, #160 ; 0xa0 11362: fb92 f2f3 sdiv r2, r2, r3 11366: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 11368: 4650 mov r0, sl 1136a: 2110 movs r1, #16 1136c: 47b0 blx r6 lv_style_set_pad_inner(&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 8112 ble.w 115a8 11384: 2000 movs r0, #0 11386: 47a8 blx r5 11388: 2314 movs r3, #20 1138a: 2250 movs r2, #80 ; 0x50 1138c: fb00 2203 mla r2, r0, r3, r2 11390: 23a0 movs r3, #160 ; 0xa0 11392: fb92 f2f3 sdiv r2, r2, r3 11396: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 11398: 4650 mov r0, sl 1139a: 2114 movs r1, #20 1139c: 47b0 blx r6 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 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: ebc0 1000 rsb r0, r0, r0, lsl #4 113ac: 28ef cmp r0, #239 ; 0xef 113ae: f340 80fd ble.w 115ac 113b2: 2000 movs r0, #0 113b4: 47a8 blx r5 113b6: 230f movs r3, #15 113b8: 2250 movs r2, #80 ; 0x50 113ba: fb00 2203 mla r2, r0, r3, r2 113be: 23a0 movs r3, #160 ; 0xa0 113c0: fb92 f2f3 sdiv r2, r2, r3 113c4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 113c6: 4650 mov r0, sl 113c8: 21c0 movs r1, #192 ; 0xc0 113ca: 47b0 blx r6 lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 113cc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 113ce: f647 72ff movw r2, #32767 ; 0x7fff 113d2: 2101 movs r1, #1 113d4: 305c adds r0, #92 ; 0x5c 113d6: 47b0 blx r6 style_init_reset(&styles->gauge_strong); 113d8: 6820 ldr r0, [r4, #0] 113da: 3060 adds r0, #96 ; 0x60 113dc: 47c0 blx r8 lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 113de: 6820 ldr r0, [r4, #0] 113e0: f100 0a60 add.w sl, r0, #96 ; 0x60 113e4: f640 0088 movw r0, #2184 ; 0x888 113e8: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 113ea: 2199 movs r1, #153 ; 0x99 113ec: 4602 mov r2, r0 113ee: 4650 mov r0, sl 113f0: 47b8 blx r7 lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 113f2: 6820 ldr r0, [r4, #0] 113f4: f100 0a60 add.w sl, r0, #96 ; 0x60 113f8: f640 0088 movw r0, #2184 ; 0x888 113fc: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 113fe: 21c9 movs r1, #201 ; 0xc9 11400: 4602 mov r2, r0 11402: 4650 mov r0, sl 11404: 47b8 blx r7 lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); 11406: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 11408: 89a2 ldrh r2, [r4, #12] 1140a: 21ca movs r1, #202 ; 0xca 1140c: 3060 adds r0, #96 ; 0x60 1140e: 47b8 blx r7 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 11410: 6823 ldr r3, [r4, #0] 11412: 2000 movs r0, #0 11414: f103 0960 add.w r9, r3, #96 ; 0x60 11418: 47a8 blx r5 1141a: 281d cmp r0, #29 1141c: f340 80c8 ble.w 115b0 11420: 2000 movs r0, #0 11422: 47a8 blx r5 11424: 2314 movs r3, #20 11426: f100 020a add.w r2, r0, #10 1142a: fb92 f2f3 sdiv r2, r2, r3 1142e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 11430: 4648 mov r0, r9 11432: 2190 movs r1, #144 ; 0x90 11434: 47b0 blx r6 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 11436: 6823 ldr r3, [r4, #0] 11438: 2000 movs r0, #0 1143a: f103 0960 add.w r9, r3, #96 ; 0x60 1143e: 47a8 blx r5 11440: 281d cmp r0, #29 11442: f340 80b7 ble.w 115b4 11446: 2000 movs r0, #0 11448: 47a8 blx r5 1144a: 2314 movs r3, #20 1144c: f100 020a add.w r2, r0, #10 11450: fb92 f2f3 sdiv r2, r2, r3 11454: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 11456: 4648 mov r0, r9 11458: 21c3 movs r1, #195 ; 0xc3 1145a: 47b0 blx r6 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 1145c: 6823 ldr r3, [r4, #0] 1145e: 2000 movs r0, #0 11460: f103 0960 add.w r9, r3, #96 ; 0x60 11464: 47a8 blx r5 11466: eb00 0080 add.w r0, r0, r0, lsl #2 1146a: eb00 0080 add.w r0, r0, r0, lsl #2 1146e: 28ef cmp r0, #239 ; 0xef 11470: f340 80a2 ble.w 115b8 11474: 2000 movs r0, #0 11476: 47a8 blx r5 11478: 2319 movs r3, #25 1147a: 2250 movs r2, #80 ; 0x50 1147c: fb00 2203 mla r2, r0, r3, r2 11480: 23a0 movs r3, #160 ; 0xa0 11482: fb92 f2f3 sdiv r2, r2, r3 11486: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 11488: 21c0 movs r1, #192 ; 0xc0 1148a: 4648 mov r0, r9 1148c: 47b0 blx r6 style_init_reset(&styles->gauge_needle); 1148e: 6820 ldr r0, [r4, #0] 11490: 3064 adds r0, #100 ; 0x64 11492: 47c0 blx r8 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 11494: 6823 ldr r3, [r4, #0] 11496: f103 0864 add.w r8, r3, #100 ; 0x64 1149a: 6a23 ldr r3, [r4, #32] 1149c: 079a lsls r2, r3, #30 1149e: f140 808d bpl.w 115bc 114a2: 4819 ldr r0, [pc, #100] ; (11508 ) 114a4: 4b19 ldr r3, [pc, #100] ; (1150c ) 114a6: 4798 blx r3 114a8: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 114aa: 4640 mov r0, r8 114ac: 2199 movs r1, #153 ; 0x99 114ae: 47b8 blx r7 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 114b0: 6823 ldr r3, [r4, #0] 114b2: 2000 movs r0, #0 114b4: f103 0864 add.w r8, r3, #100 ; 0x64 114b8: 47a8 blx r5 114ba: 281d cmp r0, #29 114bc: f340 8081 ble.w 115c2 114c0: 2000 movs r0, #0 114c2: 47a8 blx r5 114c4: 2314 movs r3, #20 114c6: f100 020a add.w r2, r0, #10 114ca: fb92 f2f3 sdiv r2, r2, r3 114ce: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 114d0: 4640 mov r0, r8 114d2: 2190 movs r1, #144 ; 0x90 114d4: 47b0 blx r6 lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); 114d6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 114d8: 4b0d ldr r3, [pc, #52] ; (11510 ) 114da: 22ff movs r2, #255 ; 0xff 114dc: 212c movs r1, #44 ; 0x2c 114de: 3064 adds r0, #100 ; 0x64 114e0: 4798 blx r3 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 114e2: 6823 ldr r3, [r4, #0] 114e4: f103 0864 add.w r8, r3, #100 ; 0x64 114e8: 6a23 ldr r3, [r4, #32] 114ea: 079b lsls r3, r3, #30 114ec: d56b bpl.n 115c6 114ee: 4806 ldr r0, [pc, #24] ; (11508 ) 114f0: 4b06 ldr r3, [pc, #24] ; (1150c ) 114f2: 4798 blx r3 114f4: 4602 mov r2, r0 114f6: e011 b.n 1151c 114f8: 2000c7d4 .word 0x2000c7d4 114fc: 00005949 .word 0x00005949 11500: 0000d951 .word 0x0000d951 11504: 00005879 .word 0x00005879 11508: 00464b5b .word 0x00464b5b 1150c: 00010e9d .word 0x00010e9d 11510: 00005a19 .word 0x00005a19 11514: 00010abd .word 0x00010abd 11518: 000102f1 .word 0x000102f1 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1151c: 2129 movs r1, #41 ; 0x29 1151e: 4640 mov r0, r8 11520: 47b8 blx r7 lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 11522: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11524: f647 72ff movw r2, #32767 ; 0x7fff 11528: 2101 movs r1, #1 1152a: 3064 adds r0, #100 ; 0x64 1152c: 47b0 blx r6 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 1152e: 2000 movs r0, #0 11530: 6827 ldr r7, [r4, #0] 11532: 47a8 blx r5 11534: ebc0 1000 rsb r0, r0, r0, lsl #4 11538: 0040 lsls r0, r0, #1 1153a: 28ef cmp r0, #239 ; 0xef 1153c: f107 0764 add.w r7, r7, #100 ; 0x64 11540: dd44 ble.n 115cc 11542: 2000 movs r0, #0 11544: 47a8 blx r5 11546: 231e movs r3, #30 11548: 2250 movs r2, #80 ; 0x50 1154a: fb00 2203 mla r2, r0, r3, r2 1154e: 23a0 movs r3, #160 ; 0xa0 11550: fb92 f2f3 sdiv r2, r2, r3 11554: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 11556: 2103 movs r1, #3 11558: 4638 mov r0, r7 1155a: 47b0 blx r6 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 1155c: 2000 movs r0, #0 1155e: 6824 ldr r4, [r4, #0] 11560: 47a8 blx r5 11562: eb00 0080 add.w r0, r0, r0, lsl #2 11566: 0040 lsls r0, r0, #1 11568: 28ef cmp r0, #239 ; 0xef 1156a: f104 0464 add.w r4, r4, #100 ; 0x64 1156e: dd2f ble.n 115d0 11570: 2000 movs r0, #0 11572: 47a8 blx r5 11574: 230a movs r3, #10 11576: 2250 movs r2, #80 ; 0x50 11578: fb00 2203 mla r2, r0, r3, r2 1157c: 23a0 movs r3, #160 ; 0xa0 1157e: fb92 f2f3 sdiv r2, r2, r3 11582: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 11584: 4620 mov r0, r4 11586: 4633 mov r3, r6 11588: 2114 movs r1, #20 } 1158a: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1158e: 4718 bx r3 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 11590: 2201 movs r2, #1 11592: e67a b.n 1128a lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 11594: 2201 movs r2, #1 11596: e68c b.n 112b2 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 11598: 2201 movs r2, #1 1159a: e69d b.n 112d8 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1159c: 2201 movs r2, #1 1159e: e6b3 b.n 11308 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 115a0: 2201 movs r2, #1 115a2: e6c9 b.n 11338 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 115a4: 2201 movs r2, #1 115a6: e6df b.n 11368 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 115a8: 2201 movs r2, #1 115aa: e6f5 b.n 11398 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 115ac: 2201 movs r2, #1 115ae: e70a b.n 113c6 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 115b0: 2201 movs r2, #1 115b2: e73d b.n 11430 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 115b4: 2201 movs r2, #1 115b6: e74e b.n 11456 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 115b8: 2201 movs r2, #1 115ba: e765 b.n 11488 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 115bc: 4b05 ldr r3, [pc, #20] ; (115d4 ) 115be: 881a ldrh r2, [r3, #0] 115c0: e773 b.n 114aa lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 115c2: 2201 movs r2, #1 115c4: e784 b.n 114d0 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 115c6: 4b03 ldr r3, [pc, #12] ; (115d4 ) 115c8: 881a ldrh r2, [r3, #0] 115ca: e7a7 b.n 1151c lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 115cc: 2201 movs r2, #1 115ce: e7c2 b.n 11556 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 115d0: 2201 movs r2, #1 115d2: e7d7 b.n 11584 115d4: 00024272 .word 0x00024272 000115d8 : { 115d8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} style_init_reset(&styles->chart_bg); 115dc: 4d68 ldr r5, [pc, #416] ; (11780 ) 115de: 4f69 ldr r7, [pc, #420] ; (11784 ) 115e0: 6828 ldr r0, [r5, #0] 115e2: f8df 91bc ldr.w r9, [pc, #444] ; 117a0 115e6: 3040 adds r0, #64 ; 0x40 115e8: 47b8 blx r7 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 115ea: 6a2b ldr r3, [r5, #32] 115ec: 682c ldr r4, [r5, #0] 115ee: f013 0f02 tst.w r3, #2 115f2: f104 0440 add.w r4, r4, #64 ; 0x40 115f6: f000 80b1 beq.w 1175c 115fa: 4b63 ldr r3, [pc, #396] ; (11788 ) 115fc: f640 20aa movw r0, #2730 ; 0xaaa 11600: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11602: 4602 mov r2, r0 11604: f248 0189 movw r1, #32905 ; 0x8089 11608: 4620 mov r0, r4 1160a: f8df 8198 ldr.w r8, [pc, #408] ; 117a4 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 1160e: 4c5f ldr r4, [pc, #380] ; (1178c ) 11610: 47c0 blx r8 style_init_reset(&styles->chart_series_bg); 11612: 6828 ldr r0, [r5, #0] 11614: 3044 adds r0, #68 ; 0x44 11616: 47b8 blx r7 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 11618: 2000 movs r0, #0 1161a: 682e ldr r6, [r5, #0] 1161c: 47a0 blx r4 1161e: 28ef cmp r0, #239 ; 0xef 11620: f106 0644 add.w r6, r6, #68 ; 0x44 11624: f340 809d ble.w 11762 11628: 2000 movs r0, #0 1162a: 47a0 blx r4 1162c: 23a0 movs r3, #160 ; 0xa0 1162e: f100 0250 add.w r2, r0, #80 ; 0x50 11632: fb92 f2f3 sdiv r2, r2, r3 11636: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 11638: 4630 mov r0, r6 1163a: 2190 movs r1, #144 ; 0x90 1163c: 4e54 ldr r6, [pc, #336] ; (11790 ) 1163e: 47b0 blx r6 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11640: 682b ldr r3, [r5, #0] 11642: 2000 movs r0, #0 11644: f103 0a44 add.w sl, r3, #68 ; 0x44 11648: 47a0 blx r4 1164a: eb00 0080 add.w r0, r0, r0, lsl #2 1164e: 0040 lsls r0, r0, #1 11650: 28ef cmp r0, #239 ; 0xef 11652: f340 8088 ble.w 11766 11656: 2000 movs r0, #0 11658: 47a0 blx r4 1165a: 230a movs r3, #10 1165c: 2250 movs r2, #80 ; 0x50 1165e: fb00 2203 mla r2, r0, r3, r2 11662: 23a0 movs r3, #160 ; 0xa0 11664: fb92 f2f3 sdiv r2, r2, r3 11668: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar) 1166a: 4650 mov r0, sl 1166c: 2192 movs r1, #146 ; 0x92 1166e: 47b0 blx r6 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11670: 682b ldr r3, [r5, #0] 11672: 2000 movs r0, #0 11674: f103 0a44 add.w sl, r3, #68 ; 0x44 11678: 47a0 blx r4 1167a: eb00 0080 add.w r0, r0, r0, lsl #2 1167e: 0040 lsls r0, r0, #1 11680: 28ef cmp r0, #239 ; 0xef 11682: dd72 ble.n 1176a 11684: 2000 movs r0, #0 11686: 47a0 blx r4 11688: 230a movs r3, #10 1168a: 2250 movs r2, #80 ; 0x50 1168c: fb00 2203 mla r2, r0, r3, r2 11690: 23a0 movs r3, #160 ; 0xa0 11692: fb92 f2f3 sdiv r2, r2, r3 11696: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) 11698: 4650 mov r0, sl 1169a: 2193 movs r1, #147 ; 0x93 1169c: 47b0 blx r6 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 1169e: 682b ldr r3, [r5, #0] 116a0: f103 0a44 add.w sl, r3, #68 ; 0x44 116a4: 6a2b ldr r3, [r5, #32] 116a6: 079b lsls r3, r3, #30 116a8: bf4c ite mi 116aa: 483a ldrmi r0, [pc, #232] ; (11794 ) 116ac: 483a ldrpl r0, [pc, #232] ; (11798 ) 116ae: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 116b0: 2199 movs r1, #153 ; 0x99 116b2: 4602 mov r2, r0 116b4: 4650 mov r0, sl 116b6: 47c0 blx r8 style_init_reset(&styles->chart_series); 116b8: 6828 ldr r0, [r5, #0] 116ba: 3048 adds r0, #72 ; 0x48 116bc: 47b8 blx r7 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 116be: 2000 movs r0, #0 116c0: 682f ldr r7, [r5, #0] 116c2: 47a0 blx r4 116c4: eb00 0040 add.w r0, r0, r0, lsl #1 116c8: 28ef cmp r0, #239 ; 0xef 116ca: f107 0748 add.w r7, r7, #72 ; 0x48 116ce: dd4e ble.n 1176e 116d0: 2000 movs r0, #0 116d2: 47a0 blx r4 116d4: 2303 movs r3, #3 116d6: 2250 movs r2, #80 ; 0x50 116d8: fb00 2203 mla r2, r0, r3, r2 116dc: 23a0 movs r3, #160 ; 0xa0 116de: fb92 f2f3 sdiv r2, r2, r3 116e2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 116e4: 4638 mov r0, r7 116e6: 2190 movs r1, #144 ; 0x90 116e8: 47b0 blx r6 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 116ea: 2000 movs r0, #0 116ec: 682f ldr r7, [r5, #0] 116ee: 47a0 blx r4 116f0: 283b cmp r0, #59 ; 0x3b 116f2: f107 0748 add.w r7, r7, #72 ; 0x48 116f6: dd3c ble.n 11772 116f8: 2000 movs r0, #0 116fa: 47a0 blx r4 116fc: 2328 movs r3, #40 ; 0x28 116fe: f100 0214 add.w r2, r0, #20 11702: fb92 f2f3 sdiv r2, r2, r3 11706: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 11708: 4638 mov r0, r7 1170a: 2103 movs r1, #3 1170c: 47b0 blx r6 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 1170e: 2000 movs r0, #0 11710: 682f ldr r7, [r5, #0] 11712: 47a0 blx r4 11714: 2877 cmp r0, #119 ; 0x77 11716: f107 0748 add.w r7, r7, #72 ; 0x48 1171a: dd2c ble.n 11776 1171c: 2000 movs r0, #0 1171e: 47a0 blx r4 11720: 2350 movs r3, #80 ; 0x50 11722: f100 0228 add.w r2, r0, #40 ; 0x28 11726: fb92 f2f3 sdiv r2, r2, r3 1172a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1172c: 2114 movs r1, #20 1172e: 4638 mov r0, r7 11730: 47b0 blx r6 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 11732: 2000 movs r0, #0 11734: 682d ldr r5, [r5, #0] 11736: 47a0 blx r4 11738: 28ef cmp r0, #239 ; 0xef 1173a: f105 0548 add.w r5, r5, #72 ; 0x48 1173e: dd1c ble.n 1177a 11740: 2000 movs r0, #0 11742: 47a0 blx r4 11744: 23a0 movs r3, #160 ; 0xa0 11746: f100 0250 add.w r2, r0, #80 ; 0x50 1174a: fb92 f2f3 sdiv r2, r2, r3 1174e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11750: 4628 mov r0, r5 11752: 4633 mov r3, r6 11754: 2101 movs r1, #1 } 11756: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 1175a: 4718 bx r3 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 1175c: 480f ldr r0, [pc, #60] ; (1179c ) 1175e: 47c8 blx r9 11760: e74f b.n 11602 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 11762: 2201 movs r2, #1 11764: e768 b.n 11638 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 11766: 2201 movs r2, #1 11768: e77f b.n 1166a lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1176a: 2201 movs r2, #1 1176c: e794 b.n 11698 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 1176e: 2201 movs r2, #1 11770: e7b8 b.n 116e4 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 11772: 2201 movs r2, #1 11774: e7c8 b.n 11708 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 11776: 2201 movs r2, #1 11778: e7d8 b.n 1172c lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 1177a: 2201 movs r2, #1 1177c: e7e8 b.n 11750 1177e: bf00 nop 11780: 2000c7d4 .word 0x2000c7d4 11784: 00010abd .word 0x00010abd 11788: 000102f1 .word 0x000102f1 1178c: 0000d951 .word 0x0000d951 11790: 00005879 .word 0x00005879 11794: 00d6dde3 .word 0x00d6dde3 11798: 00808a97 .word 0x00808a97 1179c: 00a1adbd .word 0x00a1adbd 117a0: 00010e9d .word 0x00010e9d 117a4: 00005949 .word 0x00005949 000117a8 : { 117a8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 117ac: ed2d 8b02 vpush {d8} style_init_reset(&styles->scr); 117b0: 4ca1 ldr r4, [pc, #644] ; (11a38 ) 117b2: 4fa2 ldr r7, [pc, #648] ; (11a3c ) 117b4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 117b6: 4da2 ldr r5, [pc, #648] ; (11a40 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 117b8: f8df a2b0 ldr.w sl, [pc, #688] ; 11a6c { 117bc: b083 sub sp, #12 style_init_reset(&styles->scr); 117be: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 117c0: 6820 ldr r0, [r4, #0] 117c2: 22ff movs r2, #255 ; 0xff 117c4: 212c movs r1, #44 ; 0x2c 117c6: 47a8 blx r5 lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR); 117c8: 6a23 ldr r3, [r4, #32] 117ca: 6826 ldr r6, [r4, #0] 117cc: f013 0f02 tst.w r3, #2 117d0: bf14 ite ne 117d2: 489c ldrne r0, [pc, #624] ; (11a44 ) 117d4: 489c ldreq r0, [pc, #624] ; (11a48 ) 117d6: 46ab mov fp, r5 117d8: 4d9c ldr r5, [pc, #624] ; (11a4c ) 117da: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 117dc: 46b9 mov r9, r7 117de: 4602 mov r2, r0 117e0: 4f9b ldr r7, [pc, #620] ; (11a50 ) 117e2: 4630 mov r0, r6 117e4: 2129 movs r1, #41 ; 0x29 117e6: 47b8 blx r7 lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 117e8: 6a23 ldr r3, [r4, #32] 117ea: 6826 ldr r6, [r4, #0] 117ec: 0798 lsls r0, r3, #30 117ee: bf4c ite mi 117f0: 4898 ldrmi r0, [pc, #608] ; (11a54 ) 117f2: 4899 ldrpl r0, [pc, #612] ; (11a58 ) 117f4: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 117f6: f248 0189 movw r1, #32905 ; 0x8089 117fa: 4602 mov r2, r0 117fc: 4630 mov r0, r6 117fe: 47b8 blx r7 lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 11800: 6a23 ldr r3, [r4, #32] 11802: 6826 ldr r6, [r4, #0] 11804: 0799 lsls r1, r3, #30 11806: bf4c ite mi 11808: 4892 ldrmi r0, [pc, #584] ; (11a54 ) 1180a: 4893 ldrpl r0, [pc, #588] ; (11a58 ) 1180c: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1180e: 2179 movs r1, #121 ; 0x79 11810: 4602 mov r2, r0 11812: 4630 mov r0, r6 11814: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 11816: 6962 ldr r2, [r4, #20] 11818: 6820 ldr r0, [r4, #0] lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 1181a: 4e90 ldr r6, [pc, #576] ; (11a5c ) 1181c: f248 018e movw r1, #32910 ; 0x808e 11820: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 11822: 6962 ldr r2, [r4, #20] 11824: 6820 ldr r0, [r4, #0] 11826: 217e movs r1, #126 ; 0x7e 11828: 47d0 blx sl style_init_reset(&styles->bg); 1182a: 6820 ldr r0, [r4, #0] 1182c: 3004 adds r0, #4 1182e: 47c8 blx r9 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 11830: 6823 ldr r3, [r4, #0] 11832: 2000 movs r0, #0 11834: f103 0804 add.w r8, r3, #4 11838: 47b0 blx r6 1183a: 281d cmp r0, #29 1183c: f340 8568 ble.w 12310 11840: 2000 movs r0, #0 11842: 47b0 blx r6 11844: 2314 movs r3, #20 11846: f100 020a add.w r2, r0, #10 1184a: fb92 f2f3 sdiv r2, r2, r3 1184e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11850: 4640 mov r0, r8 11852: 2101 movs r1, #1 11854: f8df 8218 ldr.w r8, [pc, #536] ; 11a70 11858: 47c0 blx r8 lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); 1185a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1185c: 22ff movs r2, #255 ; 0xff 1185e: 3004 adds r0, #4 11860: 212c movs r1, #44 ; 0x2c 11862: 47d8 blx fp lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG); 11864: 6823 ldr r3, [r4, #0] 11866: f103 0b04 add.w fp, r3, #4 1186a: 6a23 ldr r3, [r4, #32] 1186c: 079a lsls r2, r3, #30 1186e: bf54 ite pl 11870: 487b ldrpl r0, [pc, #492] ; (11a60 ) 11872: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 11876: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11878: 2129 movs r1, #41 ; 0x29 1187a: 4602 mov r2, r0 1187c: 4658 mov r0, fp 1187e: 47b8 blx r7 lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 11880: 6823 ldr r3, [r4, #0] 11882: f103 0b04 add.w fp, r3, #4 11886: 6a23 ldr r3, [r4, #32] 11888: 079b lsls r3, r3, #30 1188a: bf4c ite mi 1188c: 4875 ldrmi r0, [pc, #468] ; (11a64 ) 1188e: 4876 ldrpl r0, [pc, #472] ; (11a68 ) 11890: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11892: 2139 movs r1, #57 ; 0x39 11894: 4602 mov r2, r0 11896: 4658 mov r0, fp 11898: 47b8 blx r7 lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary); 1189a: 6820 ldr r0, [r4, #0] 1189c: 89a2 ldrh r2, [r4, #12] 1189e: f240 2139 movw r1, #569 ; 0x239 118a2: 3004 adds r0, #4 118a4: 47b8 blx r7 lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary); 118a6: 6820 ldr r0, [r4, #0] 118a8: 89e2 ldrh r2, [r4, #14] 118aa: f240 4139 movw r1, #1081 ; 0x439 118ae: 3004 adds r0, #4 118b0: 47b8 blx r7 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 118b2: 6823 ldr r3, [r4, #0] 118b4: 2000 movs r0, #0 118b6: f103 0b04 add.w fp, r3, #4 118ba: 47b0 blx r6 118bc: 2877 cmp r0, #119 ; 0x77 118be: f340 852a ble.w 12316 118c2: 2000 movs r0, #0 118c4: 47b0 blx r6 118c6: 2350 movs r3, #80 ; 0x50 118c8: f100 0228 add.w r2, r0, #40 ; 0x28 118cc: fb92 f2f3 sdiv r2, r2, r3 118d0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 118d2: 4658 mov r0, fp 118d4: 2130 movs r1, #48 ; 0x30 118d6: 47c0 blx r8 lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true); 118d8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 118da: 2201 movs r2, #1 118dc: 2133 movs r1, #51 ; 0x33 118de: 3004 adds r0, #4 118e0: 47c0 blx r8 lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 118e2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 118e4: 6962 ldr r2, [r4, #20] 118e6: 3004 adds r0, #4 118e8: f248 018e movw r1, #32910 ; 0x808e 118ec: 47d0 blx sl lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 118ee: 6823 ldr r3, [r4, #0] 118f0: f103 0b04 add.w fp, r3, #4 118f4: 6a23 ldr r3, [r4, #32] 118f6: 0798 lsls r0, r3, #30 118f8: bf4c ite mi 118fa: 4856 ldrmi r0, [pc, #344] ; (11a54 ) 118fc: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11900: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11902: f248 0189 movw r1, #32905 ; 0x8089 11906: 4602 mov r2, r0 11908: 4658 mov r0, fp 1190a: 47b8 blx r7 lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 1190c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 1190e: 6962 ldr r2, [r4, #20] 11910: 3004 adds r0, #4 11912: 217e movs r1, #126 ; 0x7e 11914: 47d0 blx sl lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 11916: 6823 ldr r3, [r4, #0] 11918: f103 0a04 add.w sl, r3, #4 1191c: 6a23 ldr r3, [r4, #32] 1191e: 0799 lsls r1, r3, #30 11920: bf4c ite mi 11922: 484c ldrmi r0, [pc, #304] ; (11a54 ) 11924: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11928: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 1192a: 2179 movs r1, #121 ; 0x79 1192c: 4602 mov r2, r0 1192e: 4650 mov r0, sl 11930: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 11932: 6823 ldr r3, [r4, #0] 11934: f103 0a04 add.w sl, r3, #4 11938: 6a23 ldr r3, [r4, #32] 1193a: 079a lsls r2, r3, #30 1193c: bf4c ite mi 1193e: 4845 ldrmi r0, [pc, #276] ; (11a54 ) 11940: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11944: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 11946: f248 01a9 movw r1, #32937 ; 0x80a9 1194a: 4602 mov r2, r0 1194c: 4650 mov r0, sl 1194e: 47b8 blx r7 lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 11950: 6823 ldr r3, [r4, #0] 11952: f103 0a04 add.w sl, r3, #4 11956: 6a23 ldr r3, [r4, #32] 11958: 079b lsls r3, r3, #30 1195a: bf4c ite mi 1195c: 483d ldrmi r0, [pc, #244] ; (11a54 ) 1195e: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11962: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 11964: 2199 movs r1, #153 ; 0x99 11966: 4602 mov r2, r0 11968: 4650 mov r0, sl 1196a: 47b8 blx r7 lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); 1196c: 6820 ldr r0, [r4, #0] lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 1196e: f8df a104 ldr.w sl, [pc, #260] ; 11a74 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 11972: 2201 movs r2, #1 11974: 2190 movs r1, #144 ; 0x90 11976: 3004 adds r0, #4 11978: 47c0 blx r8 1197a: 6823 ldr r3, [r4, #0] 1197c: 2000 movs r0, #0 1197e: 3304 adds r3, #4 11980: ee08 3a10 vmov s16, r3 11984: 47d0 blx sl 11986: 2801 cmp r0, #1 11988: f04f 0000 mov.w r0, #0 1198c: f200 84d3 bhi.w 12336 11990: 47b0 blx r6 11992: ebc0 1000 rsb r0, r0, r0, lsl #4 11996: 28ef cmp r0, #239 ; 0xef 11998: f300 84c0 bgt.w 1231c 1199c: f04f 0b01 mov.w fp, #1 119a0: 2000 movs r0, #0 119a2: 47b0 blx r6 119a4: 2877 cmp r0, #119 ; 0x77 119a6: f340 84d1 ble.w 1234c 119aa: 2000 movs r0, #0 119ac: 47b0 blx r6 119ae: 2350 movs r3, #80 ; 0x50 119b0: 3028 adds r0, #40 ; 0x28 119b2: fb90 f0f3 sdiv r0, r0, r3 119b6: b280 uxth r0, r0 119b8: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 119bc: b212 sxth r2, r2 119be: ee18 0a10 vmov r0, s16 119c2: 2112 movs r1, #18 119c4: 47c0 blx r8 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 119c6: 6823 ldr r3, [r4, #0] 119c8: 2000 movs r0, #0 119ca: 3304 adds r3, #4 119cc: ee08 3a10 vmov s16, r3 119d0: 47d0 blx sl 119d2: 2801 cmp r0, #1 119d4: f04f 0000 mov.w r0, #0 119d8: f200 84c8 bhi.w 1236c 119dc: 47b0 blx r6 119de: ebc0 1000 rsb r0, r0, r0, lsl #4 119e2: 28ef cmp r0, #239 ; 0xef 119e4: f300 84b5 bgt.w 12352 119e8: f04f 0b01 mov.w fp, #1 119ec: 2000 movs r0, #0 119ee: 47b0 blx r6 119f0: 2877 cmp r0, #119 ; 0x77 119f2: f340 84c6 ble.w 12382 119f6: 2000 movs r0, #0 119f8: 47b0 blx r6 119fa: 2350 movs r3, #80 ; 0x50 119fc: 3028 adds r0, #40 ; 0x28 119fe: fb90 f0f3 sdiv r0, r0, r3 11a02: b280 uxth r0, r0 11a04: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 11a08: b212 sxth r2, r2 11a0a: ee18 0a10 vmov r0, s16 11a0e: 2113 movs r1, #19 11a10: 47c0 blx r8 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 11a12: 6823 ldr r3, [r4, #0] 11a14: 2000 movs r0, #0 11a16: 3304 adds r3, #4 11a18: ee08 3a10 vmov s16, r3 11a1c: 47d0 blx sl 11a1e: 2801 cmp r0, #1 11a20: f04f 0000 mov.w r0, #0 11a24: f200 84bd bhi.w 123a2 11a28: 47b0 blx r6 11a2a: ebc0 1000 rsb r0, r0, r0, lsl #4 11a2e: 28ef cmp r0, #239 ; 0xef 11a30: f300 84aa bgt.w 12388 11a34: e020 b.n 11a78 11a36: bf00 nop 11a38: 2000c7d4 .word 0x2000c7d4 11a3c: 00010abd .word 0x00010abd 11a40: 00005a19 .word 0x00005a19 11a44: 00eaeff3 .word 0x00eaeff3 11a48: 00444b5a .word 0x00444b5a 11a4c: 00010e9d .word 0x00010e9d 11a50: 00005949 .word 0x00005949 11a54: 003b3e42 .word 0x003b3e42 11a58: 00e7e9ec .word 0x00e7e9ec 11a5c: 0000d951 .word 0x0000d951 11a60: 00586273 .word 0x00586273 11a64: 00d6dde3 .word 0x00d6dde3 11a68: 00808a97 .word 0x00808a97 11a6c: 00005aed .word 0x00005aed 11a70: 00005879 .word 0x00005879 11a74: 0000d969 .word 0x0000d969 11a78: f04f 0b01 mov.w fp, #1 11a7c: 2000 movs r0, #0 11a7e: 47b0 blx r6 11a80: 2877 cmp r0, #119 ; 0x77 11a82: f340 8499 ble.w 123b8 11a86: 2000 movs r0, #0 11a88: 47b0 blx r6 11a8a: 2350 movs r3, #80 ; 0x50 11a8c: 3028 adds r0, #40 ; 0x28 11a8e: fb90 f0f3 sdiv r0, r0, r3 11a92: b280 uxth r0, r0 11a94: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 11a98: b212 sxth r2, r2 11a9a: ee18 0a10 vmov r0, s16 11a9e: 2110 movs r1, #16 11aa0: 47c0 blx r8 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 11aa2: 6823 ldr r3, [r4, #0] 11aa4: 2000 movs r0, #0 11aa6: 3304 adds r3, #4 11aa8: ee08 3a10 vmov s16, r3 11aac: 47d0 blx sl 11aae: 2801 cmp r0, #1 11ab0: f04f 0000 mov.w r0, #0 11ab4: f200 8490 bhi.w 123d8 11ab8: 47b0 blx r6 11aba: ebc0 1000 rsb r0, r0, r0, lsl #4 11abe: 28ef cmp r0, #239 ; 0xef 11ac0: f300 847d bgt.w 123be 11ac4: f04f 0b01 mov.w fp, #1 11ac8: 2000 movs r0, #0 11aca: 47b0 blx r6 11acc: 2877 cmp r0, #119 ; 0x77 11ace: f340 848e ble.w 123ee 11ad2: 2000 movs r0, #0 11ad4: 47b0 blx r6 11ad6: 2350 movs r3, #80 ; 0x50 11ad8: 3028 adds r0, #40 ; 0x28 11ada: fb90 f0f3 sdiv r0, r0, r3 11ade: b280 uxth r0, r0 11ae0: eb0b 0200 add.w r2, fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 11ae4: b212 sxth r2, r2 11ae6: ee18 0a10 vmov r0, s16 11aea: 2111 movs r1, #17 11aec: 47c0 blx r8 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 11aee: 6823 ldr r3, [r4, #0] 11af0: 2000 movs r0, #0 11af2: f103 0b04 add.w fp, r3, #4 11af6: 47d0 blx sl 11af8: 2801 cmp r0, #1 11afa: f04f 0000 mov.w r0, #0 11afe: f200 8485 bhi.w 1240c 11b02: 47b0 blx r6 11b04: ebc0 1000 rsb r0, r0, r0, lsl #4 11b08: 28ef cmp r0, #239 ; 0xef 11b0a: f300 8473 bgt.w 123f4 11b0e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 11b10: 2114 movs r1, #20 11b12: 4658 mov r0, fp 11b14: 47c0 blx r8 lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME); 11b16: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 11b18: 2296 movs r2, #150 ; 0x96 11b1a: 21b0 movs r1, #176 ; 0xb0 11b1c: 3004 adds r0, #4 11b1e: 47c0 blx r8 lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR); 11b20: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 11b22: 2239 movs r2, #57 ; 0x39 11b24: 21b7 movs r1, #183 ; 0xb7 11b26: 3004 adds r0, #4 11b28: 47c0 blx r8 style_init_reset(&styles->bg_sec); 11b2a: 6820 ldr r0, [r4, #0] 11b2c: 300c adds r0, #12 11b2e: 47c8 blx r9 lv_style_copy(&styles->bg_sec, &styles->bg); 11b30: 6820 ldr r0, [r4, #0] 11b32: 4bac ldr r3, [pc, #688] ; (11de4 ) 11b34: 1d01 adds r1, r0, #4 11b36: 300c adds r0, #12 11b38: 4798 blx r3 lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); 11b3a: 6a23 ldr r3, [r4, #32] 11b3c: 6826 ldr r6, [r4, #0] 11b3e: 0798 lsls r0, r3, #30 11b40: bf4c ite mi 11b42: 48a9 ldrmi r0, [pc, #676] ; (11de8 ) 11b44: 48a9 ldrpl r0, [pc, #676] ; (11dec ) 11b46: 47a8 blx r5 11b48: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11b4a: 4602 mov r2, r0 11b4c: 2129 movs r1, #41 ; 0x29 11b4e: 4630 mov r0, r6 11b50: 47b8 blx r7 lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); 11b52: 6a23 ldr r3, [r4, #32] 11b54: 6826 ldr r6, [r4, #0] 11b56: 0799 lsls r1, r3, #30 11b58: bf4c ite mi 11b5a: 48a5 ldrmi r0, [pc, #660] ; (11df0 ) 11b5c: 48a5 ldrpl r0, [pc, #660] ; (11df4 ) 11b5e: 47a8 blx r5 11b60: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11b62: 4602 mov r2, r0 11b64: 2139 movs r1, #57 ; 0x39 11b66: 4630 mov r0, r6 11b68: 47b8 blx r7 lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11b6a: 6a23 ldr r3, [r4, #32] 11b6c: 6826 ldr r6, [r4, #0] 11b6e: 079a lsls r2, r3, #30 11b70: bf4c ite mi 11b72: 48a1 ldrmi r0, [pc, #644] ; (11df8 ) 11b74: 48a1 ldrpl r0, [pc, #644] ; (11dfc ) 11b76: 47a8 blx r5 11b78: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11b7a: 4602 mov r2, r0 11b7c: f248 0189 movw r1, #32905 ; 0x8089 11b80: 4630 mov r0, r6 11b82: 47b8 blx r7 lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11b84: 6a23 ldr r3, [r4, #32] 11b86: 6826 ldr r6, [r4, #0] 11b88: 079b lsls r3, r3, #30 11b8a: bf4c ite mi 11b8c: 489a ldrmi r0, [pc, #616] ; (11df8 ) 11b8e: 489b ldrpl r0, [pc, #620] ; (11dfc ) 11b90: 47a8 blx r5 11b92: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 11b94: 4602 mov r2, r0 11b96: 2179 movs r1, #121 ; 0x79 11b98: 4630 mov r0, r6 11b9a: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11b9c: 6a23 ldr r3, [r4, #32] 11b9e: 6826 ldr r6, [r4, #0] 11ba0: 0798 lsls r0, r3, #30 11ba2: bf4c ite mi 11ba4: 4894 ldrmi r0, [pc, #592] ; (11df8 ) 11ba6: 4895 ldrpl r0, [pc, #596] ; (11dfc ) 11ba8: 47a8 blx r5 11baa: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 11bac: 4602 mov r2, r0 11bae: f248 01a9 movw r1, #32937 ; 0x80a9 11bb2: 4630 mov r0, r6 11bb4: 47b8 blx r7 lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 11bb6: 6a23 ldr r3, [r4, #32] 11bb8: 6826 ldr r6, [r4, #0] 11bba: 0799 lsls r1, r3, #30 11bbc: bf4c ite mi 11bbe: 488e ldrmi r0, [pc, #568] ; (11df8 ) 11bc0: 488e ldrpl r0, [pc, #568] ; (11dfc ) 11bc2: 47a8 blx r5 11bc4: 360c adds r6, #12 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 11bc6: 4602 mov r2, r0 11bc8: 2199 movs r1, #153 ; 0x99 11bca: 4630 mov r0, r6 11bcc: 47b8 blx r7 style_init_reset(&styles->bg_click); 11bce: 6820 ldr r0, [r4, #0] 11bd0: 3008 adds r0, #8 11bd2: 47c8 blx r9 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 11bd4: 6a23 ldr r3, [r4, #32] 11bd6: 6826 ldr r6, [r4, #0] lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 11bd8: f8df 9250 ldr.w r9, [pc, #592] ; 11e2c lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 11bdc: 079a lsls r2, r3, #30 11bde: bf4c ite mi 11be0: 4887 ldrmi r0, [pc, #540] ; (11e00 ) 11be2: 4888 ldrpl r0, [pc, #544] ; (11e04 ) 11be4: 47a8 blx r5 11be6: 3608 adds r6, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11be8: 4602 mov r2, r0 11bea: f241 0129 movw r1, #4137 ; 0x1029 11bee: 4630 mov r0, r6 11bf0: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); 11bf2: 6820 ldr r0, [r4, #0] 11bf4: 89a2 ldrh r2, [r4, #12] 11bf6: f240 1129 movw r1, #297 ; 0x129 11bfa: 3008 adds r0, #8 11bfc: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 11bfe: 6820 ldr r0, [r4, #0] 11c00: 2133 movs r1, #51 ; 0x33 11c02: f100 0608 add.w r6, r0, #8 11c06: 89a0 ldrh r0, [r4, #12] 11c08: 47c8 blx r9 11c0a: f241 1129 movw r1, #4393 ; 0x1129 11c0e: 4602 mov r2, r0 11c10: 4630 mov r0, r6 11c12: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); 11c14: 6a23 ldr r3, [r4, #32] 11c16: 6826 ldr r6, [r4, #0] 11c18: 079b lsls r3, r3, #30 11c1a: bf54 ite pl 11c1c: 487a ldrpl r0, [pc, #488] ; (11e08 ) 11c1e: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 11c22: 47a8 blx r5 11c24: 3608 adds r6, #8 11c26: 4602 mov r2, r0 11c28: f242 0129 movw r1, #8233 ; 0x2029 11c2c: 4630 mov r0, r6 11c2e: 47b8 blx r7 lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); 11c30: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 11c32: 2200 movs r2, #0 11c34: f44f 7198 mov.w r1, #304 ; 0x130 11c38: 3008 adds r0, #8 11c3a: 47c0 blx r8 lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary, 11c3c: 6820 ldr r0, [r4, #0] 11c3e: f8df 81f0 ldr.w r8, [pc, #496] ; 11e30 11c42: f100 0608 add.w r6, r0, #8 11c46: 2133 movs r1, #51 ; 0x33 11c48: 89a0 ldrh r0, [r4, #12] 11c4a: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11c4c: f241 2139 movw r1, #4665 ; 0x1239 11c50: 4602 mov r2, r0 11c52: 4630 mov r0, r6 11c54: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 11c56: 6a23 ldr r3, [r4, #32] 11c58: 6826 ldr r6, [r4, #0] 11c5a: f013 0f02 tst.w r3, #2 11c5e: f106 0608 add.w r6, r6, #8 11c62: f000 83de beq.w 12422 11c66: f640 40cc movw r0, #3276 ; 0xccc 11c6a: 47c0 blx r8 11c6c: 4602 mov r2, r0 11c6e: f241 0139 movw r1, #4153 ; 0x1039 11c72: 4630 mov r0, r6 11c74: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); 11c76: 6a23 ldr r3, [r4, #32] 11c78: 6826 ldr r6, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 11c7a: f8df b1b8 ldr.w fp, [pc, #440] ; 11e34 11c7e: 0798 lsls r0, r3, #30 11c80: bf4c ite mi 11c82: 4862 ldrmi r0, [pc, #392] ; (11e0c ) 11c84: 4862 ldrpl r0, [pc, #392] ; (11e10 ) 11c86: 47a8 blx r5 11c88: 3608 adds r6, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11c8a: 4602 mov r2, r0 11c8c: f240 1139 movw r1, #313 ; 0x139 11c90: 4630 mov r0, r6 11c92: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 11c94: 6a23 ldr r3, [r4, #32] 11c96: 4d5f ldr r5, [pc, #380] ; (11e14 ) 11c98: 6826 ldr r6, [r4, #0] lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 11c9a: 4c5f ldr r4, [pc, #380] ; (11e18 ) lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 11c9c: f013 0f02 tst.w r3, #2 11ca0: bf14 ite ne 11ca2: 485a ldrne r0, [pc, #360] ; (11e0c ) 11ca4: 485a ldreq r0, [pc, #360] ; (11e10 ) 11ca6: 47a8 blx r5 11ca8: 3608 adds r6, #8 11caa: 4602 mov r2, r0 11cac: f241 1139 movw r1, #4409 ; 0x1139 11cb0: 4630 mov r0, r6 11cb2: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 11cb4: 6a23 ldr r3, [r4, #32] 11cb6: 6826 ldr r6, [r4, #0] 11cb8: 0799 lsls r1, r3, #30 11cba: bf4c ite mi 11cbc: 4857 ldrmi r0, [pc, #348] ; (11e1c ) 11cbe: 4854 ldrpl r0, [pc, #336] ; (11e10 ) 11cc0: 47a8 blx r5 11cc2: 3608 adds r6, #8 11cc4: 4602 mov r2, r0 11cc6: f242 0139 movw r1, #8249 ; 0x2039 11cca: 4630 mov r0, r6 11ccc: 4e54 ldr r6, [pc, #336] ; (11e20 ) 11cce: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 11cd0: 6a23 ldr r3, [r4, #32] 11cd2: 6827 ldr r7, [r4, #0] 11cd4: 079a lsls r2, r3, #30 11cd6: bf4c ite mi 11cd8: 484c ldrmi r0, [pc, #304] ; (11e0c ) 11cda: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11cde: 47a8 blx r5 11ce0: 3708 adds r7, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11ce2: 4602 mov r2, r0 11ce4: f249 0189 movw r1, #37001 ; 0x9089 11ce8: 4638 mov r0, r7 11cea: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 11cec: 6820 ldr r0, [r4, #0] 11cee: f100 0708 add.w r7, r0, #8 11cf2: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11cf6: 47a8 blx r5 11cf8: f248 1189 movw r1, #33161 ; 0x8189 11cfc: 4602 mov r2, r0 11cfe: 4638 mov r0, r7 11d00: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 11d02: 6820 ldr r0, [r4, #0] 11d04: f100 0708 add.w r7, r0, #8 11d08: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11d0c: 47a8 blx r5 11d0e: f249 1189 movw r1, #37257 ; 0x9189 11d12: 4602 mov r2, r0 11d14: 4638 mov r0, r7 11d16: 47b0 blx r6 lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 11d18: 6a23 ldr r3, [r4, #32] 11d1a: 6827 ldr r7, [r4, #0] 11d1c: 079b lsls r3, r3, #30 11d1e: bf4c ite mi 11d20: f640 20aa movwmi r0, #2730 ; 0xaaa 11d24: f640 1099 movwpl r0, #2457 ; 0x999 11d28: 47c0 blx r8 11d2a: 3708 adds r7, #8 11d2c: 4602 mov r2, r0 11d2e: f24a 0189 movw r1, #41097 ; 0xa089 11d32: 4638 mov r0, r7 11d34: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 11d36: 6a23 ldr r3, [r4, #32] 11d38: 6827 ldr r7, [r4, #0] 11d3a: 0798 lsls r0, r3, #30 11d3c: bf4c ite mi 11d3e: 4833 ldrmi r0, [pc, #204] ; (11e0c ) 11d40: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11d44: 47a8 blx r5 11d46: 3708 adds r7, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 11d48: 4602 mov r2, r0 11d4a: f249 01a9 movw r1, #37033 ; 0x90a9 11d4e: 4638 mov r0, r7 11d50: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 11d52: 6820 ldr r0, [r4, #0] 11d54: f100 0708 add.w r7, r0, #8 11d58: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11d5c: 47a8 blx r5 11d5e: f248 11a9 movw r1, #33193 ; 0x81a9 11d62: 4602 mov r2, r0 11d64: 4638 mov r0, r7 11d66: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 11d68: 6820 ldr r0, [r4, #0] 11d6a: f100 0708 add.w r7, r0, #8 11d6e: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11d72: 47a8 blx r5 11d74: f249 11a9 movw r1, #37289 ; 0x91a9 11d78: 4602 mov r2, r0 11d7a: 4638 mov r0, r7 11d7c: 47b0 blx r6 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 11d7e: 6a23 ldr r3, [r4, #32] 11d80: 6827 ldr r7, [r4, #0] 11d82: 0799 lsls r1, r3, #30 11d84: bf4c ite mi 11d86: f640 20aa movwmi r0, #2730 ; 0xaaa 11d8a: f640 1099 movwpl r0, #2457 ; 0x999 11d8e: 47c0 blx r8 11d90: 3708 adds r7, #8 11d92: 4602 mov r2, r0 11d94: f24a 01a9 movw r1, #41129 ; 0xa0a9 11d98: 4638 mov r0, r7 11d9a: 47b0 blx r6 lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 11d9c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 11d9e: 4f21 ldr r7, [pc, #132] ; (11e24 ) 11da0: 2229 movs r2, #41 ; 0x29 11da2: 21b6 movs r1, #182 ; 0xb6 11da4: 3008 adds r0, #8 11da6: 47b8 blx r7 style_init_reset(&styles->btn); 11da8: 6820 ldr r0, [r4, #0] 11daa: 4b1f ldr r3, [pc, #124] ; (11e28 ) 11dac: 3010 adds r0, #16 11dae: 4798 blx r3 lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 11db0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 11db2: f647 72ff movw r2, #32767 ; 0x7fff 11db6: 2101 movs r1, #1 11db8: 3010 adds r0, #16 11dba: 47b8 blx r7 lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); 11dbc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 11dbe: 22ff movs r2, #255 ; 0xff 11dc0: 3010 adds r0, #16 11dc2: 212c movs r1, #44 ; 0x2c 11dc4: 47d8 blx fp lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); 11dc6: 6823 ldr r3, [r4, #0] 11dc8: f8cd b004 str.w fp, [sp, #4] 11dcc: f103 0a10 add.w sl, r3, #16 11dd0: 6a23 ldr r3, [r4, #32] 11dd2: f013 0f02 tst.w r3, #2 11dd6: bf0c ite eq 11dd8: 480b ldreq r0, [pc, #44] ; (11e08 ) 11dda: f06f 407f mvnne.w r0, #4278190080 ; 0xff000000 11dde: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 11de0: 2129 movs r1, #41 ; 0x29 11de2: e029 b.n 11e38 11de4: 000057d9 .word 0x000057d9 11de8: 00d4d7d9 .word 0x00d4d7d9 11dec: 0045494d .word 0x0045494d 11df0: 00dfe7ed .word 0x00dfe7ed 11df4: 00404040 .word 0x00404040 11df8: 0031404f .word 0x0031404f 11dfc: 00a5a8ad .word 0x00a5a8ad 11e00: 00eeeeee .word 0x00eeeeee 11e04: 00494f57 .word 0x00494f57 11e08: 00586273 .word 0x00586273 11e0c: 003b3e42 .word 0x003b3e42 11e10: 005f656e .word 0x005f656e 11e14: 00010e9d .word 0x00010e9d 11e18: 2000c7d4 .word 0x2000c7d4 11e1c: 00d6dde3 .word 0x00d6dde3 11e20: 00005949 .word 0x00005949 11e24: 00005879 .word 0x00005879 11e28: 00010abd .word 0x00010abd 11e2c: 0000e38f .word 0x0000e38f 11e30: 000102f1 .word 0x000102f1 11e34: 00005a19 .word 0x00005a19 11e38: 4602 mov r2, r0 11e3a: 4650 mov r0, sl 11e3c: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 11e3e: 6823 ldr r3, [r4, #0] 11e40: f103 0a10 add.w sl, r3, #16 11e44: 6a23 ldr r3, [r4, #32] 11e46: 079a lsls r2, r3, #30 11e48: f140 82ee bpl.w 12428 11e4c: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11e50: 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))); 11e52: 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))); 11e54: 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))); 11e58: f04f 0be6 mov.w fp, #230 ; 0xe6 11e5c: f3c0 22c4 ubfx r2, r0, #11, #5 11e60: 2319 movs r3, #25 11e62: fb0b f202 mul.w r2, fp, r2 11e66: 08c9 lsrs r1, r1, #3 11e68: 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))); 11e6c: f3c0 1245 ubfx r2, r0, #5, #6 11e70: fb0b f202 mul.w r2, fp, r2 11e74: f3cc 1c45 ubfx ip, ip, #5, #6 11e78: fb13 2c0c smlabb ip, r3, 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))); 11e7c: 7b22 ldrb r2, [r4, #12] 11e7e: 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))); 11e82: f248 0e81 movw lr, #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))); 11e86: f002 021f and.w r2, r2, #31 11e8a: 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))); 11e8e: fb0e f101 mul.w r1, lr, r1 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 11e92: fb0e fc0c mul.w ip, lr, ip LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 11e96: fb13 0202 smlabb r2, r3, r2, r0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 11e9a: 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))); 11e9e: f3cc 5cc5 ubfx ip, ip, #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))); 11ea2: fb0e f202 mul.w r2, lr, r2 11ea6: f3c2 52c4 ubfx r2, r2, #23, #5 11eaa: ea42 124c orr.w r2, r2, ip, lsl #5 11eae: ea42 22c1 orr.w r2, r2, r1, lsl #11 11eb2: 4650 mov r0, sl 11eb4: f241 0129 movw r1, #4137 ; 0x1029 11eb8: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); 11eba: 6820 ldr r0, [r4, #0] 11ebc: 89a2 ldrh r2, [r4, #12] 11ebe: f240 1129 movw r1, #297 ; 0x129 11ec2: 3010 adds r0, #16 11ec4: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); 11ec6: 6820 ldr r0, [r4, #0] 11ec8: 214c movs r1, #76 ; 0x4c 11eca: f100 0a10 add.w sl, r0, #16 11ece: 89a0 ldrh r0, [r4, #12] 11ed0: 47c8 blx r9 11ed2: f241 1129 movw r1, #4393 ; 0x1129 11ed6: 4602 mov r2, r0 11ed8: 4650 mov r0, sl 11eda: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); 11edc: 6823 ldr r3, [r4, #0] 11ede: f103 0910 add.w r9, r3, #16 11ee2: 6a23 ldr r3, [r4, #32] 11ee4: 079b lsls r3, r3, #30 11ee6: bf54 ite pl 11ee8: 48b2 ldrpl r0, [pc, #712] ; (121b4 ) 11eea: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 11eee: 47a8 blx r5 11ef0: f242 0129 movw r1, #8233 ; 0x2029 11ef4: 4602 mov r2, r0 11ef6: 4648 mov r0, r9 11ef8: 47b0 blx r6 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); 11efa: 6823 ldr r3, [r4, #0] 11efc: f103 0910 add.w r9, r3, #16 11f00: 6a23 ldr r3, [r4, #32] 11f02: 0798 lsls r0, r3, #30 11f04: bf4c ite mi 11f06: f640 40cc movwmi r0, #3276 ; 0xccc 11f0a: f640 0088 movwpl r0, #2184 ; 0x888 11f0e: 47c0 blx r8 11f10: f242 1129 movw r1, #8489 ; 0x2129 11f14: 4602 mov r2, r0 11f16: 4648 mov r0, r9 11f18: 47b0 blx r6 lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); 11f1a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 11f1c: 89a2 ldrh r2, [r4, #12] 11f1e: 2139 movs r1, #57 ; 0x39 11f20: 3010 adds r0, #16 11f22: 47b0 blx r6 lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); 11f24: 6820 ldr r0, [r4, #0] 11f26: 89a2 ldrh r2, [r4, #12] 11f28: f241 0139 movw r1, #4153 ; 0x1039 11f2c: 3010 adds r0, #16 11f2e: 47b0 blx r6 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 11f30: 6823 ldr r3, [r4, #0] 11f32: f103 0910 add.w r9, r3, #16 11f36: 6a23 ldr r3, [r4, #32] 11f38: 0799 lsls r1, r3, #30 11f3a: f140 82a0 bpl.w 1247e 11f3e: f640 0088 movw r0, #2184 ; 0x888 11f42: 47c0 blx r8 11f44: 4602 mov r2, r0 11f46: f242 0139 movw r1, #8249 ; 0x2039 11f4a: 4648 mov r0, r9 11f4c: 47b0 blx r6 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 11f4e: 6823 ldr r3, [r4, #0] 11f50: f8df 8270 ldr.w r8, [pc, #624] ; 121c4 11f54: 2000 movs r0, #0 11f56: f103 0910 add.w r9, r3, #16 11f5a: 47c0 blx r8 11f5c: 2877 cmp r0, #119 ; 0x77 11f5e: f340 8291 ble.w 12484 11f62: 2000 movs r0, #0 11f64: 47c0 blx r8 11f66: 2350 movs r3, #80 ; 0x50 11f68: f100 0228 add.w r2, r0, #40 ; 0x28 11f6c: fb92 f2f3 sdiv r2, r2, r3 11f70: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 11f72: 4648 mov r0, r9 11f74: 2130 movs r1, #48 ; 0x30 11f76: f8df 9250 ldr.w r9, [pc, #592] ; 121c8 11f7a: 47c8 blx r9 lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); 11f7c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 11f7e: 4b8e ldr r3, [pc, #568] ; (121b8 ) 11f80: 2200 movs r2, #0 11f82: 3010 adds r0, #16 11f84: f44f 719e mov.w r1, #316 ; 0x13c 11f88: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 11f8a: 6823 ldr r3, [r4, #0] 11f8c: f103 0a10 add.w sl, r3, #16 11f90: 6a23 ldr r3, [r4, #32] 11f92: 079a lsls r2, r3, #30 11f94: bf4c ite mi 11f96: 4889 ldrmi r0, [pc, #548] ; (121bc ) 11f98: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11f9c: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 11f9e: f248 0189 movw r1, #32905 ; 0x8089 11fa2: 4602 mov r2, r0 11fa4: 4650 mov r0, sl 11fa6: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 11fa8: 6823 ldr r3, [r4, #0] 11faa: f103 0a10 add.w sl, r3, #16 11fae: 6a23 ldr r3, [r4, #32] 11fb0: 079b lsls r3, r3, #30 11fb2: bf4c ite mi 11fb4: 4881 ldrmi r0, [pc, #516] ; (121bc ) 11fb6: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 11fba: 47a8 blx r5 11fbc: f249 0189 movw r1, #37001 ; 0x9089 11fc0: 4602 mov r2, r0 11fc2: 4650 mov r0, sl 11fc4: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 11fc6: 6820 ldr r0, [r4, #0] 11fc8: f100 0a10 add.w sl, r0, #16 11fcc: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11fd0: 47a8 blx r5 11fd2: f248 1189 movw r1, #33161 ; 0x8189 11fd6: 4602 mov r2, r0 11fd8: 4650 mov r0, sl 11fda: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 11fdc: 6820 ldr r0, [r4, #0] 11fde: f100 0a10 add.w sl, r0, #16 11fe2: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 11fe6: 47a8 blx r5 11fe8: f249 1189 movw r1, #37257 ; 0x9189 11fec: 4602 mov r2, r0 11fee: 4650 mov r0, sl 11ff0: 47b0 blx r6 lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 11ff2: 6820 ldr r0, [r4, #0] 11ff4: f100 0a10 add.w sl, r0, #16 11ff8: 4871 ldr r0, [pc, #452] ; (121c0 ) 11ffa: 47a8 blx r5 11ffc: f24a 0189 movw r1, #41097 ; 0xa089 12000: 4602 mov r2, r0 12002: 4650 mov r0, sl 12004: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12006: 6823 ldr r3, [r4, #0] 12008: f103 0a10 add.w sl, r3, #16 1200c: 6a23 ldr r3, [r4, #32] 1200e: 0798 lsls r0, r3, #30 12010: bf4c ite mi 12012: 486a ldrmi r0, [pc, #424] ; (121bc ) 12014: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 12018: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 1201a: f248 01a9 movw r1, #32937 ; 0x80a9 1201e: 4602 mov r2, r0 12020: 4650 mov r0, sl 12022: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12024: 6823 ldr r3, [r4, #0] 12026: f103 0a10 add.w sl, r3, #16 1202a: 6a23 ldr r3, [r4, #32] 1202c: 0799 lsls r1, r3, #30 1202e: bf4c ite mi 12030: 4862 ldrmi r0, [pc, #392] ; (121bc ) 12032: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 12036: 47a8 blx r5 12038: f249 01a9 movw r1, #37033 ; 0x90a9 1203c: 4602 mov r2, r0 1203e: 4650 mov r0, sl 12040: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12042: 6820 ldr r0, [r4, #0] 12044: f100 0a10 add.w sl, r0, #16 12048: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 1204c: 47a8 blx r5 1204e: f249 01a9 movw r1, #37033 ; 0x90a9 12052: 4602 mov r2, r0 12054: 4650 mov r0, sl 12056: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 12058: 6820 ldr r0, [r4, #0] 1205a: f100 0a10 add.w sl, r0, #16 1205e: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 12062: 47a8 blx r5 12064: f249 11a9 movw r1, #37289 ; 0x91a9 12068: 4602 mov r2, r0 1206a: 4650 mov r0, sl 1206c: 47b0 blx r6 lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 1206e: 6820 ldr r0, [r4, #0] 12070: f100 0a10 add.w sl, r0, #16 12074: 4852 ldr r0, [pc, #328] ; (121c0 ) 12076: 47a8 blx r5 12078: f24a 01a9 movw r1, #41129 ; 0xa0a9 1207c: 4602 mov r2, r0 1207e: 4650 mov r0, sl 12080: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 12082: 6823 ldr r3, [r4, #0] 12084: f103 0a10 add.w sl, r3, #16 12088: 6a23 ldr r3, [r4, #32] 1208a: 079a lsls r2, r3, #30 1208c: bf4c ite mi 1208e: 484b ldrmi r0, [pc, #300] ; (121bc ) 12090: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 12094: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 12096: 2179 movs r1, #121 ; 0x79 12098: 4602 mov r2, r0 1209a: 4650 mov r0, sl 1209c: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 1209e: 6823 ldr r3, [r4, #0] 120a0: f103 0a10 add.w sl, r3, #16 120a4: 6a23 ldr r3, [r4, #32] 120a6: 079b lsls r3, r3, #30 120a8: bf4c ite mi 120aa: 4844 ldrmi r0, [pc, #272] ; (121bc ) 120ac: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 120b0: 47a8 blx r5 120b2: f241 0179 movw r1, #4217 ; 0x1079 120b6: 4602 mov r2, r0 120b8: 4650 mov r0, sl 120ba: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 120bc: 6820 ldr r0, [r4, #0] 120be: f100 0a10 add.w sl, r0, #16 120c2: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 120c6: 47a8 blx r5 120c8: f240 1179 movw r1, #377 ; 0x179 120cc: 4602 mov r2, r0 120ce: 4650 mov r0, sl 120d0: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 120d2: 6820 ldr r0, [r4, #0] 120d4: f100 0a10 add.w sl, r0, #16 120d8: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 120dc: 47a8 blx r5 120de: f241 1179 movw r1, #4473 ; 0x1179 120e2: 4602 mov r2, r0 120e4: 4650 mov r0, sl 120e6: 47b0 blx r6 lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 120e8: 6820 ldr r0, [r4, #0] 120ea: f100 0a10 add.w sl, r0, #16 120ee: 4834 ldr r0, [pc, #208] ; (121c0 ) 120f0: 47a8 blx r5 120f2: f242 0179 movw r1, #8313 ; 0x2079 120f6: 4602 mov r2, r0 120f8: 4650 mov r0, sl 120fa: 47b0 blx r6 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 120fc: 2000 movs r0, #0 120fe: 6825 ldr r5, [r4, #0] 12100: 47c0 blx r8 12102: eb00 0080 add.w r0, r0, r0, lsl #2 12106: 00c0 lsls r0, r0, #3 12108: 28ef cmp r0, #239 ; 0xef 1210a: f105 0510 add.w r5, r5, #16 1210e: f340 81bb ble.w 12488 12112: 2000 movs r0, #0 12114: 47c0 blx r8 12116: 2328 movs r3, #40 ; 0x28 12118: 2250 movs r2, #80 ; 0x50 1211a: fb00 2203 mla r2, r0, r3, r2 1211e: 23a0 movs r3, #160 ; 0xa0 12120: fb92 f2f3 sdiv r2, r2, r3 12124: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12126: 4628 mov r0, r5 12128: 2112 movs r1, #18 1212a: 47c8 blx r9 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 1212c: 2000 movs r0, #0 1212e: 6825 ldr r5, [r4, #0] 12130: 47c0 blx r8 12132: eb00 0080 add.w r0, r0, r0, lsl #2 12136: 00c0 lsls r0, r0, #3 12138: 28ef cmp r0, #239 ; 0xef 1213a: f105 0510 add.w r5, r5, #16 1213e: f340 81a5 ble.w 1248c 12142: 2000 movs r0, #0 12144: 47c0 blx r8 12146: 2328 movs r3, #40 ; 0x28 12148: 2250 movs r2, #80 ; 0x50 1214a: fb00 2203 mla r2, r0, r3, r2 1214e: 23a0 movs r3, #160 ; 0xa0 12150: fb92 f2f3 sdiv r2, r2, r3 12154: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12156: 4628 mov r0, r5 12158: 2113 movs r1, #19 1215a: 47c8 blx r9 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 1215c: 2000 movs r0, #0 1215e: 6825 ldr r5, [r4, #0] 12160: 47c0 blx r8 12162: ebc0 1000 rsb r0, r0, r0, lsl #4 12166: 28ef cmp r0, #239 ; 0xef 12168: f105 0510 add.w r5, r5, #16 1216c: f340 8190 ble.w 12490 12170: 2000 movs r0, #0 12172: 47c0 blx r8 12174: 230f movs r3, #15 12176: 2250 movs r2, #80 ; 0x50 12178: fb00 2203 mla r2, r0, r3, r2 1217c: 23a0 movs r3, #160 ; 0xa0 1217e: fb92 f2f3 sdiv r2, r2, r3 12182: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12184: 4628 mov r0, r5 12186: 2110 movs r1, #16 12188: 47c8 blx r9 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 1218a: 2000 movs r0, #0 1218c: 6825 ldr r5, [r4, #0] 1218e: 47c0 blx r8 12190: ebc0 1000 rsb r0, r0, r0, lsl #4 12194: 28ef cmp r0, #239 ; 0xef 12196: f105 0510 add.w r5, r5, #16 1219a: f340 817b ble.w 12494 1219e: 2000 movs r0, #0 121a0: 47c0 blx r8 121a2: 230f movs r3, #15 121a4: 2250 movs r2, #80 ; 0x50 121a6: fb00 2203 mla r2, r0, r3, r2 121aa: 23a0 movs r3, #160 ; 0xa0 121ac: fb92 f2f3 sdiv r2, r2, r3 121b0: b212 sxth r2, r2 121b2: e00b b.n 121cc 121b4: 00586273 .word 0x00586273 121b8: 00005a19 .word 0x00005a19 121bc: 0031404f .word 0x0031404f 121c0: 00888888 .word 0x00888888 121c4: 0000d951 .word 0x0000d951 121c8: 00005879 .word 0x00005879 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 121cc: 4628 mov r0, r5 121ce: 2111 movs r1, #17 121d0: 47c8 blx r9 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 121d2: 2000 movs r0, #0 121d4: 6825 ldr r5, [r4, #0] 121d6: 47c0 blx r8 121d8: eb00 0080 add.w r0, r0, r0, lsl #2 121dc: 0080 lsls r0, r0, #2 121de: 28ef cmp r0, #239 ; 0xef 121e0: f105 0510 add.w r5, r5, #16 121e4: f340 8158 ble.w 12498 121e8: 2000 movs r0, #0 121ea: 47c0 blx r8 121ec: 2314 movs r3, #20 121ee: 2250 movs r2, #80 ; 0x50 121f0: fb00 2203 mla r2, r0, r3, r2 121f4: 23a0 movs r3, #160 ; 0xa0 121f6: fb92 f2f3 sdiv r2, r2, r3 121fa: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 121fc: 4628 mov r0, r5 121fe: 2114 movs r1, #20 12200: 47b8 blx r7 lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3); 12202: 6820 ldr r0, [r4, #0] style_init_reset(&styles->pad_inner); 12204: 4dbb ldr r5, [pc, #748] ; (124f4 ) _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 12206: 2203 movs r2, #3 12208: 2140 movs r1, #64 ; 0x40 1220a: 3010 adds r0, #16 1220c: 47b8 blx r7 lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); 1220e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 12210: 9b01 ldr r3, [sp, #4] 12212: 2200 movs r2, #0 12214: 214c movs r1, #76 ; 0x4c 12216: 3010 adds r0, #16 12218: 4798 blx r3 lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); 1221a: 6820 ldr r0, [r4, #0] 1221c: 9b01 ldr r3, [sp, #4] 1221e: 227f movs r2, #127 ; 0x7f 12220: f44f 7113 mov.w r1, #588 ; 0x24c 12224: 3010 adds r0, #16 12226: 4798 blx r3 lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); 12228: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 1222a: 89a2 ldrh r2, [r4, #12] 1222c: 2149 movs r1, #73 ; 0x49 1222e: 3010 adds r0, #16 12230: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); 12232: 6820 ldr r0, [r4, #0] 12234: 89e2 ldrh r2, [r4, #14] 12236: f240 4149 movw r1, #1097 ; 0x449 1223a: 3010 adds r0, #16 1223c: 47b0 blx r6 lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 1223e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 12240: 2296 movs r2, #150 ; 0x96 12242: 21b0 movs r1, #176 ; 0xb0 12244: 3010 adds r0, #16 12246: 47b8 blx r7 lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); 12248: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 1224a: 223c movs r2, #60 ; 0x3c 1224c: 21b5 movs r1, #181 ; 0xb5 1224e: 3010 adds r0, #16 12250: 47b8 blx r7 lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 12252: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 12254: 2229 movs r2, #41 ; 0x29 12256: 21b6 movs r1, #182 ; 0xb6 12258: 3010 adds r0, #16 1225a: 47b8 blx r7 lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 1225c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 1225e: 224c movs r2, #76 ; 0x4c 12260: 21b7 movs r1, #183 ; 0xb7 12262: 3010 adds r0, #16 12264: 47b8 blx r7 lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 12266: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 12268: 2296 movs r2, #150 ; 0x96 1226a: 21b1 movs r1, #177 ; 0xb1 1226c: 3010 adds r0, #16 1226e: 47b8 blx r7 lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); 12270: 6820 ldr r0, [r4, #0] 12272: 2200 movs r2, #0 12274: f241 01b1 movw r1, #4273 ; 0x10b1 12278: 3010 adds r0, #16 1227a: 47b8 blx r7 style_init_reset(&styles->pad_inner); 1227c: 6820 ldr r0, [r4, #0] lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 1227e: 4f9e ldr r7, [pc, #632] ; (124f8 ) style_init_reset(&styles->pad_inner); 12280: 3014 adds r0, #20 12282: 47a8 blx r5 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12284: 2000 movs r0, #0 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 12286: 6826 ldr r6, [r4, #0] lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12288: 47b8 blx r7 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 1228a: 2832 cmp r0, #50 ; 0x32 1228c: f106 0614 add.w r6, r6, #20 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12290: f04f 0000 mov.w r0, #0 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 12294: f200 810d bhi.w 124b2 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 12298: 47c0 blx r8 1229a: eb00 0080 add.w r0, r0, r0, lsl #2 1229e: 0080 lsls r0, r0, #2 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 122a0: 28ef cmp r0, #239 ; 0xef 122a2: f300 80fb bgt.w 1249c 122a6: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 122a8: 2114 movs r1, #20 122aa: 4630 mov r0, r6 122ac: 47c8 blx r9 style_init_reset(&styles->pad_small); 122ae: 6820 ldr r0, [r4, #0] 122b0: 3018 adds r0, #24 122b2: 47a8 blx r5 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 122b4: 2000 movs r0, #0 122b6: 47b8 blx r7 122b8: 2832 cmp r0, #50 ; 0x32 122ba: f04f 0000 mov.w r0, #0 122be: f200 810e bhi.w 124de 122c2: 47c0 blx r8 122c4: eb00 0080 add.w r0, r0, r0, lsl #2 122c8: 0040 lsls r0, r0, #1 122ca: 28ef cmp r0, #239 ; 0xef 122cc: f300 80fc bgt.w 124c8 122d0: 2201 movs r2, #1 lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 122d2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 122d4: 9201 str r2, [sp, #4] 122d6: 2112 movs r1, #18 122d8: 3018 adds r0, #24 122da: 47c8 blx r9 lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 122dc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 122de: 9a01 ldr r2, [sp, #4] 122e0: 2113 movs r1, #19 122e2: 3018 adds r0, #24 122e4: 47c8 blx r9 lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 122e6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 122e8: 9a01 ldr r2, [sp, #4] 122ea: 2110 movs r1, #16 122ec: 3018 adds r0, #24 122ee: 47c8 blx r9 lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 122f0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 122f2: 9a01 ldr r2, [sp, #4] 122f4: 2111 movs r1, #17 122f6: 3018 adds r0, #24 122f8: 47c8 blx r9 lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 122fa: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 122fc: 9a01 ldr r2, [sp, #4] 122fe: 2114 movs r1, #20 12300: 3018 adds r0, #24 12302: 464b mov r3, r9 } 12304: b003 add sp, #12 12306: ecbd 8b02 vpop {d8} 1230a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 1230e: 4718 bx r3 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 12310: 2201 movs r2, #1 12312: f7ff ba9d b.w 11850 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 12316: 2201 movs r2, #1 12318: f7ff badb b.w 118d2 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 1231c: 2000 movs r0, #0 1231e: 47b0 blx r6 12320: 230f movs r3, #15 12322: 2250 movs r2, #80 ; 0x50 12324: fb00 2203 mla r2, r0, r3, r2 12328: 23a0 movs r3, #160 ; 0xa0 1232a: fb92 f2f3 sdiv r2, r2, r3 1232e: fa1f fb82 uxth.w fp, r2 12332: f7ff bb35 b.w 119a0 12336: 47b0 blx r6 12338: ebc0 1000 rsb r0, r0, r0, lsl #4 1233c: 0040 lsls r0, r0, #1 1233e: 28ef cmp r0, #239 ; 0xef 12340: f77f ab2c ble.w 1199c 12344: 2000 movs r0, #0 12346: 47b0 blx r6 12348: 231e movs r3, #30 1234a: e7ea b.n 12322 1234c: 2001 movs r0, #1 1234e: f7ff bb33 b.w 119b8 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 12352: 2000 movs r0, #0 12354: 47b0 blx r6 12356: 230f movs r3, #15 12358: 2250 movs r2, #80 ; 0x50 1235a: fb00 2203 mla r2, r0, r3, r2 1235e: 23a0 movs r3, #160 ; 0xa0 12360: fb92 f2f3 sdiv r2, r2, r3 12364: fa1f fb82 uxth.w fp, r2 12368: f7ff bb40 b.w 119ec 1236c: 47b0 blx r6 1236e: ebc0 1000 rsb r0, r0, r0, lsl #4 12372: 0040 lsls r0, r0, #1 12374: 28ef cmp r0, #239 ; 0xef 12376: f77f ab37 ble.w 119e8 1237a: 2000 movs r0, #0 1237c: 47b0 blx r6 1237e: 231e movs r3, #30 12380: e7ea b.n 12358 12382: 2001 movs r0, #1 12384: f7ff bb3e b.w 11a04 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 12388: 2000 movs r0, #0 1238a: 47b0 blx r6 1238c: 230f movs r3, #15 1238e: 2250 movs r2, #80 ; 0x50 12390: fb00 2203 mla r2, r0, r3, r2 12394: 23a0 movs r3, #160 ; 0xa0 12396: fb92 f2f3 sdiv r2, r2, r3 1239a: fa1f fb82 uxth.w fp, r2 1239e: f7ff bb6d b.w 11a7c 123a2: 47b0 blx r6 123a4: ebc0 1000 rsb r0, r0, r0, lsl #4 123a8: 0040 lsls r0, r0, #1 123aa: 28ef cmp r0, #239 ; 0xef 123ac: f77f ab64 ble.w 11a78 123b0: 2000 movs r0, #0 123b2: 47b0 blx r6 123b4: 231e movs r3, #30 123b6: e7ea b.n 1238e 123b8: 2001 movs r0, #1 123ba: f7ff bb6b b.w 11a94 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 123be: 2000 movs r0, #0 123c0: 47b0 blx r6 123c2: 230f movs r3, #15 123c4: 2250 movs r2, #80 ; 0x50 123c6: fb00 2203 mla r2, r0, r3, r2 123ca: 23a0 movs r3, #160 ; 0xa0 123cc: fb92 f2f3 sdiv r2, r2, r3 123d0: fa1f fb82 uxth.w fp, r2 123d4: f7ff bb78 b.w 11ac8 123d8: 47b0 blx r6 123da: ebc0 1000 rsb r0, r0, r0, lsl #4 123de: 0040 lsls r0, r0, #1 123e0: 28ef cmp r0, #239 ; 0xef 123e2: f77f ab6f ble.w 11ac4 123e6: 2000 movs r0, #0 123e8: 47b0 blx r6 123ea: 231e movs r3, #30 123ec: e7ea b.n 123c4 123ee: 2001 movs r0, #1 123f0: f7ff bb76 b.w 11ae0 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 123f4: 2000 movs r0, #0 123f6: 47b0 blx r6 123f8: 230f movs r3, #15 123fa: 2250 movs r2, #80 ; 0x50 123fc: fb00 2203 mla r2, r0, r3, r2 12400: 23a0 movs r3, #160 ; 0xa0 12402: fb92 f2f3 sdiv r2, r2, r3 12406: b212 sxth r2, r2 12408: f7ff bb82 b.w 11b10 1240c: 47b0 blx r6 1240e: ebc0 1000 rsb r0, r0, r0, lsl #4 12412: 0040 lsls r0, r0, #1 12414: 28ef cmp r0, #239 ; 0xef 12416: f77f ab7a ble.w 11b0e 1241a: 2000 movs r0, #0 1241c: 47b0 blx r6 1241e: 231e movs r3, #30 12420: e7eb b.n 123fa lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 12422: 4836 ldr r0, [pc, #216] ; (124fc ) 12424: 47a8 blx r5 12426: e421 b.n 11c6c lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 12428: 4835 ldr r0, [pc, #212] ; (12500 ) 1242a: 47a8 blx r5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 1242c: 89a2 ldrh r2, [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))); 1242e: 7b63 ldrb r3, [r4, #13] 12430: f04f 0bb3 mov.w fp, #179 ; 0xb3 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 12434: f3c0 1c45 ubfx ip, 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))); 12438: f04f 0e4c mov.w lr, #76 ; 0x4c LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 1243c: f3c2 1245 ubfx r2, r2, #5, #6 12440: fb0b fc0c mul.w ip, fp, ip LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 12444: f3c0 21c4 ubfx r1, r0, #11, #5 LV_COLOR_SET_G(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_G(c1) * mix + LV_COLOR_GET_G(c2) * (255 - mix))); 12448: fb0e cc02 mla ip, lr, r2, ip LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 1244c: 7b22 ldrb r2, [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))); 1244e: 08db lsrs r3, r3, #3 12450: fb0b f101 mul.w r1, fp, r1 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 12454: 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))); 12458: fb0e 1103 mla r1, lr, r3, r1 LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 1245c: f002 021f and.w r2, r2, #31 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 12460: 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))); 12464: 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))); 12468: 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))); 1246a: fb03 fc0c mul.w ip, r3, ip LV_COLOR_SET_B(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_B(c1) * mix + LV_COLOR_GET_B(c2) * (255 - mix))); 1246e: fb0e 0202 mla r2, lr, r2, r0 LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 12472: 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))); 12476: f3cc 5cc5 ubfx ip, ip, #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))); 1247a: 435a muls r2, r3 1247c: e513 b.n 11ea6 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 1247e: 4821 ldr r0, [pc, #132] ; (12504 ) 12480: 47a8 blx r5 12482: e55f b.n 11f44 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 12484: 2201 movs r2, #1 12486: e574 b.n 11f72 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 12488: 2201 movs r2, #1 1248a: e64c b.n 12126 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 1248c: 2201 movs r2, #1 1248e: e662 b.n 12156 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 12490: 2201 movs r2, #1 12492: e677 b.n 12184 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 12494: 2201 movs r2, #1 12496: e699 b.n 121cc lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 12498: 2201 movs r2, #1 1249a: e6af b.n 121fc lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 1249c: 2000 movs r0, #0 1249e: 47c0 blx r8 124a0: 2314 movs r3, #20 124a2: 2250 movs r2, #80 ; 0x50 124a4: fb00 2203 mla r2, r0, r3, r2 124a8: 23a0 movs r3, #160 ; 0xa0 124aa: fb92 f2f3 sdiv r2, r2, r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 124ae: b212 sxth r2, r2 124b0: e6fa b.n 122a8 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 124b2: 47c0 blx r8 124b4: eb00 0080 add.w r0, r0, r0, lsl #2 124b8: 00c0 lsls r0, r0, #3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 124ba: 28ef cmp r0, #239 ; 0xef 124bc: f77f aef3 ble.w 122a6 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 124c0: 2000 movs r0, #0 124c2: 47c0 blx r8 124c4: 2328 movs r3, #40 ; 0x28 124c6: e7ec b.n 124a2 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 124c8: 2000 movs r0, #0 124ca: 47c0 blx r8 124cc: 230a movs r3, #10 124ce: 2250 movs r2, #80 ; 0x50 124d0: fb00 2203 mla r2, r0, r3, r2 124d4: 23a0 movs r3, #160 ; 0xa0 124d6: fb92 f2f3 sdiv r2, r2, r3 124da: b212 sxth r2, r2 124dc: e6f9 b.n 122d2 124de: 47c0 blx r8 124e0: eb00 0080 add.w r0, r0, r0, lsl #2 124e4: 0080 lsls r0, r0, #2 124e6: 28ef cmp r0, #239 ; 0xef 124e8: f77f aef2 ble.w 122d0 124ec: 2000 movs r0, #0 124ee: 47c0 blx r8 124f0: 2314 movs r3, #20 124f2: e7ec b.n 124ce 124f4: 00010abd .word 0x00010abd 124f8: 0000d969 .word 0x0000d969 124fc: 005f656e .word 0x005f656e 12500: 00586273 .word 0x00586273 12504: 00404040 .word 0x00404040 00012508 : { 12508: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(!inited) { 1250c: 4cb4 ldr r4, [pc, #720] ; (127e0 ) { 1250e: ed2d 8b02 vpush {d8} 12512: 461e mov r6, r3 if(!inited) { 12514: 7923 ldrb r3, [r4, #4] { 12516: b083 sub sp, #12 12518: 4680 mov r8, r0 1251a: 460f mov r7, r1 1251c: 4615 mov r5, r2 if(!inited) { 1251e: b92b cbnz r3, 1252c LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 12520: 4bb0 ldr r3, [pc, #704] ; (127e4 ) 12522: 20bc movs r0, #188 ; 0xbc 12524: 4798 blx r3 12526: 4bb0 ldr r3, [pc, #704] ; (127e8 ) styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); 12528: 6020 str r0, [r4, #0] LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 1252a: 6018 str r0, [r3, #0] theme.font_normal = font_normal; 1252c: 9b0e ldr r3, [sp, #56] ; 0x38 1252e: 6163 str r3, [r4, #20] theme.font_subtitle = font_subtitle; 12530: 9b0f ldr r3, [sp, #60] ; 0x3c 12532: 61a3 str r3, [r4, #24] theme.font_title = font_title; 12534: 9b10 ldr r3, [sp, #64] ; 0x40 theme.color_primary = color_primary; 12536: f8a4 800c strh.w r8, [r4, #12] theme.flags = flags; 1253a: e9c4 3507 strd r3, r5, [r4, #28] basic_init(); 1253e: 4bab ldr r3, [pc, #684] ; (127ec ) theme.color_secondary = color_secondary; 12540: 81e7 strh r7, [r4, #14] theme.font_small = font_small; 12542: 6126 str r6, [r4, #16] basic_init(); 12544: 4798 blx r3 bar_init(); 12546: 4baa ldr r3, [pc, #680] ; (127f0 ) style_init_reset(&styles->arc_indic); 12548: f8df 82dc ldr.w r8, [pc, #732] ; 12828 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 1254c: 4fa9 ldr r7, [pc, #676] ; (127f4 ) lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 1254e: 4daa ldr r5, [pc, #680] ; (127f8 ) bar_init(); 12550: 4798 blx r3 led_init(); 12552: 4baa ldr r3, [pc, #680] ; (127fc ) 12554: 4798 blx r3 slider_init(); 12556: 4baa ldr r3, [pc, #680] ; (12800 ) 12558: 4798 blx r3 switch_init(); 1255a: 4baa ldr r3, [pc, #680] ; (12804 ) 1255c: 4798 blx r3 linemeter_init(); 1255e: 4baa ldr r3, [pc, #680] ; (12808 ) 12560: 4798 blx r3 gauge_init(); 12562: 4baa ldr r3, [pc, #680] ; (1280c ) 12564: 4798 blx r3 style_init_reset(&styles->arc_indic); 12566: 6820 ldr r0, [r4, #0] 12568: 301c adds r0, #28 1256a: 47c0 blx r8 lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); 1256c: 6820 ldr r0, [r4, #0] 1256e: 89a2 ldrh r2, [r4, #12] 12570: 2199 movs r1, #153 ; 0x99 12572: 301c adds r0, #28 12574: 47b8 blx r7 lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 12576: 2000 movs r0, #0 12578: 6826 ldr r6, [r4, #0] 1257a: 47a8 blx r5 1257c: eb00 0080 add.w r0, r0, r0, lsl #2 12580: eb00 0080 add.w r0, r0, r0, lsl #2 12584: 28ef cmp r0, #239 ; 0xef 12586: f106 061c add.w r6, r6, #28 1258a: f341 8256 ble.w 13a3a 1258e: 2000 movs r0, #0 12590: 47a8 blx r5 12592: 2319 movs r3, #25 12594: 2250 movs r2, #80 ; 0x50 12596: fb00 2203 mla r2, r0, r3, r2 1259a: 23a0 movs r3, #160 ; 0xa0 1259c: fb92 f2f3 sdiv r2, r2, r3 125a0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 125a2: 4630 mov r0, r6 125a4: 2190 movs r1, #144 ; 0x90 125a6: 4e9a ldr r6, [pc, #616] ; (12810 ) 125a8: f8df a280 ldr.w sl, [pc, #640] ; 1282c 125ac: 47b0 blx r6 lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); 125ae: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 125b0: 2201 movs r2, #1 125b2: 2194 movs r1, #148 ; 0x94 125b4: 301c adds r0, #28 125b6: 47b0 blx r6 style_init_reset(&styles->arc_bg); 125b8: 6820 ldr r0, [r4, #0] 125ba: 3020 adds r0, #32 125bc: 47c0 blx r8 lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 125be: 6823 ldr r3, [r4, #0] 125c0: f103 0920 add.w r9, r3, #32 125c4: 6a23 ldr r3, [r4, #32] 125c6: f013 0f02 tst.w r3, #2 125ca: bf14 ite ne 125cc: 4891 ldrne r0, [pc, #580] ; (12814 ) 125ce: 4892 ldreq r0, [pc, #584] ; (12818 ) 125d0: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 125d2: 2199 movs r1, #153 ; 0x99 125d4: 4602 mov r2, r0 125d6: 4648 mov r0, r9 125d8: 47b8 blx r7 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 125da: 6823 ldr r3, [r4, #0] 125dc: 2000 movs r0, #0 125de: f103 0920 add.w r9, r3, #32 125e2: 47a8 blx r5 125e4: eb00 0080 add.w r0, r0, r0, lsl #2 125e8: eb00 0080 add.w r0, r0, r0, lsl #2 125ec: 28ef cmp r0, #239 ; 0xef 125ee: f341 8227 ble.w 13a40 125f2: 2000 movs r0, #0 125f4: 47a8 blx r5 125f6: 2319 movs r3, #25 125f8: 2250 movs r2, #80 ; 0x50 125fa: fb00 2203 mla r2, r0, r3, r2 125fe: 23a0 movs r3, #160 ; 0xa0 12600: fb92 f2f3 sdiv r2, r2, r3 12604: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 12606: 4648 mov r0, r9 12608: 2190 movs r1, #144 ; 0x90 1260a: 47b0 blx r6 lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); 1260c: 6820 ldr r0, [r4, #0] lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1260e: f8df 9220 ldr.w r9, [pc, #544] ; 12830 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 12612: 2201 movs r2, #1 12614: 2194 movs r1, #148 ; 0x94 12616: 3020 adds r0, #32 12618: 47b0 blx r6 chart_init(); 1261a: 4b80 ldr r3, [pc, #512] ; (1281c ) 1261c: 4798 blx r3 style_init_reset(&styles->calendar_header); 1261e: 6820 ldr r0, [r4, #0] 12620: 3030 adds r0, #48 ; 0x30 12622: 47c0 blx r8 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 12624: 6823 ldr r3, [r4, #0] 12626: 2000 movs r0, #0 12628: f103 0b30 add.w fp, r3, #48 ; 0x30 1262c: 47c8 blx r9 1262e: 2801 cmp r0, #1 12630: f04f 0000 mov.w r0, #0 12634: f201 8213 bhi.w 13a5e 12638: 47a8 blx r5 1263a: ebc0 1000 rsb r0, r0, r0, lsl #4 1263e: 28ef cmp r0, #239 ; 0xef 12640: f301 8201 bgt.w 13a46 12644: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12646: 4658 mov r0, fp 12648: 2110 movs r1, #16 1264a: 47b0 blx r6 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1264c: 6823 ldr r3, [r4, #0] 1264e: 2000 movs r0, #0 12650: f103 0b30 add.w fp, r3, #48 ; 0x30 12654: 47c8 blx r9 12656: 2801 cmp r0, #1 12658: f04f 0000 mov.w r0, #0 1265c: f201 8216 bhi.w 13a8c 12660: 47a8 blx r5 12662: ebc0 1000 rsb r0, r0, r0, lsl #4 12666: 28ef cmp r0, #239 ; 0xef 12668: f301 8204 bgt.w 13a74 1266c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1266e: 4658 mov r0, fp 12670: 2112 movs r1, #18 12672: 47b0 blx r6 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 12674: 6823 ldr r3, [r4, #0] 12676: 2000 movs r0, #0 12678: f103 0b30 add.w fp, r3, #48 ; 0x30 1267c: 47c8 blx r9 1267e: 2801 cmp r0, #1 12680: f04f 0000 mov.w r0, #0 12684: f201 8219 bhi.w 13aba 12688: 47a8 blx r5 1268a: ebc0 1000 rsb r0, r0, r0, lsl #4 1268e: 28ef cmp r0, #239 ; 0xef 12690: f301 8207 bgt.w 13aa2 12694: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12696: 4658 mov r0, fp 12698: 2113 movs r1, #19 1269a: 47b0 blx r6 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1269c: 6823 ldr r3, [r4, #0] 1269e: 2000 movs r0, #0 126a0: f103 0b30 add.w fp, r3, #48 ; 0x30 126a4: 47c8 blx r9 126a6: 2801 cmp r0, #1 126a8: f04f 0000 mov.w r0, #0 126ac: f201 821c bhi.w 13ae8 126b0: 47a8 blx r5 126b2: ebc0 1000 rsb r0, r0, r0, lsl #4 126b6: 28ef cmp r0, #239 ; 0xef 126b8: f301 820a bgt.w 13ad0 126bc: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 126be: 4658 mov r0, fp 126c0: 2111 movs r1, #17 126c2: 47b0 blx r6 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 126c4: 6a22 ldr r2, [r4, #32] 126c6: 6823 ldr r3, [r4, #0] 126c8: f8df b168 ldr.w fp, [pc, #360] ; 12834 126cc: f012 0f02 tst.w r2, #2 126d0: f103 0330 add.w r3, r3, #48 ; 0x30 126d4: f001 8213 beq.w 13afe 126d8: 4851 ldr r0, [pc, #324] ; (12820 ) 126da: 9301 str r3, [sp, #4] 126dc: 47d0 blx sl 126de: 9b01 ldr r3, [sp, #4] 126e0: 4602 mov r2, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 126e2: 4618 mov r0, r3 126e4: f249 0189 movw r1, #37001 ; 0x9089 126e8: 47b8 blx r7 style_init_reset(&styles->calendar_daynames); 126ea: 6820 ldr r0, [r4, #0] 126ec: 3034 adds r0, #52 ; 0x34 126ee: 47c0 blx r8 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 126f0: 6823 ldr r3, [r4, #0] 126f2: 3334 adds r3, #52 ; 0x34 126f4: ee07 3a90 vmov s15, r3 126f8: 6a23 ldr r3, [r4, #32] 126fa: 0798 lsls r0, r3, #30 126fc: f141 8203 bpl.w 13b06 12700: 4848 ldr r0, [pc, #288] ; (12824 ) 12702: 47d0 blx sl 12704: 4602 mov r2, r0 12706: f248 0189 movw r1, #32905 ; 0x8089 1270a: ee17 0a90 vmov r0, s15 1270e: 47b8 blx r7 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 12710: 6823 ldr r3, [r4, #0] 12712: 2000 movs r0, #0 12714: 3334 adds r3, #52 ; 0x34 12716: ee08 3a10 vmov s16, r3 1271a: 47c8 blx r9 1271c: 2801 cmp r0, #1 1271e: f04f 0000 mov.w r0, #0 12722: f201 8202 bhi.w 13b2a 12726: 47a8 blx r5 12728: ebc0 1000 rsb r0, r0, r0, lsl #4 1272c: 28ef cmp r0, #239 ; 0xef 1272e: f301 81f0 bgt.w 13b12 12732: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12734: ee18 0a10 vmov r0, s16 12738: 2112 movs r1, #18 1273a: 47b0 blx r6 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 1273c: 6823 ldr r3, [r4, #0] 1273e: 2000 movs r0, #0 12740: 3334 adds r3, #52 ; 0x34 12742: ee08 3a10 vmov s16, r3 12746: 47c8 blx r9 12748: 2801 cmp r0, #1 1274a: f04f 0000 mov.w r0, #0 1274e: f201 8203 bhi.w 13b58 12752: 47a8 blx r5 12754: ebc0 1000 rsb r0, r0, r0, lsl #4 12758: 28ef cmp r0, #239 ; 0xef 1275a: f301 81f1 bgt.w 13b40 1275e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12760: ee18 0a10 vmov r0, s16 12764: 2113 movs r1, #19 12766: 47b0 blx r6 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 12768: 6823 ldr r3, [r4, #0] 1276a: 2000 movs r0, #0 1276c: 3334 adds r3, #52 ; 0x34 1276e: ee08 3a10 vmov s16, r3 12772: 47c8 blx r9 12774: 2801 cmp r0, #1 12776: f04f 0000 mov.w r0, #0 1277a: f201 8204 bhi.w 13b86 1277e: 47a8 blx r5 12780: ebc0 1000 rsb r0, r0, r0, lsl #4 12784: 28ef cmp r0, #239 ; 0xef 12786: f301 81f2 bgt.w 13b6e 1278a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1278c: ee18 0a10 vmov r0, s16 12790: 2111 movs r1, #17 12792: 47b0 blx r6 style_init_reset(&styles->calendar_date_nums); 12794: 6820 ldr r0, [r4, #0] 12796: 302c adds r0, #44 ; 0x2c 12798: 47c0 blx r8 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 1279a: 6823 ldr r3, [r4, #0] 1279c: 2000 movs r0, #0 1279e: 332c adds r3, #44 ; 0x2c 127a0: ee08 3a10 vmov s16, r3 127a4: 47a8 blx r5 127a6: 283b cmp r0, #59 ; 0x3b 127a8: f341 81f8 ble.w 13b9c 127ac: 2000 movs r0, #0 127ae: 47a8 blx r5 127b0: 2328 movs r3, #40 ; 0x28 127b2: f100 0214 add.w r2, r0, #20 127b6: fb92 f2f3 sdiv r2, r2, r3 127ba: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 127bc: 2101 movs r1, #1 127be: ee18 0a10 vmov r0, s16 127c2: 47b0 blx r6 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 127c4: 6a22 ldr r2, [r4, #32] 127c6: 6823 ldr r3, [r4, #0] 127c8: 0791 lsls r1, r2, #30 127ca: f103 032c add.w r3, r3, #44 ; 0x2c 127ce: f141 81e8 bpl.w 13ba2 127d2: 4814 ldr r0, [pc, #80] ; (12824 ) 127d4: 9301 str r3, [sp, #4] 127d6: 47d0 blx sl 127d8: 9b01 ldr r3, [sp, #4] 127da: 4602 mov r2, r0 127dc: e02c b.n 12838 127de: bf00 nop 127e0: 2000c7d4 .word 0x2000c7d4 127e4: 0000ea2d .word 0x0000ea2d 127e8: 20008774 .word 0x20008774 127ec: 000117a9 .word 0x000117a9 127f0: 00010eb5 .word 0x00010eb5 127f4: 00005949 .word 0x00005949 127f8: 0000d951 .word 0x0000d951 127fc: 00010db1 .word 0x00010db1 12800: 00010ff9 .word 0x00010ff9 12804: 00010ad9 .word 0x00010ad9 12808: 00010be5 .word 0x00010be5 1280c: 00011219 .word 0x00011219 12810: 00005879 .word 0x00005879 12814: 00d4d7d9 .word 0x00d4d7d9 12818: 0045494d .word 0x0045494d 1281c: 000115d9 .word 0x000115d9 12820: 00888888 .word 0x00888888 12824: 0031404f .word 0x0031404f 12828: 00010abd .word 0x00010abd 1282c: 00010e9d .word 0x00010e9d 12830: 0000d969 .word 0x0000d969 12834: 00024272 .word 0x00024272 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 12838: 4618 mov r0, r3 1283a: f248 1189 movw r1, #33161 ; 0x8189 1283e: 47b8 blx r7 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); 12840: 6a23 ldr r3, [r4, #32] 12842: 6820 ldr r0, [r4, #0] 12844: f013 0f02 tst.w r3, #2 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12848: bf14 ite ne 1284a: 2233 movne r2, #51 ; 0x33 1284c: 2266 moveq r2, #102 ; 0x66 1284e: 4bc0 ldr r3, [pc, #768] ; (12b50 ) 12850: f44f 7196 mov.w r1, #300 ; 0x12c 12854: 302c adds r0, #44 ; 0x2c 12856: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); 12858: 6820 ldr r0, [r4, #0] 1285a: 4bbd ldr r3, [pc, #756] ; (12b50 ) 1285c: 2233 movs r2, #51 ; 0x33 1285e: f241 012c movw r1, #4140 ; 0x102c 12862: 302c adds r0, #44 ; 0x2c 12864: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); 12866: 6820 ldr r0, [r4, #0] 12868: 4bb9 ldr r3, [pc, #740] ; (12b50 ) 1286a: 22ff movs r2, #255 ; 0xff 1286c: f44f 710b mov.w r1, #556 ; 0x22c 12870: 302c adds r0, #44 ; 0x2c 12872: 4798 blx r3 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); 12874: f8bb 3000 ldrh.w r3, [fp] 12878: 6820 ldr r0, [r4, #0] 1287a: f8ad 3004 strh.w r3, [sp, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1287e: b29a uxth r2, r3 12880: f248 2189 movw r1, #33417 ; 0x8289 12884: 302c adds r0, #44 ; 0x2c 12886: 47b8 blx r7 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); 12888: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1288a: 89a2 ldrh r2, [r4, #12] 1288c: f240 2129 movw r1, #553 ; 0x229 12890: 302c adds r0, #44 ; 0x2c 12892: 47b8 blx r7 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 12894: 6a22 ldr r2, [r4, #32] 12896: 6823 ldr r3, [r4, #0] 12898: 0792 lsls r2, r2, #30 1289a: f103 032c add.w r3, r3, #44 ; 0x2c 1289e: f141 8184 bpl.w 13baa 128a2: 48ac ldr r0, [pc, #688] ; (12b54 ) 128a4: 9301 str r3, [sp, #4] 128a6: 47d0 blx sl 128a8: 9b01 ldr r3, [sp, #4] 128aa: 4602 mov r2, r0 128ac: 4618 mov r0, r3 128ae: 2129 movs r1, #41 ; 0x29 128b0: 47b8 blx r7 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 128b2: 6820 ldr r0, [r4, #0] 128b4: 89a2 ldrh r2, [r4, #12] 128b6: f240 1129 movw r1, #297 ; 0x129 128ba: 302c adds r0, #44 ; 0x2c 128bc: 47b8 blx r7 lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); 128be: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 128c0: 2202 movs r2, #2 128c2: f44f 7198 mov.w r1, #304 ; 0x130 128c6: 302c adds r0, #44 ; 0x2c 128c8: 47b0 blx r6 lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); 128ca: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 128cc: 2204 movs r2, #4 128ce: f240 1131 movw r1, #305 ; 0x131 128d2: 302c adds r0, #44 ; 0x2c 128d4: 47b0 blx r6 lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 128d6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 128d8: 89a2 ldrh r2, [r4, #12] 128da: f240 1139 movw r1, #313 ; 0x139 128de: 302c adds r0, #44 ; 0x2c 128e0: 47b8 blx r7 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 128e2: 6823 ldr r3, [r4, #0] 128e4: 2000 movs r0, #0 128e6: 332c adds r3, #44 ; 0x2c 128e8: ee08 3a10 vmov s16, r3 128ec: 47a8 blx r5 128ee: eb00 0040 add.w r0, r0, r0, lsl #1 128f2: 28ef cmp r0, #239 ; 0xef 128f4: f341 815d ble.w 13bb2 128f8: 2000 movs r0, #0 128fa: 47a8 blx r5 128fc: 2303 movs r3, #3 128fe: 2250 movs r2, #80 ; 0x50 12900: fb00 2203 mla r2, r0, r3, r2 12904: 23a0 movs r3, #160 ; 0xa0 12906: fb92 f2f3 sdiv r2, r2, r3 1290a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1290c: ee18 0a10 vmov r0, s16 12910: 2114 movs r1, #20 12912: 47b0 blx r6 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 12914: 6823 ldr r3, [r4, #0] 12916: 2000 movs r0, #0 12918: 332c adds r3, #44 ; 0x2c 1291a: ee08 3a10 vmov s16, r3 1291e: 47c8 blx r9 12920: 2801 cmp r0, #1 12922: f04f 0000 mov.w r0, #0 12926: f201 8153 bhi.w 13bd0 1292a: 47a8 blx r5 1292c: ebc0 1000 rsb r0, r0, r0, lsl #4 12930: 28ef cmp r0, #239 ; 0xef 12932: f301 8141 bgt.w 13bb8 12936: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12938: ee18 0a10 vmov r0, s16 1293c: 2112 movs r1, #18 1293e: 47b0 blx r6 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 12940: 6823 ldr r3, [r4, #0] 12942: 2000 movs r0, #0 12944: 332c adds r3, #44 ; 0x2c 12946: ee08 3a10 vmov s16, r3 1294a: 47c8 blx r9 1294c: 2801 cmp r0, #1 1294e: f04f 0000 mov.w r0, #0 12952: f201 8154 bhi.w 13bfe 12956: 47a8 blx r5 12958: ebc0 1000 rsb r0, r0, r0, lsl #4 1295c: 28ef cmp r0, #239 ; 0xef 1295e: f301 8142 bgt.w 13be6 12962: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12964: ee18 0a10 vmov r0, s16 12968: 2113 movs r1, #19 1296a: 47b0 blx r6 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 1296c: 6823 ldr r3, [r4, #0] 1296e: 2000 movs r0, #0 12970: 332c adds r3, #44 ; 0x2c 12972: ee08 3a10 vmov s16, r3 12976: 47c8 blx r9 12978: 2801 cmp r0, #1 1297a: f04f 0000 mov.w r0, #0 1297e: f201 8155 bhi.w 13c2c 12982: 47a8 blx r5 12984: ebc0 1000 rsb r0, r0, r0, lsl #4 12988: 28ef cmp r0, #239 ; 0xef 1298a: f301 8143 bgt.w 13c14 1298e: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12990: 2111 movs r1, #17 12992: ee18 0a10 vmov r0, s16 12996: 47b0 blx r6 style_init_reset(&styles->cpicker_bg); 12998: 6820 ldr r0, [r4, #0] 1299a: 3038 adds r0, #56 ; 0x38 1299c: 47c0 blx r8 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 1299e: 6823 ldr r3, [r4, #0] 129a0: 2000 movs r0, #0 129a2: f103 0938 add.w r9, r3, #56 ; 0x38 129a6: 47a8 blx r5 129a8: ebc0 1000 rsb r0, r0, r0, lsl #4 129ac: 0040 lsls r0, r0, #1 129ae: 28ef cmp r0, #239 ; 0xef 129b0: f341 8147 ble.w 13c42 129b4: 2000 movs r0, #0 129b6: 47a8 blx r5 129b8: 231e movs r3, #30 129ba: 2250 movs r2, #80 ; 0x50 129bc: fb00 2203 mla r2, r0, r3, r2 129c0: 23a0 movs r3, #160 ; 0xa0 129c2: fb92 f2f3 sdiv r2, r2, r3 129c6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 129c8: 4648 mov r0, r9 129ca: 21c0 movs r1, #192 ; 0xc0 129cc: 47b0 blx r6 lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 129ce: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 129d0: 4b5f ldr r3, [pc, #380] ; (12b50 ) 129d2: 3038 adds r0, #56 ; 0x38 129d4: 22ff movs r2, #255 ; 0xff 129d6: 212c movs r1, #44 ; 0x2c 129d8: 4798 blx r3 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 129da: 6823 ldr r3, [r4, #0] 129dc: f103 0938 add.w r9, r3, #56 ; 0x38 129e0: 6a23 ldr r3, [r4, #32] 129e2: 079b lsls r3, r3, #30 129e4: bf4c ite mi 129e6: 485c ldrmi r0, [pc, #368] ; (12b58 ) 129e8: 485c ldrpl r0, [pc, #368] ; (12b5c ) 129ea: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 129ec: 2129 movs r1, #41 ; 0x29 129ee: 4602 mov r2, r0 129f0: 4648 mov r0, r9 129f2: 47b8 blx r7 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 129f4: 6823 ldr r3, [r4, #0] 129f6: 2000 movs r0, #0 129f8: f103 0938 add.w r9, r3, #56 ; 0x38 129fc: 47a8 blx r5 129fe: eb00 0080 add.w r0, r0, r0, lsl #2 12a02: 0080 lsls r0, r0, #2 12a04: 28ef cmp r0, #239 ; 0xef 12a06: f341 811f ble.w 13c48 12a0a: 2000 movs r0, #0 12a0c: 47a8 blx r5 12a0e: 2314 movs r3, #20 12a10: 2250 movs r2, #80 ; 0x50 12a12: fb00 2203 mla r2, r0, r3, r2 12a16: 23a0 movs r3, #160 ; 0xa0 12a18: fb92 f2f3 sdiv r2, r2, r3 12a1c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12a1e: 4648 mov r0, r9 12a20: 2114 movs r1, #20 12a22: 47b0 blx r6 lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12a24: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12a26: f8df 9128 ldr.w r9, [pc, #296] ; 12b50 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12a2a: f647 72ff movw r2, #32767 ; 0x7fff 12a2e: 2101 movs r1, #1 12a30: 3038 adds r0, #56 ; 0x38 12a32: 47b0 blx r6 style_init_reset(&styles->cpicker_indic); 12a34: 6820 ldr r0, [r4, #0] 12a36: 303c adds r0, #60 ; 0x3c 12a38: 47c0 blx r8 lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12a3a: 6820 ldr r0, [r4, #0] 12a3c: f647 72ff movw r2, #32767 ; 0x7fff 12a40: 2101 movs r1, #1 12a42: 303c adds r0, #60 ; 0x3c 12a44: 47b0 blx r6 lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); 12a46: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 12a48: f8bb 2000 ldrh.w r2, [fp] 12a4c: 2129 movs r1, #41 ; 0x29 12a4e: 303c adds r0, #60 ; 0x3c 12a50: 47b8 blx r7 lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 12a52: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12a54: 22ff movs r2, #255 ; 0xff 12a56: 212c movs r1, #44 ; 0x2c 12a58: 303c adds r0, #60 ; 0x3c 12a5a: 47c8 blx r9 lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); 12a5c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12a5e: 2202 movs r2, #2 12a60: 2130 movs r1, #48 ; 0x30 12a62: 303c adds r0, #60 ; 0x3c 12a64: 47b0 blx r6 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); 12a66: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12a68: f8bb 2002 ldrh.w r2, [fp, #2] 12a6c: 2139 movs r1, #57 ; 0x39 12a6e: 303c adds r0, #60 ; 0x3c 12a70: 47b8 blx r7 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); 12a72: 6820 ldr r0, [r4, #0] 12a74: 89a2 ldrh r2, [r4, #12] 12a76: f240 2139 movw r1, #569 ; 0x239 12a7a: 303c adds r0, #60 ; 0x3c 12a7c: 47b8 blx r7 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); 12a7e: 6820 ldr r0, [r4, #0] 12a80: 89e2 ldrh r2, [r4, #14] 12a82: f240 4139 movw r1, #1081 ; 0x439 12a86: 303c adds r0, #60 ; 0x3c 12a88: 47b8 blx r7 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12a8a: 6823 ldr r3, [r4, #0] 12a8c: 2000 movs r0, #0 12a8e: f103 0a3c add.w sl, r3, #60 ; 0x3c 12a92: 47a8 blx r5 12a94: eb00 0340 add.w r3, r0, r0, lsl #1 12a98: eb00 0083 add.w r0, r0, r3, lsl #2 12a9c: 28ef cmp r0, #239 ; 0xef 12a9e: f341 80d6 ble.w 13c4e 12aa2: 2000 movs r0, #0 12aa4: 47a8 blx r5 12aa6: 230d movs r3, #13 12aa8: 2250 movs r2, #80 ; 0x50 12aaa: fb00 2203 mla r2, r0, r3, r2 12aae: 23a0 movs r3, #160 ; 0xa0 12ab0: fb92 f2f3 sdiv r2, r2, r3 12ab4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12ab6: 4650 mov r0, sl 12ab8: 2112 movs r1, #18 12aba: 47b0 blx r6 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12abc: 6823 ldr r3, [r4, #0] 12abe: 2000 movs r0, #0 12ac0: f103 0a3c add.w sl, r3, #60 ; 0x3c 12ac4: 47a8 blx r5 12ac6: eb00 0340 add.w r3, r0, r0, lsl #1 12aca: eb00 0083 add.w r0, r0, r3, lsl #2 12ace: 28ef cmp r0, #239 ; 0xef 12ad0: f341 80c0 ble.w 13c54 12ad4: 2000 movs r0, #0 12ad6: 47a8 blx r5 12ad8: 230d movs r3, #13 12ada: 2250 movs r2, #80 ; 0x50 12adc: fb00 2203 mla r2, r0, r3, r2 12ae0: 23a0 movs r3, #160 ; 0xa0 12ae2: fb92 f2f3 sdiv r2, r2, r3 12ae6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12ae8: 4650 mov r0, sl 12aea: 2113 movs r1, #19 12aec: 47b0 blx r6 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12aee: 6823 ldr r3, [r4, #0] 12af0: 2000 movs r0, #0 12af2: f103 0a3c add.w sl, r3, #60 ; 0x3c 12af6: 47a8 blx r5 12af8: eb00 0340 add.w r3, r0, r0, lsl #1 12afc: eb00 0083 add.w r0, r0, r3, lsl #2 12b00: 28ef cmp r0, #239 ; 0xef 12b02: f341 80aa ble.w 13c5a 12b06: 2000 movs r0, #0 12b08: 47a8 blx r5 12b0a: 230d movs r3, #13 12b0c: 2250 movs r2, #80 ; 0x50 12b0e: fb00 2203 mla r2, r0, r3, r2 12b12: 23a0 movs r3, #160 ; 0xa0 12b14: fb92 f2f3 sdiv r2, r2, r3 12b18: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12b1a: 4650 mov r0, sl 12b1c: 2110 movs r1, #16 12b1e: 47b0 blx r6 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 12b20: 6823 ldr r3, [r4, #0] 12b22: 2000 movs r0, #0 12b24: f103 0a3c add.w sl, r3, #60 ; 0x3c 12b28: 47a8 blx r5 12b2a: eb00 0340 add.w r3, r0, r0, lsl #1 12b2e: eb00 0083 add.w r0, r0, r3, lsl #2 12b32: 28ef cmp r0, #239 ; 0xef 12b34: f341 8094 ble.w 13c60 12b38: 2000 movs r0, #0 12b3a: 47a8 blx r5 12b3c: 230d movs r3, #13 12b3e: 2250 movs r2, #80 ; 0x50 12b40: fb00 2203 mla r2, r0, r3, r2 12b44: 23a0 movs r3, #160 ; 0xa0 12b46: fb92 f2f3 sdiv r2, r2, r3 12b4a: b212 sxth r2, r2 12b4c: e008 b.n 12b60 12b4e: bf00 nop 12b50: 00005a19 .word 0x00005a19 12b54: 00666666 .word 0x00666666 12b58: 00eaeff3 .word 0x00eaeff3 12b5c: 00444b5a .word 0x00444b5a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12b60: 2111 movs r1, #17 12b62: 4650 mov r0, sl 12b64: 47b0 blx r6 style_init_reset(&styles->cb_bg); 12b66: 6820 ldr r0, [r4, #0] 12b68: 304c adds r0, #76 ; 0x4c 12b6a: 47c0 blx r8 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 12b6c: 6823 ldr r3, [r4, #0] 12b6e: 2000 movs r0, #0 12b70: f103 084c add.w r8, r3, #76 ; 0x4c 12b74: 47a8 blx r5 12b76: 283b cmp r0, #59 ; 0x3b 12b78: f341 8075 ble.w 13c66 12b7c: 2000 movs r0, #0 12b7e: 47a8 blx r5 12b80: 2328 movs r3, #40 ; 0x28 12b82: f100 0214 add.w r2, r0, #20 12b86: fb92 f2f3 sdiv r2, r2, r3 12b8a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12b8c: 4640 mov r0, r8 12b8e: 2101 movs r1, #1 12b90: 47b0 blx r6 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 12b92: 6823 ldr r3, [r4, #0] 12b94: 2000 movs r0, #0 12b96: f103 084c add.w r8, r3, #76 ; 0x4c 12b9a: 47a8 blx r5 12b9c: eb00 0080 add.w r0, r0, r0, lsl #2 12ba0: 0040 lsls r0, r0, #1 12ba2: 28ef cmp r0, #239 ; 0xef 12ba4: f341 8062 ble.w 13c6c 12ba8: 2000 movs r0, #0 12baa: 47a8 blx r5 12bac: 230a movs r3, #10 12bae: 2250 movs r2, #80 ; 0x50 12bb0: fb00 2203 mla r2, r0, r3, r2 12bb4: 23a0 movs r3, #160 ; 0xa0 12bb6: fb92 f2f3 sdiv r2, r2, r3 12bba: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12bbc: 2114 movs r1, #20 12bbe: 4640 mov r0, r8 12bc0: 47b0 blx r6 lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); 12bc2: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 12bc4: 89a2 ldrh r2, [r4, #12] 12bc6: 2149 movs r1, #73 ; 0x49 12bc8: 304c adds r0, #76 ; 0x4c 12bca: 47b8 blx r7 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 12bcc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 12bce: 214c movs r1, #76 ; 0x4c 12bd0: 4408 add r0, r1 12bd2: 2200 movs r2, #0 12bd4: 47c8 blx r9 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); 12bd6: 6820 ldr r0, [r4, #0] 12bd8: 227f movs r2, #127 ; 0x7f 12bda: f44f 7113 mov.w r1, #588 ; 0x24c 12bde: 304c adds r0, #76 ; 0x4c 12be0: 47c8 blx r9 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 12be2: 2000 movs r0, #0 12be4: 6824 ldr r4, [r4, #0] 12be6: 47a8 blx r5 12be8: eb00 0040 add.w r0, r0, r0, lsl #1 12bec: 28ef cmp r0, #239 ; 0xef 12bee: f104 044c add.w r4, r4, #76 ; 0x4c 12bf2: f341 803e ble.w 13c72 12bf6: 2000 movs r0, #0 12bf8: 47a8 blx r5 12bfa: 2303 movs r3, #3 12bfc: 2250 movs r2, #80 ; 0x50 12bfe: fb00 2203 mla r2, r0, r3, r2 12c02: 23a0 movs r3, #160 ; 0xa0 12c04: fb92 f2f3 sdiv r2, r2, r3 12c08: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 12c0a: 4620 mov r0, r4 12c0c: 2140 movs r1, #64 ; 0x40 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 12c0e: 4cbf ldr r4, [pc, #764] ; (12f0c ) 12c10: 47b0 blx r6 12c12: 2000 movs r0, #0 12c14: 6827 ldr r7, [r4, #0] 12c16: 47a8 blx r5 12c18: eb00 0080 add.w r0, r0, r0, lsl #2 12c1c: 0040 lsls r0, r0, #1 12c1e: 28ef cmp r0, #239 ; 0xef 12c20: f107 074c add.w r7, r7, #76 ; 0x4c 12c24: f341 8028 ble.w 13c78 12c28: 2000 movs r0, #0 12c2a: 47a8 blx r5 12c2c: 230a movs r3, #10 12c2e: 2250 movs r2, #80 ; 0x50 12c30: fb00 2203 mla r2, r0, r3, r2 12c34: 23a0 movs r3, #160 ; 0xa0 12c36: fb92 f2f3 sdiv r2, r2, r3 12c3a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 12c3c: 2141 movs r1, #65 ; 0x41 12c3e: 4638 mov r0, r7 12c40: 47b0 blx r6 lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 12c42: 6820 ldr r0, [r4, #0] lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 12c44: f8df 82e4 ldr.w r8, [pc, #740] ; 12f2c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 12c48: 2296 movs r2, #150 ; 0x96 12c4a: 21b0 movs r1, #176 ; 0xb0 12c4c: 304c adds r0, #76 ; 0x4c 12c4e: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 12c50: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 12c52: 224c movs r2, #76 ; 0x4c 12c54: 4410 add r0, r2 12c56: 21b7 movs r1, #183 ; 0xb7 12c58: 47b0 blx r6 style_init_reset(&styles->cb_bullet); 12c5a: 6820 ldr r0, [r4, #0] 12c5c: 4eac ldr r6, [pc, #688] ; (12f10 ) 12c5e: 3050 adds r0, #80 ; 0x50 12c60: 47b0 blx r6 lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); 12c62: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 12c64: 2200 movs r2, #0 12c66: f44f 7113 mov.w r1, #588 ; 0x24c 12c6a: 3050 adds r0, #80 ; 0x50 12c6c: 47c8 blx r9 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 12c6e: 2000 movs r0, #0 12c70: 6825 ldr r5, [r4, #0] 12c72: 47c0 blx r8 12c74: 283b cmp r0, #59 ; 0x3b 12c76: f105 0550 add.w r5, r5, #80 ; 0x50 12c7a: 46b2 mov sl, r6 12c7c: f341 8012 ble.w 13ca4 12c80: 2000 movs r0, #0 12c82: 47c0 blx r8 12c84: 2328 movs r3, #40 ; 0x28 12c86: f100 0214 add.w r2, r0, #20 12c8a: fb92 f2f3 sdiv r2, r2, r3 12c8e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12c90: 4628 mov r0, r5 12c92: 2101 movs r1, #1 12c94: 4d9f ldr r5, [pc, #636] ; (12f14 ) _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 12c96: 4fa0 ldr r7, [pc, #640] ; (12f18 ) _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 12c98: 4ea0 ldr r6, [pc, #640] ; (12f1c ) _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12c9a: 47a8 blx r5 lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); 12c9c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 12c9e: 4aa0 ldr r2, [pc, #640] ; (12f20 ) 12ca0: f44f 71b7 mov.w r1, #366 ; 0x16e 12ca4: 3050 adds r0, #80 ; 0x50 12ca6: 47b8 blx r7 lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); 12ca8: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 12caa: f8bb 2000 ldrh.w r2, [fp] 12cae: f240 1169 movw r1, #361 ; 0x169 12cb2: 3050 adds r0, #80 ; 0x50 12cb4: 47b0 blx r6 lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); 12cb6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 12cb8: 6922 ldr r2, [r4, #16] 12cba: f248 118e movw r1, #33166 ; 0x818e 12cbe: 3050 adds r0, #80 ; 0x50 12cc0: 47b8 blx r7 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12cc2: 2000 movs r0, #0 12cc4: 6827 ldr r7, [r4, #0] 12cc6: 47c0 blx r8 12cc8: eb00 0040 add.w r0, r0, r0, lsl #1 12ccc: 28ef cmp r0, #239 ; 0xef 12cce: f107 0750 add.w r7, r7, #80 ; 0x50 12cd2: f340 87ea ble.w 13caa 12cd6: 2000 movs r0, #0 12cd8: 47c0 blx r8 12cda: 2303 movs r3, #3 12cdc: 2250 movs r2, #80 ; 0x50 12cde: fb00 2203 mla r2, r0, r3, r2 12ce2: 23a0 movs r3, #160 ; 0xa0 12ce4: fb92 f2f3 sdiv r2, r2, r3 12ce8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12cea: 4638 mov r0, r7 12cec: 2112 movs r1, #18 12cee: 47a8 blx r5 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12cf0: 2000 movs r0, #0 12cf2: 6827 ldr r7, [r4, #0] 12cf4: 47c0 blx r8 12cf6: eb00 0040 add.w r0, r0, r0, lsl #1 12cfa: 28ef cmp r0, #239 ; 0xef 12cfc: f107 0750 add.w r7, r7, #80 ; 0x50 12d00: f340 87d6 ble.w 13cb0 12d04: 2000 movs r0, #0 12d06: 47c0 blx r8 12d08: 2303 movs r3, #3 12d0a: 2250 movs r2, #80 ; 0x50 12d0c: fb00 2203 mla r2, r0, r3, r2 12d10: 23a0 movs r3, #160 ; 0xa0 12d12: fb92 f2f3 sdiv r2, r2, r3 12d16: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12d18: 4638 mov r0, r7 12d1a: 2113 movs r1, #19 12d1c: 47a8 blx r5 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12d1e: 2000 movs r0, #0 12d20: 6827 ldr r7, [r4, #0] 12d22: 47c0 blx r8 12d24: eb00 0040 add.w r0, r0, r0, lsl #1 12d28: 28ef cmp r0, #239 ; 0xef 12d2a: f107 0750 add.w r7, r7, #80 ; 0x50 12d2e: f340 87c2 ble.w 13cb6 12d32: 2000 movs r0, #0 12d34: 47c0 blx r8 12d36: 2303 movs r3, #3 12d38: 2250 movs r2, #80 ; 0x50 12d3a: fb00 2203 mla r2, r0, r3, r2 12d3e: 23a0 movs r3, #160 ; 0xa0 12d40: fb92 f2f3 sdiv r2, r2, r3 12d44: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12d46: 4638 mov r0, r7 12d48: 2110 movs r1, #16 12d4a: 47a8 blx r5 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 12d4c: 2000 movs r0, #0 12d4e: 6827 ldr r7, [r4, #0] 12d50: 47c0 blx r8 12d52: eb00 0040 add.w r0, r0, r0, lsl #1 12d56: 28ef cmp r0, #239 ; 0xef 12d58: f107 0750 add.w r7, r7, #80 ; 0x50 12d5c: f340 87ae ble.w 13cbc 12d60: 2000 movs r0, #0 12d62: 47c0 blx r8 12d64: 2303 movs r3, #3 12d66: 2250 movs r2, #80 ; 0x50 12d68: fb00 2203 mla r2, r0, r3, r2 12d6c: 23a0 movs r3, #160 ; 0xa0 12d6e: fb92 f2f3 sdiv r2, r2, r3 12d72: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12d74: 2111 movs r1, #17 12d76: 4638 mov r0, r7 12d78: 47a8 blx r5 style_init_reset(&styles->kb_bg); 12d7a: 6820 ldr r0, [r4, #0] 12d7c: 3068 adds r0, #104 ; 0x68 12d7e: 47d0 blx sl lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); 12d80: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12d82: 2200 movs r2, #0 12d84: 2101 movs r1, #1 12d86: 3068 adds r0, #104 ; 0x68 12d88: 47a8 blx r5 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 12d8a: 2000 movs r0, #0 12d8c: 6827 ldr r7, [r4, #0] 12d8e: 47c0 blx r8 12d90: 283b cmp r0, #59 ; 0x3b 12d92: f107 0768 add.w r7, r7, #104 ; 0x68 12d96: f340 8794 ble.w 13cc2 12d9a: 2000 movs r0, #0 12d9c: 47c0 blx r8 12d9e: 2328 movs r3, #40 ; 0x28 12da0: f100 0214 add.w r2, r0, #20 12da4: fb92 f2f3 sdiv r2, r2, r3 12da8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 12daa: 4638 mov r0, r7 12dac: 2130 movs r1, #48 ; 0x30 12dae: 47a8 blx r5 lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); 12db0: 6820 ldr r0, [r4, #0] 12db2: 4f5c ldr r7, [pc, #368] ; (12f24 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 12db4: 3068 adds r0, #104 ; 0x68 12db6: 2202 movs r2, #2 12db8: 2131 movs r1, #49 ; 0x31 12dba: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 12dbc: 6a20 ldr r0, [r4, #32] 12dbe: 6823 ldr r3, [r4, #0] 12dc0: f010 0002 ands.w r0, r0, #2 12dc4: f103 0b68 add.w fp, r3, #104 ; 0x68 12dc8: f000 877e beq.w 13cc8 12dcc: 4856 ldr r0, [pc, #344] ; (12f28 ) 12dce: 47b8 blx r7 12dd0: f000 021f and.w r2, r0, #31 12dd4: f3c0 1345 ubfx r3, r0, #5, #6 12dd8: f3c0 20c4 ubfx r0, r0, #11, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 12ddc: ea42 1243 orr.w r2, r2, r3, lsl #5 12de0: ea42 22c0 orr.w r2, r2, r0, lsl #11 12de4: 2139 movs r1, #57 ; 0x39 12de6: 4658 mov r0, fp 12de8: 47b0 blx r6 lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); 12dea: 6820 ldr r0, [r4, #0] 12dec: 89e2 ldrh r2, [r4, #14] 12dee: f240 4139 movw r1, #1081 ; 0x439 12df2: 3068 adds r0, #104 ; 0x68 12df4: 47b0 blx r6 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12df6: 6823 ldr r3, [r4, #0] 12df8: 2000 movs r0, #0 12dfa: f103 0b68 add.w fp, r3, #104 ; 0x68 12dfe: 47c0 blx r8 12e00: eb00 0080 add.w r0, r0, r0, lsl #2 12e04: 28ef cmp r0, #239 ; 0xef 12e06: f340 8763 ble.w 13cd0 12e0a: 2000 movs r0, #0 12e0c: 47c0 blx r8 12e0e: 2305 movs r3, #5 12e10: 2250 movs r2, #80 ; 0x50 12e12: fb00 2203 mla r2, r0, r3, r2 12e16: 23a0 movs r3, #160 ; 0xa0 12e18: fb92 f2f3 sdiv r2, r2, r3 12e1c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 12e1e: 4658 mov r0, fp 12e20: 2112 movs r1, #18 12e22: 47a8 blx r5 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12e24: 6823 ldr r3, [r4, #0] 12e26: 2000 movs r0, #0 12e28: f103 0b68 add.w fp, r3, #104 ; 0x68 12e2c: 47c0 blx r8 12e2e: eb00 0080 add.w r0, r0, r0, lsl #2 12e32: 28ef cmp r0, #239 ; 0xef 12e34: f340 874f ble.w 13cd6 12e38: 2000 movs r0, #0 12e3a: 47c0 blx r8 12e3c: 2305 movs r3, #5 12e3e: 2250 movs r2, #80 ; 0x50 12e40: fb00 2203 mla r2, r0, r3, r2 12e44: 23a0 movs r3, #160 ; 0xa0 12e46: fb92 f2f3 sdiv r2, r2, r3 12e4a: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12e4c: 4658 mov r0, fp 12e4e: 2113 movs r1, #19 12e50: 47a8 blx r5 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12e52: 6823 ldr r3, [r4, #0] 12e54: 2000 movs r0, #0 12e56: f103 0b68 add.w fp, r3, #104 ; 0x68 12e5a: 47c0 blx r8 12e5c: eb00 0080 add.w r0, r0, r0, lsl #2 12e60: 28ef cmp r0, #239 ; 0xef 12e62: f340 873b ble.w 13cdc 12e66: 2000 movs r0, #0 12e68: 47c0 blx r8 12e6a: 2305 movs r3, #5 12e6c: 2250 movs r2, #80 ; 0x50 12e6e: fb00 2203 mla r2, r0, r3, r2 12e72: 23a0 movs r3, #160 ; 0xa0 12e74: fb92 f2f3 sdiv r2, r2, r3 12e78: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 12e7a: 4658 mov r0, fp 12e7c: 2110 movs r1, #16 12e7e: 47a8 blx r5 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 12e80: 6823 ldr r3, [r4, #0] 12e82: 2000 movs r0, #0 12e84: f103 0b68 add.w fp, r3, #104 ; 0x68 12e88: 47c0 blx r8 12e8a: eb00 0080 add.w r0, r0, r0, lsl #2 12e8e: 28ef cmp r0, #239 ; 0xef 12e90: f340 8727 ble.w 13ce2 12e94: 2000 movs r0, #0 12e96: 47c0 blx r8 12e98: 2305 movs r3, #5 12e9a: 2250 movs r2, #80 ; 0x50 12e9c: fb00 2203 mla r2, r0, r3, r2 12ea0: 23a0 movs r3, #160 ; 0xa0 12ea2: fb92 f2f3 sdiv r2, r2, r3 12ea6: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 12ea8: 4658 mov r0, fp 12eaa: 2111 movs r1, #17 12eac: 47a8 blx r5 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 12eae: 6823 ldr r3, [r4, #0] 12eb0: 2000 movs r0, #0 12eb2: f103 0b68 add.w fp, r3, #104 ; 0x68 12eb6: 47c0 blx r8 12eb8: eb00 0040 add.w r0, r0, r0, lsl #1 12ebc: 28ef cmp r0, #239 ; 0xef 12ebe: f340 8713 ble.w 13ce8 12ec2: 2000 movs r0, #0 12ec4: 47c0 blx r8 12ec6: 2303 movs r3, #3 12ec8: 2250 movs r2, #80 ; 0x50 12eca: fb00 2203 mla r2, r0, r3, r2 12ece: 23a0 movs r3, #160 ; 0xa0 12ed0: fb92 f2f3 sdiv r2, r2, r3 12ed4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 12ed6: 2114 movs r1, #20 12ed8: 4658 mov r0, fp 12eda: 47a8 blx r5 style_init_reset(&styles->mbox_bg); 12edc: 6820 ldr r0, [r4, #0] 12ede: 307c adds r0, #124 ; 0x7c 12ee0: 47d0 blx sl lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 12ee2: 6823 ldr r3, [r4, #0] 12ee4: 2000 movs r0, #0 12ee6: f103 0b7c add.w fp, r3, #124 ; 0x7c 12eea: 47c0 blx r8 12eec: 2332 movs r3, #50 ; 0x32 12eee: 4358 muls r0, r3 12ef0: 28ef cmp r0, #239 ; 0xef 12ef2: f340 86fc ble.w 13cee 12ef6: 2000 movs r0, #0 12ef8: 47c0 blx r8 12efa: 2332 movs r3, #50 ; 0x32 12efc: 2250 movs r2, #80 ; 0x50 12efe: fb00 2203 mla r2, r0, r3, r2 12f02: 23a0 movs r3, #160 ; 0xa0 12f04: fb92 f2f3 sdiv r2, r2, r3 12f08: b212 sxth r2, r2 12f0a: e011 b.n 12f30 12f0c: 2000c7d4 .word 0x2000c7d4 12f10: 00010abd .word 0x00010abd 12f14: 00005879 .word 0x00005879 12f18: 00005aed .word 0x00005aed 12f1c: 00005949 .word 0x00005949 12f20: 0002426e .word 0x0002426e 12f24: 00010e9d .word 0x00010e9d 12f28: 003b3e42 .word 0x003b3e42 12f2c: 0000d951 .word 0x0000d951 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 12f30: 4658 mov r0, fp 12f32: 2150 movs r1, #80 ; 0x50 12f34: 47a8 blx r5 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 12f36: 6823 ldr r3, [r4, #0] 12f38: f103 0b7c add.w fp, r3, #124 ; 0x7c 12f3c: 6a23 ldr r3, [r4, #32] 12f3e: 0798 lsls r0, r3, #30 12f40: f140 86d8 bpl.w 13cf4 12f44: 4bb6 ldr r3, [pc, #728] ; (13220 ) 12f46: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 12f48: 2159 movs r1, #89 ; 0x59 12f4a: 4658 mov r0, fp 12f4c: 47b0 blx r6 style_init_reset(&styles->sb); 12f4e: 6820 ldr r0, [r4, #0] 12f50: 3080 adds r0, #128 ; 0x80 12f52: 47d0 blx sl lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); 12f54: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 12f56: 22ff movs r2, #255 ; 0xff 12f58: 3080 adds r0, #128 ; 0x80 12f5a: 212c movs r1, #44 ; 0x2c 12f5c: 47c8 blx r9 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 12f5e: 6823 ldr r3, [r4, #0] 12f60: f103 0b80 add.w fp, r3, #128 ; 0x80 12f64: 6a23 ldr r3, [r4, #32] 12f66: 0799 lsls r1, r3, #30 12f68: bf4c ite mi 12f6a: 48ae ldrmi r0, [pc, #696] ; (13224 ) 12f6c: 48ae ldrpl r0, [pc, #696] ; (13228 ) 12f6e: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 12f70: 2129 movs r1, #41 ; 0x29 12f72: 4602 mov r2, r0 12f74: 4658 mov r0, fp 12f76: 47b0 blx r6 lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 12f78: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 12f7a: f647 72ff movw r2, #32767 ; 0x7fff 12f7e: 2101 movs r1, #1 12f80: 3080 adds r0, #128 ; 0x80 12f82: 47a8 blx r5 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 12f84: 6823 ldr r3, [r4, #0] 12f86: 2000 movs r0, #0 12f88: f103 0b80 add.w fp, r3, #128 ; 0x80 12f8c: 47c0 blx r8 12f8e: ebc0 00c0 rsb r0, r0, r0, lsl #3 12f92: 28ef cmp r0, #239 ; 0xef 12f94: f340 86b5 ble.w 13d02 12f98: 2000 movs r0, #0 12f9a: 47c0 blx r8 12f9c: 2307 movs r3, #7 12f9e: 2250 movs r2, #80 ; 0x50 12fa0: fb00 2203 mla r2, r0, r3, r2 12fa4: 23a0 movs r3, #160 ; 0xa0 12fa6: fb92 f2f3 sdiv r2, r2, r3 12faa: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 12fac: 4658 mov r0, fp 12fae: 2103 movs r1, #3 12fb0: 47a8 blx r5 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 12fb2: 6823 ldr r3, [r4, #0] 12fb4: 2000 movs r0, #0 12fb6: f103 0b80 add.w fp, r3, #128 ; 0x80 12fba: 47c0 blx r8 12fbc: ebc0 00c0 rsb r0, r0, r0, lsl #3 12fc0: 28ef cmp r0, #239 ; 0xef 12fc2: f340 86a1 ble.w 13d08 12fc6: 2000 movs r0, #0 12fc8: 47c0 blx r8 12fca: 2307 movs r3, #7 12fcc: 2250 movs r2, #80 ; 0x50 12fce: fb00 2203 mla r2, r0, r3, r2 12fd2: 23a0 movs r3, #160 ; 0xa0 12fd4: fb92 f2f3 sdiv r2, r2, r3 12fd8: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 12fda: 4658 mov r0, fp 12fdc: 2113 movs r1, #19 12fde: 47a8 blx r5 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 12fe0: 6823 ldr r3, [r4, #0] 12fe2: 2000 movs r0, #0 12fe4: f103 0b80 add.w fp, r3, #128 ; 0x80 12fe8: 47c0 blx r8 12fea: ebc0 00c0 rsb r0, r0, r0, lsl #3 12fee: 28ef cmp r0, #239 ; 0xef 12ff0: f340 868d ble.w 13d0e 12ff4: 2000 movs r0, #0 12ff6: 47c0 blx r8 12ff8: 2307 movs r3, #7 12ffa: 2250 movs r2, #80 ; 0x50 12ffc: fb00 2203 mla r2, r0, r3, r2 13000: 23a0 movs r3, #160 ; 0xa0 13002: fb92 f2f3 sdiv r2, r2, r3 13006: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13008: 2111 movs r1, #17 1300a: 4658 mov r0, fp 1300c: 47a8 blx r5 style_init_reset(&styles->edge_flash); 1300e: 6820 ldr r0, [r4, #0] 13010: 3084 adds r0, #132 ; 0x84 13012: 47d0 blx sl lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); 13014: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 13016: 22ff movs r2, #255 ; 0xff 13018: 212c movs r1, #44 ; 0x2c 1301a: 3084 adds r0, #132 ; 0x84 1301c: 47c8 blx r9 lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1301e: 6823 ldr r3, [r4, #0] 13020: f640 0088 movw r0, #2184 ; 0x888 13024: f103 0b84 add.w fp, r3, #132 ; 0x84 13028: 4b80 ldr r3, [pc, #512] ; (1322c ) 1302a: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1302c: 2129 movs r1, #41 ; 0x29 1302e: 4602 mov r2, r0 13030: 4658 mov r0, fp 13032: 47b0 blx r6 style_init_reset(&styles->ta_cursor); 13034: 6820 ldr r0, [r4, #0] 13036: 30b4 adds r0, #180 ; 0xb4 13038: 47d0 blx sl lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 1303a: 6823 ldr r3, [r4, #0] 1303c: f103 0bb4 add.w fp, r3, #180 ; 0xb4 13040: 6a23 ldr r3, [r4, #32] 13042: 079a lsls r2, r3, #30 13044: bf4c ite mi 13046: 487a ldrmi r0, [pc, #488] ; (13230 ) 13048: 487a ldrpl r0, [pc, #488] ; (13234 ) 1304a: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1304c: 2139 movs r1, #57 ; 0x39 1304e: 4602 mov r2, r0 13050: 4658 mov r0, fp 13052: 47b0 blx r6 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 13054: 6823 ldr r3, [r4, #0] 13056: 2000 movs r0, #0 13058: f103 0bb4 add.w fp, r3, #180 ; 0xb4 1305c: 47c0 blx r8 1305e: 2877 cmp r0, #119 ; 0x77 13060: f340 8658 ble.w 13d14 13064: 2000 movs r0, #0 13066: 47c0 blx r8 13068: 2350 movs r3, #80 ; 0x50 1306a: f100 0228 add.w r2, r0, #40 ; 0x28 1306e: fb92 f2f3 sdiv r2, r2, r3 13072: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 13074: 4658 mov r0, fp 13076: 2130 movs r1, #48 ; 0x30 13078: 47a8 blx r5 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 1307a: 6823 ldr r3, [r4, #0] 1307c: 2000 movs r0, #0 1307e: f103 0bb4 add.w fp, r3, #180 ; 0xb4 13082: 47c0 blx r8 13084: 28ef cmp r0, #239 ; 0xef 13086: f340 8648 ble.w 13d1a 1308a: 2000 movs r0, #0 1308c: 47c0 blx r8 1308e: 23a0 movs r3, #160 ; 0xa0 13090: f100 0250 add.w r2, r0, #80 ; 0x50 13094: fb92 f2f3 sdiv r2, r2, r3 13098: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1309a: 4658 mov r0, fp 1309c: 2112 movs r1, #18 1309e: 47a8 blx r5 lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); 130a0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 130a2: 2204 movs r2, #4 130a4: 2131 movs r1, #49 ; 0x31 130a6: 30b4 adds r0, #180 ; 0xb4 130a8: 47a8 blx r5 style_init_reset(&styles->ta_placeholder); 130aa: 6820 ldr r0, [r4, #0] 130ac: 30b8 adds r0, #184 ; 0xb8 130ae: 47d0 blx sl lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 130b0: 6823 ldr r3, [r4, #0] 130b2: f103 0bb8 add.w fp, r3, #184 ; 0xb8 130b6: 6a23 ldr r3, [r4, #32] 130b8: 079b lsls r3, r3, #30 130ba: f140 8631 bpl.w 13d20 130be: 4b5b ldr r3, [pc, #364] ; (1322c ) 130c0: f640 20aa movw r0, #2730 ; 0xaaa 130c4: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 130c6: 4602 mov r2, r0 130c8: f248 0189 movw r1, #32905 ; 0x8089 130cc: 4658 mov r0, fp 130ce: 47b0 blx r6 style_init_reset(&styles->spinbox_cursor); 130d0: 6820 ldr r0, [r4, #0] 130d2: 3098 adds r0, #152 ; 0x98 130d4: 47d0 blx sl lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); 130d6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 130d8: 22ff movs r2, #255 ; 0xff 130da: 212c movs r1, #44 ; 0x2c 130dc: 3098 adds r0, #152 ; 0x98 130de: 47c8 blx r9 lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); 130e0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 130e2: 89a2 ldrh r2, [r4, #12] 130e4: 2129 movs r1, #41 ; 0x29 130e6: 3098 adds r0, #152 ; 0x98 130e8: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 130ea: 4b4d ldr r3, [pc, #308] ; (13220 ) lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); 130ec: 6820 ldr r0, [r4, #0] 130ee: 881a ldrh r2, [r3, #0] 130f0: f248 0189 movw r1, #32905 ; 0x8089 130f4: 3098 adds r0, #152 ; 0x98 130f6: 47b0 blx r6 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 130f8: 6823 ldr r3, [r4, #0] 130fa: 2000 movs r0, #0 130fc: f103 0998 add.w r9, r3, #152 ; 0x98 13100: 47c0 blx r8 13102: f04f 0b64 mov.w fp, #100 ; 0x64 13106: fb00 f00b mul.w r0, r0, fp 1310a: 28ef cmp r0, #239 ; 0xef 1310c: f340 860c ble.w 13d28 13110: 2000 movs r0, #0 13112: 47c0 blx r8 13114: 2250 movs r2, #80 ; 0x50 13116: fb00 220b mla r2, r0, fp, r2 1311a: 23a0 movs r3, #160 ; 0xa0 1311c: fb92 f2f3 sdiv r2, r2, r3 13120: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13122: 4648 mov r0, r9 13124: 2110 movs r1, #16 13126: 47a8 blx r5 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13128: 6823 ldr r3, [r4, #0] 1312a: 2000 movs r0, #0 1312c: f103 0998 add.w r9, r3, #152 ; 0x98 13130: 47c0 blx r8 13132: f04f 0b64 mov.w fp, #100 ; 0x64 13136: fb00 f00b mul.w r0, r0, fp 1313a: 28ef cmp r0, #239 ; 0xef 1313c: f340 85f7 ble.w 13d2e 13140: 2000 movs r0, #0 13142: 47c0 blx r8 13144: 2250 movs r2, #80 ; 0x50 13146: fb00 220b mla r2, r0, fp, r2 1314a: 23a0 movs r3, #160 ; 0xa0 1314c: fb92 f2f3 sdiv r2, r2, r3 13150: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13152: 2111 movs r1, #17 13154: 4648 mov r0, r9 13156: 47a8 blx r5 style_init_reset(&styles->list_bg); 13158: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1315a: f8df 90ec ldr.w r9, [pc, #236] ; 13248 1315e: 3074 adds r0, #116 ; 0x74 13160: 47d0 blx sl lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); 13162: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 13164: 2201 movs r2, #1 13166: 2102 movs r1, #2 13168: 3074 adds r0, #116 ; 0x74 1316a: 47a8 blx r5 lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); 1316c: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1316e: 2200 movs r2, #0 13170: 2112 movs r1, #18 13172: 3074 adds r0, #116 ; 0x74 13174: 47a8 blx r5 lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); 13176: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13178: 2200 movs r2, #0 1317a: 2113 movs r1, #19 1317c: 3074 adds r0, #116 ; 0x74 1317e: 47a8 blx r5 lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); 13180: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13182: 2200 movs r2, #0 13184: 2110 movs r1, #16 13186: 3074 adds r0, #116 ; 0x74 13188: 47a8 blx r5 lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); 1318a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1318c: 2200 movs r2, #0 1318e: 2111 movs r1, #17 13190: 3074 adds r0, #116 ; 0x74 13192: 47a8 blx r5 lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); 13194: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 13196: 2200 movs r2, #0 13198: 2114 movs r1, #20 1319a: 3074 adds r0, #116 ; 0x74 1319c: 47a8 blx r5 style_init_reset(&styles->list_btn); 1319e: 6820 ldr r0, [r4, #0] 131a0: 3078 adds r0, #120 ; 0x78 131a2: 47d0 blx sl lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); 131a4: 6820 ldr r0, [r4, #0] 131a6: f8df a084 ldr.w sl, [pc, #132] ; 1322c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 131aa: 3078 adds r0, #120 ; 0x78 131ac: 22ff movs r2, #255 ; 0xff 131ae: 212c movs r1, #44 ; 0x2c 131b0: 47c8 blx r9 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 131b2: 6823 ldr r3, [r4, #0] 131b4: f103 0878 add.w r8, r3, #120 ; 0x78 131b8: 6a23 ldr r3, [r4, #32] 131ba: 0798 lsls r0, r3, #30 131bc: bf54 ite pl 131be: 481e ldrpl r0, [pc, #120] ; (13238 ) 131c0: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 131c4: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 131c6: 2129 movs r1, #41 ; 0x29 131c8: 4602 mov r2, r0 131ca: 4640 mov r0, r8 131cc: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 131ce: 6823 ldr r3, [r4, #0] 131d0: f103 0878 add.w r8, r3, #120 ; 0x78 131d4: 6a23 ldr r3, [r4, #32] 131d6: 0799 lsls r1, r3, #30 131d8: bf4c ite mi 131da: 4818 ldrmi r0, [pc, #96] ; (1323c ) 131dc: 4818 ldrpl r0, [pc, #96] ; (13240 ) 131de: 47b8 blx r7 131e0: f241 0129 movw r1, #4137 ; 0x1029 131e4: 4602 mov r2, r0 131e6: 4640 mov r0, r8 131e8: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 131ea: 6823 ldr r3, [r4, #0] 131ec: f103 0878 add.w r8, r3, #120 ; 0x78 131f0: 6a23 ldr r3, [r4, #32] 131f2: 079a lsls r2, r3, #30 131f4: bf54 ite pl 131f6: 4810 ldrpl r0, [pc, #64] ; (13238 ) 131f8: f06f 407f mvnmi.w r0, #4278190080 ; 0xff000000 131fc: 47b8 blx r7 131fe: f242 0129 movw r1, #8233 ; 0x2029 13202: 4602 mov r2, r0 13204: 4640 mov r0, r8 13206: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); 13208: 6820 ldr r0, [r4, #0] 1320a: 89a2 ldrh r2, [r4, #12] 1320c: f240 1129 movw r1, #297 ; 0x129 13210: 3078 adds r0, #120 ; 0x78 13212: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); 13214: 6820 ldr r0, [r4, #0] 13216: 4b0b ldr r3, [pc, #44] ; (13244 ) 13218: f100 0878 add.w r8, r0, #120 ; 0x78 1321c: e016 b.n 1324c 1321e: bf00 nop 13220: 00024272 .word 0x00024272 13224: 00cccfd1 .word 0x00cccfd1 13228: 00777f85 .word 0x00777f85 1322c: 000102f1 .word 0x000102f1 13230: 0031404f .word 0x0031404f 13234: 00a5a8ad .word 0x00a5a8ad 13238: 00586273 .word 0x00586273 1323c: 00eeeeee .word 0x00eeeeee 13240: 00494f57 .word 0x00494f57 13244: 0000e38f .word 0x0000e38f 13248: 00005a19 .word 0x00005a19 1324c: 2133 movs r1, #51 ; 0x33 1324e: 89a0 ldrh r0, [r4, #12] 13250: 4798 blx r3 13252: f241 1129 movw r1, #4393 ; 0x1129 13256: 4602 mov r2, r0 13258: 4640 mov r0, r8 1325a: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1325c: 6823 ldr r3, [r4, #0] 1325e: f103 0878 add.w r8, r3, #120 ; 0x78 13262: 6a23 ldr r3, [r4, #32] 13264: 079b lsls r3, r3, #30 13266: bf4c ite mi 13268: 48ba ldrmi r0, [pc, #744] ; (13554 ) 1326a: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 1326e: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13270: f248 0189 movw r1, #32905 ; 0x8089 13274: 4602 mov r2, r0 13276: 4640 mov r0, r8 13278: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 1327a: 6820 ldr r0, [r4, #0] 1327c: f100 0878 add.w r8, r0, #120 ; 0x78 13280: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 13284: 47b8 blx r7 13286: f248 1189 movw r1, #33161 ; 0x8189 1328a: 4602 mov r2, r0 1328c: 4640 mov r0, r8 1328e: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 13290: 6823 ldr r3, [r4, #0] 13292: f103 0878 add.w r8, r3, #120 ; 0x78 13296: 6a23 ldr r3, [r4, #32] 13298: f013 0f02 tst.w r3, #2 1329c: bf14 ite ne 1329e: f640 20aa movwne r0, #2730 ; 0xaaa 132a2: f640 1099 movweq r0, #2457 ; 0x999 132a6: 47d0 blx sl 132a8: f24a 0189 movw r1, #41097 ; 0xa089 132ac: 4602 mov r2, r0 132ae: 4640 mov r0, r8 132b0: 47b0 blx r6 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 132b2: 6823 ldr r3, [r4, #0] 132b4: f103 0878 add.w r8, r3, #120 ; 0x78 132b8: 6a23 ldr r3, [r4, #32] lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 132ba: 4ca7 ldr r4, [pc, #668] ; (13558 ) lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 132bc: 0798 lsls r0, r3, #30 132be: bf4c ite mi 132c0: 48a4 ldrmi r0, [pc, #656] ; (13554 ) 132c2: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 132c6: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 132c8: f248 01a9 movw r1, #32937 ; 0x80a9 132cc: 4602 mov r2, r0 132ce: 4640 mov r0, r8 132d0: 47b0 blx r6 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 132d2: 6820 ldr r0, [r4, #0] 132d4: f100 0878 add.w r8, r0, #120 ; 0x78 132d8: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 132dc: 47b8 blx r7 132de: f248 11a9 movw r1, #33193 ; 0x81a9 132e2: 4602 mov r2, r0 132e4: 4640 mov r0, r8 132e6: 47b0 blx r6 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 132e8: 6823 ldr r3, [r4, #0] 132ea: f103 0878 add.w r8, r3, #120 ; 0x78 132ee: 6a23 ldr r3, [r4, #32] 132f0: 0799 lsls r1, r3, #30 132f2: bf4c ite mi 132f4: f640 20aa movwmi r0, #2730 ; 0xaaa 132f8: f640 1099 movwpl r0, #2457 ; 0x999 132fc: 47d0 blx sl 132fe: f24a 01a9 movw r1, #41129 ; 0xa0a9 13302: 4602 mov r2, r0 13304: 4640 mov r0, r8 13306: 47b0 blx r6 lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 13308: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1330a: 4e94 ldr r6, [pc, #592] ; (1355c ) lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1330c: f8df 8268 ldr.w r8, [pc, #616] ; 13578 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 13310: 2201 movs r2, #1 13312: 3078 adds r0, #120 ; 0x78 13314: 2131 movs r1, #49 ; 0x31 13316: 47a8 blx r5 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 13318: 6a23 ldr r3, [r4, #32] 1331a: 6825 ldr r5, [r4, #0] 1331c: 079a lsls r2, r3, #30 1331e: bf4c ite mi 13320: 488f ldrmi r0, [pc, #572] ; (13560 ) 13322: 4890 ldrpl r0, [pc, #576] ; (13564 ) 13324: 47b8 blx r7 13326: 3578 adds r5, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 13328: 4602 mov r2, r0 1332a: 4f8f ldr r7, [pc, #572] ; (13568 ) 1332c: 4628 mov r0, r5 1332e: 2139 movs r1, #57 ; 0x39 13330: 47b8 blx r7 lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); 13332: 6820 ldr r0, [r4, #0] 13334: 89a2 ldrh r2, [r4, #12] 13336: 4d8d ldr r5, [pc, #564] ; (1356c ) 13338: f240 2139 movw r1, #569 ; 0x239 1333c: 3078 adds r0, #120 ; 0x78 1333e: 47b8 blx r7 lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1); 13340: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 13342: 2201 movs r2, #1 13344: 2130 movs r1, #48 ; 0x30 13346: 3078 adds r0, #120 ; 0x78 13348: 47b0 blx r6 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1334a: 6823 ldr r3, [r4, #0] 1334c: 2000 movs r0, #0 1334e: f103 0b78 add.w fp, r3, #120 ; 0x78 13352: 47c0 blx r8 13354: 2801 cmp r0, #1 13356: f04f 0000 mov.w r0, #0 1335a: f200 84f7 bhi.w 13d4c 1335e: 47a8 blx r5 13360: ebc0 1000 rsb r0, r0, r0, lsl #4 13364: 28ef cmp r0, #239 ; 0xef 13366: f300 84e5 bgt.w 13d34 1336a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1336c: 4658 mov r0, fp 1336e: 2112 movs r1, #18 13370: 47b0 blx r6 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13372: 6823 ldr r3, [r4, #0] 13374: 2000 movs r0, #0 13376: f103 0b78 add.w fp, r3, #120 ; 0x78 1337a: 47c0 blx r8 1337c: 2801 cmp r0, #1 1337e: f04f 0000 mov.w r0, #0 13382: f200 84fa bhi.w 13d7a 13386: 47a8 blx r5 13388: ebc0 1000 rsb r0, r0, r0, lsl #4 1338c: 28ef cmp r0, #239 ; 0xef 1338e: f300 84e8 bgt.w 13d62 13392: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13394: 4658 mov r0, fp 13396: 2113 movs r1, #19 13398: 47b0 blx r6 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1339a: 6823 ldr r3, [r4, #0] 1339c: 2000 movs r0, #0 1339e: f103 0b78 add.w fp, r3, #120 ; 0x78 133a2: 47c0 blx r8 133a4: 2801 cmp r0, #1 133a6: f04f 0000 mov.w r0, #0 133aa: f200 84fd bhi.w 13da8 133ae: 47a8 blx r5 133b0: ebc0 1000 rsb r0, r0, r0, lsl #4 133b4: 28ef cmp r0, #239 ; 0xef 133b6: f300 84eb bgt.w 13d90 133ba: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 133bc: 4658 mov r0, fp 133be: 2110 movs r1, #16 133c0: 47b0 blx r6 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 133c2: 6823 ldr r3, [r4, #0] 133c4: 2000 movs r0, #0 133c6: f103 0b78 add.w fp, r3, #120 ; 0x78 133ca: 47c0 blx r8 133cc: 2801 cmp r0, #1 133ce: f04f 0000 mov.w r0, #0 133d2: f200 8500 bhi.w 13dd6 133d6: 47a8 blx r5 133d8: ebc0 1000 rsb r0, r0, r0, lsl #4 133dc: 28ef cmp r0, #239 ; 0xef 133de: f300 84ee bgt.w 13dbe 133e2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 133e4: 4658 mov r0, fp 133e6: 2111 movs r1, #17 133e8: 47b0 blx r6 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 133ea: 6823 ldr r3, [r4, #0] 133ec: 2000 movs r0, #0 133ee: f103 0b78 add.w fp, r3, #120 ; 0x78 133f2: 47c0 blx r8 133f4: 2801 cmp r0, #1 133f6: f04f 0000 mov.w r0, #0 133fa: f200 8503 bhi.w 13e04 133fe: 47a8 blx r5 13400: ebc0 1000 rsb r0, r0, r0, lsl #4 13404: 28ef cmp r0, #239 ; 0xef 13406: f300 84f1 bgt.w 13dec 1340a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1340c: 4658 mov r0, fp 1340e: 2114 movs r1, #20 13410: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 13412: 6823 ldr r3, [r4, #0] 13414: 2000 movs r0, #0 13416: f103 0b78 add.w fp, r3, #120 ; 0x78 1341a: 47c0 blx r8 1341c: 2801 cmp r0, #1 1341e: f04f 0000 mov.w r0, #0 13422: f200 8507 bhi.w 13e34 13426: 47a8 blx r5 13428: ebc0 1000 rsb r0, r0, r0, lsl #4 1342c: 28ef cmp r0, #239 ; 0xef 1342e: f300 84f4 bgt.w 13e1a 13432: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 13436: 4658 mov r0, fp 13438: 2104 movs r1, #4 1343a: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0); 1343c: 6820 ldr r0, [r4, #0] style_init_reset(&styles->ddlist_page); 1343e: f8df b13c ldr.w fp, [pc, #316] ; 1357c 13442: 2200 movs r2, #0 13444: f241 0104 movw r1, #4100 ; 0x1004 13448: 3078 adds r0, #120 ; 0x78 1344a: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0); 1344c: 6820 ldr r0, [r4, #0] 1344e: 2200 movs r2, #0 13450: f44f 7182 mov.w r1, #260 ; 0x104 13454: 3078 adds r0, #120 ; 0x78 13456: 47b0 blx r6 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0); 13458: 6820 ldr r0, [r4, #0] 1345a: 2200 movs r2, #0 1345c: f242 0104 movw r1, #8196 ; 0x2004 13460: 3078 adds r0, #120 ; 0x78 13462: 47b0 blx r6 lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); 13464: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 13466: 2296 movs r2, #150 ; 0x96 13468: 21b0 movs r1, #176 ; 0xb0 1346a: 3078 adds r0, #120 ; 0x78 1346c: 47b0 blx r6 lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 1346e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 13470: 2229 movs r2, #41 ; 0x29 13472: 21b7 movs r1, #183 ; 0xb7 13474: 3078 adds r0, #120 ; 0x78 13476: 47b0 blx r6 lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); 13478: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 1347a: 2204 movs r2, #4 1347c: 21b6 movs r1, #182 ; 0xb6 1347e: 3078 adds r0, #120 ; 0x78 13480: 47b0 blx r6 style_init_reset(&styles->ddlist_page); 13482: 6820 ldr r0, [r4, #0] 13484: 3054 adds r0, #84 ; 0x54 13486: 47d8 blx fp lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 13488: 6823 ldr r3, [r4, #0] 1348a: 2000 movs r0, #0 1348c: f103 0854 add.w r8, r3, #84 ; 0x54 13490: 47a8 blx r5 13492: eb00 0080 add.w r0, r0, r0, lsl #2 13496: 0080 lsls r0, r0, #2 13498: 28ef cmp r0, #239 ; 0xef 1349a: f8cd b004 str.w fp, [sp, #4] 1349e: f340 84d4 ble.w 13e4a 134a2: 2000 movs r0, #0 134a4: 47a8 blx r5 134a6: 2314 movs r3, #20 134a8: 2250 movs r2, #80 ; 0x50 134aa: fb00 2203 mla r2, r0, r3, r2 134ae: 23a0 movs r3, #160 ; 0xa0 134b0: fb92 f2f3 sdiv r2, r2, r3 134b4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 134b6: 4640 mov r0, r8 134b8: f248 0181 movw r1, #32897 ; 0x8081 134bc: 47b0 blx r6 lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); 134be: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 134c0: 2201 movs r2, #1 134c2: 2102 movs r1, #2 134c4: 3054 adds r0, #84 ; 0x54 134c6: 47b0 blx r6 style_init_reset(&styles->ddlist_sel); 134c8: 6820 ldr r0, [r4, #0] 134ca: 9b01 ldr r3, [sp, #4] 134cc: 3058 adds r0, #88 ; 0x58 134ce: 4798 blx r3 lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 134d0: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 134d2: 22ff movs r2, #255 ; 0xff 134d4: 212c movs r1, #44 ; 0x2c 134d6: 3058 adds r0, #88 ; 0x58 134d8: 47c8 blx r9 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); 134da: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 134dc: 89a2 ldrh r2, [r4, #12] 134de: 2129 movs r1, #41 ; 0x29 134e0: 3058 adds r0, #88 ; 0x58 134e2: 47b8 blx r7 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); 134e4: 6823 ldr r3, [r4, #0] 134e6: f640 70ff movw r0, #4095 ; 0xfff 134ea: f103 0858 add.w r8, r3, #88 ; 0x58 134ee: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 134f0: f248 0189 movw r1, #32905 ; 0x8089 134f4: 4602 mov r2, r0 134f6: 4640 mov r0, r8 134f8: 47b8 blx r7 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 134fa: 6823 ldr r3, [r4, #0] 134fc: f8df 8080 ldr.w r8, [pc, #128] ; 13580 13500: f103 0b58 add.w fp, r3, #88 ; 0x58 13504: 6a23 ldr r3, [r4, #32] 13506: f013 0f02 tst.w r3, #2 1350a: bf14 ite ne 1350c: 4818 ldrne r0, [pc, #96] ; (13570 ) 1350e: 4819 ldreq r0, [pc, #100] ; (13574 ) 13510: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13512: f241 0129 movw r1, #4137 ; 0x1029 13516: 4602 mov r2, r0 13518: 4658 mov r0, fp 1351a: 47b8 blx r7 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 1351c: 6823 ldr r3, [r4, #0] 1351e: f103 0b58 add.w fp, r3, #88 ; 0x58 13522: 6a23 ldr r3, [r4, #32] 13524: 079b lsls r3, r3, #30 13526: bf4c ite mi 13528: 480a ldrmi r0, [pc, #40] ; (13554 ) 1352a: f06f 407f mvnpl.w r0, #4278190080 ; 0xff000000 1352e: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13530: f249 0189 movw r1, #37001 ; 0x9089 13534: 4602 mov r2, r0 13536: 4658 mov r0, fp 13538: 47b8 blx r7 style_init_reset(&styles->roller_bg); 1353a: 6820 ldr r0, [r4, #0] 1353c: 9b01 ldr r3, [sp, #4] 1353e: 3088 adds r0, #136 ; 0x88 13540: 4798 blx r3 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 13542: 6823 ldr r3, [r4, #0] 13544: 2000 movs r0, #0 13546: f103 0888 add.w r8, r3, #136 ; 0x88 1354a: 47a8 blx r5 1354c: eb00 0080 add.w r0, r0, r0, lsl #2 13550: e018 b.n 13584 13552: bf00 nop 13554: 003b3e42 .word 0x003b3e42 13558: 2000c7d4 .word 0x2000c7d4 1355c: 00005879 .word 0x00005879 13560: 00d6dde3 .word 0x00d6dde3 13564: 00808a97 .word 0x00808a97 13568: 00005949 .word 0x00005949 1356c: 0000d951 .word 0x0000d951 13570: 00eeeeee .word 0x00eeeeee 13574: 00494f57 .word 0x00494f57 13578: 0000d969 .word 0x0000d969 1357c: 00010abd .word 0x00010abd 13580: 00010e9d .word 0x00010e9d 13584: eb00 0080 add.w r0, r0, r0, lsl #2 13588: 28ef cmp r0, #239 ; 0xef 1358a: f340 8461 ble.w 13e50 1358e: 2000 movs r0, #0 13590: 47a8 blx r5 13592: 2319 movs r3, #25 13594: 2250 movs r2, #80 ; 0x50 13596: fb00 2203 mla r2, r0, r3, r2 1359a: 23a0 movs r3, #160 ; 0xa0 1359c: fb92 f2f3 sdiv r2, r2, r3 135a0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 135a2: f248 0181 movw r1, #32897 ; 0x8081 135a6: 4640 mov r0, r8 135a8: 47b0 blx r6 style_init_reset(&styles->roller_sel); 135aa: 6820 ldr r0, [r4, #0] 135ac: f8df 8308 ldr.w r8, [pc, #776] ; 138b8 135b0: 308c adds r0, #140 ; 0x8c 135b2: 47c0 blx r8 lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 135b4: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 135b6: 22ff movs r2, #255 ; 0xff 135b8: 212c movs r1, #44 ; 0x2c 135ba: 308c adds r0, #140 ; 0x8c 135bc: 47c8 blx r9 lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); 135be: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 135c0: 89a2 ldrh r2, [r4, #12] 135c2: 2129 movs r1, #41 ; 0x29 135c4: 308c adds r0, #140 ; 0x8c 135c6: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 135c8: 4bb4 ldr r3, [pc, #720] ; (1389c ) lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE); 135ca: 6820 ldr r0, [r4, #0] 135cc: 881a ldrh r2, [r3, #0] 135ce: f248 0189 movw r1, #32905 ; 0x8089 135d2: 308c adds r0, #140 ; 0x8c 135d4: 47b8 blx r7 style_init_reset(&styles->tabview_btns_bg); 135d6: 6820 ldr r0, [r4, #0] 135d8: 30a8 adds r0, #168 ; 0xa8 135da: 47c0 blx r8 lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 135dc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 135de: 22ff movs r2, #255 ; 0xff 135e0: 30a8 adds r0, #168 ; 0xa8 135e2: 212c movs r1, #44 ; 0x2c 135e4: 47c8 blx r9 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 135e6: 6823 ldr r3, [r4, #0] 135e8: f8cd 8004 str.w r8, [sp, #4] 135ec: f103 0ba8 add.w fp, r3, #168 ; 0xa8 135f0: 6a23 ldr r3, [r4, #32] 135f2: f8df 82c8 ldr.w r8, [pc, #712] ; 138bc 135f6: f013 0f02 tst.w r3, #2 135fa: bf0c ite eq 135fc: 48a8 ldreq r0, [pc, #672] ; (138a0 ) 135fe: f06f 407f mvnne.w r0, #4278190080 ; 0xff000000 13602: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13604: 2129 movs r1, #41 ; 0x29 13606: 4602 mov r2, r0 13608: 4658 mov r0, fp 1360a: 47b8 blx r7 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 1360c: 6823 ldr r3, [r4, #0] 1360e: f103 0ba8 add.w fp, r3, #168 ; 0xa8 IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 13612: 6a23 ldr r3, [r4, #32] lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 13614: 0798 lsls r0, r3, #30 IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 13616: bf4c ite mi 13618: 48a2 ldrmi r0, [pc, #648] ; (138a4 ) 1361a: 48a3 ldrpl r0, [pc, #652] ; (138a8 ) 1361c: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1361e: 2139 movs r1, #57 ; 0x39 13620: 4602 mov r2, r0 13622: 4658 mov r0, fp 13624: 47b8 blx r7 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13626: 6823 ldr r3, [r4, #0] 13628: 2000 movs r0, #0 1362a: f103 0ba8 add.w fp, r3, #168 ; 0xa8 1362e: 47a8 blx r5 13630: eb00 0080 add.w r0, r0, r0, lsl #2 13634: 28ef cmp r0, #239 ; 0xef 13636: f340 840e ble.w 13e56 1363a: 2000 movs r0, #0 1363c: 47a8 blx r5 1363e: 2305 movs r3, #5 13640: 2250 movs r2, #80 ; 0x50 13642: fb00 2203 mla r2, r0, r3, r2 13646: 23a0 movs r3, #160 ; 0xa0 13648: fb92 f2f3 sdiv r2, r2, r3 1364c: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1364e: 4658 mov r0, fp 13650: 2130 movs r1, #48 ; 0x30 13652: 47b0 blx r6 lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 13654: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 13656: 2201 movs r2, #1 13658: 30a8 adds r0, #168 ; 0xa8 1365a: 2131 movs r1, #49 ; 0x31 1365c: 47b0 blx r6 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 1365e: 6823 ldr r3, [r4, #0] 13660: f103 0ba8 add.w fp, r3, #168 ; 0xa8 13664: 6a23 ldr r3, [r4, #32] 13666: 0799 lsls r1, r3, #30 13668: bf4c ite mi 1366a: 488f ldrmi r0, [pc, #572] ; (138a8 ) 1366c: 488f ldrpl r0, [pc, #572] ; (138ac ) 1366e: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13670: f248 0189 movw r1, #32905 ; 0x8089 13674: 4602 mov r2, r0 13676: 4658 mov r0, fp 13678: 47b8 blx r7 lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal); 1367a: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1367c: 6962 ldr r2, [r4, #20] 1367e: 4b8c ldr r3, [pc, #560] ; (138b0 ) 13680: f248 018e movw r1, #32910 ; 0x808e 13684: 30a8 adds r0, #168 ; 0xa8 13686: 4798 blx r3 lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); 13688: 6823 ldr r3, [r4, #0] 1368a: 488a ldr r0, [pc, #552] ; (138b4 ) 1368c: f103 0ba8 add.w fp, r3, #168 ; 0xa8 13690: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 13692: f248 01a9 movw r1, #32937 ; 0x80a9 13696: 4602 mov r2, r0 13698: 4658 mov r0, fp 1369a: 47b8 blx r7 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 1369c: 6823 ldr r3, [r4, #0] 1369e: 2000 movs r0, #0 136a0: f103 0ba8 add.w fp, r3, #168 ; 0xa8 136a4: 47a8 blx r5 136a6: ebc0 00c0 rsb r0, r0, r0, lsl #3 136aa: 28ef cmp r0, #239 ; 0xef 136ac: f340 83d6 ble.w 13e5c 136b0: 2000 movs r0, #0 136b2: 47a8 blx r5 136b4: 2307 movs r3, #7 136b6: 2250 movs r2, #80 ; 0x50 136b8: fb00 2203 mla r2, r0, r3, r2 136bc: 23a0 movs r3, #160 ; 0xa0 136be: fb92 f2f3 sdiv r2, r2, r3 136c2: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 136c4: 4658 mov r0, fp 136c6: 2110 movs r1, #16 136c8: 47b0 blx r6 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 136ca: 6823 ldr r3, [r4, #0] 136cc: 2000 movs r0, #0 136ce: f103 0ba8 add.w fp, r3, #168 ; 0xa8 136d2: 47a8 blx r5 136d4: ebc0 00c0 rsb r0, r0, r0, lsl #3 136d8: 28ef cmp r0, #239 ; 0xef 136da: f340 83c1 ble.w 13e60 136de: 2000 movs r0, #0 136e0: 47a8 blx r5 136e2: 2307 movs r3, #7 136e4: 2250 movs r2, #80 ; 0x50 136e6: fb00 2203 mla r2, r0, r3, r2 136ea: 23a0 movs r3, #160 ; 0xa0 136ec: fb92 f2f3 sdiv r2, r2, r3 136f0: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 136f2: 4658 mov r0, fp 136f4: 2112 movs r1, #18 136f6: 47b0 blx r6 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 136f8: 6823 ldr r3, [r4, #0] 136fa: 2000 movs r0, #0 136fc: f103 0ba8 add.w fp, r3, #168 ; 0xa8 13700: 47a8 blx r5 13702: ebc0 00c0 rsb r0, r0, r0, lsl #3 13706: 28ef cmp r0, #239 ; 0xef 13708: f340 83ac ble.w 13e64 1370c: 2000 movs r0, #0 1370e: 47a8 blx r5 13710: 2307 movs r3, #7 13712: 2250 movs r2, #80 ; 0x50 13714: fb00 2203 mla r2, r0, r3, r2 13718: 23a0 movs r3, #160 ; 0xa0 1371a: fb92 f2f3 sdiv r2, r2, r3 1371e: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13720: 2113 movs r1, #19 13722: 4658 mov r0, fp 13724: 47b0 blx r6 style_init_reset(&styles->tabview_btns); 13726: 6820 ldr r0, [r4, #0] 13728: 9b01 ldr r3, [sp, #4] 1372a: 30a4 adds r0, #164 ; 0xa4 1372c: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); 1372e: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 13730: 227f movs r2, #127 ; 0x7f 13732: f241 012c movw r1, #4140 ; 0x102c 13736: 30a4 adds r0, #164 ; 0xa4 13738: 47c8 blx r9 lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); 1373a: 6823 ldr r3, [r4, #0] 1373c: f640 0088 movw r0, #2184 ; 0x888 13740: f103 0ba4 add.w fp, r3, #164 ; 0xa4 13744: 47d0 blx sl _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 13746: f241 0129 movw r1, #4137 ; 0x1029 1374a: 4602 mov r2, r0 1374c: 4658 mov r0, fp 1374e: 47b8 blx r7 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 13750: 6823 ldr r3, [r4, #0] 13752: f103 0aa4 add.w sl, r3, #164 ; 0xa4 13756: 6a23 ldr r3, [r4, #32] 13758: 079a lsls r2, r3, #30 1375a: bf4c ite mi 1375c: 4852 ldrmi r0, [pc, #328] ; (138a8 ) 1375e: 4853 ldrpl r0, [pc, #332] ; (138ac ) 13760: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 13762: f248 1189 movw r1, #33161 ; 0x8189 13766: 4602 mov r2, r0 13768: 4650 mov r0, sl 1376a: 47b8 blx r7 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 1376c: 6823 ldr r3, [r4, #0] 1376e: 2000 movs r0, #0 13770: f103 0aa4 add.w sl, r3, #164 ; 0xa4 13774: 47a8 blx r5 13776: eb00 0080 add.w r0, r0, r0, lsl #2 1377a: 0080 lsls r0, r0, #2 1377c: 28ef cmp r0, #239 ; 0xef 1377e: f340 8373 ble.w 13e68 13782: 2000 movs r0, #0 13784: 47a8 blx r5 13786: 2314 movs r3, #20 13788: 2250 movs r2, #80 ; 0x50 1378a: fb00 2203 mla r2, r0, r3, r2 1378e: 23a0 movs r3, #160 ; 0xa0 13790: fb92 f2f3 sdiv r2, r2, r3 13794: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13796: 4650 mov r0, sl 13798: 2110 movs r1, #16 1379a: 47b0 blx r6 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 1379c: 6823 ldr r3, [r4, #0] 1379e: 2000 movs r0, #0 137a0: f103 0aa4 add.w sl, r3, #164 ; 0xa4 137a4: 47a8 blx r5 137a6: eb00 0080 add.w r0, r0, r0, lsl #2 137aa: 0080 lsls r0, r0, #2 137ac: 28ef cmp r0, #239 ; 0xef 137ae: f340 835d ble.w 13e6c 137b2: 2000 movs r0, #0 137b4: 47a8 blx r5 137b6: 2314 movs r3, #20 137b8: 2250 movs r2, #80 ; 0x50 137ba: fb00 2203 mla r2, r0, r3, r2 137be: 23a0 movs r3, #160 ; 0xa0 137c0: fb92 f2f3 sdiv r2, r2, r3 137c4: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 137c6: 2111 movs r1, #17 137c8: 4650 mov r0, sl 137ca: 47b0 blx r6 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); 137cc: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 137ce: 89a2 ldrh r2, [r4, #12] 137d0: f248 2189 movw r1, #33417 ; 0x8289 137d4: 30a4 adds r0, #164 ; 0xa4 137d6: 47b8 blx r7 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); 137d8: 6820 ldr r0, [r4, #0] 137da: 89e2 ldrh r2, [r4, #14] 137dc: f248 4189 movw r1, #33929 ; 0x8489 137e0: 30a4 adds r0, #164 ; 0xa4 137e2: 47b8 blx r7 style_init_reset(&styles->tabview_indic); 137e4: 6820 ldr r0, [r4, #0] 137e6: 9b01 ldr r3, [sp, #4] 137e8: 30ac adds r0, #172 ; 0xac 137ea: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 137ec: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 137ee: 22ff movs r2, #255 ; 0xff 137f0: 212c movs r1, #44 ; 0x2c 137f2: 30ac adds r0, #172 ; 0xac 137f4: 47c8 blx r9 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); 137f6: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 137f8: 89a2 ldrh r2, [r4, #12] 137fa: 2129 movs r1, #41 ; 0x29 137fc: 30ac adds r0, #172 ; 0xac 137fe: 47b8 blx r7 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); 13800: 6820 ldr r0, [r4, #0] 13802: 89e2 ldrh r2, [r4, #14] 13804: f240 4129 movw r1, #1065 ; 0x429 13808: 30ac adds r0, #172 ; 0xac 1380a: 47b8 blx r7 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 1380c: 6823 ldr r3, [r4, #0] 1380e: 2000 movs r0, #0 13810: f103 09ac add.w r9, r3, #172 ; 0xac 13814: 47a8 blx r5 13816: eb00 0080 add.w r0, r0, r0, lsl #2 1381a: 28ef cmp r0, #239 ; 0xef 1381c: f340 8328 ble.w 13e70 13820: 2000 movs r0, #0 13822: 47a8 blx r5 13824: 2305 movs r3, #5 13826: 2250 movs r2, #80 ; 0x50 13828: fb00 2203 mla r2, r0, r3, r2 1382c: 23a0 movs r3, #160 ; 0xa0 1382e: fb92 f2f3 sdiv r2, r2, r3 13832: b212 sxth r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 13834: 4648 mov r0, r9 13836: 2103 movs r1, #3 13838: 47b0 blx r6 lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1383a: 6820 ldr r0, [r4, #0] lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1383c: f8df 9080 ldr.w r9, [pc, #128] ; 138c0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 13840: f647 72ff movw r2, #32767 ; 0x7fff 13844: 2101 movs r1, #1 13846: 30ac adds r0, #172 ; 0xac 13848: 47b0 blx r6 style_init_reset(&styles->tabview_page_scrl); 1384a: 6820 ldr r0, [r4, #0] 1384c: 9b01 ldr r3, [sp, #4] 1384e: 30b0 adds r0, #176 ; 0xb0 13850: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13852: 6823 ldr r3, [r4, #0] 13854: 2000 movs r0, #0 13856: f103 0ab0 add.w sl, r3, #176 ; 0xb0 1385a: 47c8 blx r9 1385c: 2801 cmp r0, #1 1385e: f04f 0000 mov.w r0, #0 13862: f200 8312 bhi.w 13e8a 13866: 47a8 blx r5 13868: ebc0 1000 rsb r0, r0, r0, lsl #4 1386c: 28ef cmp r0, #239 ; 0xef 1386e: f300 8301 bgt.w 13e74 13872: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 13874: 4650 mov r0, sl 13876: 2110 movs r1, #16 13878: 47b0 blx r6 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 1387a: 6823 ldr r3, [r4, #0] 1387c: 2000 movs r0, #0 1387e: f103 0ab0 add.w sl, r3, #176 ; 0xb0 13882: 47c8 blx r9 13884: 2801 cmp r0, #1 13886: f04f 0000 mov.w r0, #0 1388a: f200 8314 bhi.w 13eb6 1388e: 47a8 blx r5 13890: ebc0 1000 rsb r0, r0, r0, lsl #4 13894: 28ef cmp r0, #239 ; 0xef 13896: f300 8303 bgt.w 13ea0 1389a: e013 b.n 138c4 1389c: 00024272 .word 0x00024272 138a0: 00586273 .word 0x00586273 138a4: 00e4eaf0 .word 0x00e4eaf0 138a8: 003b3e42 .word 0x003b3e42 138ac: 00e7e9ec .word 0x00e7e9ec 138b0: 00005aed .word 0x00005aed 138b4: 00979a9f .word 0x00979a9f 138b8: 00010abd .word 0x00010abd 138bc: 00010e9d .word 0x00010e9d 138c0: 0000d969 .word 0x0000d969 138c4: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 138c6: 4650 mov r0, sl 138c8: 2111 movs r1, #17 138ca: 47b0 blx r6 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 138cc: 6823 ldr r3, [r4, #0] 138ce: 2000 movs r0, #0 138d0: f103 0ab0 add.w sl, r3, #176 ; 0xb0 138d4: 47c8 blx r9 138d6: 2801 cmp r0, #1 138d8: f04f 0000 mov.w r0, #0 138dc: f200 8301 bhi.w 13ee2 138e0: 47a8 blx r5 138e2: ebc0 1000 rsb r0, r0, r0, lsl #4 138e6: 28ef cmp r0, #239 ; 0xef 138e8: f300 82f0 bgt.w 13ecc 138ec: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 138ee: 4650 mov r0, sl 138f0: 2112 movs r1, #18 138f2: 47b0 blx r6 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 138f4: 6823 ldr r3, [r4, #0] 138f6: 2000 movs r0, #0 138f8: f103 0ab0 add.w sl, r3, #176 ; 0xb0 138fc: 47c8 blx r9 138fe: 2801 cmp r0, #1 13900: f04f 0000 mov.w r0, #0 13904: f200 8303 bhi.w 13f0e 13908: 47a8 blx r5 1390a: ebc0 1000 rsb r0, r0, r0, lsl #4 1390e: 28ef cmp r0, #239 ; 0xef 13910: f300 82f2 bgt.w 13ef8 13914: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 13916: 4650 mov r0, sl 13918: 2113 movs r1, #19 1391a: 47b0 blx r6 lv_style_set_pad_inner(&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 8305 bhi.w 13f3a 13930: 47a8 blx r5 13932: ebc0 1000 rsb r0, r0, r0, lsl #4 13936: 28ef cmp r0, #239 ; 0xef 13938: f300 82f4 bgt.w 13f24 1393c: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1393e: 2114 movs r1, #20 13940: 4650 mov r0, sl 13942: 47b0 blx r6 style_init_reset(&styles->table_cell); 13944: 6820 ldr r0, [r4, #0] 13946: 9b01 ldr r3, [sp, #4] 13948: 30a0 adds r0, #160 ; 0xa0 1394a: 4798 blx r3 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 1394c: 6823 ldr r3, [r4, #0] 1394e: f103 0aa0 add.w sl, r3, #160 ; 0xa0 13952: 6a23 ldr r3, [r4, #32] 13954: 079b lsls r3, r3, #30 13956: bf4c ite mi 13958: 48c9 ldrmi r0, [pc, #804] ; (13c80 ) 1395a: 48ca ldrpl r0, [pc, #808] ; (13c84 ) 1395c: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1395e: 2139 movs r1, #57 ; 0x39 13960: 4602 mov r2, r0 13962: 4650 mov r0, sl 13964: 47b8 blx r7 lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); 13966: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 13968: 2201 movs r2, #1 1396a: 2130 movs r1, #48 ; 0x30 1396c: 30a0 adds r0, #160 ; 0xa0 1396e: 47b0 blx r6 lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 13970: 6820 ldr r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 13972: 2203 movs r2, #3 13974: 2131 movs r1, #49 ; 0x31 13976: 30a0 adds r0, #160 ; 0xa0 13978: 47b0 blx r6 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 1397a: 2000 movs r0, #0 1397c: 6827 ldr r7, [r4, #0] 1397e: 47c8 blx r9 13980: 2801 cmp r0, #1 13982: f107 07a0 add.w r7, r7, #160 ; 0xa0 13986: f04f 0000 mov.w r0, #0 1398a: f200 82ec bhi.w 13f66 1398e: 47a8 blx r5 13990: ebc0 1000 rsb r0, r0, r0, lsl #4 13994: 28ef cmp r0, #239 ; 0xef 13996: f300 82db bgt.w 13f50 1399a: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1399c: 2112 movs r1, #18 1399e: 4638 mov r0, r7 139a0: 47b0 blx r6 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 139a2: 2000 movs r0, #0 139a4: 6824 ldr r4, [r4, #0] 139a6: 47c8 blx r9 139a8: 2801 cmp r0, #1 139aa: f104 04a0 add.w r4, r4, #160 ; 0xa0 139ae: f04f 0000 mov.w r0, #0 139b2: f200 82ee bhi.w 13f92 139b6: 47a8 blx r5 139b8: ebc0 1000 rsb r0, r0, r0, lsl #4 139bc: 28ef cmp r0, #239 ; 0xef 139be: f300 82dd bgt.w 13f7c 139c2: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 139c4: 4620 mov r0, r4 139c6: 2113 movs r1, #19 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 139c8: 4caf ldr r4, [pc, #700] ; (13c88 ) 139ca: 47b0 blx r6 139cc: 2000 movs r0, #0 139ce: 6827 ldr r7, [r4, #0] 139d0: 47c8 blx r9 139d2: 2801 cmp r0, #1 139d4: f107 07a0 add.w r7, r7, #160 ; 0xa0 139d8: f04f 0000 mov.w r0, #0 139dc: f200 82ef bhi.w 13fbe 139e0: 47a8 blx r5 139e2: ebc0 1000 rsb r0, r0, r0, lsl #4 139e6: 28ef cmp r0, #239 ; 0xef 139e8: f300 82de bgt.w 13fa8 139ec: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 139ee: 2110 movs r1, #16 139f0: 4638 mov r0, r7 139f2: 47b0 blx r6 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 139f4: 2000 movs r0, #0 139f6: 6825 ldr r5, [r4, #0] 139f8: 4ea4 ldr r6, [pc, #656] ; (13c8c ) 139fa: 47c8 blx r9 139fc: 2801 cmp r0, #1 139fe: f105 05a0 add.w r5, r5, #160 ; 0xa0 13a02: f04f 0000 mov.w r0, #0 13a06: f200 82f0 bhi.w 13fea 13a0a: 47b0 blx r6 13a0c: ebc0 1000 rsb r0, r0, r0, lsl #4 13a10: 28ef cmp r0, #239 ; 0xef 13a12: f300 82df bgt.w 13fd4 13a16: 2201 movs r2, #1 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 13a18: 2111 movs r1, #17 13a1a: 4628 mov r0, r5 13a1c: 4b9c ldr r3, [pc, #624] ; (13c90 ) 13a1e: 4798 blx r3 theme.apply_xcb = theme_apply; 13a20: 4b9c ldr r3, [pc, #624] ; (13c94 ) 13a22: 60a3 str r3, [r4, #8] inited = true; 13a24: 2301 movs r3, #1 13a26: 7123 strb r3, [r4, #4] lv_obj_report_style_mod(NULL); 13a28: 2000 movs r0, #0 13a2a: 4b9b ldr r3, [pc, #620] ; (13c98 ) 13a2c: 4798 blx r3 } 13a2e: 489b ldr r0, [pc, #620] ; (13c9c ) 13a30: b003 add sp, #12 13a32: ecbd 8b02 vpop {d8} 13a36: 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)); 13a3a: 2201 movs r2, #1 13a3c: f7fe bdb1 b.w 125a2 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 13a40: 2201 movs r2, #1 13a42: f7fe bde0 b.w 12606 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13a46: 2000 movs r0, #0 13a48: 47a8 blx r5 13a4a: 230f movs r3, #15 13a4c: 2250 movs r2, #80 ; 0x50 13a4e: fb00 2203 mla r2, r0, r3, r2 13a52: 23a0 movs r3, #160 ; 0xa0 13a54: fb92 f2f3 sdiv r2, r2, r3 13a58: b212 sxth r2, r2 13a5a: f7fe bdf4 b.w 12646 13a5e: 47a8 blx r5 13a60: ebc0 1000 rsb r0, r0, r0, lsl #4 13a64: 0040 lsls r0, r0, #1 13a66: 28ef cmp r0, #239 ; 0xef 13a68: f77e adec ble.w 12644 13a6c: 2000 movs r0, #0 13a6e: 47a8 blx r5 13a70: 231e movs r3, #30 13a72: e7eb b.n 13a4c lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13a74: 2000 movs r0, #0 13a76: 47a8 blx r5 13a78: 230f movs r3, #15 13a7a: 2250 movs r2, #80 ; 0x50 13a7c: fb00 2203 mla r2, r0, r3, r2 13a80: 23a0 movs r3, #160 ; 0xa0 13a82: fb92 f2f3 sdiv r2, r2, r3 13a86: b212 sxth r2, r2 13a88: f7fe bdf1 b.w 1266e 13a8c: 47a8 blx r5 13a8e: ebc0 1000 rsb r0, r0, r0, lsl #4 13a92: 0040 lsls r0, r0, #1 13a94: 28ef cmp r0, #239 ; 0xef 13a96: f77e ade9 ble.w 1266c 13a9a: 2000 movs r0, #0 13a9c: 47a8 blx r5 13a9e: 231e movs r3, #30 13aa0: e7eb b.n 13a7a lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13aa2: 2000 movs r0, #0 13aa4: 47a8 blx r5 13aa6: 230f movs r3, #15 13aa8: 2250 movs r2, #80 ; 0x50 13aaa: fb00 2203 mla r2, r0, r3, r2 13aae: 23a0 movs r3, #160 ; 0xa0 13ab0: fb92 f2f3 sdiv r2, r2, r3 13ab4: b212 sxth r2, r2 13ab6: f7fe bdee b.w 12696 13aba: 47a8 blx r5 13abc: ebc0 1000 rsb r0, r0, r0, lsl #4 13ac0: 0040 lsls r0, r0, #1 13ac2: 28ef cmp r0, #239 ; 0xef 13ac4: f77e ade6 ble.w 12694 13ac8: 2000 movs r0, #0 13aca: 47a8 blx r5 13acc: 231e movs r3, #30 13ace: e7eb b.n 13aa8 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 13ad0: 2000 movs r0, #0 13ad2: 47a8 blx r5 13ad4: 230f movs r3, #15 13ad6: 2250 movs r2, #80 ; 0x50 13ad8: fb00 2203 mla r2, r0, r3, r2 13adc: 23a0 movs r3, #160 ; 0xa0 13ade: fb92 f2f3 sdiv r2, r2, r3 13ae2: b212 sxth r2, r2 13ae4: f7fe bdeb b.w 126be 13ae8: 47a8 blx r5 13aea: ebc0 1000 rsb r0, r0, r0, lsl #4 13aee: 0040 lsls r0, r0, #1 13af0: 28ef cmp r0, #239 ; 0xef 13af2: f77e ade3 ble.w 126bc 13af6: 2000 movs r0, #0 13af8: 47a8 blx r5 13afa: 231e movs r3, #30 13afc: e7eb b.n 13ad6 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 13afe: f8bb 2000 ldrh.w r2, [fp] 13b02: f7fe bdee b.w 126e2 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 13b06: 4b66 ldr r3, [pc, #408] ; (13ca0 ) 13b08: f640 60ee movw r0, #3822 ; 0xeee 13b0c: 4798 blx r3 13b0e: f7fe bdf9 b.w 12704 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 13b12: 2000 movs r0, #0 13b14: 47a8 blx r5 13b16: 230f movs r3, #15 13b18: 2250 movs r2, #80 ; 0x50 13b1a: fb00 2203 mla r2, r0, r3, r2 13b1e: 23a0 movs r3, #160 ; 0xa0 13b20: fb92 f2f3 sdiv r2, r2, r3 13b24: b212 sxth r2, r2 13b26: f7fe be05 b.w 12734 13b2a: 47a8 blx r5 13b2c: ebc0 1000 rsb r0, r0, r0, lsl #4 13b30: 0040 lsls r0, r0, #1 13b32: 28ef cmp r0, #239 ; 0xef 13b34: f77e adfd ble.w 12732 13b38: 2000 movs r0, #0 13b3a: 47a8 blx r5 13b3c: 231e movs r3, #30 13b3e: e7eb b.n 13b18 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 13b40: 2000 movs r0, #0 13b42: 47a8 blx r5 13b44: 230f movs r3, #15 13b46: 2250 movs r2, #80 ; 0x50 13b48: fb00 2203 mla r2, r0, r3, r2 13b4c: 23a0 movs r3, #160 ; 0xa0 13b4e: fb92 f2f3 sdiv r2, r2, r3 13b52: b212 sxth r2, r2 13b54: f7fe be04 b.w 12760 13b58: 47a8 blx r5 13b5a: ebc0 1000 rsb r0, r0, r0, lsl #4 13b5e: 0040 lsls r0, r0, #1 13b60: 28ef cmp r0, #239 ; 0xef 13b62: f77e adfc ble.w 1275e 13b66: 2000 movs r0, #0 13b68: 47a8 blx r5 13b6a: 231e movs r3, #30 13b6c: e7eb b.n 13b46 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 13b6e: 2000 movs r0, #0 13b70: 47a8 blx r5 13b72: 230f movs r3, #15 13b74: 2250 movs r2, #80 ; 0x50 13b76: fb00 2203 mla r2, r0, r3, r2 13b7a: 23a0 movs r3, #160 ; 0xa0 13b7c: fb92 f2f3 sdiv r2, r2, r3 13b80: b212 sxth r2, r2 13b82: f7fe be03 b.w 1278c 13b86: 47a8 blx r5 13b88: ebc0 1000 rsb r0, r0, r0, lsl #4 13b8c: 0040 lsls r0, r0, #1 13b8e: 28ef cmp r0, #239 ; 0xef 13b90: f77e adfb ble.w 1278a 13b94: 2000 movs r0, #0 13b96: 47a8 blx r5 13b98: 231e movs r3, #30 13b9a: e7eb b.n 13b74 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 13b9c: 2201 movs r2, #1 13b9e: f7fe be0d b.w 127bc lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 13ba2: f8bb 2000 ldrh.w r2, [fp] 13ba6: f7fe be47 b.w 12838 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 13baa: f8bd 2004 ldrh.w r2, [sp, #4] 13bae: f7fe be7d b.w 128ac lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 13bb2: 2201 movs r2, #1 13bb4: f7fe beaa b.w 1290c lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 13bb8: 2000 movs r0, #0 13bba: 47a8 blx r5 13bbc: 230f movs r3, #15 13bbe: 2250 movs r2, #80 ; 0x50 13bc0: fb00 2203 mla r2, r0, r3, r2 13bc4: 23a0 movs r3, #160 ; 0xa0 13bc6: fb92 f2f3 sdiv r2, r2, r3 13bca: b212 sxth r2, r2 13bcc: f7fe beb4 b.w 12938 13bd0: 47a8 blx r5 13bd2: ebc0 1000 rsb r0, r0, r0, lsl #4 13bd6: 0040 lsls r0, r0, #1 13bd8: 28ef cmp r0, #239 ; 0xef 13bda: f77e aeac ble.w 12936 13bde: 2000 movs r0, #0 13be0: 47a8 blx r5 13be2: 231e movs r3, #30 13be4: e7eb b.n 13bbe lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 13be6: 2000 movs r0, #0 13be8: 47a8 blx r5 13bea: 230f movs r3, #15 13bec: 2250 movs r2, #80 ; 0x50 13bee: fb00 2203 mla r2, r0, r3, r2 13bf2: 23a0 movs r3, #160 ; 0xa0 13bf4: fb92 f2f3 sdiv r2, r2, r3 13bf8: b212 sxth r2, r2 13bfa: f7fe beb3 b.w 12964 13bfe: 47a8 blx r5 13c00: ebc0 1000 rsb r0, r0, r0, lsl #4 13c04: 0040 lsls r0, r0, #1 13c06: 28ef cmp r0, #239 ; 0xef 13c08: f77e aeab ble.w 12962 13c0c: 2000 movs r0, #0 13c0e: 47a8 blx r5 13c10: 231e movs r3, #30 13c12: e7eb b.n 13bec lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 13c14: 2000 movs r0, #0 13c16: 47a8 blx r5 13c18: 230f movs r3, #15 13c1a: 2250 movs r2, #80 ; 0x50 13c1c: fb00 2203 mla r2, r0, r3, r2 13c20: 23a0 movs r3, #160 ; 0xa0 13c22: fb92 f2f3 sdiv r2, r2, r3 13c26: b212 sxth r2, r2 13c28: f7fe beb2 b.w 12990 13c2c: 47a8 blx r5 13c2e: ebc0 1000 rsb r0, r0, r0, lsl #4 13c32: 0040 lsls r0, r0, #1 13c34: 28ef cmp r0, #239 ; 0xef 13c36: f77e aeaa ble.w 1298e 13c3a: 2000 movs r0, #0 13c3c: 47a8 blx r5 13c3e: 231e movs r3, #30 13c40: e7eb b.n 13c1a lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 13c42: 2201 movs r2, #1 13c44: f7fe bec0 b.w 129c8 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 13c48: 2201 movs r2, #1 13c4a: f7fe bee8 b.w 12a1e lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13c4e: 2201 movs r2, #1 13c50: f7fe bf31 b.w 12ab6 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13c54: 2201 movs r2, #1 13c56: f7fe bf47 b.w 12ae8 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13c5a: 2201 movs r2, #1 13c5c: f7fe bf5d b.w 12b1a lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 13c60: 2201 movs r2, #1 13c62: f7fe bf7d b.w 12b60 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 13c66: 2201 movs r2, #1 13c68: f7fe bf90 b.w 12b8c lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13c6c: 2201 movs r2, #1 13c6e: f7fe bfa5 b.w 12bbc lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 13c72: 2201 movs r2, #1 13c74: f7fe bfc9 b.w 12c0a lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 13c78: 2201 movs r2, #1 13c7a: f7fe bfdf b.w 12c3c 13c7e: bf00 nop 13c80: 00d6dde3 .word 0x00d6dde3 13c84: 00808a97 .word 0x00808a97 13c88: 2000c7d4 .word 0x2000c7d4 13c8c: 0000d951 .word 0x0000d951 13c90: 00005879 .word 0x00005879 13c94: 00010329 .word 0x00010329 13c98: 00002f39 .word 0x00002f39 13c9c: 2000c7dc .word 0x2000c7dc 13ca0: 000102f1 .word 0x000102f1 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 13ca4: 2201 movs r2, #1 13ca6: f7fe bff3 b.w 12c90 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13caa: 2201 movs r2, #1 13cac: f7ff b81d b.w 12cea lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13cb0: 2201 movs r2, #1 13cb2: f7ff b831 b.w 12d18 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13cb6: 2201 movs r2, #1 13cb8: f7ff b845 b.w 12d46 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 13cbc: 2201 movs r2, #1 13cbe: f7ff b859 b.w 12d74 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 13cc2: 2201 movs r2, #1 13cc4: f7ff b871 b.w 12daa lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 13cc8: 4603 mov r3, r0 13cca: 4602 mov r2, r0 13ccc: f7ff b886 b.w 12ddc lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13cd0: 2201 movs r2, #1 13cd2: f7ff b8a4 b.w 12e1e lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13cd6: 2201 movs r2, #1 13cd8: f7ff b8b8 b.w 12e4c lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13cdc: 2201 movs r2, #1 13cde: f7ff b8cc b.w 12e7a lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13ce2: 2201 movs r2, #1 13ce4: f7ff b8e0 b.w 12ea8 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 13ce8: 2201 movs r2, #1 13cea: f7ff b8f4 b.w 12ed6 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 13cee: 2201 movs r2, #1 13cf0: f7ff b91e b.w 12f30 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 13cf4: 4bc2 ldr r3, [pc, #776] ; (14000 ) 13cf6: f640 1099 movw r0, #2457 ; 0x999 13cfa: 4798 blx r3 13cfc: 4602 mov r2, r0 13cfe: f7ff b923 b.w 12f48 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 13d02: 2201 movs r2, #1 13d04: f7ff b952 b.w 12fac lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 13d08: 2201 movs r2, #1 13d0a: f7ff b966 b.w 12fda lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 13d0e: 2201 movs r2, #1 13d10: f7ff b97a b.w 13008 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 13d14: 2201 movs r2, #1 13d16: f7ff b9ad b.w 13074 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 13d1a: 2201 movs r2, #1 13d1c: f7ff b9bd b.w 1309a lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 13d20: 48b8 ldr r0, [pc, #736] ; (14004 ) 13d22: 47b8 blx r7 13d24: f7ff b9cf b.w 130c6 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13d28: 2201 movs r2, #1 13d2a: f7ff b9fa b.w 13122 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 13d2e: 2201 movs r2, #1 13d30: f7ff ba0f b.w 13152 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13d34: 2000 movs r0, #0 13d36: 47a8 blx r5 13d38: 230f movs r3, #15 13d3a: 2250 movs r2, #80 ; 0x50 13d3c: fb00 2203 mla r2, r0, r3, r2 13d40: 23a0 movs r3, #160 ; 0xa0 13d42: fb92 f2f3 sdiv r2, r2, r3 13d46: b212 sxth r2, r2 13d48: f7ff bb10 b.w 1336c 13d4c: 47a8 blx r5 13d4e: ebc0 1000 rsb r0, r0, r0, lsl #4 13d52: 0040 lsls r0, r0, #1 13d54: 28ef cmp r0, #239 ; 0xef 13d56: f77f ab08 ble.w 1336a 13d5a: 2000 movs r0, #0 13d5c: 47a8 blx r5 13d5e: 231e movs r3, #30 13d60: e7eb b.n 13d3a lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13d62: 2000 movs r0, #0 13d64: 47a8 blx r5 13d66: 230f movs r3, #15 13d68: 2250 movs r2, #80 ; 0x50 13d6a: fb00 2203 mla r2, r0, r3, r2 13d6e: 23a0 movs r3, #160 ; 0xa0 13d70: fb92 f2f3 sdiv r2, r2, r3 13d74: b212 sxth r2, r2 13d76: f7ff bb0d b.w 13394 13d7a: 47a8 blx r5 13d7c: ebc0 1000 rsb r0, r0, r0, lsl #4 13d80: 0040 lsls r0, r0, #1 13d82: 28ef cmp r0, #239 ; 0xef 13d84: f77f ab05 ble.w 13392 13d88: 2000 movs r0, #0 13d8a: 47a8 blx r5 13d8c: 231e movs r3, #30 13d8e: e7eb b.n 13d68 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13d90: 2000 movs r0, #0 13d92: 47a8 blx r5 13d94: 230f movs r3, #15 13d96: 2250 movs r2, #80 ; 0x50 13d98: fb00 2203 mla r2, r0, r3, r2 13d9c: 23a0 movs r3, #160 ; 0xa0 13d9e: fb92 f2f3 sdiv r2, r2, r3 13da2: b212 sxth r2, r2 13da4: f7ff bb0a b.w 133bc 13da8: 47a8 blx r5 13daa: ebc0 1000 rsb r0, r0, r0, lsl #4 13dae: 0040 lsls r0, r0, #1 13db0: 28ef cmp r0, #239 ; 0xef 13db2: f77f ab02 ble.w 133ba 13db6: 2000 movs r0, #0 13db8: 47a8 blx r5 13dba: 231e movs r3, #30 13dbc: e7eb b.n 13d96 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13dbe: 2000 movs r0, #0 13dc0: 47a8 blx r5 13dc2: 230f movs r3, #15 13dc4: 2250 movs r2, #80 ; 0x50 13dc6: fb00 2203 mla r2, r0, r3, r2 13dca: 23a0 movs r3, #160 ; 0xa0 13dcc: fb92 f2f3 sdiv r2, r2, r3 13dd0: b212 sxth r2, r2 13dd2: f7ff bb07 b.w 133e4 13dd6: 47a8 blx r5 13dd8: ebc0 1000 rsb r0, r0, r0, lsl #4 13ddc: 0040 lsls r0, r0, #1 13dde: 28ef cmp r0, #239 ; 0xef 13de0: f77f aaff ble.w 133e2 13de4: 2000 movs r0, #0 13de6: 47a8 blx r5 13de8: 231e movs r3, #30 13dea: e7eb b.n 13dc4 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 13dec: 2000 movs r0, #0 13dee: 47a8 blx r5 13df0: 230f movs r3, #15 13df2: 2250 movs r2, #80 ; 0x50 13df4: fb00 2203 mla r2, r0, r3, r2 13df8: 23a0 movs r3, #160 ; 0xa0 13dfa: fb92 f2f3 sdiv r2, r2, r3 13dfe: b212 sxth r2, r2 13e00: f7ff bb04 b.w 1340c 13e04: 47a8 blx r5 13e06: ebc0 1000 rsb r0, r0, r0, lsl #4 13e0a: 0040 lsls r0, r0, #1 13e0c: 28ef cmp r0, #239 ; 0xef 13e0e: f77f aafc ble.w 1340a 13e12: 2000 movs r0, #0 13e14: 47a8 blx r5 13e16: 231e movs r3, #30 13e18: e7eb b.n 13df2 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 13e1a: 2000 movs r0, #0 13e1c: 47a8 blx r5 13e1e: 230f movs r3, #15 13e20: 2250 movs r2, #80 ; 0x50 13e22: fb00 2203 mla r2, r0, r3, r2 13e26: f06f 039f mvn.w r3, #159 ; 0x9f 13e2a: fb92 f2f3 sdiv r2, r2, r3 13e2e: b212 sxth r2, r2 13e30: f7ff bb01 b.w 13436 13e34: 47a8 blx r5 13e36: ebc0 1000 rsb r0, r0, r0, lsl #4 13e3a: 0040 lsls r0, r0, #1 13e3c: 28ef cmp r0, #239 ; 0xef 13e3e: f77f aaf8 ble.w 13432 13e42: 2000 movs r0, #0 13e44: 47a8 blx r5 13e46: 231e movs r3, #30 13e48: e7ea b.n 13e20 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 13e4a: 2201 movs r2, #1 13e4c: f7ff bb33 b.w 134b6 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 13e50: 2201 movs r2, #1 13e52: f7ff bba6 b.w 135a2 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 13e56: 2201 movs r2, #1 13e58: f7ff bbf9 b.w 1364e lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13e5c: 2201 movs r2, #1 13e5e: e431 b.n 136c4 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13e60: 2201 movs r2, #1 13e62: e446 b.n 136f2 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 13e64: 2201 movs r2, #1 13e66: e45b b.n 13720 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 13e68: 2201 movs r2, #1 13e6a: e494 b.n 13796 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 13e6c: 2201 movs r2, #1 13e6e: e4aa b.n 137c6 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 13e70: 2201 movs r2, #1 13e72: e4df b.n 13834 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13e74: 2000 movs r0, #0 13e76: 47a8 blx r5 13e78: 230f movs r3, #15 13e7a: 2250 movs r2, #80 ; 0x50 13e7c: fb00 2203 mla r2, r0, r3, r2 13e80: 23a0 movs r3, #160 ; 0xa0 13e82: fb92 f2f3 sdiv r2, r2, r3 13e86: b212 sxth r2, r2 13e88: e4f4 b.n 13874 13e8a: 47a8 blx r5 13e8c: ebc0 1000 rsb r0, r0, r0, lsl #4 13e90: 0040 lsls r0, r0, #1 13e92: 28ef cmp r0, #239 ; 0xef 13e94: f77f aced ble.w 13872 13e98: 2000 movs r0, #0 13e9a: 47a8 blx r5 13e9c: 231e movs r3, #30 13e9e: e7ec b.n 13e7a lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13ea0: 2000 movs r0, #0 13ea2: 47a8 blx r5 13ea4: 230f movs r3, #15 13ea6: 2250 movs r2, #80 ; 0x50 13ea8: fb00 2203 mla r2, r0, r3, r2 13eac: 23a0 movs r3, #160 ; 0xa0 13eae: fb92 f2f3 sdiv r2, r2, r3 13eb2: b212 sxth r2, r2 13eb4: e507 b.n 138c6 13eb6: 47a8 blx r5 13eb8: ebc0 1000 rsb r0, r0, r0, lsl #4 13ebc: 0040 lsls r0, r0, #1 13ebe: 28ef cmp r0, #239 ; 0xef 13ec0: f77f ad00 ble.w 138c4 13ec4: 2000 movs r0, #0 13ec6: 47a8 blx r5 13ec8: 231e movs r3, #30 13eca: e7ec b.n 13ea6 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13ecc: 2000 movs r0, #0 13ece: 47a8 blx r5 13ed0: 230f movs r3, #15 13ed2: 2250 movs r2, #80 ; 0x50 13ed4: fb00 2203 mla r2, r0, r3, r2 13ed8: 23a0 movs r3, #160 ; 0xa0 13eda: fb92 f2f3 sdiv r2, r2, r3 13ede: b212 sxth r2, r2 13ee0: e505 b.n 138ee 13ee2: 47a8 blx r5 13ee4: ebc0 1000 rsb r0, r0, r0, lsl #4 13ee8: 0040 lsls r0, r0, #1 13eea: 28ef cmp r0, #239 ; 0xef 13eec: f77f acfe ble.w 138ec 13ef0: 2000 movs r0, #0 13ef2: 47a8 blx r5 13ef4: 231e movs r3, #30 13ef6: e7ec b.n 13ed2 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13ef8: 2000 movs r0, #0 13efa: 47a8 blx r5 13efc: 230f movs r3, #15 13efe: 2250 movs r2, #80 ; 0x50 13f00: fb00 2203 mla r2, r0, r3, r2 13f04: 23a0 movs r3, #160 ; 0xa0 13f06: fb92 f2f3 sdiv r2, r2, r3 13f0a: b212 sxth r2, r2 13f0c: e503 b.n 13916 13f0e: 47a8 blx r5 13f10: ebc0 1000 rsb r0, r0, r0, lsl #4 13f14: 0040 lsls r0, r0, #1 13f16: 28ef cmp r0, #239 ; 0xef 13f18: f77f acfc ble.w 13914 13f1c: 2000 movs r0, #0 13f1e: 47a8 blx r5 13f20: 231e movs r3, #30 13f22: e7ec b.n 13efe lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 13f24: 2000 movs r0, #0 13f26: 47a8 blx r5 13f28: 230f movs r3, #15 13f2a: 2250 movs r2, #80 ; 0x50 13f2c: fb00 2203 mla r2, r0, r3, r2 13f30: 23a0 movs r3, #160 ; 0xa0 13f32: fb92 f2f3 sdiv r2, r2, r3 13f36: b212 sxth r2, r2 13f38: e501 b.n 1393e 13f3a: 47a8 blx r5 13f3c: ebc0 1000 rsb r0, r0, r0, lsl #4 13f40: 0040 lsls r0, r0, #1 13f42: 28ef cmp r0, #239 ; 0xef 13f44: f77f acfa ble.w 1393c 13f48: 2000 movs r0, #0 13f4a: 47a8 blx r5 13f4c: 231e movs r3, #30 13f4e: e7ec b.n 13f2a lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13f50: 2000 movs r0, #0 13f52: 47a8 blx r5 13f54: 230f movs r3, #15 13f56: 2250 movs r2, #80 ; 0x50 13f58: fb00 2203 mla r2, r0, r3, r2 13f5c: 23a0 movs r3, #160 ; 0xa0 13f5e: fb92 f2f3 sdiv r2, r2, r3 13f62: b212 sxth r2, r2 13f64: e51a b.n 1399c 13f66: 47a8 blx r5 13f68: ebc0 1000 rsb r0, r0, r0, lsl #4 13f6c: 0040 lsls r0, r0, #1 13f6e: 28ef cmp r0, #239 ; 0xef 13f70: f77f ad13 ble.w 1399a 13f74: 2000 movs r0, #0 13f76: 47a8 blx r5 13f78: 231e movs r3, #30 13f7a: e7ec b.n 13f56 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13f7c: 2000 movs r0, #0 13f7e: 47a8 blx r5 13f80: 230f movs r3, #15 13f82: 2250 movs r2, #80 ; 0x50 13f84: fb00 2203 mla r2, r0, r3, r2 13f88: 23a0 movs r3, #160 ; 0xa0 13f8a: fb92 f2f3 sdiv r2, r2, r3 13f8e: b212 sxth r2, r2 13f90: e518 b.n 139c4 13f92: 47a8 blx r5 13f94: ebc0 1000 rsb r0, r0, r0, lsl #4 13f98: 0040 lsls r0, r0, #1 13f9a: 28ef cmp r0, #239 ; 0xef 13f9c: f77f ad11 ble.w 139c2 13fa0: 2000 movs r0, #0 13fa2: 47a8 blx r5 13fa4: 231e movs r3, #30 13fa6: e7ec b.n 13f82 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13fa8: 2000 movs r0, #0 13faa: 47a8 blx r5 13fac: 230f movs r3, #15 13fae: 2250 movs r2, #80 ; 0x50 13fb0: fb00 2203 mla r2, r0, r3, r2 13fb4: 23a0 movs r3, #160 ; 0xa0 13fb6: fb92 f2f3 sdiv r2, r2, r3 13fba: b212 sxth r2, r2 13fbc: e517 b.n 139ee 13fbe: 47a8 blx r5 13fc0: ebc0 1000 rsb r0, r0, r0, lsl #4 13fc4: 0040 lsls r0, r0, #1 13fc6: 28ef cmp r0, #239 ; 0xef 13fc8: f77f ad10 ble.w 139ec 13fcc: 2000 movs r0, #0 13fce: 47a8 blx r5 13fd0: 231e movs r3, #30 13fd2: e7ec b.n 13fae lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 13fd4: 2000 movs r0, #0 13fd6: 47b0 blx r6 13fd8: 230f movs r3, #15 13fda: 2250 movs r2, #80 ; 0x50 13fdc: fb00 2203 mla r2, r0, r3, r2 13fe0: 23a0 movs r3, #160 ; 0xa0 13fe2: fb92 f2f3 sdiv r2, r2, r3 13fe6: b212 sxth r2, r2 13fe8: e516 b.n 13a18 13fea: 47b0 blx r6 13fec: ebc0 1000 rsb r0, r0, r0, lsl #4 13ff0: 0040 lsls r0, r0, #1 13ff2: 28ef cmp r0, #239 ; 0xef 13ff4: f77f ad0f ble.w 13a16 13ff8: 2000 movs r0, #0 13ffa: 47b0 blx r6 13ffc: 231e movs r3, #30 13ffe: e7ec b.n 13fda 14000: 000102f1 .word 0x000102f1 14004: 00a1adbd .word 0x00a1adbd 00014008 : * 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) { 14008: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1400c: 4ba4 ldr r3, [pc, #656] ; (142a0 ) { 1400e: b0a7 sub sp, #156 ; 0x9c 14010: 4616 mov r6, r2 14012: 4604 mov r4, r0 14014: 460f mov r7, r1 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14016: 4798 blx r3 if(mode == LV_DESIGN_COVER_CHK) { 14018: 2e02 cmp r6, #2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1401a: 4605 mov r5, r0 if(mode == LV_DESIGN_COVER_CHK) { 1401c: d163 bne.n 140e6 _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) 1401e: f8df 82b4 ldr.w r8, [pc, #692] ; 142d4 14022: 4632 mov r2, r6 14024: 2100 movs r1, #0 14026: 4620 mov r0, r4 14028: 47c0 blx r8 if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 1402a: 2800 cmp r0, #0 1402c: f040 81ff bne.w 1442e if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 14030: 7d2b ldrb r3, [r5, #20] 14032: 0799 lsls r1, r3, #30 14034: d42a bmi.n 1408c /*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; 14036: f003 03f8 and.w r3, r3, #248 ; 0xf8 1403a: 2b20 cmp r3, #32 1403c: d001 beq.n 14042 1403e: 2b08 cmp r3, #8 14040: d124 bne.n 1408c _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) 14042: 2206 movs r2, #6 14044: 2100 movs r1, #0 14046: 4620 mov r0, r4 14048: 47c0 blx r8 int32_t angle_final = lv_obj_get_style_transform_angle(img, LV_IMG_PART_MAIN); angle_final += ext->angle; 1404a: 89ab ldrh r3, [r5, #12] if(angle_final == 0) return LV_DESIGN_RES_NOT_COVER; 1404c: 42c3 cmn r3, r0 1404e: d01d beq.n 1408c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 14050: 2207 movs r2, #7 14052: 2100 movs r1, #0 14054: 4620 mov r0, r4 14056: 47c0 blx r8 int32_t zoom_final = lv_obj_get_style_transform_zoom(img, LV_IMG_PART_MAIN); zoom_final = (zoom_final * ext->zoom) >> 8; 14058: f8b5 8012 ldrh.w r8, [r5, #18] 1405c: f8df 9278 ldr.w r9, [pc, #632] ; 142d8 14060: fb00 f808 mul.w r8, r0, r8 14064: ea4f 2828 mov.w r8, r8, asr #8 if(zoom_final != LV_IMG_ZOOM_NONE) { 14068: f5b8 7f80 cmp.w r8, #256 ; 0x100 1406c: d012 beq.n 14094 if(_lv_area_is_in(clip_area, &img->coords, 0) == false) return LV_DESIGN_RES_NOT_COVER; 1406e: 2200 movs r2, #0 14070: 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; 14074: 4638 mov r0, r7 14076: 47c8 blx r9 14078: b140 cbz r0, 1408c _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) 1407a: 4b8a ldr r3, [pc, #552] ; (142a4 ) 1407c: f248 02ac movw r2, #32940 ; 0x80ac 14080: 2100 movs r1, #0 14082: 4620 mov r0, r4 14084: 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; 14086: 28ff cmp r0, #255 ; 0xff 14088: bf08 it eq 1408a: 2601 moveq r6, #1 lv_draw_rect(&img->coords, clip_area, &draw_dsc); } } return LV_DESIGN_RES_OK; } 1408c: 4630 mov r0, r6 1408e: b027 add sp, #156 ; 0x9c 14090: 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); 14094: 4b84 ldr r3, [pc, #528] ; (142a8 ) 14096: 4620 mov r0, r4 14098: 4798 blx r3 1409a: 4b84 ldr r3, [pc, #528] ; (142ac ) 1409c: 9003 str r0, [sp, #12] 1409e: 4620 mov r0, r4 140a0: 4798 blx r3 140a2: 350e adds r5, #14 140a4: 4602 mov r2, r0 140a6: e9cd 8500 strd r8, r5, [sp] 140aa: 9903 ldr r1, [sp, #12] 140ac: 4d80 ldr r5, [pc, #512] ; (142b0 ) 140ae: 2300 movs r3, #0 140b0: a811 add r0, sp, #68 ; 0x44 140b2: 47a8 blx r5 a.x1 += img->coords.x1; 140b4: 8a22 ldrh r2, [r4, #16] 140b6: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 a.y1 += img->coords.y1; 140ba: f8bd 1046 ldrh.w r1, [sp, #70] ; 0x46 a.x1 += img->coords.x1; 140be: 4413 add r3, r2 140c0: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 a.y1 += img->coords.y1; 140c4: 8a63 ldrh r3, [r4, #18] 140c6: 4419 add r1, r3 140c8: f8ad 1046 strh.w r1, [sp, #70] ; 0x46 a.x2 += img->coords.x1; 140cc: f8bd 1048 ldrh.w r1, [sp, #72] ; 0x48 140d0: 440a add r2, r1 140d2: f8ad 2048 strh.w r2, [sp, #72] ; 0x48 a.y2 += img->coords.y1; 140d6: f8bd 204a ldrh.w r2, [sp, #74] ; 0x4a 140da: 4413 add r3, r2 140dc: f8ad 304a strh.w r3, [sp, #74] ; 0x4a if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER; 140e0: 2200 movs r2, #0 140e2: a911 add r1, sp, #68 ; 0x44 140e4: e7c6 b.n 14074 else if(mode == LV_DESIGN_DRAW_MAIN) { 140e6: 2e00 cmp r6, #0 140e8: f040 8176 bne.w 143d8 if(ext->h == 0 || ext->w == 0) return true; 140ec: f9b0 300a ldrsh.w r3, [r0, #10] 140f0: 2b00 cmp r3, #0 140f2: f000 816f beq.w 143d4 140f6: f9b0 3008 ldrsh.w r3, [r0, #8] 140fa: 2b00 cmp r3, #0 140fc: f000 816a beq.w 143d4 lv_obj_get_coords(img, &img_coords); 14100: a904 add r1, sp, #16 14102: 4b6c ldr r3, [pc, #432] ; (142b4 ) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 14104: f8df 91cc ldr.w r9, [pc, #460] ; 142d4 14108: 4620 mov r0, r4 1410a: 4798 blx r3 lv_draw_rect_dsc_init(&bg_dsc); 1410c: 4b6a ldr r3, [pc, #424] ; (142b8 ) 1410e: a811 add r0, sp, #68 ; 0x44 14110: 4798 blx r3 lv_obj_init_draw_rect_dsc(img, LV_IMG_PART_MAIN, &bg_dsc); 14112: aa11 add r2, sp, #68 ; 0x44 14114: 4631 mov r1, r6 14116: 4620 mov r0, r4 14118: 4b68 ldr r3, [pc, #416] ; (142bc ) 1411a: 4798 blx r3 1411c: 2233 movs r2, #51 ; 0x33 1411e: 4631 mov r1, r6 14120: 4620 mov r0, r4 14122: 47c8 blx r9 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 14124: b108 cbz r0, 1412a bg_dsc.border_opa = LV_OPA_TRANSP; 14126: f88d 6058 strb.w r6, [sp, #88] ; 0x58 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 1412a: 2207 movs r2, #7 1412c: 2100 movs r1, #0 1412e: 4620 mov r0, r4 14130: 47c8 blx r9 zoom_final = (zoom_final * ext->zoom) >> 8; 14132: f8b5 8012 ldrh.w r8, [r5, #18] 14136: fb00 f008 mul.w r0, r0, r8 if(zoom_final == 0) return LV_DESIGN_RES_OK; 1413a: ea5f 2820 movs.w r8, r0, asr #8 1413e: d0a5 beq.n 1408c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 14140: 2206 movs r2, #6 14142: 2100 movs r1, #0 14144: 4620 mov r0, r4 14146: 47c8 blx r9 * @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); 14148: f8bd 2016 ldrh.w r2, [sp, #22] 1414c: f8bd 3012 ldrh.w r3, [sp, #18] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 14150: f8bd 1014 ldrh.w r1, [sp, #20] angle_final += ext->angle; 14154: 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), 14158: f8df b154 ldr.w fp, [pc, #340] ; 142b0 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1415c: 3201 adds r2, #1 1415e: 1ad2 subs r2, r2, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 14160: f8bd 3010 ldrh.w r3, [sp, #16] 14164: 3101 adds r1, #1 angle_final += ext->angle; 14166: 4482 add sl, r0 14168: 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), 1416a: fa1f f888 uxth.w r8, r8 1416e: f105 030e add.w r3, r5, #14 14172: e9cd 8300 strd r8, r3, [sp] 14176: b212 sxth r2, r2 14178: fa0f f38a sxth.w r3, sl 1417c: b209 sxth r1, r1 1417e: a806 add r0, sp, #24 14180: 47d8 blx fp bg_coords.x1 += img_coords.x1; 14182: f8bd 2010 ldrh.w r2, [sp, #16] 14186: f8bd 3018 ldrh.w r3, [sp, #24] bg_coords.y1 += img_coords.y1; 1418a: f8bd 101a ldrh.w r1, [sp, #26] bg_coords.x1 += img_coords.x1; 1418e: 4413 add r3, r2 14190: f8ad 3018 strh.w r3, [sp, #24] bg_coords.y1 += img_coords.y1; 14194: f8bd 3012 ldrh.w r3, [sp, #18] 14198: 4419 add r1, r3 1419a: f8ad 101a strh.w r1, [sp, #26] bg_coords.x2 += img_coords.x1; 1419e: f8bd 101c ldrh.w r1, [sp, #28] 141a2: 440a add r2, r1 141a4: f8ad 201c strh.w r2, [sp, #28] bg_coords.y2 += img_coords.y1; 141a8: f8bd 201e ldrh.w r2, [sp, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 141ac: 2100 movs r1, #0 141ae: 4413 add r3, r2 141b0: 4620 mov r0, r4 141b2: 2212 movs r2, #18 141b4: f8ad 301e strh.w r3, [sp, #30] 141b8: 47c8 blx r9 bg_coords.x1 -= lv_obj_get_style_pad_left(img, LV_IMG_PART_MAIN); 141ba: f8bd 3018 ldrh.w r3, [sp, #24] 141be: 1a18 subs r0, r3, r0 141c0: f8ad 0018 strh.w r0, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 141c4: 2213 movs r2, #19 141c6: 2100 movs r1, #0 141c8: 4620 mov r0, r4 141ca: 47c8 blx r9 bg_coords.x2 += lv_obj_get_style_pad_right(img, LV_IMG_PART_MAIN); 141cc: f8bd 301c ldrh.w r3, [sp, #28] 141d0: 4418 add r0, r3 141d2: f8ad 001c strh.w r0, [sp, #28] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 141d6: 2210 movs r2, #16 141d8: 2100 movs r1, #0 141da: 4620 mov r0, r4 141dc: 47c8 blx r9 bg_coords.y1 -= lv_obj_get_style_pad_top(img, LV_IMG_PART_MAIN); 141de: f8bd 301a ldrh.w r3, [sp, #26] 141e2: 1a18 subs r0, r3, r0 141e4: f8ad 001a strh.w r0, [sp, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 141e8: 2211 movs r2, #17 141ea: 2100 movs r1, #0 141ec: 4620 mov r0, r4 141ee: 47c8 blx r9 bg_coords.y2 += lv_obj_get_style_pad_bottom(img, LV_IMG_PART_MAIN); 141f0: f8bd 301e ldrh.w r3, [sp, #30] 141f4: 4418 add r0, r3 141f6: f8ad 001e strh.w r0, [sp, #30] lv_draw_rect(&bg_coords, clip_area, &bg_dsc); 141fa: aa11 add r2, sp, #68 ; 0x44 141fc: 4639 mov r1, r7 141fe: a806 add r0, sp, #24 14200: 4b2f ldr r3, [pc, #188] ; (142c0 ) 14202: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 14204: 2202 movs r2, #2 14206: 2100 movs r1, #0 14208: 4620 mov r0, r4 1420a: 47c8 blx r9 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 1420c: b198 cbz r0, 14236 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 1420e: 4b2d ldr r3, [pc, #180] ; (142c4 ) 14210: 201c movs r0, #28 14212: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 14214: 2201 movs r2, #1 14216: 4683 mov fp, r0 14218: 2100 movs r1, #0 1421a: 4620 mov r0, r4 1421c: 47c8 blx r9 lv_draw_mask_radius_init(mp, &bg_coords, r, false); 1421e: 2300 movs r3, #0 14220: 4602 mov r2, r0 14222: a906 add r1, sp, #24 14224: 4658 mov r0, fp 14226: f8df 90b4 ldr.w r9, [pc, #180] ; 142dc 1422a: 47c8 blx r9 lv_draw_mask_add(mp, img + 8); 1422c: 4b26 ldr r3, [pc, #152] ; (142c8 ) 1422e: f504 7118 add.w r1, r4, #608 ; 0x260 14232: 4658 mov r0, fp 14234: 4798 blx r3 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_VARIABLE) { 14236: 7d2b ldrb r3, [r5, #20] 14238: 079a lsls r2, r3, #30 1423a: f100 809d bmi.w 14378 img_coords.x1 += ext->offset.x; 1423e: f8bd 2010 ldrh.w r2, [sp, #16] 14242: 88ab ldrh r3, [r5, #4] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 14244: f9b4 c010 ldrsh.w ip, [r4, #16] img_coords.y1 += ext->offset.y; 14248: 88e9 ldrh r1, [r5, #6] img_coords.x1 += ext->offset.x; 1424a: 441a add r2, r3 1424c: b290 uxth r0, r2 1424e: b212 sxth r2, r2 if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 14250: 4594 cmp ip, r2 img_coords.x1 += ext->offset.x; 14252: f8ad 2010 strh.w r2, [sp, #16] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 14256: bfb8 it lt 14258: 892a ldrhlt r2, [r5, #8] img_coords.y1 += ext->offset.y; 1425a: f8bd 3012 ldrh.w r3, [sp, #18] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 1425e: bfbc itt lt 14260: 1a82 sublt r2, r0, r2 14262: f8ad 2010 strhlt.w r2, [sp, #16] img_coords.y1 += ext->offset.y; 14266: 440b add r3, r1 if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 14268: f9b4 2012 ldrsh.w r2, [r4, #18] img_coords.y1 += ext->offset.y; 1426c: b299 uxth r1, r3 1426e: b21b sxth r3, r3 if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 14270: 429a cmp r2, r3 img_coords.y1 += ext->offset.y; 14272: f8ad 3012 strh.w r3, [sp, #18] if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 14276: bfbe ittt lt 14278: 896b ldrhlt r3, [r5, #10] 1427a: 1acb sublt r3, r1, r3 1427c: f8ad 3012 strhlt.w r3, [sp, #18] lv_draw_img_dsc_init(&img_dsc); 14280: a80a add r0, sp, #40 ; 0x28 14282: 4b12 ldr r3, [pc, #72] ; (142cc ) 14284: 4798 blx r3 lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc); 14286: 4b12 ldr r3, [pc, #72] ; (142d0 ) 14288: aa0a add r2, sp, #40 ; 0x28 1428a: 2100 movs r1, #0 1428c: 4620 mov r0, r4 1428e: 4798 blx r3 img_dsc.zoom = zoom_final; 14290: f8ad 8030 strh.w r8, [sp, #48] ; 0x30 if(img_dsc.zoom == 0) return LV_DESIGN_RES_OK; 14294: f1b8 0f00 cmp.w r8, #0 14298: d122 bne.n 142e0 return LV_DESIGN_RES_OK; 1429a: 2600 movs r6, #0 1429c: e6f6 b.n 1408c 1429e: bf00 nop 142a0: 00003fa9 .word 0x00003fa9 142a4: 00003839 .word 0x00003839 142a8: 000023ed .word 0x000023ed 142ac: 0000243d .word 0x0000243d 142b0: 0000c061 .word 0x0000c061 142b4: 000022d5 .word 0x000022d5 142b8: 00009ba1 .word 0x00009ba1 142bc: 000042a9 .word 0x000042a9 142c0: 00009bed .word 0x00009bed 142c4: 0000eeb5 .word 0x0000eeb5 142c8: 00009711 .word 0x00009711 142cc: 00007559 .word 0x00007559 142d0: 0000489d .word 0x0000489d 142d4: 00003711 .word 0x00003711 142d8: 0000e091 .word 0x0000e091 142dc: 00009915 .word 0x00009915 img_dsc.pivot.x = ext->pivot.x; 142e0: 89eb ldrh r3, [r5, #14] 142e2: f8ad 302c strh.w r3, [sp, #44] ; 0x2c img_dsc.pivot.y = ext->pivot.y; 142e6: 8a2b ldrh r3, [r5, #16] 142e8: f8ad 302e strh.w r3, [sp, #46] ; 0x2e img_dsc.antialias = ext->antialias; 142ec: 7d6b ldrb r3, [r5, #21] 142ee: f89d 2037 ldrb.w r2, [sp, #55] ; 0x37 lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 142f2: 4c50 ldr r4, [pc, #320] ; (14434 ) img_dsc.angle = angle_final; 142f4: f8ad a02a strh.w sl, [sp, #42] ; 0x2a img_dsc.antialias = ext->antialias; 142f8: f3c3 0300 ubfx r3, r3, #0, #1 142fc: f363 0200 bfi r2, r3, #0, #1 14300: f88d 2037 strb.w r2, [sp, #55] ; 0x37 cords_tmp.y1 = img_coords.y1; 14304: f9bd 3012 ldrsh.w r3, [sp, #18] cords_tmp.y2 = img_coords.y1 + ext->h - 1; 14308: 896a ldrh r2, [r5, #10] cords_tmp.y1 = img_coords.y1; 1430a: f8ad 3022 strh.w r3, [sp, #34] ; 0x22 cords_tmp.y2 = img_coords.y1 + ext->h - 1; 1430e: 3b01 subs r3, #1 14310: 4413 add r3, r2 14312: b21b sxth r3, r3 for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 14314: f9bd 2022 ldrsh.w r2, [sp, #34] ; 0x22 cords_tmp.y2 = img_coords.y1 + ext->h - 1; 14318: 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) { 1431c: f9bd 3016 ldrsh.w r3, [sp, #22] 14320: 429a cmp r2, r3 14322: f73f aeb3 bgt.w 1408c cords_tmp.x1 = img_coords.x1; 14326: f9bd 3010 ldrsh.w r3, [sp, #16] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 1432a: 892a ldrh r2, [r5, #8] cords_tmp.x1 = img_coords.x1; 1432c: f8ad 3020 strh.w r3, [sp, #32] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 14330: 3b01 subs r3, #1 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 14332: 4413 add r3, r2 14334: b21b sxth r3, r3 14336: f9bd 2020 ldrsh.w r2, [sp, #32] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 1433a: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 1433e: f9bd 3014 ldrsh.w r3, [sp, #20] 14342: 429a cmp r2, r3 14344: dd0a ble.n 1435c for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 14346: 896b ldrh r3, [r5, #10] 14348: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 1434c: 441a add r2, r3 1434e: f8ad 2022 strh.w r2, [sp, #34] ; 0x22 14352: f8bd 2026 ldrh.w r2, [sp, #38] ; 0x26 14356: 4413 add r3, r2 14358: b21b sxth r3, r3 1435a: e7db b.n 14314 lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 1435c: 682a ldr r2, [r5, #0] 1435e: ab0a add r3, sp, #40 ; 0x28 14360: 4639 mov r1, r7 14362: a808 add r0, sp, #32 14364: 47a0 blx r4 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 14366: f8bd 2020 ldrh.w r2, [sp, #32] 1436a: 892b ldrh r3, [r5, #8] 1436c: 441a add r2, r3 1436e: f8ad 2020 strh.w r2, [sp, #32] 14372: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 14376: e7dc b.n 14332 else if(ext->src_type == LV_IMG_SRC_SYMBOL) { 14378: f003 0303 and.w r3, r3, #3 1437c: 2b02 cmp r3, #2 1437e: d118 bne.n 143b2 lv_draw_label_dsc_init(&label_dsc); 14380: a80a add r0, sp, #40 ; 0x28 14382: 4b2d ldr r3, [pc, #180] ; (14438 ) 14384: 4798 blx r3 lv_obj_init_draw_label_dsc(img, LV_IMG_PART_MAIN, &label_dsc); 14386: aa0a add r2, sp, #40 ; 0x28 14388: 4620 mov r0, r4 1438a: 4b2c ldr r3, [pc, #176] ; (1443c ) 1438c: 2100 movs r1, #0 1438e: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 14390: 4b2b ldr r3, [pc, #172] ; (14440 ) 14392: f248 02a9 movw r2, #32937 ; 0x80a9 14396: 2100 movs r1, #0 14398: 4620 mov r0, r4 1439a: 4798 blx r3 lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 1439c: 2300 movs r3, #0 1439e: 9300 str r3, [sp, #0] label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); 143a0: f8ad 0028 strh.w r0, [sp, #40] ; 0x28 lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 143a4: 682b ldr r3, [r5, #0] 143a6: 4c27 ldr r4, [pc, #156] ; (14444 ) 143a8: aa0a add r2, sp, #40 ; 0x28 143aa: 4639 mov r1, r7 143ac: a804 add r0, sp, #16 143ae: 47a0 blx r4 143b0: e66c b.n 1408c LV_LOG_WARN("lv_img_design: image source type is unknown"); 143b2: 4b25 ldr r3, [pc, #148] ; (14448 ) 143b4: 9300 str r3, [sp, #0] 143b6: 4925 ldr r1, [pc, #148] ; (1444c ) 143b8: 4b25 ldr r3, [pc, #148] ; (14450 ) 143ba: 4d26 ldr r5, [pc, #152] ; (14454 ) 143bc: f240 22bb movw r2, #699 ; 0x2bb 143c0: 2002 movs r0, #2 143c2: 47a8 blx r5 lv_draw_img(&img->coords, clip_area, NULL, NULL); 143c4: 2300 movs r3, #0 143c6: f104 0010 add.w r0, r4, #16 143ca: 461a mov r2, r3 143cc: 4c19 ldr r4, [pc, #100] ; (14434 ) 143ce: 4639 mov r1, r7 143d0: 47a0 blx r4 143d2: e65b b.n 1408c if(ext->h == 0 || ext->w == 0) return true; 143d4: 2601 movs r6, #1 143d6: e659 b.n 1408c else if(mode == LV_DESIGN_DRAW_POST) { 143d8: 2e01 cmp r6, #1 143da: f47f af5e bne.w 1429a _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 143de: 4d1e ldr r5, [pc, #120] ; (14458 ) 143e0: 2202 movs r2, #2 143e2: 2100 movs r1, #0 143e4: 4620 mov r0, r4 143e6: 47a8 blx r5 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 143e8: b128 cbz r0, 143f6 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8); 143ea: 4b1c ldr r3, [pc, #112] ; (1445c ) 143ec: f504 7018 add.w r0, r4, #608 ; 0x260 143f0: 4798 blx r3 _lv_mem_buf_release(param); 143f2: 4b1b ldr r3, [pc, #108] ; (14460 ) 143f4: 4798 blx r3 lv_draw_rect_dsc_init(&draw_dsc); 143f6: a811 add r0, sp, #68 ; 0x44 143f8: 4b1a ldr r3, [pc, #104] ; (14464 ) 143fa: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 143fc: 2233 movs r2, #51 ; 0x33 143fe: 2100 movs r1, #0 14400: 4620 mov r0, r4 14402: 47a8 blx r5 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 14404: 2800 cmp r0, #0 14406: f43f af48 beq.w 1429a draw_dsc.bg_opa = LV_OPA_TRANSP; 1440a: 2100 movs r1, #0 1440c: f88d 1050 strb.w r1, [sp, #80] ; 0x50 draw_dsc.pattern_opa = LV_OPA_TRANSP; 14410: f88d 107a strb.w r1, [sp, #122] ; 0x7a draw_dsc.shadow_opa = LV_OPA_TRANSP; 14414: f88d 106c strb.w r1, [sp, #108] ; 0x6c lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); 14418: aa11 add r2, sp, #68 ; 0x44 1441a: 4620 mov r0, r4 1441c: 4b12 ldr r3, [pc, #72] ; (14468 ) 1441e: 4798 blx r3 lv_draw_rect(&img->coords, clip_area, &draw_dsc); 14420: 4b12 ldr r3, [pc, #72] ; (1446c ) 14422: aa11 add r2, sp, #68 ; 0x44 14424: 4639 mov r1, r7 14426: f104 0010 add.w r0, r4, #16 1442a: 4798 blx r3 1442c: e735 b.n 1429a if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 1442e: 2603 movs r6, #3 14430: e62c b.n 1408c 14432: bf00 nop 14434: 000075c1 .word 0x000075c1 14438: 00007845 .word 0x00007845 1443c: 000047e5 .word 0x000047e5 14440: 000037b5 .word 0x000037b5 14444: 00007875 .word 0x00007875 14448: 0001fdc3 .word 0x0001fdc3 1444c: 00024278 .word 0x00024278 14450: 00024331 .word 0x00024331 14454: 0000e8e9 .word 0x0000e8e9 14458: 00003711 .word 0x00003711 1445c: 000097c9 .word 0x000097c9 14460: 0000eb69 .word 0x0000eb69 14464: 00009ba1 .word 0x00009ba1 14468: 000042a9 .word 0x000042a9 1446c: 00009bed .word 0x00009bed 00014470 : { 14470: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(img, LV_OBJX_NAME); 14472: 4b0d ldr r3, [pc, #52] ; (144a8 ) { 14474: 4604 mov r4, r0 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 14476: 4798 blx r3 14478: 4605 mov r5, r0 1447a: b968 cbnz r0, 14498 1447c: 4b0b ldr r3, [pc, #44] ; (144ac ) 1447e: 490c ldr r1, [pc, #48] ; (144b0 ) 14480: 9300 str r3, [sp, #0] 14482: f44f 72e7 mov.w r2, #462 ; 0x1ce 14486: 2003 movs r0, #3 14488: 4e0a ldr r6, [pc, #40] ; (144b4 ) 1448a: 47b0 blx r6 1448c: 480a ldr r0, [pc, #40] ; (144b8 ) 1448e: 490b ldr r1, [pc, #44] ; (144bc ) 14490: 4622 mov r2, r4 14492: 462b mov r3, r5 14494: 4788 blx r1 14496: e7fe b.n 14496 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14498: 4b09 ldr r3, [pc, #36] ; (144c0 ) 1449a: 4620 mov r0, r4 1449c: 4798 blx r3 return ext->auto_size == 0 ? false : true; 1449e: 7d00 ldrb r0, [r0, #20] } 144a0: f3c0 0080 ubfx r0, r0, #2, #1 144a4: b002 add sp, #8 144a6: bd70 pop {r4, r5, r6, pc} 144a8: 000017e1 .word 0x000017e1 144ac: 000243a0 .word 0x000243a0 144b0: 00024278 .word 0x00024278 144b4: 0000e8e9 .word 0x0000e8e9 144b8: 0001eebf .word 0x0001eebf 144bc: 000017e9 .word 0x000017e9 144c0: 00003fa9 .word 0x00003fa9 000144c4 : { 144c4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} LV_ASSERT_OBJ(img, LV_OBJX_NAME); 144c8: f8df a244 ldr.w sl, [pc, #580] ; 14710 { 144cc: b088 sub sp, #32 144ce: 4606 mov r6, r0 144d0: 460f mov r7, r1 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 144d2: 47d0 blx sl 144d4: 4604 mov r4, r0 144d6: b960 cbnz r0, 144f2 144d8: 4b77 ldr r3, [pc, #476] ; (146b8 ) 144da: 4978 ldr r1, [pc, #480] ; (146bc ) 144dc: 9300 str r3, [sp, #0] 144de: 228f movs r2, #143 ; 0x8f 144e0: 2003 movs r0, #3 144e2: 4d77 ldr r5, [pc, #476] ; (146c0 ) 144e4: 47a8 blx r5 144e6: 4877 ldr r0, [pc, #476] ; (146c4 ) 144e8: 4977 ldr r1, [pc, #476] ; (146c8 ) 144ea: 4632 mov r2, r6 144ec: 4623 mov r3, r4 144ee: 4788 blx r1 144f0: e7fe b.n 144f0 lv_img_src_t src_type = lv_img_src_get_type(src_img); 144f2: 4b76 ldr r3, [pc, #472] ; (146cc ) 144f4: 4638 mov r0, r7 144f6: 4798 blx r3 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 144f8: 4b75 ldr r3, [pc, #468] ; (146d0 ) lv_img_src_t src_type = lv_img_src_get_type(src_img); 144fa: 4605 mov r5, r0 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 144fc: 4630 mov r0, r6 144fe: 4798 blx r3 switch(src_type) { 14500: 2d02 cmp r5, #2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 14502: 4604 mov r4, r0 switch(src_type) { 14504: d923 bls.n 1454e LV_LOG_WARN("lv_img_set_src: unknown type"); 14506: 4b73 ldr r3, [pc, #460] ; (146d4 ) 14508: 9300 str r3, [sp, #0] 1450a: 496c ldr r1, [pc, #432] ; (146bc ) 1450c: 4b6a ldr r3, [pc, #424] ; (146b8 ) 1450e: f8df 81b0 ldr.w r8, [pc, #432] ; 146c0 14512: 22a0 movs r2, #160 ; 0xa0 14514: 2002 movs r0, #2 14516: 47c0 blx r8 if(src_type == LV_IMG_SRC_UNKNOWN) { 14518: 2d03 cmp r5, #3 1451a: d118 bne.n 1454e LV_LOG_WARN("lv_img_set_src: unknown image type"); 1451c: 4b6e ldr r3, [pc, #440] ; (146d8 ) 1451e: 9300 str r3, [sp, #0] 14520: 4966 ldr r1, [pc, #408] ; (146bc ) 14522: 4b65 ldr r3, [pc, #404] ; (146b8 ) 14524: 22a6 movs r2, #166 ; 0xa6 14526: 2002 movs r0, #2 14528: 47c0 blx r8 if(ext->src_type == LV_IMG_SRC_SYMBOL || ext->src_type == LV_IMG_SRC_FILE) { 1452a: 7d23 ldrb r3, [r4, #20] 1452c: f003 0303 and.w r3, r3, #3 14530: 3b01 subs r3, #1 14532: 2b01 cmp r3, #1 14534: d802 bhi.n 1453c lv_mem_free(ext->src); 14536: 6820 ldr r0, [r4, #0] 14538: 4b68 ldr r3, [pc, #416] ; (146dc ) 1453a: 4798 blx r3 ext->src = NULL; 1453c: 2300 movs r3, #0 1453e: 6023 str r3, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 14540: 7d23 ldrb r3, [r4, #20] 14542: f043 0303 orr.w r3, r3, #3 14546: 7523 strb r3, [r4, #20] } 14548: b008 add sp, #32 1454a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} lv_img_decoder_get_info(src_img, &header); 1454e: 4b64 ldr r3, [pc, #400] ; (146e0 ) 14550: a906 add r1, sp, #24 14552: 4638 mov r0, r7 14554: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { 14556: 2d00 cmp r5, #0 14558: d146 bne.n 145e8 LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found"); 1455a: 4b62 ldr r3, [pc, #392] ; (146e4 ) 1455c: 9300 str r3, [sp, #0] 1455e: 4957 ldr r1, [pc, #348] ; (146bc ) 14560: 4b55 ldr r3, [pc, #340] ; (146b8 ) 14562: f8df 815c ldr.w r8, [pc, #348] ; 146c0 14566: 22b4 movs r2, #180 ; 0xb4 14568: 2001 movs r0, #1 1456a: 47c0 blx r8 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 1456c: 7d23 ldrb r3, [r4, #20] 1456e: f003 0303 and.w r3, r3, #3 14572: 3b01 subs r3, #1 14574: 2b01 cmp r3, #1 14576: d802 bhi.n 1457e lv_mem_free(ext->src); 14578: 6820 ldr r0, [r4, #0] 1457a: 4b58 ldr r3, [pc, #352] ; (146dc ) 1457c: 4798 blx r3 ext->src = src_img; 1457e: 6027 str r7, [r4, #0] ext->w = header.w; 14580: 9a06 ldr r2, [sp, #24] 14582: f3c2 238a ubfx r3, r2, #10, #11 14586: 8123 strh r3, [r4, #8] ext->h = header.h; 14588: f8bd 301a ldrh.w r3, [sp, #26] 1458c: f3c3 114a ubfx r1, r3, #5, #11 14590: 8161 strh r1, [r4, #10] ext->cf = header.cf; 14592: f89d 1018 ldrb.w r1, [sp, #24] ext->src_type = src_type; 14596: f005 0503 and.w r5, r5, #3 ext->cf = header.cf; 1459a: f3c1 0104 ubfx r1, r1, #0, #5 ext->src_type = src_type; 1459e: ea45 05c1 orr.w r5, r5, r1, lsl #3 145a2: 7d21 ldrb r1, [r4, #20] 145a4: f001 0104 and.w r1, r1, #4 ext->pivot.y = header.h / 2; 145a8: f3c3 1389 ubfx r3, r3, #6, #10 ext->src_type = src_type; 145ac: 430d orrs r5, r1 ext->pivot.x = header.w / 2; 145ae: f3c2 22c9 ubfx r2, r2, #11, #10 ext->pivot.y = header.h / 2; 145b2: 8223 strh r3, [r4, #16] ext->src_type = src_type; 145b4: 7525 strb r5, [r4, #20] if(lv_img_get_auto_size(img) != false) { 145b6: 4b4c ldr r3, [pc, #304] ; (146e8 ) ext->pivot.x = header.w / 2; 145b8: 81e2 strh r2, [r4, #14] if(lv_img_get_auto_size(img) != false) { 145ba: 4630 mov r0, r6 145bc: 4798 blx r3 145be: b130 cbz r0, 145ce lv_obj_set_size(img, ext->w, ext->h); 145c0: f9b4 200a ldrsh.w r2, [r4, #10] 145c4: f9b4 1008 ldrsh.w r1, [r4, #8] 145c8: 4b48 ldr r3, [pc, #288] ; (146ec ) 145ca: 4630 mov r0, r6 145cc: 4798 blx r3 if(ext->angle || ext->zoom != LV_IMG_ZOOM_NONE) lv_obj_refresh_ext_draw_pad(img); 145ce: 89a3 ldrh r3, [r4, #12] 145d0: b91b cbnz r3, 145da 145d2: 8a63 ldrh r3, [r4, #18] 145d4: f5b3 7f80 cmp.w r3, #256 ; 0x100 145d8: d002 beq.n 145e0 145da: 4b45 ldr r3, [pc, #276] ; (146f0 ) 145dc: 4630 mov r0, r6 145de: 4798 blx r3 lv_obj_invalidate(img); 145e0: 4b44 ldr r3, [pc, #272] ; (146f4 ) 145e2: 4630 mov r0, r6 145e4: 4798 blx r3 145e6: e7af b.n 14548 else if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_SYMBOL) { 145e8: 1e6b subs r3, r5, #1 145ea: b2db uxtb r3, r3 145ec: 2b01 cmp r3, #1 145ee: d831 bhi.n 14654 if(ext->src != src_img) { 145f0: f8d4 9000 ldr.w r9, [r4] 145f4: 454f cmp r7, r9 145f6: d02d beq.n 14654 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 145f8: 7d23 ldrb r3, [r4, #20] 145fa: f003 0303 and.w r3, r3, #3 145fe: 3b01 subs r3, #1 const void * old_src = NULL; 14600: 2b01 cmp r3, #1 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 14602: 4638 mov r0, r7 14604: 4b3c ldr r3, [pc, #240] ; (146f8 ) const void * old_src = NULL; 14606: bf88 it hi 14608: f04f 0900 movhi.w r9, #0 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 1460c: 4798 blx r3 1460e: 4b3b ldr r3, [pc, #236] ; (146fc ) 14610: 3001 adds r0, #1 14612: 4798 blx r3 14614: 4680 mov r8, r0 LV_ASSERT_MEM(new_str); 14616: 47d0 blx sl 14618: 4682 mov sl, r0 1461a: b960 cbnz r0, 14636 1461c: 4b26 ldr r3, [pc, #152] ; (146b8 ) 1461e: 4927 ldr r1, [pc, #156] ; (146bc ) 14620: 9300 str r3, [sp, #0] 14622: 22c7 movs r2, #199 ; 0xc7 14624: 2003 movs r0, #3 14626: 4c26 ldr r4, [pc, #152] ; (146c0 ) 14628: 47a0 blx r4 1462a: 4835 ldr r0, [pc, #212] ; (14700 ) 1462c: 4926 ldr r1, [pc, #152] ; (146c8 ) 1462e: 4642 mov r2, r8 14630: 4653 mov r3, sl 14632: 4788 blx r1 14634: e7fe b.n 14634 if(new_str == NULL) return; 14636: f1b8 0f00 cmp.w r8, #0 1463a: d085 beq.n 14548 1463c: 4b31 ldr r3, [pc, #196] ; (14704 ) 1463e: 4639 mov r1, r7 14640: 4640 mov r0, r8 14642: 4798 blx r3 ext->src = new_str; 14644: f8c4 8000 str.w r8, [r4] if(old_src) lv_mem_free(old_src); 14648: f1b9 0f00 cmp.w r9, #0 1464c: d002 beq.n 14654 1464e: 4b23 ldr r3, [pc, #140] ; (146dc ) 14650: 4648 mov r0, r9 14652: 4798 blx r3 if(src_type == LV_IMG_SRC_SYMBOL) { 14654: 2d02 cmp r5, #2 14656: d193 bne.n 14580 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14658: 4b2b ldr r3, [pc, #172] ; (14708 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1465a: f8df 90b8 ldr.w r9, [pc, #184] ; 14714 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1465e: f248 028e movw r2, #32910 ; 0x808e 14662: 2100 movs r1, #0 14664: 4630 mov r0, r6 14666: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 14668: f248 0280 movw r2, #32896 ; 0x8080 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1466c: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1466e: 2100 movs r1, #0 14670: 4630 mov r0, r6 14672: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14674: f248 0281 movw r2, #32897 ; 0x8081 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 14678: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1467a: 2100 movs r1, #0 1467c: 4630 mov r0, r6 1467e: 47c8 blx r9 _lv_txt_get_size(&size, src_img, font, letter_space, line_space, 14680: f647 4218 movw r2, #31768 ; 0x7c18 14684: 2300 movs r3, #0 14686: e9cd 2301 strd r2, r3, [sp, #4] 1468a: 9000 str r0, [sp, #0] 1468c: 9b05 ldr r3, [sp, #20] 1468e: 4642 mov r2, r8 14690: 4639 mov r1, r7 14692: a807 add r0, sp, #28 14694: 4f1d ldr r7, [pc, #116] ; (1470c ) 14696: 47b8 blx r7 header.w = size.x; 14698: f8bd 201c ldrh.w r2, [sp, #28] 1469c: f9bd 301e ldrsh.w r3, [sp, #30] 146a0: f3c2 020a ubfx r2, r2, #0, #11 146a4: 055b lsls r3, r3, #21 146a6: ea43 2382 orr.w r3, r3, r2, lsl #10 146aa: 9a06 ldr r2, [sp, #24] 146ac: f3c2 0209 ubfx r2, r2, #0, #10 146b0: 4313 orrs r3, r2 146b2: 9306 str r3, [sp, #24] 146b4: e764 b.n 14580 146b6: bf00 nop 146b8: 000243b5 .word 0x000243b5 146bc: 00024278 .word 0x00024278 146c0: 0000e8e9 .word 0x0000e8e9 146c4: 0001eebf .word 0x0001eebf 146c8: 000017e9 .word 0x000017e9 146cc: 00007805 .word 0x00007805 146d0: 00003fa9 .word 0x00003fa9 146d4: 000242aa .word 0x000242aa 146d8: 000242c7 .word 0x000242c7 146dc: 0000eae5 .word 0x0000eae5 146e0: 0000cf29 .word 0x0000cf29 146e4: 000242ea .word 0x000242ea 146e8: 00014471 .word 0x00014471 146ec: 000034e1 .word 0x000034e1 146f0: 000020d1 .word 0x000020d1 146f4: 00002785 .word 0x00002785 146f8: 00016339 .word 0x00016339 146fc: 0000ea2d .word 0x0000ea2d 14700: 0001edbe .word 0x0001edbe 14704: 00016329 .word 0x00016329 14708: 000038c9 .word 0x000038c9 1470c: 0001019d .word 0x0001019d 14710: 000017e1 .word 0x000017e1 14714: 00003711 .word 0x00003711 00014718 : { 14718: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} lv_obj_t * img = lv_obj_create(par, copy); 1471c: 4b53 ldr r3, [pc, #332] ; (1486c ) LV_ASSERT_MEM(img); 1471e: f8df 81a8 ldr.w r8, [pc, #424] ; 148c8 { 14722: 460e mov r6, r1 14724: 4607 mov r7, r0 lv_obj_t * img = lv_obj_create(par, copy); 14726: 4798 blx r3 14728: 4605 mov r5, r0 LV_ASSERT_MEM(img); 1472a: 47c0 blx r8 1472c: 4604 mov r4, r0 1472e: b960 cbnz r0, 1474a 14730: 4b4f ldr r3, [pc, #316] ; (14870 ) 14732: 4950 ldr r1, [pc, #320] ; (14874 ) 14734: 9300 str r3, [sp, #0] 14736: 2242 movs r2, #66 ; 0x42 14738: 2003 movs r0, #3 1473a: 4e4f ldr r6, [pc, #316] ; (14878 ) 1473c: 47b0 blx r6 1473e: 484f ldr r0, [pc, #316] ; (1487c ) 14740: 494f ldr r1, [pc, #316] ; (14880 ) 14742: 462a mov r2, r5 14744: 4623 mov r3, r4 14746: 4788 blx r1 14748: e7fe b.n 14748 if(img == NULL) return NULL; 1474a: b315 cbz r5, 14792 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 1474c: 4c4d ldr r4, [pc, #308] ; (14884 ) 1474e: 6823 ldr r3, [r4, #0] 14750: b91b cbnz r3, 1475a 14752: 4b4d ldr r3, [pc, #308] ; (14888 ) 14754: 4628 mov r0, r5 14756: 4798 blx r3 14758: 6020 str r0, [r4, #0] lv_img_ext_t * ext = lv_obj_allocate_ext_attr(img, sizeof(lv_img_ext_t)); 1475a: 4b4c ldr r3, [pc, #304] ; (1488c ) 1475c: 2118 movs r1, #24 1475e: 4628 mov r0, r5 14760: 4798 blx r3 14762: 4604 mov r4, r0 LV_ASSERT_MEM(ext); 14764: 47c0 blx r8 14766: 4680 mov r8, r0 14768: b960 cbnz r0, 14784 1476a: 4b41 ldr r3, [pc, #260] ; (14870 ) 1476c: 4941 ldr r1, [pc, #260] ; (14874 ) 1476e: 9300 str r3, [sp, #0] 14770: 2249 movs r2, #73 ; 0x49 14772: 2003 movs r0, #3 14774: 4d40 ldr r5, [pc, #256] ; (14878 ) 14776: 47a8 blx r5 14778: 4840 ldr r0, [pc, #256] ; (1487c ) 1477a: 4941 ldr r1, [pc, #260] ; (14880 ) 1477c: 4622 mov r2, r4 1477e: 4643 mov r3, r8 14780: 4788 blx r1 14782: e7fe b.n 14782 if(ext == NULL) { 14784: f04f 0800 mov.w r8, #0 14788: b93c cbnz r4, 1479a lv_obj_del(img); 1478a: 4628 mov r0, r5 1478c: 4b40 ldr r3, [pc, #256] ; (14890 ) 1478e: 4798 blx r3 return NULL; 14790: 4625 mov r5, r4 } 14792: 4628 mov r0, r5 14794: b002 add sp, #8 14796: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} ext->src_type = LV_IMG_SRC_UNKNOWN; 1479a: 7d23 ldrb r3, [r4, #20] ext->src = NULL; 1479c: f8c4 8000 str.w r8, [r4] ext->src_type = LV_IMG_SRC_UNKNOWN; 147a0: f003 0304 and.w r3, r3, #4 147a4: f043 0303 orr.w r3, r3, #3 147a8: 7523 strb r3, [r4, #20] ext->w = lv_obj_get_width(img); 147aa: 4628 mov r0, r5 147ac: 4b39 ldr r3, [pc, #228] ; (14894 ) 147ae: 4798 blx r3 ext->h = lv_obj_get_height(img); 147b0: 4b39 ldr r3, [pc, #228] ; (14898 ) ext->w = lv_obj_get_width(img); 147b2: 8120 strh r0, [r4, #8] ext->h = lv_obj_get_height(img); 147b4: 4628 mov r0, r5 147b6: 4798 blx r3 ext->pivot.y = 0; 147b8: f04f 7380 mov.w r3, #16777216 ; 0x1000000 147bc: 6123 str r3, [r4, #16] ext->auto_size = 1; 147be: 8aa3 ldrh r3, [r4, #20] lv_obj_set_signal_cb(img, lv_img_signal); 147c0: 4936 ldr r1, [pc, #216] ; (1489c ) ext->h = lv_obj_get_height(img); 147c2: 8160 strh r0, [r4, #10] ext->auto_size = 1; 147c4: f443 7382 orr.w r3, r3, #260 ; 0x104 147c8: 82a3 strh r3, [r4, #20] lv_obj_set_signal_cb(img, lv_img_signal); 147ca: 4628 mov r0, r5 147cc: 4b34 ldr r3, [pc, #208] ; (148a0 ) ext->offset.x = 0; 147ce: f8c4 8004 str.w r8, [r4, #4] ext->angle = 0; 147d2: f8c4 800c str.w r8, [r4, #12] lv_obj_set_signal_cb(img, lv_img_signal); 147d6: 4798 blx r3 lv_obj_set_design_cb(img, lv_img_design); 147d8: 4932 ldr r1, [pc, #200] ; (148a4 ) 147da: 4b33 ldr r3, [pc, #204] ; (148a8 ) 147dc: 4628 mov r0, r5 147de: 4798 blx r3 if(copy == NULL) { 147e0: b9e6 cbnz r6, 1481c lv_theme_apply(img, LV_THEME_IMAGE); 147e2: 4b32 ldr r3, [pc, #200] ; (148ac ) 147e4: 210f movs r1, #15 147e6: 4628 mov r0, r5 147e8: 4798 blx r3 lv_obj_set_click(img, false); 147ea: 4b31 ldr r3, [pc, #196] ; (148b0 ) 147ec: 4631 mov r1, r6 147ee: 4628 mov r0, r5 147f0: 4798 blx r3 lv_obj_set_adv_hittest(img, true); /*Images have fast hit-testing*/ 147f2: 4b30 ldr r3, [pc, #192] ; (148b4 ) 147f4: 2101 movs r1, #1 147f6: 4628 mov r0, r5 147f8: 4798 blx r3 if(par != NULL) { 147fa: 7d23 ldrb r3, [r4, #20] 147fc: b15f cbz r7, 14816 ext->auto_size = 1; 147fe: f043 0304 orr.w r3, r3, #4 ext->auto_size = 0; 14802: 7523 strb r3, [r4, #20] LV_LOG_INFO("image created"); 14804: 4b2c ldr r3, [pc, #176] ; (148b8 ) 14806: 9300 str r3, [sp, #0] 14808: 491a ldr r1, [pc, #104] ; (14874 ) 1480a: 4b19 ldr r3, [pc, #100] ; (14870 ) 1480c: 4c1a ldr r4, [pc, #104] ; (14878 ) 1480e: 227f movs r2, #127 ; 0x7f 14810: 2001 movs r0, #1 14812: 47a0 blx r4 return img; 14814: e7bd b.n 14792 ext->auto_size = 0; 14816: f367 0382 bfi r3, r7, #2, #1 1481a: e7f2 b.n 14802 lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 1481c: 4b27 ldr r3, [pc, #156] ; (148bc ) 1481e: 4630 mov r0, r6 14820: 4798 blx r3 ext->auto_size = copy_ext->auto_size; 14822: 7d03 ldrb r3, [r0, #20] 14824: 7d22 ldrb r2, [r4, #20] 14826: f3c3 0380 ubfx r3, r3, #2, #1 1482a: f363 0282 bfi r2, r3, #2, #1 1482e: 7522 strb r2, [r4, #20] ext->zoom = copy_ext->zoom; 14830: 8a43 ldrh r3, [r0, #18] 14832: 8263 strh r3, [r4, #18] ext->angle = copy_ext->angle; 14834: 8983 ldrh r3, [r0, #12] ext->antialias = copy_ext->antialias; 14836: 7d42 ldrb r2, [r0, #21] ext->angle = copy_ext->angle; 14838: 81a3 strh r3, [r4, #12] ext->antialias = copy_ext->antialias; 1483a: 7d63 ldrb r3, [r4, #21] 1483c: f362 0300 bfi r3, r2, #0, #1 14840: 7563 strb r3, [r4, #21] ext->offset.x = copy_ext->offset.x; 14842: f9b0 3004 ldrsh.w r3, [r0, #4] 14846: 80a3 strh r3, [r4, #4] ext->offset.y = copy_ext->offset.y; 14848: f9b0 3006 ldrsh.w r3, [r0, #6] 1484c: 80e3 strh r3, [r4, #6] ext->pivot.x = copy_ext->pivot.x; 1484e: f9b0 300e ldrsh.w r3, [r0, #14] 14852: 81e3 strh r3, [r4, #14] ext->pivot.y = copy_ext->pivot.y; 14854: f9b0 3010 ldrsh.w r3, [r0, #16] lv_img_set_src(img, copy_ext->src); 14858: 6801 ldr r1, [r0, #0] ext->pivot.y = copy_ext->pivot.y; 1485a: 8223 strh r3, [r4, #16] lv_img_set_src(img, copy_ext->src); 1485c: 4628 mov r0, r5 1485e: 4b18 ldr r3, [pc, #96] ; (148c0 ) 14860: 4798 blx r3 lv_obj_refresh_style(img, LV_STYLE_PROP_ALL); 14862: 4b18 ldr r3, [pc, #96] ; (148c4 ) 14864: 21ff movs r1, #255 ; 0xff 14866: 4628 mov r0, r5 14868: 4798 blx r3 1486a: e7cb b.n 14804 1486c: 000030e5 .word 0x000030e5 14870: 000243c4 .word 0x000243c4 14874: 00024278 .word 0x00024278 14878: 0000e8e9 .word 0x0000e8e9 1487c: 0001edbe .word 0x0001edbe 14880: 000017e9 .word 0x000017e9 14884: 2000c7f8 .word 0x2000c7f8 14888: 00003f61 .word 0x00003f61 1488c: 00002079 .word 0x00002079 14890: 00004161 .word 0x00004161 14894: 000023ed .word 0x000023ed 14898: 0000243d .word 0x0000243d 1489c: 000148cd .word 0x000148cd 148a0: 00001fdd .word 0x00001fdd 148a4: 00014009 .word 0x00014009 148a8: 00002031 .word 0x00002031 148ac: 000102e5 .word 0x000102e5 148b0: 00001e5d .word 0x00001e5d 148b4: 00001e09 .word 0x00001e09 148b8: 0002431c .word 0x0002431c 148bc: 00003fa9 .word 0x00003fa9 148c0: 000144c5 .word 0x000144c5 148c4: 00002d91 .word 0x00002d91 148c8: 000017e1 .word 0x000017e1 000148cc : * @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) { 148cc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} lv_res_t res; if(sign == LV_SIGNAL_GET_STYLE) { 148d0: 2908 cmp r1, #8 { 148d2: b085 sub sp, #20 148d4: 4604 mov r4, r0 148d6: 4689 mov r9, r1 148d8: 4616 mov r6, r2 if(sign == LV_SIGNAL_GET_STYLE) { 148da: d110 bne.n 148fe 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) { 148dc: 7813 ldrb r3, [r2, #0] 148de: b13b cbz r3, 148f0 info->result = lv_img_get_style(img, info->part); 148e0: 2300 movs r3, #0 148e2: 6053 str r3, [r2, #4] else return ancestor_signal(img, sign, param); 148e4: 4b83 ldr r3, [pc, #524] ; (14af4 ) 148e6: 681b ldr r3, [r3, #0] } 148e8: b005 add sp, #20 148ea: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} else return ancestor_signal(img, sign, param); 148ee: 4718 bx r3 case LV_IMG_PART_MAIN: style_dsc_p = &img->style_list; 148f0: 3428 adds r4, #40 ; 0x28 info->result = lv_img_get_style(img, info->part); 148f2: 6054 str r4, [r2, #4] if(info->result != NULL) return LV_RES_OK; 148f4: 2701 movs r7, #1 } 148f6: 4638 mov r0, r7 148f8: b005 add sp, #20 148fa: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} res = ancestor_signal(img, sign, param); 148fe: 4b7d ldr r3, [pc, #500] ; (14af4 ) 14900: 681b ldr r3, [r3, #0] 14902: 4798 blx r3 if(res != LV_RES_OK) return res; 14904: 2801 cmp r0, #1 res = ancestor_signal(img, sign, param); 14906: 4607 mov r7, r0 if(res != LV_RES_OK) return res; 14908: d1f5 bne.n 148f6 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1490a: f1b9 0f07 cmp.w r9, #7 1490e: d106 bne.n 1491e 14910: 4979 ldr r1, [pc, #484] ; (14af8 ) 14912: 4b7a ldr r3, [pc, #488] ; (14afc ) 14914: 4630 mov r0, r6 } 14916: b005 add sp, #20 14918: 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); 1491c: 4718 bx r3 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1491e: 4b78 ldr r3, [pc, #480] ; (14b00 ) 14920: 4620 mov r0, r4 14922: 4798 blx r3 14924: 4605 mov r5, r0 if(sign == LV_SIGNAL_CLEANUP) { 14926: f1b9 0f00 cmp.w r9, #0 1492a: d10f bne.n 1494c if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 1492c: 7d03 ldrb r3, [r0, #20] 1492e: f003 0303 and.w r3, r3, #3 14932: 3b01 subs r3, #1 14934: 2b01 cmp r3, #1 14936: d8de bhi.n 148f6 lv_mem_free(ext->src); 14938: 4b72 ldr r3, [pc, #456] ; (14b04 ) 1493a: 6800 ldr r0, [r0, #0] 1493c: 4798 blx r3 ext->src_type = LV_IMG_SRC_UNKNOWN; 1493e: 7d2b ldrb r3, [r5, #20] ext->src = NULL; 14940: f8c5 9000 str.w r9, [r5] ext->src_type = LV_IMG_SRC_UNKNOWN; 14944: f043 0303 orr.w r3, r3, #3 14948: 752b strb r3, [r5, #20] 1494a: e7d4 b.n 148f6 else if(sign == LV_SIGNAL_STYLE_CHG) { 1494c: f1b9 0f04 cmp.w r9, #4 14950: d109 bne.n 14966 if(ext->src_type == LV_IMG_SRC_SYMBOL) { 14952: 7d03 ldrb r3, [r0, #20] 14954: f003 0303 and.w r3, r3, #3 14958: 2b02 cmp r3, #2 1495a: d1cc bne.n 148f6 lv_img_set_src(img, ext->src); 1495c: 6801 ldr r1, [r0, #0] 1495e: 4b6a ldr r3, [pc, #424] ; (14b08 ) 14960: 4620 mov r0, r4 14962: 4798 blx r3 14964: e7c7 b.n 148f6 else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 14966: f1b9 0f06 cmp.w r9, #6 1496a: d16e bne.n 14a4a _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 1496c: 4e67 ldr r6, [pc, #412] ; (14b0c ) 1496e: 2207 movs r2, #7 14970: 2100 movs r1, #0 14972: 4620 mov r0, r4 14974: 47b0 blx r6 transf_zoom = (transf_zoom * ext->zoom) >> 8; 14976: f8b5 8012 ldrh.w r8, [r5, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 1497a: 464a mov r2, r9 1497c: fb00 f808 mul.w r8, r0, r8 14980: 2100 movs r1, #0 14982: 4620 mov r0, r4 14984: 47b0 blx r6 transf_angle += ext->angle; 14986: 89ab ldrh r3, [r5, #12] 14988: 4418 add r0, r3 1498a: b203 sxth r3, r0 transf_zoom = (transf_zoom * ext->zoom) >> 8; 1498c: ea4f 2828 mov.w r8, r8, asr #8 if(transf_angle || transf_zoom != LV_IMG_ZOOM_NONE) { 14990: b923 cbnz r3, 1499c 14992: fa0f f288 sxth.w r2, r8 14996: f5b2 7f80 cmp.w r2, #256 ; 0x100 1499a: d031 beq.n 14a00 _lv_img_buf_get_transformed_area(&a, ext->w, ext->h, transf_angle, transf_zoom, &ext->pivot); 1499c: f105 000e add.w r0, r5, #14 149a0: f9b5 200a ldrsh.w r2, [r5, #10] 149a4: f9b5 1008 ldrsh.w r1, [r5, #8] 149a8: 9001 str r0, [sp, #4] 149aa: fa1f f088 uxth.w r0, r8 149ae: 9000 str r0, [sp, #0] 149b0: f8df 8164 ldr.w r8, [pc, #356] ; 14b18 149b4: a802 add r0, sp, #8 149b6: 47c0 blx r8 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 149b8: f9b4 1032 ldrsh.w r1, [r4, #50] ; 0x32 149bc: f9bd 3008 ldrsh.w r3, [sp, #8] img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 149c0: f9bd 200a ldrsh.w r2, [sp, #10] img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 149c4: f9b5 0008 ldrsh.w r0, [r5, #8] img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 149c8: 1acb subs r3, r1, r3 149ca: 428b cmp r3, r1 149cc: bfb8 it lt 149ce: 460b movlt r3, r1 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 149d0: 1a8a subs r2, r1, r2 149d2: b21b sxth r3, r3 149d4: 4293 cmp r3, r2 149d6: bfb8 it lt 149d8: 4613 movlt r3, r2 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 149da: f9bd 200c ldrsh.w r2, [sp, #12] 149de: 440a add r2, r1 149e0: b21b sxth r3, r3 149e2: 1a12 subs r2, r2, r0 149e4: 4293 cmp r3, r2 149e6: bfb8 it lt 149e8: 4613 movlt r3, r2 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.y2 - ext->h); 149ea: f9bd 200e ldrsh.w r2, [sp, #14] 149ee: 440a add r2, r1 149f0: f9b5 100a ldrsh.w r1, [r5, #10] 149f4: b21b sxth r3, r3 149f6: 1a52 subs r2, r2, r1 149f8: 4293 cmp r3, r2 149fa: bfb8 it lt 149fc: 4613 movlt r3, r2 149fe: 8663 strh r3, [r4, #50] ; 0x32 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14a00: 2212 movs r2, #18 14a02: 2100 movs r1, #0 14a04: 4620 mov r0, r4 14a06: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a08: 2213 movs r2, #19 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14a0a: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a0c: 2100 movs r1, #0 14a0e: 4620 mov r0, r4 14a10: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14a12: 2210 movs r2, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14a14: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14a16: 2100 movs r1, #0 14a18: 4620 mov r0, r4 14a1a: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14a1c: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14a1e: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14a20: 2100 movs r1, #0 14a22: 4620 mov r0, r4 14a24: 47b0 blx r6 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, right); 14a26: 454d cmp r5, r9 14a28: f9b4 3032 ldrsh.w r3, [r4, #50] ; 0x32 14a2c: bfb8 it lt 14a2e: 464d movlt r5, r9 14a30: b22d sxth r5, r5 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, top); 14a32: 42ab cmp r3, r5 14a34: bfb8 it lt 14a36: 462b movlt r3, r5 14a38: 4543 cmp r3, r8 14a3a: bfb8 it lt 14a3c: 4643 movlt r3, r8 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, bottom); 14a3e: b21b sxth r3, r3 14a40: 4298 cmp r0, r3 14a42: bfb8 it lt 14a44: 4618 movlt r0, r3 14a46: 8660 strh r0, [r4, #50] ; 0x32 14a48: e755 b.n 148f6 else if(sign == LV_SIGNAL_HIT_TEST) { 14a4a: f1b9 0f0a cmp.w r9, #10 14a4e: f47f af52 bne.w 148f6 if(ext->zoom != 256 && ext->angle == 0) { 14a52: f8b0 c012 ldrh.w ip, [r0, #18] 14a56: f5bc 7f80 cmp.w ip, #256 ; 0x100 14a5a: d045 beq.n 14ae8 14a5c: 8983 ldrh r3, [r0, #12] 14a5e: 2b00 cmp r3, #0 14a60: d142 bne.n 14ae8 14a62: 8aa5 ldrh r5, [r4, #20] 14a64: 8a23 ldrh r3, [r4, #16] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 14a66: 8a62 ldrh r2, [r4, #18] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 14a68: 6920 ldr r0, [r4, #16] 14a6a: 6961 ldr r1, [r4, #20] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 14a6c: 3501 adds r5, #1 14a6e: 1aed subs r5, r5, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 14a70: 8ae3 ldrh r3, [r4, #22] 14a72: 3301 adds r3, #1 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 14a74: b22d sxth r5, r5 14a76: 1a9b subs r3, r3, r2 14a78: aa02 add r2, sp, #8 14a7a: c203 stmia r2!, {r0, r1} 14a7c: fb0c f205 mul.w r2, ip, r5 14a80: 32ff adds r2, #255 ; 0xff 14a82: bf48 it mi 14a84: 32ff addmi r2, #255 ; 0xff lv_coord_t width_offset = (origin_width - scaled_width) / 2; 14a86: f342 220f sbfx r2, r2, #8, #16 14a8a: 1aad subs r5, r5, r2 14a8c: eb05 75d5 add.w r5, r5, r5, lsr #31 coords.x1 += width_offset; 14a90: f8bd 2008 ldrh.w r2, [sp, #8] info->result = _lv_area_is_point_on(&coords, info->point, 0); 14a94: 6831 ldr r1, [r6, #0] coords.x1 += width_offset; 14a96: f3c5 054f ubfx r5, r5, #1, #16 14a9a: 442a add r2, r5 14a9c: f8ad 2008 strh.w r2, [sp, #8] coords.x2 -= width_offset; 14aa0: f8bd 200c ldrh.w r2, [sp, #12] lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 14aa4: b21b sxth r3, r3 14aa6: fb03 fc0c mul.w ip, r3, ip coords.x2 -= width_offset; 14aaa: 1b52 subs r2, r2, r5 14aac: f8ad 200c strh.w r2, [sp, #12] lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 14ab0: f11c 02ff adds.w r2, ip, #255 ; 0xff 14ab4: bf48 it mi 14ab6: f50c 72ff addmi.w r2, ip, #510 ; 0x1fe lv_coord_t height_offset = (origin_height - scaled_height) / 2; 14aba: f342 220f sbfx r2, r2, #8, #16 14abe: 1a9b subs r3, r3, r2 14ac0: eb03 73d3 add.w r3, r3, r3, lsr #31 coords.y1 += height_offset; 14ac4: f8bd 200a ldrh.w r2, [sp, #10] 14ac8: f3c3 034f ubfx r3, r3, #1, #16 14acc: 441a add r2, r3 14ace: f8ad 200a strh.w r2, [sp, #10] coords.y2 -= height_offset; 14ad2: f8bd 200e ldrh.w r2, [sp, #14] 14ad6: 1ad3 subs r3, r2, r3 14ad8: f8ad 300e strh.w r3, [sp, #14] info->result = _lv_area_is_point_on(&coords, info->point, 0); 14adc: 2200 movs r2, #0 14ade: 4b0c ldr r3, [pc, #48] ; (14b10 ) 14ae0: a802 add r0, sp, #8 14ae2: 4798 blx r3 info->result = lv_obj_is_point_on_coords(img, info->point); 14ae4: 7130 strb r0, [r6, #4] 14ae6: e706 b.n 148f6 14ae8: 6831 ldr r1, [r6, #0] 14aea: 4b0a ldr r3, [pc, #40] ; (14b14 ) 14aec: 4620 mov r0, r4 14aee: 4798 blx r3 14af0: e7f8 b.n 14ae4 14af2: bf00 nop 14af4: 2000c7f8 .word 0x2000c7f8 14af8: 0002432a .word 0x0002432a 14afc: 0000428d .word 0x0000428d 14b00: 00003fa9 .word 0x00003fa9 14b04: 0000eae5 .word 0x0000eae5 14b08: 000144c5 .word 0x000144c5 14b0c: 00003711 .word 0x00003711 14b10: 0000df25 .word 0x0000df25 14b14: 00004251 .word 0x00004251 14b18: 0000c061 .word 0x0000c061 00014b1c : * 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) { 14b1c: b510 push {r4, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b1e: 4b08 ldr r3, [pc, #32] ; (14b40 ) 14b20: 4798 blx r3 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 14b22: 7c43 ldrb r3, [r0, #17] 14b24: 07db lsls r3, r3, #31 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b26: 4604 mov r4, r0 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 14b28: d503 bpl.n 14b32 14b2a: 6840 ldr r0, [r0, #4] 14b2c: b108 cbz r0, 14b32 lv_mem_free(ext->dot.tmp_ptr); 14b2e: 4b05 ldr r3, [pc, #20] ; (14b44 ) 14b30: 4798 blx r3 } ext->dot_tmp_alloc = false; 14b32: 7c63 ldrb r3, [r4, #17] 14b34: f36f 0300 bfc r3, #0, #1 14b38: 7463 strb r3, [r4, #17] ext->dot.tmp_ptr = NULL; 14b3a: 2300 movs r3, #0 14b3c: 6063 str r3, [r4, #4] } 14b3e: bd10 pop {r4, pc} 14b40: 00003fa9 .word 0x00003fa9 14b44: 0000eae5 .word 0x0000eae5 00014b48 : { 14b48: b5f8 push {r3, r4, r5, r6, r7, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b4a: 4e1a ldr r6, [pc, #104] ; (14bb4 ) { 14b4c: 4605 mov r5, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b4e: 47b0 blx r6 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 14b50: 7c03 ldrb r3, [r0, #16] 14b52: f003 0307 and.w r3, r3, #7 14b56: 2b02 cmp r3, #2 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b58: 4604 mov r4, r0 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 14b5a: d128 bne.n 14bae if(ext->dot_end == LV_LABEL_DOT_END_INV) return; 14b5c: 8901 ldrh r1, [r0, #8] 14b5e: f64f 73ff movw r3, #65535 ; 0xffff 14b62: 4299 cmp r1, r3 14b64: d023 beq.n 14bae uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i); 14b66: 4b14 ldr r3, [pc, #80] ; (14bb8 ) 14b68: 6800 ldr r0, [r0, #0] 14b6a: 681b ldr r3, [r3, #0] 14b6c: 3903 subs r1, #3 14b6e: 4798 blx r3 14b70: 4607 mov r7, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b72: 4628 mov r0, r5 14b74: 47b0 blx r6 if(ext->dot_tmp_alloc) { 14b76: 7c42 ldrb r2, [r0, #17] 14b78: 07d2 lsls r2, r2, #31 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14b7a: 4603 mov r3, r0 return ext->dot.tmp_ptr; 14b7c: bf4c ite mi 14b7e: 6843 ldrmi r3, [r0, #4] return ext->dot.tmp; 14b80: 3304 addpl r3, #4 while(ext->text[byte_i + i] != '\0') { 14b82: 2200 movs r2, #0 14b84: fa57 f182 uxtab r1, r7, r2 14b88: 6826 ldr r6, [r4, #0] 14b8a: b2d0 uxtb r0, r2 14b8c: f816 e001 ldrb.w lr, [r6, r1] ext->text[byte_i + i] = dot_tmp[i]; 14b90: 5c18 ldrb r0, [r3, r0] while(ext->text[byte_i + i] != '\0') { 14b92: eb06 0c01 add.w ip, r6, r1 14b96: 3201 adds r2, #1 14b98: f1be 0f00 cmp.w lr, #0 14b9c: d108 bne.n 14bb0 lv_label_dot_tmp_free(label); 14b9e: 4b07 ldr r3, [pc, #28] ; (14bbc ) ext->text[byte_i + i] = dot_tmp[i]; 14ba0: f88c 0000 strb.w r0, [ip] lv_label_dot_tmp_free(label); 14ba4: 4628 mov r0, r5 14ba6: 4798 blx r3 ext->dot_end = LV_LABEL_DOT_END_INV; 14ba8: f64f 73ff movw r3, #65535 ; 0xffff 14bac: 8123 strh r3, [r4, #8] } 14bae: bdf8 pop {r3, r4, r5, r6, r7, pc} ext->text[byte_i + i] = dot_tmp[i]; 14bb0: 5470 strb r0, [r6, r1] i++; 14bb2: e7e7 b.n 14b84 14bb4: 00003fa9 .word 0x00003fa9 14bb8: 2000005c .word 0x2000005c 14bbc: 00014b1d .word 0x00014b1d 00014bc0 : { 14bc0: b570 push {r4, r5, r6, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14bc2: 4b05 ldr r3, [pc, #20] ; (14bd8 ) { 14bc4: 4604 mov r4, r0 14bc6: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14bc8: 4798 blx r3 lv_obj_invalidate(label); 14bca: 4b04 ldr r3, [pc, #16] ; (14bdc ) ext->offset.y = y; 14bcc: 81c5 strh r5, [r0, #14] lv_obj_invalidate(label); 14bce: 4620 mov r0, r4 } 14bd0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_invalidate(label); 14bd4: 4718 bx r3 14bd6: bf00 nop 14bd8: 00003fa9 .word 0x00003fa9 14bdc: 00002785 .word 0x00002785 00014be0 : { 14be0: b570 push {r4, r5, r6, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14be2: 4b05 ldr r3, [pc, #20] ; (14bf8 ) { 14be4: 4604 mov r4, r0 14be6: 460d mov r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14be8: 4798 blx r3 lv_obj_invalidate(label); 14bea: 4b04 ldr r3, [pc, #16] ; (14bfc ) ext->offset.x = x; 14bec: 8185 strh r5, [r0, #12] lv_obj_invalidate(label); 14bee: 4620 mov r0, r4 } 14bf0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_invalidate(label); 14bf4: 4718 bx r3 14bf6: bf00 nop 14bf8: 00003fa9 .word 0x00003fa9 14bfc: 00002785 .word 0x00002785 00014c00 : { 14c00: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c02: 4b1a ldr r3, [pc, #104] ; (14c6c ) { 14c04: 9103 str r1, [sp, #12] 14c06: 4616 mov r6, r2 14c08: 4604 mov r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c0a: 4798 blx r3 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 14c0c: 4b18 ldr r3, [pc, #96] ; (14c70 ) lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14c0e: 4605 mov r5, r0 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 14c10: 4620 mov r0, r4 14c12: 4798 blx r3 if(len > sizeof(char *)) { 14c14: 2e04 cmp r6, #4 14c16: 9903 ldr r1, [sp, #12] 14c18: d91e bls.n 14c58 ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 14c1a: 4b16 ldr r3, [pc, #88] ; (14c74 ) 14c1c: 1c70 adds r0, r6, #1 14c1e: 4798 blx r3 if(ext->dot.tmp_ptr == NULL) { 14c20: 9903 ldr r1, [sp, #12] ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 14c22: 6068 str r0, [r5, #4] 14c24: 4604 mov r4, r0 if(ext->dot.tmp_ptr == NULL) { 14c26: b958 cbnz r0, 14c40 LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr"); 14c28: 4b13 ldr r3, [pc, #76] ; (14c78 ) 14c2a: 9300 str r3, [sp, #0] 14c2c: 2003 movs r0, #3 14c2e: 4b13 ldr r3, [pc, #76] ; (14c7c ) 14c30: 4913 ldr r1, [pc, #76] ; (14c80 ) 14c32: 4d14 ldr r5, [pc, #80] ; (14c84 ) 14c34: f240 52b5 movw r2, #1461 ; 0x5b5 14c38: 47a8 blx r5 return false; 14c3a: 4620 mov r0, r4 } 14c3c: b004 add sp, #16 14c3e: bd70 pop {r4, r5, r6, pc} _lv_memcpy(ext->dot.tmp_ptr, data, len); 14c40: 4b11 ldr r3, [pc, #68] ; (14c88 ) 14c42: 4632 mov r2, r6 14c44: 4798 blx r3 ext->dot.tmp_ptr[len] = '\0'; 14c46: 686b ldr r3, [r5, #4] 14c48: 2200 movs r2, #0 14c4a: 559a strb r2, [r3, r6] ext->dot_tmp_alloc = true; 14c4c: 7c6b ldrb r3, [r5, #17] 14c4e: f043 0301 orr.w r3, r3, #1 14c52: 746b strb r3, [r5, #17] return true; 14c54: 2001 movs r0, #1 14c56: e7f1 b.n 14c3c ext->dot_tmp_alloc = false; 14c58: 7c6b ldrb r3, [r5, #17] 14c5a: f36f 0300 bfc r3, #0, #1 14c5e: 746b strb r3, [r5, #17] _lv_memcpy(ext->dot.tmp, data, len); 14c60: 4632 mov r2, r6 14c62: 4b09 ldr r3, [pc, #36] ; (14c88 ) 14c64: 1d28 adds r0, r5, #4 14c66: 4798 blx r3 14c68: e7f4 b.n 14c54 14c6a: bf00 nop 14c6c: 00003fa9 .word 0x00003fa9 14c70: 00014b1d .word 0x00014b1d 14c74: 0000ea2d .word 0x0000ea2d 14c78: 00024475 .word 0x00024475 14c7c: 000244bb .word 0x000244bb 14c80: 00024441 .word 0x00024441 14c84: 0000e8e9 .word 0x0000e8e9 14c88: 0000ec31 .word 0x0000ec31 00014c8c : static void get_txt_coords(const lv_obj_t * label, lv_area_t * area) { 14c8c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} lv_obj_get_coords(label, area); 14c90: 4b13 ldr r3, [pc, #76] ; (14ce0 ) _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14c92: f8df 8050 ldr.w r8, [pc, #80] ; 14ce4 { 14c96: 4605 mov r5, r0 14c98: 460c mov r4, r1 lv_obj_get_coords(label, area); 14c9a: 4798 blx r3 14c9c: 2212 movs r2, #18 14c9e: 2100 movs r1, #0 14ca0: 4628 mov r0, r5 14ca2: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14ca4: 2213 movs r2, #19 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14ca6: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14ca8: 2100 movs r1, #0 14caa: 4628 mov r0, r5 14cac: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14cae: 2210 movs r2, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14cb0: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14cb2: 2100 movs r1, #0 14cb4: 4628 mov r0, r5 14cb6: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14cb8: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14cba: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14cbc: 2100 movs r1, #0 14cbe: 4628 mov r0, r5 14cc0: 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; 14cc2: 8823 ldrh r3, [r4, #0] 14cc4: 441f add r7, r3 area->x2 -= right; 14cc6: 88a3 ldrh r3, [r4, #4] area->x1 += left; 14cc8: 8027 strh r7, [r4, #0] area->x2 -= right; 14cca: eba3 0309 sub.w r3, r3, r9 14cce: 80a3 strh r3, [r4, #4] area->y1 += top; 14cd0: 8863 ldrh r3, [r4, #2] 14cd2: 441e add r6, r3 area->y2 -= bottom; 14cd4: 88e3 ldrh r3, [r4, #6] area->y1 += top; 14cd6: 8066 strh r6, [r4, #2] area->y2 -= bottom; 14cd8: 1a18 subs r0, r3, r0 14cda: 80e0 strh r0, [r4, #6] } 14cdc: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 14ce0: 000022d5 .word 0x000022d5 14ce4: 00003711 .word 0x00003711 00014ce8 : { 14ce8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14cea: 4b13 ldr r3, [pc, #76] ; (14d38 ) { 14cec: 4604 mov r4, r0 14cee: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14cf0: 4798 blx r3 14cf2: 4606 mov r6, r0 14cf4: b968 cbnz r0, 14d12 14cf6: 4b11 ldr r3, [pc, #68] ; (14d3c ) 14cf8: 4911 ldr r1, [pc, #68] ; (14d40 ) 14cfa: 9300 str r3, [sp, #0] 14cfc: f44f 72c4 mov.w r2, #392 ; 0x188 14d00: 2003 movs r0, #3 14d02: 4d10 ldr r5, [pc, #64] ; (14d44 ) 14d04: 47a8 blx r5 14d06: 4810 ldr r0, [pc, #64] ; (14d48 ) 14d08: 4910 ldr r1, [pc, #64] ; (14d4c ) 14d0a: 4622 mov r2, r4 14d0c: 4633 mov r3, r6 14d0e: 4788 blx r1 14d10: e7fe b.n 14d10 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14d12: 4b0f ldr r3, [pc, #60] ; (14d50 ) 14d14: 4620 mov r0, r4 14d16: 4798 blx r3 if(ext->align == align) return; 14d18: 7c03 ldrb r3, [r0, #16] 14d1a: f3c3 1201 ubfx r2, r3, #4, #2 14d1e: 42aa cmp r2, r5 14d20: d008 beq.n 14d34 ext->align = align; 14d22: f365 1305 bfi r3, r5, #4, #2 14d26: 7403 strb r3, [r0, #16] lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 14d28: 4b0a ldr r3, [pc, #40] ; (14d54 ) 14d2a: 4620 mov r0, r4 } 14d2c: b002 add sp, #8 14d2e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 14d32: 4718 bx r3 } 14d34: b002 add sp, #8 14d36: bd70 pop {r4, r5, r6, pc} 14d38: 000017e1 .word 0x000017e1 14d3c: 000244d0 .word 0x000244d0 14d40: 00024441 .word 0x00024441 14d44: 0000e8e9 .word 0x0000e8e9 14d48: 0001eebf .word 0x0001eebf 14d4c: 000017e9 .word 0x000017e9 14d50: 00003fa9 .word 0x00003fa9 14d54: 00002785 .word 0x00002785 00014d58 : { 14d58: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14d5a: 4b0c ldr r3, [pc, #48] ; (14d8c ) { 14d5c: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14d5e: 4798 blx r3 14d60: 4605 mov r5, r0 14d62: b968 cbnz r0, 14d80 14d64: 4b0a ldr r3, [pc, #40] ; (14d90 ) 14d66: 490b ldr r1, [pc, #44] ; (14d94 ) 14d68: 9300 str r3, [sp, #0] 14d6a: f44f 72f2 mov.w r2, #484 ; 0x1e4 14d6e: 2003 movs r0, #3 14d70: 4e09 ldr r6, [pc, #36] ; (14d98 ) 14d72: 47b0 blx r6 14d74: 4809 ldr r0, [pc, #36] ; (14d9c ) 14d76: 490a ldr r1, [pc, #40] ; (14da0 ) 14d78: 4622 mov r2, r4 14d7a: 462b mov r3, r5 14d7c: 4788 blx r1 14d7e: e7fe b.n 14d7e lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14d80: 4b08 ldr r3, [pc, #32] ; (14da4 ) 14d82: 4620 mov r0, r4 14d84: 4798 blx r3 } 14d86: 6800 ldr r0, [r0, #0] 14d88: b002 add sp, #8 14d8a: bd70 pop {r4, r5, r6, pc} 14d8c: 000017e1 .word 0x000017e1 14d90: 00024519 .word 0x00024519 14d94: 00024441 .word 0x00024441 14d98: 0000e8e9 .word 0x0000e8e9 14d9c: 0001eebf .word 0x0001eebf 14da0: 000017e9 .word 0x000017e9 14da4: 00003fa9 .word 0x00003fa9 00014da8 : { 14da8: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14daa: 4b0d ldr r3, [pc, #52] ; (14de0 ) { 14dac: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14dae: 4798 blx r3 14db0: 4605 mov r5, r0 14db2: b968 cbnz r0, 14dd0 14db4: 4b0b ldr r3, [pc, #44] ; (14de4 ) 14db6: 490c ldr r1, [pc, #48] ; (14de8 ) 14db8: 9300 str r3, [sp, #0] 14dba: f44f 72f9 mov.w r2, #498 ; 0x1f2 14dbe: 2003 movs r0, #3 14dc0: 4e0a ldr r6, [pc, #40] ; (14dec ) 14dc2: 47b0 blx r6 14dc4: 480a ldr r0, [pc, #40] ; (14df0 ) 14dc6: 490b ldr r1, [pc, #44] ; (14df4 ) 14dc8: 4622 mov r2, r4 14dca: 462b mov r3, r5 14dcc: 4788 blx r1 14dce: e7fe b.n 14dce lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14dd0: 4b09 ldr r3, [pc, #36] ; (14df8 ) 14dd2: 4620 mov r0, r4 14dd4: 4798 blx r3 return ext->long_mode; 14dd6: 7c00 ldrb r0, [r0, #16] } 14dd8: f000 0007 and.w r0, r0, #7 14ddc: b002 add sp, #8 14dde: bd70 pop {r4, r5, r6, pc} 14de0: 000017e1 .word 0x000017e1 14de4: 0002452b .word 0x0002452b 14de8: 00024441 .word 0x00024441 14dec: 0000e8e9 .word 0x0000e8e9 14df0: 0001eebf .word 0x0001eebf 14df4: 000017e9 .word 0x000017e9 14df8: 00003fa9 .word 0x00003fa9 00014dfc : { 14dfc: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14dfe: 4b0f ldr r3, [pc, #60] ; (14e3c ) { 14e00: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e02: 4798 blx r3 14e04: 4605 mov r5, r0 14e06: b968 cbnz r0, 14e24 14e08: 4b0d ldr r3, [pc, #52] ; (14e40 ) 14e0a: 490e ldr r1, [pc, #56] ; (14e44 ) 14e0c: 9300 str r3, [sp, #0] 14e0e: f240 12ff movw r2, #511 ; 0x1ff 14e12: 2003 movs r0, #3 14e14: 4e0c ldr r6, [pc, #48] ; (14e48 ) 14e16: 47b0 blx r6 14e18: 480c ldr r0, [pc, #48] ; (14e4c ) 14e1a: 490d ldr r1, [pc, #52] ; (14e50 ) 14e1c: 4622 mov r2, r4 14e1e: 462b mov r3, r5 14e20: 4788 blx r1 14e22: e7fe b.n 14e22 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14e24: 4b0b ldr r3, [pc, #44] ; (14e54 ) 14e26: 4620 mov r0, r4 14e28: 4798 blx r3 lv_label_align_t align = ext->align; 14e2a: 7c00 ldrb r0, [r0, #16] 14e2c: f3c0 1001 ubfx r0, r0, #4, #2 align = LV_LABEL_ALIGN_LEFT; 14e30: 2803 cmp r0, #3 } 14e32: bf08 it eq 14e34: 2000 moveq r0, #0 14e36: b002 add sp, #8 14e38: bd70 pop {r4, r5, r6, pc} 14e3a: bf00 nop 14e3c: 000017e1 .word 0x000017e1 14e40: 00024542 .word 0x00024542 14e44: 00024441 .word 0x00024441 14e48: 0000e8e9 .word 0x0000e8e9 14e4c: 0001eebf .word 0x0001eebf 14e50: 000017e9 .word 0x000017e9 14e54: 00003fa9 .word 0x00003fa9 00014e58 : { 14e58: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e5a: 4b0d ldr r3, [pc, #52] ; (14e90 ) { 14e5c: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14e5e: 4798 blx r3 14e60: 4605 mov r5, r0 14e62: b968 cbnz r0, 14e80 14e64: 4b0b ldr r3, [pc, #44] ; (14e94 ) 14e66: 490c ldr r1, [pc, #48] ; (14e98 ) 14e68: 9300 str r3, [sp, #0] 14e6a: f240 221b movw r2, #539 ; 0x21b 14e6e: 2003 movs r0, #3 14e70: 4e0a ldr r6, [pc, #40] ; (14e9c ) 14e72: 47b0 blx r6 14e74: 480a ldr r0, [pc, #40] ; (14ea0 ) 14e76: 490b ldr r1, [pc, #44] ; (14ea4 ) 14e78: 4622 mov r2, r4 14e7a: 462b mov r3, r5 14e7c: 4788 blx r1 14e7e: e7fe b.n 14e7e lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14e80: 4b09 ldr r3, [pc, #36] ; (14ea8 ) 14e82: 4620 mov r0, r4 14e84: 4798 blx r3 return ext->recolor == 0 ? false : true; 14e86: 7c00 ldrb r0, [r0, #16] } 14e88: f3c0 1080 ubfx r0, r0, #6, #1 14e8c: b002 add sp, #8 14e8e: bd70 pop {r4, r5, r6, pc} 14e90: 000017e1 .word 0x000017e1 14e94: 00024555 .word 0x00024555 14e98: 00024441 .word 0x00024441 14e9c: 0000e8e9 .word 0x0000e8e9 14ea0: 0001eebf .word 0x0001eebf 14ea4: 000017e9 .word 0x000017e9 14ea8: 00003fa9 .word 0x00003fa9 00014eac : { 14eac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 14eb0: ed2d 8b02 vpush {d8} 14eb4: b08b sub sp, #44 ; 0x2c LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14eb6: 4e93 ldr r6, [pc, #588] ; (15104 ) { 14eb8: 9102 str r1, [sp, #8] 14eba: 4604 mov r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 14ebc: 47b0 blx r6 14ebe: 4605 mov r5, r0 14ec0: b968 cbnz r0, 14ede 14ec2: 4b91 ldr r3, [pc, #580] ; (15108 ) 14ec4: 4991 ldr r1, [pc, #580] ; (1510c ) 14ec6: 9300 str r3, [sp, #0] 14ec8: f240 22a5 movw r2, #677 ; 0x2a5 14ecc: 2003 movs r0, #3 14ece: 4e90 ldr r6, [pc, #576] ; (15110 ) 14ed0: 47b0 blx r6 14ed2: 4890 ldr r0, [pc, #576] ; (15114 ) 14ed4: 4990 ldr r1, [pc, #576] ; (15118 ) 14ed6: 4622 mov r2, r4 14ed8: 462b mov r3, r5 14eda: 4788 blx r1 14edc: e7fe b.n 14edc LV_ASSERT_NULL(pos); 14ede: 9802 ldr r0, [sp, #8] 14ee0: 47b0 blx r6 14ee2: 4605 mov r5, r0 14ee4: b968 cbnz r0, 14f02 14ee6: 4b88 ldr r3, [pc, #544] ; (15108 ) 14ee8: 4988 ldr r1, [pc, #544] ; (1510c ) 14eea: 9300 str r3, [sp, #0] 14eec: f240 22a6 movw r2, #678 ; 0x2a6 14ef0: 2003 movs r0, #3 14ef2: 4c87 ldr r4, [pc, #540] ; (15110 ) 14ef4: 47a0 blx r4 14ef6: 9a02 ldr r2, [sp, #8] 14ef8: 4886 ldr r0, [pc, #536] ; (15114 ) 14efa: 4987 ldr r1, [pc, #540] ; (15118 ) 14efc: 462b mov r3, r5 14efe: 4788 blx r1 14f00: e7fe b.n 14f00 get_txt_coords(label, &txt_coords); 14f02: a908 add r1, sp, #32 14f04: 4620 mov r0, r4 14f06: 4b85 ldr r3, [pc, #532] ; (1511c ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f08: 4f85 ldr r7, [pc, #532] ; (15120 ) 14f0a: 4798 blx r3 const char * txt = lv_label_get_text(label); 14f0c: 4b85 ldr r3, [pc, #532] ; (15124 ) 14f0e: 4620 mov r0, r4 14f10: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14f12: 4b85 ldr r3, [pc, #532] ; (15128 ) const char * txt = lv_label_get_text(label); 14f14: 4680 mov r8, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 14f16: 4620 mov r0, r4 14f18: 4798 blx r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 14f1a: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 14f1e: f8bd 2020 ldrh.w r2, [sp, #32] 14f22: 3301 adds r3, #1 14f24: 1a9b subs r3, r3, r2 14f26: b21b sxth r3, r3 14f28: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14f2a: f248 028e movw r2, #32910 ; 0x808e 14f2e: 2100 movs r1, #0 14f30: 4620 mov r0, r4 14f32: ee08 3a90 vmov s17, r3 14f36: 4b7d ldr r3, [pc, #500] ; (1512c ) 14f38: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f3a: f248 0281 movw r2, #32897 ; 0x8081 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14f3e: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f40: 2100 movs r1, #0 14f42: 4620 mov r0, r4 14f44: 47b8 blx r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 14f46: f248 0280 movw r2, #32896 ; 0x8080 14f4a: 2100 movs r1, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 14f4c: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 14f4e: 4620 mov r0, r4 14f50: 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; 14f52: f9ba 3008 ldrsh.w r3, [sl, #8] 14f56: 9303 str r3, [sp, #12] if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 14f58: 7c33 ldrb r3, [r6, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 14f5a: f3c3 1680 ubfx r6, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 14f5e: 061a lsls r2, r3, #24 14f60: bf48 it mi 14f62: f046 0602 orrmi.w r6, r6, #2 14f66: ee08 0a10 vmov s16, r0 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 14f6a: 075b lsls r3, r3, #29 lv_label_align_t align = lv_label_get_align(label); 14f6c: 4620 mov r0, r4 14f6e: 4b70 ldr r3, [pc, #448] ; (15130 ) if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 14f70: bf08 it eq 14f72: f046 0610 orreq.w r6, r6, #16 lv_label_align_t align = lv_label_get_align(label); 14f76: 4798 blx r3 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 14f78: 2801 cmp r0, #1 lv_label_align_t align = lv_label_get_align(label); 14f7a: 4604 mov r4, r0 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 14f7c: d108 bne.n 14f90 14f7e: f046 0604 orr.w r6, r6, #4 y += letter_height + line_space; 14f82: 9b03 ldr r3, [sp, #12] new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14f84: f04f 0b00 mov.w fp, #0 y += letter_height + line_space; 14f88: 442b add r3, r5 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14f8a: 465f mov r7, fp y += letter_height + line_space; 14f8c: 9304 str r3, [sp, #16] 14f8e: e059 b.n 15044 if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 14f90: 2802 cmp r0, #2 14f92: d1f6 bne.n 14f82 14f94: f046 0608 orr.w r6, r6, #8 14f98: e7f3 b.n 14f82 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14f9a: ee18 3a90 vmov r3, s17 14f9e: ee18 2a10 vmov r2, s16 14fa2: 4d64 ldr r5, [pc, #400] ; (15134 ) 14fa4: 9600 str r6, [sp, #0] 14fa6: 4651 mov r1, sl 14fa8: 4648 mov r0, r9 14faa: 47a8 blx r5 if(pos->y <= y + letter_height) { 14fac: 9b02 ldr r3, [sp, #8] 14fae: f9b3 2002 ldrsh.w r2, [r3, #2] 14fb2: 9b03 ldr r3, [sp, #12] 14fb4: 445b add r3, fp 14fb6: 429a cmp r2, r3 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 14fb8: eb00 0507 add.w r5, r0, r7 if(pos->y <= y + letter_height) { 14fbc: dc3d bgt.n 1503a letter = _lv_txt_encoded_prev(txt, &tmp); 14fbe: 4b5e ldr r3, [pc, #376] ; (15138 ) uint32_t tmp = new_line_start; 14fc0: 9507 str r5, [sp, #28] letter = _lv_txt_encoded_prev(txt, &tmp); 14fc2: 681b ldr r3, [r3, #0] 14fc4: a907 add r1, sp, #28 14fc6: 4640 mov r0, r8 14fc8: 4798 blx r3 if(letter != '\n' && txt[new_line_start] == '\0') new_line_start++; 14fca: 280a cmp r0, #10 14fcc: d003 beq.n 14fd6 14fce: f818 3005 ldrb.w r3, [r8, r5] 14fd2: b903 cbnz r3, 14fd6 14fd4: 3501 adds r5, #1 if(align == LV_LABEL_ALIGN_CENTER) { 14fd6: 2c01 cmp r4, #1 14fd8: d13c bne.n 15054 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 14fda: 1be9 subs r1, r5, r7 14fdc: ee18 3a10 vmov r3, s16 14fe0: 4c56 ldr r4, [pc, #344] ; (1513c ) 14fe2: 9600 str r6, [sp, #0] 14fe4: 4652 mov r2, sl 14fe6: b289 uxth r1, r1 14fe8: 4648 mov r0, r9 14fea: 47a0 blx r4 14fec: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 14ff0: f8bd 2020 ldrh.w r2, [sp, #32] 14ff4: 3301 adds r3, #1 14ff6: 1a9b subs r3, r3, r2 x += lv_area_get_width(&txt_coords) / 2 - line_w / 2; 14ff8: f3c3 32c0 ubfx r2, r3, #15, #1 14ffc: eb00 74d0 add.w r4, r0, r0, lsr #31 15000: fa02 f383 sxtah r3, r2, r3 15004: 1064 asrs r4, r4, #1 15006: ebc4 0463 rsb r4, r4, r3, asr #1 x += lv_area_get_width(&txt_coords) - line_w; 1500a: b224 sxth r4, r4 lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 1500c: 2300 movs r3, #0 1500e: f88d 301b strb.w r3, [sp, #27] uint32_t i = 0; 15012: 9307 str r3, [sp, #28] if(new_line_start > 0) { 15014: 2d00 cmp r5, #0 15016: d16d bne.n 150f4 logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 15018: 4d49 ldr r5, [pc, #292] ; (15140 ) 1501a: 9907 ldr r1, [sp, #28] 1501c: 682b ldr r3, [r5, #0] 1501e: 4648 mov r0, r9 15020: 4798 blx r3 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 15022: 682b ldr r3, [r5, #0] logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 15024: 4604 mov r4, r0 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 15026: 4639 mov r1, r7 15028: 4640 mov r0, r8 1502a: 4798 blx r3 1502c: 4420 add r0, r4 } 1502e: b280 uxth r0, r0 15030: b00b add sp, #44 ; 0x2c 15032: ecbd 8b02 vpop {d8} 15036: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} y += letter_height + line_space; 1503a: 9b04 ldr r3, [sp, #16] 1503c: 449b add fp, r3 1503e: fa0f fb8b sxth.w fp, fp new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 15042: 462f mov r7, r5 while(txt[line_start] != '\0') { 15044: f818 3007 ldrb.w r3, [r8, r7] 15048: eb08 0907 add.w r9, r8, r7 1504c: 2b00 cmp r3, #0 1504e: d1a4 bne.n 14f9a 15050: 463d mov r5, r7 15052: e7c0 b.n 14fd6 else if(align == LV_LABEL_ALIGN_RIGHT) { 15054: 2c02 cmp r4, #2 15056: d110 bne.n 1507a line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 15058: 1be9 subs r1, r5, r7 1505a: ee18 3a10 vmov r3, s16 1505e: 4c37 ldr r4, [pc, #220] ; (1513c ) 15060: 9600 str r6, [sp, #0] 15062: 4652 mov r2, sl 15064: b289 uxth r1, r1 15066: 4648 mov r0, r9 15068: 47a0 blx r4 1506a: f8bd 4024 ldrh.w r4, [sp, #36] ; 0x24 1506e: f8bd 3020 ldrh.w r3, [sp, #32] 15072: 3401 adds r4, #1 15074: 1ae4 subs r4, r4, r3 x += lv_area_get_width(&txt_coords) - line_w; 15076: 1a24 subs r4, r4, r0 15078: e7c7 b.n 1500a lv_coord_t x = 0; 1507a: 2400 movs r4, #0 1507c: e7c6 b.n 1500c if(_lv_txt_is_cmd(&cmd_state, bidi_txt[i]) != false) { 1507e: 9b07 ldr r3, [sp, #28] 15080: 9005 str r0, [sp, #20] 15082: f819 1003 ldrb.w r1, [r9, r3] 15086: 4b2f ldr r3, [pc, #188] ; (15144 ) 15088: f10d 001b add.w r0, sp, #27 1508c: 4798 blx r3 1508e: 9a05 ldr r2, [sp, #20] 15090: b198 cbz r0, 150ba while(i + line_start < new_line_start) { 15092: 9b07 ldr r3, [sp, #28] 15094: 443b add r3, r7 15096: 429d cmp r5, r3 15098: d9be bls.n 15018 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 1509a: f8db 3000 ldr.w r3, [fp] 1509e: a907 add r1, sp, #28 150a0: 4648 mov r0, r9 150a2: 4798 blx r3 150a4: 4606 mov r6, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 150a6: 9807 ldr r0, [sp, #28] 150a8: f8db 3000 ldr.w r3, [fp] 150ac: 2100 movs r1, #0 150ae: 4448 add r0, r9 150b0: 4798 blx r3 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 150b2: 9b04 ldr r3, [sp, #16] uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 150b4: 4602 mov r2, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 150b6: 2b00 cmp r3, #0 150b8: d1e1 bne.n 1507e x += lv_font_get_glyph_width(font, letter, letter_next); 150ba: 4b23 ldr r3, [pc, #140] ; (15148 ) 150bc: 4631 mov r1, r6 150be: 4650 mov r0, sl 150c0: 4798 blx r3 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 150c2: 9b02 ldr r3, [sp, #8] x += lv_font_get_glyph_width(font, letter, letter_next); 150c4: 4420 add r0, r4 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 150c6: f9b3 3000 ldrsh.w r3, [r3] x += lv_font_get_glyph_width(font, letter, letter_next); 150ca: b284 uxth r4, r0 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 150cc: b200 sxth r0, r0 150ce: 4283 cmp r3, r0 150d0: da02 bge.n 150d8 i = i_act; 150d2: 9b03 ldr r3, [sp, #12] 150d4: 9307 str r3, [sp, #28] break; 150d6: e79f b.n 15018 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 150d8: 9b07 ldr r3, [sp, #28] 150da: 18fa adds r2, r7, r3 150dc: 4295 cmp r5, r2 150de: d0f8 beq.n 150d2 150e0: f818 2002 ldrb.w r2, [r8, r2] 150e4: 2a00 cmp r2, #0 150e6: d0f4 beq.n 150d2 x += letter_space; 150e8: ee18 2a10 vmov r2, s16 150ec: 4414 add r4, r2 150ee: b224 sxth r4, r4 i_act = i; 150f0: 9303 str r3, [sp, #12] 150f2: e7ce b.n 15092 uint32_t i_act = i; 150f4: 9303 str r3, [sp, #12] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 150f6: f006 0301 and.w r3, r6, #1 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 150fa: f8df b050 ldr.w fp, [pc, #80] ; 1514c if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 150fe: 9304 str r3, [sp, #16] 15100: e7c7 b.n 15092 15102: bf00 nop 15104: 000017e1 .word 0x000017e1 15108: 0002459a .word 0x0002459a 1510c: 00024441 .word 0x00024441 15110: 0000e8e9 .word 0x0000e8e9 15114: 0001eebf .word 0x0001eebf 15118: 000017e9 .word 0x000017e9 1511c: 00014c8d .word 0x00014c8d 15120: 00003711 .word 0x00003711 15124: 00014d59 .word 0x00014d59 15128: 00003fa9 .word 0x00003fa9 1512c: 000038c9 .word 0x000038c9 15130: 00014dfd .word 0x00014dfd 15134: 0000ffc5 .word 0x0000ffc5 15138: 20000068 .word 0x20000068 1513c: 0000ff1d .word 0x0000ff1d 15140: 20000064 .word 0x20000064 15144: 0000fee5 .word 0x0000fee5 15148: 0000d175 .word 0x0000d175 1514c: 20000058 .word 0x20000058 00015150 : { 15150: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15154: 4b8d ldr r3, [pc, #564] ; (1538c ) { 15156: b09b sub sp, #108 ; 0x6c 15158: 4604 mov r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1515a: 4798 blx r3 if(ext->text == NULL) return; 1515c: 6803 ldr r3, [r0, #0] lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1515e: 4605 mov r5, r0 if(ext->text == NULL) return; 15160: 2b00 cmp r3, #0 15162: d062 beq.n 1522a get_txt_coords(label, &txt_coords); 15164: 4b8a ldr r3, [pc, #552] ; (15390 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 15166: f8df 8258 ldr.w r8, [pc, #600] ; 153c0 1516a: a908 add r1, sp, #32 1516c: 4620 mov r0, r4 1516e: 4798 blx r3 15170: f8bd a024 ldrh.w sl, [sp, #36] ; 0x24 15174: f8bd 3020 ldrh.w r3, [sp, #32] 15178: f10a 0a01 add.w sl, sl, #1 1517c: ebaa 0a03 sub.w sl, sl, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 15180: f248 028e movw r2, #32910 ; 0x808e 15184: 4b83 ldr r3, [pc, #524] ; (15394 ) 15186: 2100 movs r1, #0 15188: 4620 mov r0, r4 1518a: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1518c: f248 0281 movw r2, #32897 ; 0x8081 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 15190: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 15192: 2100 movs r1, #0 15194: 4620 mov r0, r4 15196: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 15198: 2100 movs r1, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1519a: 4607 mov r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1519c: f248 0280 movw r2, #32896 ; 0x8080 151a0: 4620 mov r0, r4 151a2: 47c0 blx r8 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 151a4: 7c2a ldrb r2, [r5, #16] _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 151a6: 9700 str r7, [sp, #0] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 151a8: f3c2 1380 ubfx r3, r2, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 151ac: 0611 lsls r1, r2, #24 151ae: bf48 it mi 151b0: f043 0302 orrmi.w r3, r3, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 151b4: 0752 lsls r2, r2, #29 151b6: bf08 it eq 151b8: f043 0310 orreq.w r3, r3, #16 151bc: fa0f fa8a sxth.w sl, sl _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 151c0: e9cd a301 strd sl, r3, [sp, #4] 151c4: 4681 mov r9, r0 151c6: 6829 ldr r1, [r5, #0] 151c8: f8df a1f8 ldr.w sl, [pc, #504] ; 153c4 151cc: 4603 mov r3, r0 151ce: 4632 mov r2, r6 151d0: a806 add r0, sp, #24 151d2: 47d0 blx sl if(ext->long_mode == LV_LABEL_LONG_EXPAND) { 151d4: 7c29 ldrb r1, [r5, #16] 151d6: f011 0107 ands.w r1, r1, #7 151da: d129 bne.n 15230 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 151dc: 2212 movs r2, #18 151de: 4620 mov r0, r4 151e0: 9105 str r1, [sp, #20] 151e2: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 151e4: 9905 ldr r1, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 151e6: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 151e8: 2213 movs r2, #19 151ea: 4620 mov r0, r4 151ec: 47c0 blx r8 size.x += lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); 151ee: f8bd 3018 ldrh.w r3, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 151f2: 9905 ldr r1, [sp, #20] 151f4: 4428 add r0, r5 151f6: 4418 add r0, r3 151f8: f8ad 0018 strh.w r0, [sp, #24] 151fc: 2210 movs r2, #16 151fe: 4620 mov r0, r4 15200: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15202: 9905 ldr r1, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15204: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15206: 2211 movs r2, #17 15208: 4620 mov r0, r4 1520a: 47c0 blx r8 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1520c: f8bd 301a ldrh.w r3, [sp, #26] lv_obj_set_size(label, size.x, size.y); 15210: f9bd 1018 ldrsh.w r1, [sp, #24] size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 15214: 182a adds r2, r5, r0 15216: 441a add r2, r3 15218: b212 sxth r2, r2 lv_obj_set_size(label, size.x, size.y); 1521a: 4b5f ldr r3, [pc, #380] ; (15398 ) size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1521c: f8ad 201a strh.w r2, [sp, #26] lv_obj_set_size(label, size.x, size.y); 15220: 4620 mov r0, r4 15222: 4798 blx r3 lv_obj_invalidate(label); 15224: 4b5d ldr r3, [pc, #372] ; (1539c ) 15226: 4620 mov r0, r4 15228: 4798 blx r3 } 1522a: b01b add sp, #108 ; 0x6c 1522c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} else if(ext->long_mode == LV_LABEL_LONG_SROLL) { 15230: 3901 subs r1, #1 15232: 2903 cmp r1, #3 15234: d8f6 bhi.n 15224 15236: e8df f011 tbh [pc, r1, lsl #1] 1523a: 01c8 .short 0x01c8 1523c: 0004013c .word 0x0004013c 15240: 00c7 .short 0x00c7 lv_anim_init(&a); 15242: 4b57 ldr r3, [pc, #348] ; (153a0 ) 15244: a80a add r0, sp, #40 ; 0x28 15246: 4798 blx r3 lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 15248: 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; 1524a: f64f 73ff movw r3, #65535 ; 0xffff 1524e: 4611 mov r1, r2 15250: f8ad 305c strh.w r3, [sp, #92] ; 0x5c a->var = var; 15254: 940a str r4, [sp, #40] ; 0x28 15256: 4b53 ldr r3, [pc, #332] ; (153a4 ) 15258: 4630 mov r0, r6 1525a: 4798 blx r3 1525c: f44f 727a mov.w r2, #1000 ; 0x3e8 15260: eb00 0309 add.w r3, r0, r9 ext->anim_speed) * 15264: 896f ldrh r7, [r5, #10] if(size.x > lv_area_get_width(&txt_coords)) { 15266: f9bd 1018 ldrsh.w r1, [sp, #24] lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1526a: 4353 muls r3, r2 1526c: fb93 f3f7 sdiv r3, r3, r7 15270: eb03 0343 add.w r3, r3, r3, lsl #1 a->playback_delay = delay; 15274: b29b uxth r3, r3 15276: 9314 str r3, [sp, #80] ; 0x50 * @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; 15278: 9316 str r3, [sp, #88] ; 0x58 1527a: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 1527e: f8bd 2020 ldrh.w r2, [sp, #32] 15282: 3301 adds r3, #1 15284: 1a9b subs r3, r3, r2 15286: b29a uxth r2, r3 if(size.x > lv_area_get_width(&txt_coords)) { 15288: b21b sxth r3, r3 1528a: 4299 cmp r1, r3 1528c: dd74 ble.n 15378 lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 1528e: 1a52 subs r2, r2, r1 a->exec_cb = exec_cb; 15290: f8df 8124 ldr.w r8, [pc, #292] ; 153b8 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15294: 4b44 ldr r3, [pc, #272] ; (153a8 ) 15296: f8cd 802c str.w r8, [sp, #44] ; 0x2c a->start = start; 1529a: 2100 movs r1, #0 lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 1529c: b212 sxth r2, r2 a->end = end; 1529e: e9cd 1210 strd r1, r2, [sp, #64] ; 0x40 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 152a2: 4638 mov r0, r7 152a4: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 152a6: 4b41 ldr r3, [pc, #260] ; (153ac ) a->time = duration; 152a8: 9012 str r0, [sp, #72] ; 0x48 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 152aa: 9015 str r0, [sp, #84] ; 0x54 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 152ac: 4641 mov r1, r8 152ae: 4620 mov r0, r4 152b0: 4798 blx r3 if(anim_cur) { 152b2: 2800 cmp r0, #0 152b4: d05e beq.n 15374 act_time = anim_cur->act_time; 152b6: 6a43 ldr r3, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 152b8: f890 003c ldrb.w r0, [r0, #60] ; 0x3c 152bc: f000 0001 and.w r0, r0, #1 if(act_time < a.time) { 152c0: 9a12 ldr r2, [sp, #72] ; 0x48 152c2: 429a cmp r2, r3 152c4: dd11 ble.n 152ea a.act_time = act_time; /*To keep the old position*/ 152c6: 9313 str r3, [sp, #76] ; 0x4c a.early_apply = 0; 152c8: f89d 305e ldrb.w r3, [sp, #94] ; 0x5e 152cc: f36f 0300 bfc r3, #0, #1 152d0: f88d 305e strb.w r3, [sp, #94] ; 0x5e if(playback_now) { 152d4: b148 cbz r0, 152ea a.playback_now = 1; 152d6: f89d 3064 ldrb.w r3, [sp, #100] ; 0x64 152da: f043 0301 orr.w r3, r3, #1 152de: f88d 3064 strb.w r3, [sp, #100] ; 0x64 a.start = a.end; 152e2: e9dd 3210 ldrd r3, r2, [sp, #64] ; 0x40 a.end = tmp; 152e6: e9cd 2310 strd r2, r3, [sp, #64] ; 0x40 lv_anim_start(&a); 152ea: 4b31 ldr r3, [pc, #196] ; (153b0 ) 152ec: a80a add r0, sp, #40 ; 0x28 152ee: 4798 blx r3 hor_anim = true; 152f0: 2701 movs r7, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 152f2: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 152f6: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 152fa: f9bd 101a ldrsh.w r1, [sp, #26] 152fe: 3301 adds r3, #1 15300: 1a9b subs r3, r3, r2 15302: b29a uxth r2, r3 15304: b21b sxth r3, r3 15306: 4299 cmp r1, r3 15308: f340 80cc ble.w 154a4 1530c: 2f00 cmp r7, #0 1530e: f040 80c9 bne.w 154a4 lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 15312: 8933 ldrh r3, [r6, #8] a->exec_cb = exec_cb; 15314: 4e27 ldr r6, [pc, #156] ; (153b4 ) lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15316: 8968 ldrh r0, [r5, #10] 15318: 960b str r6, [sp, #44] ; 0x2c lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 1531a: 1a52 subs r2, r2, r1 1531c: 1ad2 subs r2, r2, r3 1531e: b212 sxth r2, r2 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15320: 4b21 ldr r3, [pc, #132] ; (153a8 ) 15322: 4639 mov r1, r7 a->end = end; 15324: e9cd 7210 strd r7, r2, [sp, #64] ; 0x40 15328: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1532a: 4b20 ldr r3, [pc, #128] ; (153ac ) a->time = duration; 1532c: 9012 str r0, [sp, #72] ; 0x48 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1532e: 9015 str r0, [sp, #84] ; 0x54 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 15330: 4631 mov r1, r6 15332: 4620 mov r0, r4 15334: 4798 blx r3 if(anim_cur) { 15336: b330 cbz r0, 15386 playback_now = anim_cur->playback_now; 15338: f890 703c ldrb.w r7, [r0, #60] ; 0x3c act_time = anim_cur->act_time; 1533c: 6a43 ldr r3, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1533e: f007 0701 and.w r7, r7, #1 if(act_time < a.time) { 15342: 9a12 ldr r2, [sp, #72] ; 0x48 15344: 429a cmp r2, r3 15346: dd11 ble.n 1536c a.act_time = act_time; /*To keep the old position*/ 15348: 9313 str r3, [sp, #76] ; 0x4c a.early_apply = 0; 1534a: f89d 305e ldrb.w r3, [sp, #94] ; 0x5e 1534e: f36f 0300 bfc r3, #0, #1 15352: f88d 305e strb.w r3, [sp, #94] ; 0x5e if(playback_now) { 15356: b14f cbz r7, 1536c a.playback_now = 1; 15358: f89d 3064 ldrb.w r3, [sp, #100] ; 0x64 1535c: f043 0301 orr.w r3, r3, #1 15360: f88d 3064 strb.w r3, [sp, #100] ; 0x64 a.start = a.end; 15364: e9dd 3210 ldrd r3, r2, [sp, #64] ; 0x40 a.end = tmp; 15368: e9cd 2310 strd r2, r3, [sp, #64] ; 0x40 lv_anim_start(&a); 1536c: 4b10 ldr r3, [pc, #64] ; (153b0 ) 1536e: a80a add r0, sp, #40 ; 0x28 15370: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 15372: e757 b.n 15224 int32_t act_time = 0; 15374: 4603 mov r3, r0 15376: e7a3 b.n 152c0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15378: 490f ldr r1, [pc, #60] ; (153b8 ) 1537a: 4b10 ldr r3, [pc, #64] ; (153bc ) 1537c: 4620 mov r0, r4 ext->offset.x = 0; 1537e: 2700 movs r7, #0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15380: 4798 blx r3 ext->offset.x = 0; 15382: 81af strh r7, [r5, #12] 15384: e7b5 b.n 152f2 int32_t act_time = 0; 15386: 463b mov r3, r7 15388: e7db b.n 15342 1538a: bf00 nop 1538c: 00003fa9 .word 0x00003fa9 15390: 00014c8d .word 0x00014c8d 15394: 000038c9 .word 0x000038c9 15398: 000034e1 .word 0x000034e1 1539c: 00002785 .word 0x00002785 153a0: 0000dc79 .word 0x0000dc79 153a4: 0000d175 .word 0x0000d175 153a8: 0000de0d .word 0x0000de0d 153ac: 0000ddd9 .word 0x0000ddd9 153b0: 0000dd21 .word 0x0000dd21 153b4: 00014bc1 .word 0x00014bc1 153b8: 00014be1 .word 0x00014be1 153bc: 0000dcb1 .word 0x0000dcb1 153c0: 00003711 .word 0x00003711 153c4: 0001019d .word 0x0001019d lv_anim_init(&a); 153c8: 4b8a ldr r3, [pc, #552] ; (155f4 ) 153ca: a80a add r0, sp, #40 ; 0x28 153cc: 4798 blx r3 a->repeat_cnt = cnt; 153ce: f64f 73ff movw r3, #65535 ; 0xffff 153d2: f8ad 305c strh.w r3, [sp, #92] ; 0x5c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 153d6: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 153da: f8bd 2020 ldrh.w r2, [sp, #32] a->var = var; 153de: 940a str r4, [sp, #40] ; 0x28 153e0: 3301 adds r3, #1 153e2: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 153e4: f9bd 2018 ldrsh.w r2, [sp, #24] 153e8: b21b sxth r3, r3 153ea: 429a cmp r2, r3 153ec: dd53 ble.n 15496 lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 153ee: 2220 movs r2, #32 153f0: 4611 mov r1, r2 153f2: 4b81 ldr r3, [pc, #516] ; (155f8 ) a->exec_cb = exec_cb; 153f4: 4f81 ldr r7, [pc, #516] ; (155fc ) 153f6: 4630 mov r0, r6 153f8: 4798 blx r3 153fa: ebc0 3380 rsb r3, r0, r0, lsl #14 153fe: eb00 0283 add.w r2, r0, r3, lsl #2 15402: f8bd 3018 ldrh.w r3, [sp, #24] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15406: 8968 ldrh r0, [r5, #10] 15408: 970b str r7, [sp, #44] ; 0x2c lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 1540a: 1ad2 subs r2, r2, r3 a->start = start; 1540c: 2100 movs r1, #0 1540e: b212 sxth r2, r2 a->end = end; 15410: e9cd 1210 strd r1, r2, [sp, #64] ; 0x40 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15414: 4b7a ldr r3, [pc, #488] ; (15600 ) 15416: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15418: 4b7a ldr r3, [pc, #488] ; (15604 ) a->time = duration; 1541a: 9012 str r0, [sp, #72] ; 0x48 1541c: 4639 mov r1, r7 1541e: 4620 mov r0, r4 15420: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 15422: b100 cbz r0, 15426 15424: 6a40 ldr r0, [r0, #36] ; 0x24 if(act_time < a.time) { 15426: 9b12 ldr r3, [sp, #72] ; 0x48 15428: 4283 cmp r3, r0 a.early_apply = 0; 1542a: bfc1 itttt gt 1542c: f89d 305e ldrbgt.w r3, [sp, #94] ; 0x5e a.act_time = act_time; /*To keep the old position*/ 15430: 9013 strgt r0, [sp, #76] ; 0x4c a.early_apply = 0; 15432: f36f 0300 bfcgt r3, #0, #1 15436: f88d 305e strbgt.w r3, [sp, #94] ; 0x5e lv_anim_start(&a); 1543a: a80a add r0, sp, #40 ; 0x28 1543c: 4b72 ldr r3, [pc, #456] ; (15608 ) 1543e: 4798 blx r3 hor_anim = true; 15440: 2701 movs r7, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15442: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 15446: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1544a: f9bd 201a ldrsh.w r2, [sp, #26] 1544e: 3301 adds r3, #1 15450: 1a5b subs r3, r3, r1 15452: b21b sxth r3, r3 15454: 429a cmp r2, r3 15456: dd25 ble.n 154a4 15458: bb27 cbnz r7, 154a4 lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 1545a: 8933 ldrh r3, [r6, #8] a->exec_cb = exec_cb; 1545c: 4e6b ldr r6, [pc, #428] ; (1560c ) lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1545e: 8968 ldrh r0, [r5, #10] 15460: 960b str r6, [sp, #44] ; 0x2c lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 15462: 441a add r2, r3 15464: 4252 negs r2, r2 15466: b212 sxth r2, r2 lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 15468: 4b65 ldr r3, [pc, #404] ; (15600 ) 1546a: 4639 mov r1, r7 a->end = end; 1546c: e9cd 7210 strd r7, r2, [sp, #64] ; 0x40 15470: 4798 blx r3 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 15472: 4b64 ldr r3, [pc, #400] ; (15604 ) a->time = duration; 15474: 9012 str r0, [sp, #72] ; 0x48 15476: 4631 mov r1, r6 15478: 4620 mov r0, r4 1547a: 4798 blx r3 int32_t act_time = anim_cur ? anim_cur->act_time : 0; 1547c: b100 cbz r0, 15480 1547e: 6a47 ldr r7, [r0, #36] ; 0x24 if(act_time < a.time) { 15480: 9b12 ldr r3, [sp, #72] ; 0x48 15482: 42bb cmp r3, r7 a.early_apply = 0; 15484: bfc1 itttt gt 15486: f89d 305e ldrbgt.w r3, [sp, #94] ; 0x5e a.act_time = act_time; /*To keep the old position*/ 1548a: 9713 strgt r7, [sp, #76] ; 0x4c a.early_apply = 0; 1548c: f36f 0300 bfcgt r3, #0, #1 15490: f88d 305e strbgt.w r3, [sp, #94] ; 0x5e 15494: e76a b.n 1536c lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15496: 4959 ldr r1, [pc, #356] ; (155fc ) 15498: 4b5d ldr r3, [pc, #372] ; (15610 ) 1549a: 4620 mov r0, r4 ext->offset.x = 0; 1549c: 2700 movs r7, #0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1549e: 4798 blx r3 ext->offset.x = 0; 154a0: 81af strh r7, [r5, #12] 154a2: e7ce b.n 15442 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 154a4: 4b5a ldr r3, [pc, #360] ; (15610 ) 154a6: 4959 ldr r1, [pc, #356] ; (1560c ) 154a8: 4620 mov r0, r4 154aa: 4798 blx r3 ext->offset.y = 0; 154ac: 2300 movs r3, #0 154ae: 81eb strh r3, [r5, #14] 154b0: e6b8 b.n 15224 154b2: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 154b6: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 154ba: 3301 adds r3, #1 154bc: 1a9b subs r3, r3, r2 if(size.y <= lv_area_get_height(&txt_coords)) { /*No dots are required, the text is short enough*/ 154be: f9bd 201a ldrsh.w r2, [sp, #26] 154c2: b21b sxth r3, r3 154c4: 429a cmp r2, r3 154c6: dc03 bgt.n 154d0 ext->dot_end = LV_LABEL_DOT_END_INV; 154c8: f64f 73ff movw r3, #65535 ; 0xffff 154cc: 812b strh r3, [r5, #8] 154ce: e6a9 b.n 15224 else if(_lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/ 154d0: 4b50 ldr r3, [pc, #320] ; (15614 ) 154d2: 6828 ldr r0, [r5, #0] 154d4: 681b ldr r3, [r3, #0] 154d6: 4798 blx r3 154d8: 2803 cmp r0, #3 154da: d9f5 bls.n 154c8 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 154dc: f8bd 8024 ldrh.w r8, [sp, #36] ; 0x24 154e0: f8bd 3020 ldrh.w r3, [sp, #32] (lv_font_get_glyph_width(font, '.', '.') + letter_space) * 154e4: 222e movs r2, #46 ; 0x2e 154e6: f108 0801 add.w r8, r8, #1 154ea: 4611 mov r1, r2 154ec: eba8 0803 sub.w r8, r8, r3 154f0: 4630 mov r0, r6 154f2: 4b41 ldr r3, [pc, #260] ; (155f8 ) 154f4: 4798 blx r3 154f6: 4448 add r0, r9 p.x = lv_area_get_width(&txt_coords) - 154f8: ebc0 3380 rsb r3, r0, r0, lsl #14 154fc: eb00 0083 add.w r0, r0, r3, lsl #2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15500: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 15504: f8bd 2022 ldrh.w r2, [sp, #34] ; 0x22 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 15508: f8df 9124 ldr.w r9, [pc, #292] ; 15630 1550c: 3301 adds r3, #1 1550e: 1a9b subs r3, r3, r2 (lv_font_get_line_height(font) + line_space); /*Round down to the last line*/ 15510: f9b6 2008 ldrsh.w r2, [r6, #8] 15514: b29b uxth r3, r3 15516: 443a add r2, r7 p.y -= line_space; /*Trim the last line space*/ 15518: 1bd9 subs r1, r3, r7 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1551a: fa1f f888 uxth.w r8, r8 p.y -= p.y % 1551e: b21b sxth r3, r3 p.x = lv_area_get_width(&txt_coords) - 15520: 4480 add r8, r0 p.y -= p.y % 15522: fb93 f0f2 sdiv r0, r3, r2 15526: fb02 3310 mls r3, r2, r0, r3 p.y -= line_space; /*Trim the last line space*/ 1552a: 1acb subs r3, r1, r3 1552c: f8ad 301e strh.w r3, [sp, #30] uint32_t letter_id = lv_label_get_letter_on(label, &p); 15530: a907 add r1, sp, #28 15532: 4b39 ldr r3, [pc, #228] ; (15618 ) p.x = lv_area_get_width(&txt_coords) - 15534: f8ad 801c strh.w r8, [sp, #28] uint32_t letter_id = lv_label_get_letter_on(label, &p); 15538: 4620 mov r0, r4 1553a: 4798 blx r3 size_t txt_len = strlen(ext->text); 1553c: 682e ldr r6, [r5, #0] 1553e: 4b37 ldr r3, [pc, #220] ; (1561c ) uint32_t letter_id = lv_label_get_letter_on(label, &p); 15540: 4607 mov r7, r0 size_t txt_len = strlen(ext->text); 15542: 4630 mov r0, r6 15544: 4798 blx r3 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 15546: 4b36 ldr r3, [pc, #216] ; (15620 ) size_t txt_len = strlen(ext->text); 15548: 4680 mov r8, r0 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 1554a: 681b ldr r3, [r3, #0] 1554c: 4630 mov r0, r6 1554e: 4639 mov r1, r7 15550: 4798 blx r3 15552: 4606 mov r6, r0 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 15554: 6828 ldr r0, [r5, #0] 15556: f8d9 3000 ldr.w r3, [r9] uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 1555a: 960a str r6, [sp, #40] ; 0x28 while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1555c: f106 0b03 add.w fp, r6, #3 15560: 45c3 cmp fp, r8 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 15562: 4430 add r0, r6 while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 15564: d82c bhi.n 155c0 15566: f04f 0a04 mov.w sl, #4 uint8_t len = 0; 1556a: f04f 0800 mov.w r8, #0 len += _lv_txt_encoded_size(&ext->text[byte_id]); 1556e: 9a0a ldr r2, [sp, #40] ; 0x28 15570: 6828 ldr r0, [r5, #0] 15572: f8d9 3000 ldr.w r3, [r9] 15576: 4410 add r0, r2 15578: 4798 blx r3 _lv_txt_encoded_next(ext->text, &byte_id); 1557a: 4b2a ldr r3, [pc, #168] ; (15624 ) len += _lv_txt_encoded_size(&ext->text[byte_id]); 1557c: 4440 add r0, r8 _lv_txt_encoded_next(ext->text, &byte_id); 1557e: 681b ldr r3, [r3, #0] len += _lv_txt_encoded_size(&ext->text[byte_id]); 15580: fa5f f880 uxtb.w r8, r0 _lv_txt_encoded_next(ext->text, &byte_id); 15584: a90a add r1, sp, #40 ; 0x28 15586: 6828 ldr r0, [r5, #0] 15588: 4798 blx r3 for(i = 0; i <= LV_LABEL_DOT_NUM; i++) { 1558a: f1ba 0a01 subs.w sl, sl, #1 1558e: d1ee bne.n 1556e if(lv_label_set_dot_tmp(label, &ext->text[byte_id_ori], len)) { 15590: 6829 ldr r1, [r5, #0] 15592: 4b25 ldr r3, [pc, #148] ; (15628 ) 15594: 4642 mov r2, r8 15596: 4431 add r1, r6 15598: 4620 mov r0, r4 1559a: 4798 blx r3 1559c: 2800 cmp r0, #0 1559e: f43f ae41 beq.w 15224 ext->text[byte_id_ori + i] = '.'; 155a2: 682b ldr r3, [r5, #0] 155a4: 222e movs r2, #46 ; 0x2e 155a6: 559a strb r2, [r3, r6] 155a8: 682b ldr r3, [r5, #0] 155aa: 4433 add r3, r6 ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 155ac: 3703 adds r7, #3 ext->text[byte_id_ori + i] = '.'; 155ae: 705a strb r2, [r3, #1] 155b0: 682b ldr r3, [r5, #0] 155b2: 4433 add r3, r6 155b4: 709a strb r2, [r3, #2] ext->text[byte_id_ori + LV_LABEL_DOT_NUM] = '\0'; 155b6: 682b ldr r3, [r5, #0] 155b8: f803 a00b strb.w sl, [r3, fp] ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 155bc: 812f strh r7, [r5, #8] 155be: e631 b.n 15224 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 155c0: 4798 blx r3 155c2: 9e0a ldr r6, [sp, #40] ; 0x28 letter_id--; 155c4: 3f01 subs r7, #1 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 155c6: 1a36 subs r6, r6, r0 letter_id--; 155c8: e7c4 b.n 15554 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 155ca: 2210 movs r2, #16 155cc: 2100 movs r1, #0 155ce: 4620 mov r0, r4 155d0: 47c0 blx r8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 155d2: 2211 movs r2, #17 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 155d4: 4605 mov r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 155d6: 2100 movs r1, #0 155d8: 4620 mov r0, r4 155da: 47c0 blx r8 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 155dc: f8bd 301a ldrh.w r3, [sp, #26] 155e0: 1829 adds r1, r5, r0 155e2: 4419 add r1, r3 155e4: b209 sxth r1, r1 lv_obj_set_height(label, size.y); 155e6: 4b11 ldr r3, [pc, #68] ; (1562c ) size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 155e8: f8ad 101a strh.w r1, [sp, #26] lv_obj_set_height(label, size.y); 155ec: 4620 mov r0, r4 155ee: 4798 blx r3 155f0: e618 b.n 15224 155f2: bf00 nop 155f4: 0000dc79 .word 0x0000dc79 155f8: 0000d175 .word 0x0000d175 155fc: 00014be1 .word 0x00014be1 15600: 0000de0d .word 0x0000de0d 15604: 0000ddd9 .word 0x0000ddd9 15608: 0000dd21 .word 0x0000dd21 1560c: 00014bc1 .word 0x00014bc1 15610: 0000dcb1 .word 0x0000dcb1 15614: 20000060 .word 0x20000060 15618: 00014ead .word 0x00014ead 1561c: 00016339 .word 0x00016339 15620: 2000005c .word 0x2000005c 15624: 20000058 .word 0x20000058 15628: 00014c01 .word 0x00014c01 1562c: 000035f1 .word 0x000035f1 15630: 20000054 .word 0x20000054 00015634 : { 15634: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15638: 4f40 ldr r7, [pc, #256] ; (1573c ) { 1563a: 4606 mov r6, r0 1563c: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1563e: 47b8 blx r7 15640: 4604 mov r4, r0 15642: b960 cbnz r0, 1565e 15644: 4b3e ldr r3, [pc, #248] ; (15740 ) 15646: 493f ldr r1, [pc, #252] ; (15744 ) 15648: 9300 str r3, [sp, #0] 1564a: 22b8 movs r2, #184 ; 0xb8 1564c: 2003 movs r0, #3 1564e: 4d3e ldr r5, [pc, #248] ; (15748 ) 15650: 47a8 blx r5 15652: 483e ldr r0, [pc, #248] ; (1574c ) 15654: 493e ldr r1, [pc, #248] ; (15750 ) 15656: 4632 mov r2, r6 15658: 4623 mov r3, r4 1565a: 4788 blx r1 1565c: e7fe b.n 1565c lv_obj_invalidate(label); 1565e: 4b3d ldr r3, [pc, #244] ; (15754 ) 15660: 4630 mov r0, r6 15662: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15664: 4b3c ldr r3, [pc, #240] ; (15758 ) 15666: 4630 mov r0, r6 15668: 4798 blx r3 1566a: 4604 mov r4, r0 if(text == NULL) { 1566c: b92d cbnz r5, 1567a lv_label_refr_text(label); 1566e: 4b3b ldr r3, [pc, #236] ; (1575c ) 15670: 4630 mov r0, r6 } 15672: b003 add sp, #12 15674: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} lv_label_refr_text(label); 15678: 4718 bx r3 LV_ASSERT_STR(text); 1567a: 4628 mov r0, r5 1567c: 47b8 blx r7 1567e: 4680 mov r8, r0 15680: b960 cbnz r0, 1569c 15682: 4b2f ldr r3, [pc, #188] ; (15740 ) 15684: 492f ldr r1, [pc, #188] ; (15744 ) 15686: 9300 str r3, [sp, #0] 15688: 22c4 movs r2, #196 ; 0xc4 1568a: 2003 movs r0, #3 1568c: 4c2e ldr r4, [pc, #184] ; (15748 ) 1568e: 47a0 blx r4 15690: 482e ldr r0, [pc, #184] ; (1574c ) 15692: 492f ldr r1, [pc, #188] ; (15750 ) 15694: 462a mov r2, r5 15696: 4643 mov r3, r8 15698: 4788 blx r1 1569a: e7fe b.n 1569a if(ext->text == text && ext->static_txt == 0) { 1569c: 6820 ldr r0, [r4, #0] 1569e: f8df 90d4 ldr.w r9, [pc, #212] ; 15774 156a2: 4285 cmp r5, r0 156a4: d11f bne.n 156e6 156a6: 7c23 ldrb r3, [r4, #16] 156a8: 071b lsls r3, r3, #28 156aa: d425 bmi.n 156f8 ext->text = lv_mem_realloc(ext->text, strlen(ext->text) + 1); 156ac: 4628 mov r0, r5 156ae: 47c8 blx r9 156b0: 4b2b ldr r3, [pc, #172] ; (15760 ) 156b2: 1c41 adds r1, r0, #1 156b4: 4628 mov r0, r5 156b6: 4798 blx r3 156b8: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 156ba: 47b8 blx r7 156bc: 4605 mov r5, r0 156be: b960 cbnz r0, 156da 156c0: 4b1f ldr r3, [pc, #124] ; (15740 ) 156c2: 4920 ldr r1, [pc, #128] ; (15744 ) 156c4: 9300 str r3, [sp, #0] 156c6: 22d5 movs r2, #213 ; 0xd5 156c8: 2003 movs r0, #3 156ca: 4e1f ldr r6, [pc, #124] ; (15748 ) 156cc: 47b0 blx r6 156ce: 6822 ldr r2, [r4, #0] 156d0: 4824 ldr r0, [pc, #144] ; (15764 ) 156d2: 491f ldr r1, [pc, #124] ; (15750 ) 156d4: 462b mov r3, r5 156d6: 4788 blx r1 156d8: e7fe b.n 156d8 if(ext->text == NULL) return; 156da: 6823 ldr r3, [r4, #0] 156dc: 2b00 cmp r3, #0 156de: d1c6 bne.n 1566e } 156e0: b003 add sp, #12 156e2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(ext->text != NULL && ext->static_txt == 0) { 156e6: b138 cbz r0, 156f8 156e8: 7c23 ldrb r3, [r4, #16] 156ea: f013 0808 ands.w r8, r3, #8 156ee: d103 bne.n 156f8 lv_mem_free(ext->text); 156f0: 4b1d ldr r3, [pc, #116] ; (15768 ) 156f2: 4798 blx r3 ext->text = NULL; 156f4: f8c4 8000 str.w r8, [r4] size_t len = strlen(text) + 1; 156f8: 4628 mov r0, r5 156fa: 47c8 blx r9 ext->text = lv_mem_alloc(len); 156fc: 4b1b ldr r3, [pc, #108] ; (1576c ) 156fe: 3001 adds r0, #1 15700: 4798 blx r3 15702: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 15704: 47b8 blx r7 15706: 4607 mov r7, r0 15708: b960 cbnz r0, 15724 1570a: 4b0d ldr r3, [pc, #52] ; (15740 ) 1570c: 490d ldr r1, [pc, #52] ; (15744 ) 1570e: 9300 str r3, [sp, #0] 15710: 22ee movs r2, #238 ; 0xee 15712: 2003 movs r0, #3 15714: 4d0c ldr r5, [pc, #48] ; (15748 ) 15716: 47a8 blx r5 15718: 6822 ldr r2, [r4, #0] 1571a: 4812 ldr r0, [pc, #72] ; (15764 ) 1571c: 490c ldr r1, [pc, #48] ; (15750 ) 1571e: 463b mov r3, r7 15720: 4788 blx r1 15722: e7fe b.n 15722 if(ext->text == NULL) return; 15724: 6820 ldr r0, [r4, #0] 15726: 2800 cmp r0, #0 15728: d0da beq.n 156e0 1572a: 4b11 ldr r3, [pc, #68] ; (15770 ) 1572c: 4629 mov r1, r5 1572e: 4798 blx r3 ext->static_txt = 0; 15730: 7c23 ldrb r3, [r4, #16] 15732: f36f 03c3 bfc r3, #3, #1 15736: 7423 strb r3, [r4, #16] 15738: e799 b.n 1566e 1573a: bf00 nop 1573c: 000017e1 .word 0x000017e1 15740: 000245b1 .word 0x000245b1 15744: 00024441 .word 0x00024441 15748: 0000e8e9 .word 0x0000e8e9 1574c: 0001eebf .word 0x0001eebf 15750: 000017e9 .word 0x000017e9 15754: 00002785 .word 0x00002785 15758: 00003fa9 .word 0x00003fa9 1575c: 00015151 .word 0x00015151 15760: 0000ee15 .word 0x0000ee15 15764: 0001edbe .word 0x0001edbe 15768: 0000eae5 .word 0x0000eae5 1576c: 0000ea2d .word 0x0000ea2d 15770: 00016329 .word 0x00016329 15774: 00016339 .word 0x00016339 00015778 : { 15778: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1577a: 4b16 ldr r3, [pc, #88] ; (157d4 ) { 1577c: 4605 mov r5, r0 1577e: 460e mov r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15780: 4798 blx r3 15782: 4604 mov r4, r0 15784: b968 cbnz r0, 157a2 15786: 4b14 ldr r3, [pc, #80] ; (157d8 ) 15788: 4914 ldr r1, [pc, #80] ; (157dc ) 1578a: 9300 str r3, [sp, #0] 1578c: f44f 72a6 mov.w r2, #332 ; 0x14c 15790: 2003 movs r0, #3 15792: 4e13 ldr r6, [pc, #76] ; (157e0 ) 15794: 47b0 blx r6 15796: 4813 ldr r0, [pc, #76] ; (157e4 ) 15798: 4913 ldr r1, [pc, #76] ; (157e8 ) 1579a: 462a mov r2, r5 1579c: 4623 mov r3, r4 1579e: 4788 blx r1 157a0: e7fe b.n 157a0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 157a2: 4b12 ldr r3, [pc, #72] ; (157ec ) 157a4: 4628 mov r0, r5 157a6: 4798 blx r3 if(ext->static_txt == 0 && ext->text != NULL) { 157a8: 7c03 ldrb r3, [r0, #16] 157aa: f013 0708 ands.w r7, r3, #8 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 157ae: 4604 mov r4, r0 if(ext->static_txt == 0 && ext->text != NULL) { 157b0: d104 bne.n 157bc 157b2: 6800 ldr r0, [r0, #0] 157b4: b110 cbz r0, 157bc lv_mem_free(ext->text); 157b6: 4b0e ldr r3, [pc, #56] ; (157f0 ) 157b8: 4798 blx r3 ext->text = NULL; 157ba: 6027 str r7, [r4, #0] if(text != NULL) { 157bc: b126 cbz r6, 157c8 ext->static_txt = 1; 157be: 7c23 ldrb r3, [r4, #16] ext->text = (char *)text; 157c0: 6026 str r6, [r4, #0] ext->static_txt = 1; 157c2: f043 0308 orr.w r3, r3, #8 157c6: 7423 strb r3, [r4, #16] lv_label_refr_text(label); 157c8: 4b0a ldr r3, [pc, #40] ; (157f4 ) 157ca: 4628 mov r0, r5 } 157cc: b003 add sp, #12 157ce: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} lv_label_refr_text(label); 157d2: 4718 bx r3 157d4: 000017e1 .word 0x000017e1 157d8: 000245d9 .word 0x000245d9 157dc: 00024441 .word 0x00024441 157e0: 0000e8e9 .word 0x0000e8e9 157e4: 0001eebf .word 0x0001eebf 157e8: 000017e9 .word 0x000017e9 157ec: 00003fa9 .word 0x00003fa9 157f0: 0000eae5 .word 0x0000eae5 157f4: 00015151 .word 0x00015151 000157f8 : { 157f8: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 157fa: 4b23 ldr r3, [pc, #140] ; (15888 ) { 157fc: 4604 mov r4, r0 157fe: 460e mov r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15800: 4798 blx r3 15802: 4605 mov r5, r0 15804: b968 cbnz r0, 15822 15806: 4b21 ldr r3, [pc, #132] ; (1588c ) 15808: 4921 ldr r1, [pc, #132] ; (15890 ) 1580a: 9300 str r3, [sp, #0] 1580c: f240 1265 movw r2, #357 ; 0x165 15810: 2003 movs r0, #3 15812: 4e20 ldr r6, [pc, #128] ; (15894 ) 15814: 47b0 blx r6 15816: 4820 ldr r0, [pc, #128] ; (15898 ) 15818: 4920 ldr r1, [pc, #128] ; (1589c ) 1581a: 4622 mov r2, r4 1581c: 462b mov r3, r5 1581e: 4788 blx r1 15820: e7fe b.n 15820 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15822: 4b1f ldr r3, [pc, #124] ; (158a0 ) lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 15824: 4f1f ldr r7, [pc, #124] ; (158a4 ) lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15826: 4620 mov r0, r4 15828: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 1582a: 491f ldr r1, [pc, #124] ; (158a8 ) lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1582c: 4605 mov r5, r0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 1582e: 4620 mov r0, r4 15830: 47b8 blx r7 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y); 15832: 491e ldr r1, [pc, #120] ; (158ac ) 15834: 4620 mov r0, r4 15836: 47b8 blx r7 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 15838: 491d ldr r1, [pc, #116] ; (158b0 ) 1583a: 4620 mov r0, r4 1583c: 47b8 blx r7 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1583e: 491d ldr r1, [pc, #116] ; (158b4 ) 15840: 4620 mov r0, r4 15842: 47b8 blx r7 if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 15844: 1ef2 subs r2, r6, #3 ext->offset.x = 0; 15846: 2300 movs r3, #0 if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 15848: 2a02 cmp r2, #2 ext->offset.x = 0; 1584a: 60eb str r3, [r5, #12] 1584c: 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) 1584e: bf8c ite hi 15850: 2200 movhi r2, #0 15852: 2201 movls r2, #1 15854: f362 13c7 bfi r3, r2, #7, #1 15858: 742b strb r3, [r5, #16] if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1585a: f003 0307 and.w r3, r3, #7 1585e: 2b02 cmp r3, #2 15860: d107 bne.n 15872 15862: 892a ldrh r2, [r5, #8] 15864: f64f 73ff movw r3, #65535 ; 0xffff 15868: 429a cmp r2, r3 1586a: d002 beq.n 15872 lv_label_revert_dots(label); 1586c: 4b12 ldr r3, [pc, #72] ; (158b8 ) 1586e: 4620 mov r0, r4 15870: 4798 blx r3 ext->long_mode = long_mode; 15872: 7c2b ldrb r3, [r5, #16] 15874: f366 0302 bfi r3, r6, #0, #3 15878: 742b strb r3, [r5, #16] lv_label_refr_text(label); 1587a: 4b10 ldr r3, [pc, #64] ; (158bc ) 1587c: 4620 mov r0, r4 } 1587e: b003 add sp, #12 15880: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} lv_label_refr_text(label); 15884: 4718 bx r3 15886: bf00 nop 15888: 000017e1 .word 0x000017e1 1588c: 000245f2 .word 0x000245f2 15890: 00024441 .word 0x00024441 15894: 0000e8e9 .word 0x0000e8e9 15898: 0001eebf .word 0x0001eebf 1589c: 000017e9 .word 0x000017e9 158a0: 00003fa9 .word 0x00003fa9 158a4: 0000dcb1 .word 0x0000dcb1 158a8: 00002989 .word 0x00002989 158ac: 000029e9 .word 0x000029e9 158b0: 00014be1 .word 0x00014be1 158b4: 00014bc1 .word 0x00014bc1 158b8: 00014b49 .word 0x00014b49 158bc: 00015151 .word 0x00015151 000158c0 : { 158c0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 158c2: 4b13 ldr r3, [pc, #76] ; (15910 ) { 158c4: 4604 mov r4, r0 158c6: 460d mov r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 158c8: 4798 blx r3 158ca: 4606 mov r6, r0 158cc: b968 cbnz r0, 158ea 158ce: 4b11 ldr r3, [pc, #68] ; (15914 ) 158d0: 4911 ldr r1, [pc, #68] ; (15918 ) 158d2: 9300 str r3, [sp, #0] 158d4: f44f 72cd mov.w r2, #410 ; 0x19a 158d8: 2003 movs r0, #3 158da: 4d10 ldr r5, [pc, #64] ; (1591c ) 158dc: 47a8 blx r5 158de: 4810 ldr r0, [pc, #64] ; (15920 ) 158e0: 4910 ldr r1, [pc, #64] ; (15924 ) 158e2: 4622 mov r2, r4 158e4: 4633 mov r3, r6 158e6: 4788 blx r1 158e8: e7fe b.n 158e8 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 158ea: 4b0f ldr r3, [pc, #60] ; (15928 ) 158ec: 4620 mov r0, r4 158ee: 4798 blx r3 if(ext->recolor == en) return; 158f0: 7c03 ldrb r3, [r0, #16] 158f2: f3c3 1280 ubfx r2, r3, #6, #1 158f6: 42aa cmp r2, r5 158f8: d008 beq.n 1590c ext->recolor = en == false ? 0 : 1; 158fa: f365 1386 bfi r3, r5, #6, #1 158fe: 7403 strb r3, [r0, #16] lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to 15900: 4b0a ldr r3, [pc, #40] ; (1592c ) 15902: 4620 mov r0, r4 } 15904: b002 add sp, #8 15906: 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 1590a: 4718 bx r3 } 1590c: b002 add sp, #8 1590e: bd70 pop {r4, r5, r6, pc} 15910: 000017e1 .word 0x000017e1 15914: 00024609 .word 0x00024609 15918: 00024441 .word 0x00024441 1591c: 0000e8e9 .word 0x0000e8e9 15920: 0001eebf .word 0x0001eebf 15924: 000017e9 .word 0x000017e9 15928: 00003fa9 .word 0x00003fa9 1592c: 00015151 .word 0x00015151 00015930 : { 15930: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} lv_obj_t * new_label = lv_obj_create(par, copy); 15934: 4b71 ldr r3, [pc, #452] ; (15afc ) LV_ASSERT_MEM(new_label); 15936: f8df 8248 ldr.w r8, [pc, #584] ; 15b80 { 1593a: b085 sub sp, #20 1593c: 460f mov r7, r1 lv_obj_t * new_label = lv_obj_create(par, copy); 1593e: 4798 blx r3 15940: 4605 mov r5, r0 LV_ASSERT_MEM(new_label); 15942: 47c0 blx r8 15944: 4604 mov r4, r0 15946: b960 cbnz r0, 15962 15948: 4b6d ldr r3, [pc, #436] ; (15b00 ) 1594a: 496e ldr r1, [pc, #440] ; (15b04 ) 1594c: 9300 str r3, [sp, #0] 1594e: 2254 movs r2, #84 ; 0x54 15950: 2003 movs r0, #3 15952: 4e6d ldr r6, [pc, #436] ; (15b08 ) 15954: 47b0 blx r6 15956: 486d ldr r0, [pc, #436] ; (15b0c ) 15958: 496d ldr r1, [pc, #436] ; (15b10 ) 1595a: 462a mov r2, r5 1595c: 4623 mov r3, r4 1595e: 4788 blx r1 15960: e7fe b.n 15960 if(new_label == NULL) return NULL; 15962: b925 cbnz r5, 1596e 15964: 2400 movs r4, #0 } 15966: 4620 mov r0, r4 15968: b005 add sp, #20 1596a: 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); 1596e: 4c69 ldr r4, [pc, #420] ; (15b14 ) 15970: 6823 ldr r3, [r4, #0] 15972: b91b cbnz r3, 1597c 15974: 4b68 ldr r3, [pc, #416] ; (15b18 ) 15976: 4628 mov r0, r5 15978: 4798 blx r3 1597a: 6020 str r0, [r4, #0] lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 1597c: 4b67 ldr r3, [pc, #412] ; (15b1c ) lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 1597e: 4e68 ldr r6, [pc, #416] ; (15b20 ) lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 15980: 2114 movs r1, #20 15982: 4628 mov r0, r5 15984: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 15986: 4628 mov r0, r5 15988: 47b0 blx r6 1598a: 4604 mov r4, r0 LV_ASSERT_MEM(ext); 1598c: 47c0 blx r8 1598e: 4681 mov r9, r0 15990: b960 cbnz r0, 159ac 15992: 4b5b ldr r3, [pc, #364] ; (15b00 ) 15994: 495b ldr r1, [pc, #364] ; (15b04 ) 15996: 9300 str r3, [sp, #0] 15998: 225d movs r2, #93 ; 0x5d 1599a: 2003 movs r0, #3 1599c: 4d5a ldr r5, [pc, #360] ; (15b08 ) 1599e: 47a8 blx r5 159a0: 485a ldr r0, [pc, #360] ; (15b0c ) 159a2: 495b ldr r1, [pc, #364] ; (15b10 ) 159a4: 4622 mov r2, r4 159a6: 464b mov r3, r9 159a8: 4788 blx r1 159aa: e7fe b.n 159aa if(ext == NULL) { 159ac: b91c cbnz r4, 159b6 lv_obj_del(new_label); 159ae: 4b5d ldr r3, [pc, #372] ; (15b24 ) 159b0: 4628 mov r0, r5 159b2: 4798 blx r3 return NULL; 159b4: e7d7 b.n 15966 ext->dot_end = LV_LABEL_DOT_END_INV; 159b6: 4a5c ldr r2, [pc, #368] ; (15b28 ) lv_obj_set_design_cb(new_label, lv_label_design); 159b8: 495c ldr r1, [pc, #368] ; (15b2c ) 159ba: f8df 91c8 ldr.w r9, [pc, #456] ; 15b84 ext->text = NULL; 159be: 2300 movs r3, #0 ext->offset.x = 0; 159c0: e9c4 2302 strd r2, r3, [r4, #8] ext->dot.tmp_ptr = NULL; 159c4: e9c4 3300 strd r3, r3, [r4] ext->long_mode = LV_LABEL_LONG_EXPAND; 159c8: 8a23 ldrh r3, [r4, #16] 159ca: f423 73bf bic.w r3, r3, #382 ; 0x17e 159ce: f023 0301 bic.w r3, r3, #1 159d2: f043 0330 orr.w r3, r3, #48 ; 0x30 159d6: 8223 strh r3, [r4, #16] lv_obj_set_design_cb(new_label, lv_label_design); 159d8: 4628 mov r0, r5 159da: 4b55 ldr r3, [pc, #340] ; (15b30 ) 159dc: 4798 blx r3 lv_obj_set_signal_cb(new_label, lv_label_signal); 159de: 4955 ldr r1, [pc, #340] ; (15b34 ) 159e0: 4b55 ldr r3, [pc, #340] ; (15b38 ) 159e2: 4628 mov r0, r5 159e4: 4798 blx r3 if(copy == NULL) { 159e6: b9c7 cbnz r7, 15a1a lv_theme_apply(new_label, LV_THEME_LABEL); 159e8: 4b54 ldr r3, [pc, #336] ; (15b3c ) 159ea: 2112 movs r1, #18 159ec: 4628 mov r0, r5 159ee: 4798 blx r3 lv_obj_set_click(new_label, false); 159f0: 4b53 ldr r3, [pc, #332] ; (15b40 ) 159f2: 4639 mov r1, r7 159f4: 4628 mov r0, r5 159f6: 4798 blx r3 lv_label_set_long_mode(new_label, LV_LABEL_LONG_EXPAND); 159f8: 4639 mov r1, r7 159fa: 4628 mov r0, r5 159fc: 47c8 blx r9 lv_label_set_text(new_label, "Text"); 159fe: 4951 ldr r1, [pc, #324] ; (15b44 ) 15a00: 4b51 ldr r3, [pc, #324] ; (15b48 ) 15a02: 4628 mov r0, r5 15a04: 4798 blx r3 LV_LOG_INFO("label created"); 15a06: 4b51 ldr r3, [pc, #324] ; (15b4c ) 15a08: 4c3f ldr r4, [pc, #252] ; (15b08 ) 15a0a: 9300 str r3, [sp, #0] 15a0c: 493d ldr r1, [pc, #244] ; (15b04 ) 15a0e: 4b3c ldr r3, [pc, #240] ; (15b00 ) 15a10: 22a8 movs r2, #168 ; 0xa8 15a12: 2001 movs r0, #1 15a14: 47a0 blx r4 return new_label; 15a16: 462c mov r4, r5 15a18: e7a5 b.n 15966 lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 15a1a: 4638 mov r0, r7 15a1c: 47b0 blx r6 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 15a1e: 4b4c ldr r3, [pc, #304] ; (15b50 ) lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 15a20: 4606 mov r6, r0 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 15a22: 4638 mov r0, r7 15a24: 4798 blx r3 15a26: 4601 mov r1, r0 15a28: 4628 mov r0, r5 15a2a: 47c8 blx r9 lv_label_set_recolor(new_label, lv_label_get_recolor(copy)); 15a2c: 4b49 ldr r3, [pc, #292] ; (15b54 ) 15a2e: 4638 mov r0, r7 15a30: 4798 blx r3 15a32: 4b49 ldr r3, [pc, #292] ; (15b58 ) 15a34: 4601 mov r1, r0 15a36: 4628 mov r0, r5 15a38: 4798 blx r3 lv_label_set_align(new_label, lv_label_get_align(copy)); 15a3a: 4b48 ldr r3, [pc, #288] ; (15b5c ) 15a3c: 4638 mov r0, r7 15a3e: 4798 blx r3 15a40: 4b47 ldr r3, [pc, #284] ; (15b60 ) 15a42: 4601 mov r1, r0 15a44: 4628 mov r0, r5 15a46: 4798 blx r3 if(copy_ext->static_txt == 0) 15a48: 7c33 ldrb r3, [r6, #16] 15a4a: f013 0f08 tst.w r3, #8 lv_label_set_text(new_label, lv_label_get_text(copy)); 15a4e: 4638 mov r0, r7 15a50: 4b44 ldr r3, [pc, #272] ; (15b64 ) if(copy_ext->static_txt == 0) 15a52: d123 bne.n 15a9c lv_label_set_text(new_label, lv_label_get_text(copy)); 15a54: 4798 blx r3 15a56: 4b3c ldr r3, [pc, #240] ; (15b48 ) 15a58: 4601 mov r1, r0 15a5a: 4628 mov r0, r5 lv_label_set_text_static(new_label, lv_label_get_text(copy)); 15a5c: 4798 blx r3 if(copy_ext->long_mode == LV_LABEL_LONG_DOT) { 15a5e: 7c33 ldrb r3, [r6, #16] 15a60: f003 0307 and.w r3, r3, #7 15a64: 2b02 cmp r3, #2 15a66: d12b bne.n 15ac0 ext->text = lv_mem_realloc(ext->text, _lv_mem_get_size(copy_ext->text)); 15a68: 6830 ldr r0, [r6, #0] 15a6a: f8df 911c ldr.w r9, [pc, #284] ; 15b88 15a6e: 6827 ldr r7, [r4, #0] 15a70: 47c8 blx r9 15a72: 4b3d ldr r3, [pc, #244] ; (15b68 ) 15a74: 4601 mov r1, r0 15a76: 4638 mov r0, r7 15a78: 4798 blx r3 15a7a: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 15a7c: 47c0 blx r8 15a7e: 4607 mov r7, r0 15a80: b988 cbnz r0, 15aa6 15a82: 4b1f ldr r3, [pc, #124] ; (15b00 ) 15a84: 491f ldr r1, [pc, #124] ; (15b04 ) 15a86: 9300 str r3, [sp, #0] 15a88: 2295 movs r2, #149 ; 0x95 15a8a: 2003 movs r0, #3 15a8c: 4d1e ldr r5, [pc, #120] ; (15b08 ) 15a8e: 47a8 blx r5 15a90: 6822 ldr r2, [r4, #0] 15a92: 481e ldr r0, [pc, #120] ; (15b0c ) 15a94: 491e ldr r1, [pc, #120] ; (15b10 ) 15a96: 463b mov r3, r7 15a98: 4788 blx r1 15a9a: e7fe b.n 15a9a lv_label_set_text_static(new_label, lv_label_get_text(copy)); 15a9c: 4798 blx r3 15a9e: 4b33 ldr r3, [pc, #204] ; (15b6c ) 15aa0: 4601 mov r1, r0 15aa2: 4628 mov r0, r5 15aa4: e7da b.n 15a5c if(ext->text == NULL) return NULL; 15aa6: 6827 ldr r7, [r4, #0] 15aa8: 2f00 cmp r7, #0 15aaa: f43f af5b beq.w 15964 _lv_memcpy(ext->text, copy_ext->text, _lv_mem_get_size(copy_ext->text)); 15aae: 6831 ldr r1, [r6, #0] 15ab0: 9103 str r1, [sp, #12] 15ab2: 4608 mov r0, r1 15ab4: 47c8 blx r9 15ab6: 9903 ldr r1, [sp, #12] 15ab8: 4b2d ldr r3, [pc, #180] ; (15b70 ) 15aba: 4602 mov r2, r0 15abc: 4638 mov r0, r7 15abe: 4798 blx r3 if(copy_ext->dot_tmp_alloc && copy_ext->dot.tmp_ptr) { 15ac0: 7c73 ldrb r3, [r6, #17] 15ac2: 07db lsls r3, r3, #31 15ac4: d514 bpl.n 15af0 15ac6: 6870 ldr r0, [r6, #4] 15ac8: b190 cbz r0, 15af0 uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr); 15aca: 4b2a ldr r3, [pc, #168] ; (15b74 ) 15acc: 4798 blx r3 lv_label_set_dot_tmp(new_label, ext->dot.tmp_ptr, len); 15ace: 6861 ldr r1, [r4, #4] 15ad0: 4b29 ldr r3, [pc, #164] ; (15b78 ) 15ad2: b282 uxth r2, r0 15ad4: 4628 mov r0, r5 15ad6: 4798 blx r3 ext->dot_tmp_alloc = copy_ext->dot_tmp_alloc; 15ad8: 7c72 ldrb r2, [r6, #17] 15ada: 7c63 ldrb r3, [r4, #17] 15adc: f362 0300 bfi r3, r2, #0, #1 15ae0: 7463 strb r3, [r4, #17] ext->dot_end = copy_ext->dot_end; 15ae2: 8933 ldrh r3, [r6, #8] 15ae4: 8123 strh r3, [r4, #8] lv_obj_refresh_style(new_label, LV_STYLE_PROP_ALL); 15ae6: 21ff movs r1, #255 ; 0xff 15ae8: 4b24 ldr r3, [pc, #144] ; (15b7c ) 15aea: 4628 mov r0, r5 15aec: 4798 blx r3 15aee: e78a b.n 15a06 _lv_memcpy(ext->dot.tmp, copy_ext->dot.tmp, sizeof(ext->dot.tmp)); 15af0: 2204 movs r2, #4 15af2: 4b1f ldr r3, [pc, #124] ; (15b70 ) 15af4: 18b1 adds r1, r6, r2 15af6: 18a0 adds r0, r4, r2 15af8: 4798 blx r3 15afa: e7ed b.n 15ad8 15afc: 000030e5 .word 0x000030e5 15b00: 0002461e .word 0x0002461e 15b04: 00024441 .word 0x00024441 15b08: 0000e8e9 .word 0x0000e8e9 15b0c: 0001edbe .word 0x0001edbe 15b10: 000017e9 .word 0x000017e9 15b14: 2000c7fc .word 0x2000c7fc 15b18: 00003f61 .word 0x00003f61 15b1c: 00002079 .word 0x00002079 15b20: 00003fa9 .word 0x00003fa9 15b24: 00004161 .word 0x00004161 15b28: 0019ffff .word 0x0019ffff 15b2c: 00015ce9 .word 0x00015ce9 15b30: 00002031 .word 0x00002031 15b34: 00015b8d .word 0x00015b8d 15b38: 00001fdd .word 0x00001fdd 15b3c: 000102e5 .word 0x000102e5 15b40: 00001e5d .word 0x00001e5d 15b44: 0002449f .word 0x0002449f 15b48: 00015635 .word 0x00015635 15b4c: 000244a4 .word 0x000244a4 15b50: 00014da9 .word 0x00014da9 15b54: 00014e59 .word 0x00014e59 15b58: 000158c1 .word 0x000158c1 15b5c: 00014dfd .word 0x00014dfd 15b60: 00014ce9 .word 0x00014ce9 15b64: 00014d59 .word 0x00014d59 15b68: 0000ee15 .word 0x0000ee15 15b6c: 00015779 .word 0x00015779 15b70: 0000ec31 .word 0x0000ec31 15b74: 00016339 .word 0x00016339 15b78: 00014c01 .word 0x00014c01 15b7c: 00002d91 .word 0x00002d91 15b80: 000017e1 .word 0x000017e1 15b84: 000157f9 .word 0x000157f9 15b88: 0000eb4d .word 0x0000eb4d 00015b8c : if(sign == LV_SIGNAL_GET_STYLE) { 15b8c: 2908 cmp r1, #8 { 15b8e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} 15b92: 4604 mov r4, r0 15b94: 460e mov r6, r1 15b96: 4615 mov r5, r2 if(sign == LV_SIGNAL_GET_STYLE) { 15b98: d10e bne.n 15bb8 switch(type) { 15b9a: 7813 ldrb r3, [r2, #0] 15b9c: b133 cbz r3, 15bac info->result = lv_label_get_style(label, info->part); 15b9e: 2300 movs r3, #0 15ba0: 6053 str r3, [r2, #4] else return ancestor_signal(label, sign, param); 15ba2: 4b25 ldr r3, [pc, #148] ; (15c38 ) } 15ba4: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} else return ancestor_signal(label, sign, param); 15ba8: 681b ldr r3, [r3, #0] 15baa: 4718 bx r3 style_dsc_p = &label->style_list; 15bac: 3428 adds r4, #40 ; 0x28 info->result = lv_label_get_style(label, info->part); 15bae: 6054 str r4, [r2, #4] if(info->result != NULL) return LV_RES_OK; 15bb0: 2701 movs r7, #1 } 15bb2: 4638 mov r0, r7 15bb4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} res = ancestor_signal(label, sign, param); 15bb8: 4b1f ldr r3, [pc, #124] ; (15c38 ) 15bba: 681b ldr r3, [r3, #0] 15bbc: 4798 blx r3 if(res != LV_RES_OK) return res; 15bbe: 2801 cmp r0, #1 res = ancestor_signal(label, sign, param); 15bc0: 4607 mov r7, r0 if(res != LV_RES_OK) return res; 15bc2: d1f6 bne.n 15bb2 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 15bc4: 2e07 cmp r6, #7 15bc6: d105 bne.n 15bd4 15bc8: 4628 mov r0, r5 15bca: 491c ldr r1, [pc, #112] ; (15c3c ) 15bcc: 4b1c ldr r3, [pc, #112] ; (15c40 ) } 15bce: 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); 15bd2: 4718 bx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15bd4: 4b1b ldr r3, [pc, #108] ; (15c44 ) 15bd6: 4620 mov r0, r4 15bd8: 4798 blx r3 15bda: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 15bdc: b966 cbnz r6, 15bf8 if(ext->static_txt == 0) { 15bde: 7c03 ldrb r3, [r0, #16] 15be0: f013 0508 ands.w r5, r3, #8 15be4: d104 bne.n 15bf0 lv_mem_free(ext->text); 15be6: 6800 ldr r0, [r0, #0] 15be8: 4b17 ldr r3, [pc, #92] ; (15c48 ) 15bea: 4798 blx r3 ext->text = NULL; 15bec: f8c8 5000 str.w r5, [r8] lv_label_dot_tmp_free(label); 15bf0: 4b16 ldr r3, [pc, #88] ; (15c4c ) 15bf2: 4620 mov r0, r4 lv_label_refr_text(label); 15bf4: 4798 blx r3 15bf6: e7dc b.n 15bb2 else if(sign == LV_SIGNAL_STYLE_CHG) { 15bf8: 2e04 cmp r6, #4 15bfa: d105 bne.n 15c08 lv_label_revert_dots(label); 15bfc: 4b14 ldr r3, [pc, #80] ; (15c50 ) 15bfe: 4620 mov r0, r4 15c00: 4798 blx r3 lv_label_refr_text(label); 15c02: 4b14 ldr r3, [pc, #80] ; (15c54 ) 15c04: 4620 mov r0, r4 15c06: e7f5 b.n 15bf4 else if(sign == LV_SIGNAL_COORD_CHG) { 15c08: 2e02 cmp r6, #2 15c0a: d1d2 bne.n 15bb2 15c0c: 8a23 ldrh r3, [r4, #16] 15c0e: 8aa2 ldrh r2, [r4, #20] 15c10: 8829 ldrh r1, [r5, #0] 15c12: 1ad2 subs r2, r2, r3 15c14: 88ab ldrh r3, [r5, #4] 15c16: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 15c18: b292 uxth r2, r2 15c1a: b29b uxth r3, r3 15c1c: 429a cmp r2, r3 15c1e: d1ed bne.n 15bfc return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15c20: 8a63 ldrh r3, [r4, #18] 15c22: 8ae2 ldrh r2, [r4, #22] 15c24: 8869 ldrh r1, [r5, #2] 15c26: 1ad2 subs r2, r2, r3 15c28: 88eb ldrh r3, [r5, #6] 15c2a: 1a5b subs r3, r3, r1 15c2c: b292 uxth r2, r2 15c2e: b29b uxth r3, r3 15c30: 429a cmp r2, r3 15c32: d1e3 bne.n 15bfc 15c34: e7bd b.n 15bb2 15c36: bf00 nop 15c38: 2000c7fc .word 0x2000c7fc 15c3c: 000244b2 .word 0x000244b2 15c40: 0000428d .word 0x0000428d 15c44: 00003fa9 .word 0x00003fa9 15c48: 0000eae5 .word 0x0000eae5 15c4c: 00014b1d .word 0x00014b1d 15c50: 00014b49 .word 0x00014b49 15c54: 00015151 .word 0x00015151 00015c58 : { 15c58: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15c5a: 4b0b ldr r3, [pc, #44] ; (15c88 ) { 15c5c: 4605 mov r5, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15c5e: 4798 blx r3 15c60: 4604 mov r4, r0 15c62: b968 cbnz r0, 15c80 15c64: 4b09 ldr r3, [pc, #36] ; (15c8c ) 15c66: 490a ldr r1, [pc, #40] ; (15c90 ) 15c68: 9300 str r3, [sp, #0] 15c6a: f240 321d movw r2, #797 ; 0x31d 15c6e: 2003 movs r0, #3 15c70: 4e08 ldr r6, [pc, #32] ; (15c94 ) 15c72: 47b0 blx r6 15c74: 4808 ldr r0, [pc, #32] ; (15c98 ) 15c76: 4909 ldr r1, [pc, #36] ; (15c9c ) 15c78: 462a mov r2, r5 15c7a: 4623 mov r3, r4 15c7c: 4788 blx r1 15c7e: e7fe b.n 15c7e } 15c80: f64f 70ff movw r0, #65535 ; 0xffff 15c84: b002 add sp, #8 15c86: bd70 pop {r4, r5, r6, pc} 15c88: 000017e1 .word 0x000017e1 15c8c: 00024646 .word 0x00024646 15c90: 00024441 .word 0x00024441 15c94: 0000e8e9 .word 0x0000e8e9 15c98: 0001eebf .word 0x0001eebf 15c9c: 000017e9 .word 0x000017e9 00015ca0 : { 15ca0: b573 push {r0, r1, r4, r5, r6, lr} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15ca2: 4b0b ldr r3, [pc, #44] ; (15cd0 ) { 15ca4: 4605 mov r5, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 15ca6: 4798 blx r3 15ca8: 4604 mov r4, r0 15caa: b968 cbnz r0, 15cc8 15cac: 4b09 ldr r3, [pc, #36] ; (15cd4 ) 15cae: 490a ldr r1, [pc, #40] ; (15cd8 ) 15cb0: 9300 str r3, [sp, #0] 15cb2: f44f 724c mov.w r2, #816 ; 0x330 15cb6: 2003 movs r0, #3 15cb8: 4e08 ldr r6, [pc, #32] ; (15cdc ) 15cba: 47b0 blx r6 15cbc: 4808 ldr r0, [pc, #32] ; (15ce0 ) 15cbe: 4909 ldr r1, [pc, #36] ; (15ce4 ) 15cc0: 462a mov r2, r5 15cc2: 4623 mov r3, r4 15cc4: 4788 blx r1 15cc6: e7fe b.n 15cc6 } 15cc8: f64f 70ff movw r0, #65535 ; 0xffff 15ccc: b002 add sp, #8 15cce: bd70 pop {r4, r5, r6, pc} 15cd0: 000017e1 .word 0x000017e1 15cd4: 00024662 .word 0x00024662 15cd8: 00024441 .word 0x00024441 15cdc: 0000e8e9 .word 0x0000e8e9 15ce0: 0001eebf .word 0x0001eebf 15ce4: 000017e9 .word 0x000017e9 00015ce8 : { 15ce8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if(mode == LV_DESIGN_COVER_CHK) 15cec: 2a02 cmp r2, #2 { 15cee: b0a9 sub sp, #164 ; 0xa4 15cf0: 4605 mov r5, r0 15cf2: 4688 mov r8, r1 15cf4: 4617 mov r7, r2 if(mode == LV_DESIGN_COVER_CHK) 15cf6: f000 80fa beq.w 15eee else if(mode == LV_DESIGN_DRAW_MAIN) { 15cfa: 2a00 cmp r2, #0 15cfc: f040 8100 bne.w 15f00 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 15d00: 4b80 ldr r3, [pc, #512] ; (15f04 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 15d02: f8df 9238 ldr.w r9, [pc, #568] ; 15f3c 15d06: 4798 blx r3 15d08: 2204 movs r2, #4 15d0a: 4639 mov r1, r7 15d0c: 4604 mov r4, r0 15d0e: 4628 mov r0, r5 15d10: 47c8 blx r9 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 15d12: 2205 movs r2, #5 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 15d14: 4606 mov r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 15d16: 4639 mov r1, r7 15d18: 4628 mov r0, r5 15d1a: 47c8 blx r9 15d1c: 6969 ldr r1, [r5, #20] 15d1e: 4603 mov r3, r0 15d20: 6928 ldr r0, [r5, #16] 15d22: aa06 add r2, sp, #24 15d24: c203 stmia r2!, {r0, r1} bg_coords.x1 -= w; 15d26: f8bd 2018 ldrh.w r2, [sp, #24] 15d2a: b2b0 uxth r0, r6 15d2c: 1a12 subs r2, r2, r0 15d2e: f8ad 2018 strh.w r2, [sp, #24] bg_coords.x2 += w; 15d32: f8bd 201c ldrh.w r2, [sp, #28] 15d36: 4410 add r0, r2 15d38: f8ad 001c strh.w r0, [sp, #28] bg_coords.y1 -= h; 15d3c: b298 uxth r0, r3 15d3e: f8bd 301a ldrh.w r3, [sp, #26] 15d42: 1a1b subs r3, r3, r0 15d44: f8ad 301a strh.w r3, [sp, #26] bg_coords.y2 += h; 15d48: f8bd 301e ldrh.w r3, [sp, #30] 15d4c: 4418 add r0, r3 15d4e: f8ad 001e strh.w r0, [sp, #30] lv_draw_rect_dsc_init(&draw_rect_dsc); 15d52: 4b6d ldr r3, [pc, #436] ; (15f08 ) 15d54: a813 add r0, sp, #76 ; 0x4c 15d56: 4798 blx r3 lv_obj_init_draw_rect_dsc(label, LV_LABEL_PART_MAIN, &draw_rect_dsc); 15d58: 4b6c ldr r3, [pc, #432] ; (15f0c ) 15d5a: aa13 add r2, sp, #76 ; 0x4c 15d5c: 4639 mov r1, r7 15d5e: 4628 mov r0, r5 15d60: 4798 blx r3 lv_draw_rect(&bg_coords, clip_area, &draw_rect_dsc); 15d62: aa13 add r2, sp, #76 ; 0x4c 15d64: 4b6a ldr r3, [pc, #424] ; (15f10 ) 15d66: 4641 mov r1, r8 15d68: a806 add r0, sp, #24 15d6a: 4798 blx r3 get_txt_coords(label, &txt_coords); 15d6c: 4b69 ldr r3, [pc, #420] ; (15f14 ) 15d6e: a908 add r1, sp, #32 15d70: 4628 mov r0, r5 15d72: 4798 blx r3 bool is_common = _lv_area_intersect(&txt_clip, clip_area, &txt_coords); 15d74: 4b68 ldr r3, [pc, #416] ; (15f18 ) 15d76: aa08 add r2, sp, #32 15d78: 4641 mov r1, r8 15d7a: a80a add r0, sp, #40 ; 0x28 15d7c: 4798 blx r3 if(!is_common) return LV_DESIGN_RES_OK; 15d7e: 2800 cmp r0, #0 15d80: f000 80b5 beq.w 15eee lv_label_align_t align = lv_label_get_align(label); 15d84: 4b65 ldr r3, [pc, #404] ; (15f1c ) 15d86: 4628 mov r0, r5 15d88: 4798 blx r3 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 15d8a: 7c23 ldrb r3, [r4, #16] lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 15d8c: f3c3 1680 ubfx r6, r3, #6, #1 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 15d90: 061a lsls r2, r3, #24 15d92: bf48 it mi 15d94: f046 0602 orrmi.w r6, r6, #2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 15d98: 075b lsls r3, r3, #29 15d9a: bf08 it eq 15d9c: f046 0610 orreq.w r6, r6, #16 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 15da0: 2801 cmp r0, #1 15da2: f040 80a8 bne.w 15ef6 15da6: f046 0604 orr.w r6, r6, #4 lv_draw_label_dsc_init(&label_draw_dsc); 15daa: 4b5d ldr r3, [pc, #372] ; (15f20 ) 15dac: a80c add r0, sp, #48 ; 0x30 15dae: 4798 blx r3 label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 15db0: 4b5c ldr r3, [pc, #368] ; (15f24 ) 15db2: 4628 mov r0, r5 15db4: 4798 blx r3 label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 15db6: 4b5c ldr r3, [pc, #368] ; (15f28 ) label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 15db8: f8ad 003e strh.w r0, [sp, #62] ; 0x3e label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 15dbc: 4628 mov r0, r5 15dbe: 4798 blx r3 label_draw_dsc.ofs_x = ext->offset.x; 15dc0: 89a3 ldrh r3, [r4, #12] 15dc2: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 label_draw_dsc.ofs_y = ext->offset.y; 15dc6: 89e3 ldrh r3, [r4, #14] label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 15dc8: f8ad 0040 strh.w r0, [sp, #64] ; 0x40 label_draw_dsc.ofs_y = ext->offset.y; 15dcc: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 15dd0: aa0c add r2, sp, #48 ; 0x30 15dd2: 4b56 ldr r3, [pc, #344] ; (15f2c ) label_draw_dsc.flag = flag; 15dd4: f88d 6047 strb.w r6, [sp, #71] ; 0x47 lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 15dd8: 2100 movs r1, #0 15dda: 4628 mov r0, r5 15ddc: 4798 blx r3 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 15dde: 7c23 ldrb r3, [r4, #16] 15de0: f003 0207 and.w r2, r3, #7 15de4: 3a03 subs r2, #3 15de6: 2a01 cmp r2, #1 15de8: d824 bhi.n 15e34 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 15dea: f003 0330 and.w r3, r3, #48 ; 0x30 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 15dee: 2b10 cmp r3, #16 15df0: d001 beq.n 15df6 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 15df2: 2b20 cmp r3, #32 15df4: d11e bne.n 15e34 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 15df6: f647 4318 movw r3, #31768 ; 0x7c18 15dfa: 9301 str r3, [sp, #4] 15dfc: f9bd 303a ldrsh.w r3, [sp, #58] ; 0x3a 15e00: 9300 str r3, [sp, #0] 15e02: 9602 str r6, [sp, #8] 15e04: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 15e08: 9a0d ldr r2, [sp, #52] ; 0x34 15e0a: 6821 ldr r1, [r4, #0] 15e0c: 4d48 ldr r5, [pc, #288] ; (15f30 ) 15e0e: a805 add r0, sp, #20 15e10: 47a8 blx r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 15e12: f8bd 3024 ldrh.w r3, [sp, #36] ; 0x24 15e16: f8bd 2020 ldrh.w r2, [sp, #32] 15e1a: 3301 adds r3, #1 15e1c: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 15e1e: f9bd 2014 ldrsh.w r2, [sp, #20] 15e22: b21b sxth r3, r3 15e24: 429a cmp r2, r3 label_draw_dsc.flag &= ~LV_TXT_FLAG_CENTER; 15e26: bfc2 ittt gt 15e28: f89d 3047 ldrbgt.w r3, [sp, #71] ; 0x47 15e2c: f023 030c bicgt.w r3, r3, #12 15e30: f88d 3047 strbgt.w r3, [sp, #71] ; 0x47 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15e34: f04f 0900 mov.w r9, #0 15e38: f8cd 9000 str.w r9, [sp] 15e3c: 6823 ldr r3, [r4, #0] 15e3e: f8df 80f8 ldr.w r8, [pc, #248] ; 15f38 15e42: aa0c add r2, sp, #48 ; 0x30 15e44: a90a add r1, sp, #40 ; 0x28 15e46: a808 add r0, sp, #32 15e48: 47c0 blx r8 if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 15e4a: 7c23 ldrb r3, [r4, #16] 15e4c: f003 0307 and.w r3, r3, #7 15e50: 2b04 cmp r3, #4 15e52: d14c bne.n 15eee _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 15e54: f647 4318 movw r3, #31768 ; 0x7c18 15e58: 9301 str r3, [sp, #4] 15e5a: f9bd 303a ldrsh.w r3, [sp, #58] ; 0x3a 15e5e: 9300 str r3, [sp, #0] 15e60: 9602 str r6, [sp, #8] 15e62: f9bd 303c ldrsh.w r3, [sp, #60] ; 0x3c 15e66: 9a0d ldr r2, [sp, #52] ; 0x34 15e68: 6821 ldr r1, [r4, #0] 15e6a: 4d31 ldr r5, [pc, #196] ; (15f30 ) 15e6c: a805 add r0, sp, #20 15e6e: 47a8 blx r5 15e70: f8bd 2024 ldrh.w r2, [sp, #36] ; 0x24 15e74: f8bd 1020 ldrh.w r1, [sp, #32] if(size.x > lv_area_get_width(&txt_coords)) { 15e78: f9bd 3014 ldrsh.w r3, [sp, #20] 15e7c: 3201 adds r2, #1 15e7e: 1a52 subs r2, r2, r1 15e80: b212 sxth r2, r2 15e82: 4293 cmp r3, r2 15e84: dd16 ble.n 15eb4 label_draw_dsc.ofs_x = ext->offset.x + size.x + 15e86: 89a2 ldrh r2, [r4, #12] lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 15e88: 980d ldr r0, [sp, #52] ; 0x34 label_draw_dsc.ofs_x = ext->offset.x + size.x + 15e8a: 4413 add r3, r2 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 15e8c: 2220 movs r2, #32 15e8e: 4611 mov r1, r2 label_draw_dsc.ofs_x = ext->offset.x + size.x + 15e90: b29d uxth r5, r3 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 15e92: 4b28 ldr r3, [pc, #160] ; (15f34 ) 15e94: 4798 blx r3 label_draw_dsc.ofs_y = ext->offset.y; 15e96: 89e3 ldrh r3, [r4, #14] lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15e98: f8cd 9000 str.w r9, [sp] label_draw_dsc.ofs_x = ext->offset.x + size.x + 15e9c: eb00 0040 add.w r0, r0, r0, lsl #1 15ea0: 4405 add r5, r0 label_draw_dsc.ofs_y = ext->offset.y; 15ea2: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15ea6: aa0c add r2, sp, #48 ; 0x30 15ea8: 6823 ldr r3, [r4, #0] label_draw_dsc.ofs_x = ext->offset.x + size.x + 15eaa: f8ad 5042 strh.w r5, [sp, #66] ; 0x42 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15eae: a90a add r1, sp, #40 ; 0x28 15eb0: a808 add r0, sp, #32 15eb2: 47c0 blx r8 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 15eb4: f8bd 3026 ldrh.w r3, [sp, #38] ; 0x26 15eb8: f8bd 1022 ldrh.w r1, [sp, #34] ; 0x22 if(size.y > lv_area_get_height(&txt_coords)) { 15ebc: f9bd 2016 ldrsh.w r2, [sp, #22] 15ec0: 3301 adds r3, #1 15ec2: 1a5b subs r3, r3, r1 15ec4: b21b sxth r3, r3 15ec6: 429a cmp r2, r3 15ec8: dd11 ble.n 15eee label_draw_dsc.ofs_x = ext->offset.x; 15eca: 89a3 ldrh r3, [r4, #12] 15ecc: f8ad 3042 strh.w r3, [sp, #66] ; 0x42 15ed0: 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); 15ed2: 891b ldrh r3, [r3, #8] 15ed4: 441a add r2, r3 15ed6: 89e3 ldrh r3, [r4, #14] 15ed8: 441a add r2, r3 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15eda: 2300 movs r3, #0 15edc: 9300 str r3, [sp, #0] 15ede: 6823 ldr r3, [r4, #0] label_draw_dsc.ofs_y = ext->offset.y + size.y + lv_font_get_line_height(label_draw_dsc.font); 15ee0: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 15ee4: 4c14 ldr r4, [pc, #80] ; (15f38 ) 15ee6: aa0c add r2, sp, #48 ; 0x30 15ee8: a90a add r1, sp, #40 ; 0x28 15eea: a808 add r0, sp, #32 15eec: 47a0 blx r4 } 15eee: 4638 mov r0, r7 15ef0: b029 add sp, #164 ; 0xa4 15ef2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 15ef6: 2802 cmp r0, #2 15ef8: bf08 it eq 15efa: f046 0608 orreq.w r6, r6, #8 15efe: e754 b.n 15daa return LV_DESIGN_RES_OK; 15f00: 2700 movs r7, #0 15f02: e7f4 b.n 15eee 15f04: 00003fa9 .word 0x00003fa9 15f08: 00009ba1 .word 0x00009ba1 15f0c: 000042a9 .word 0x000042a9 15f10: 00009bed .word 0x00009bed 15f14: 00014c8d .word 0x00014c8d 15f18: 0000de8d .word 0x0000de8d 15f1c: 00014dfd .word 0x00014dfd 15f20: 00007845 .word 0x00007845 15f24: 00015c59 .word 0x00015c59 15f28: 00015ca1 .word 0x00015ca1 15f2c: 000047e5 .word 0x000047e5 15f30: 0001019d .word 0x0001019d 15f34: 0000d175 .word 0x0000d175 15f38: 00007875 .word 0x00007875 15f3c: 00003711 .word 0x00003711 00015f40 <__aeabi_uldivmod>: 15f40: b953 cbnz r3, 15f58 <__aeabi_uldivmod+0x18> 15f42: b94a cbnz r2, 15f58 <__aeabi_uldivmod+0x18> 15f44: 2900 cmp r1, #0 15f46: bf08 it eq 15f48: 2800 cmpeq r0, #0 15f4a: bf1c itt ne 15f4c: f04f 31ff movne.w r1, #4294967295 ; 0xffffffff 15f50: f04f 30ff movne.w r0, #4294967295 ; 0xffffffff 15f54: f000 b978 b.w 16248 <__aeabi_idiv0> 15f58: f1ad 0c08 sub.w ip, sp, #8 15f5c: e96d ce04 strd ip, lr, [sp, #-16]! 15f60: f000 f806 bl 15f70 <__udivmoddi4> 15f64: f8dd e004 ldr.w lr, [sp, #4] 15f68: e9dd 2302 ldrd r2, r3, [sp, #8] 15f6c: b004 add sp, #16 15f6e: 4770 bx lr 00015f70 <__udivmoddi4>: 15f70: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 15f74: 9d08 ldr r5, [sp, #32] 15f76: 460e mov r6, r1 15f78: 4604 mov r4, r0 15f7a: 460f mov r7, r1 15f7c: 2b00 cmp r3, #0 15f7e: d14a bne.n 16016 <__udivmoddi4+0xa6> 15f80: 428a cmp r2, r1 15f82: 4694 mov ip, r2 15f84: d965 bls.n 16052 <__udivmoddi4+0xe2> 15f86: fab2 f282 clz r2, r2 15f8a: b142 cbz r2, 15f9e <__udivmoddi4+0x2e> 15f8c: f1c2 0320 rsb r3, r2, #32 15f90: 4097 lsls r7, r2 15f92: fa20 f303 lsr.w r3, r0, r3 15f96: fa0c fc02 lsl.w ip, ip, r2 15f9a: 431f orrs r7, r3 15f9c: 4094 lsls r4, r2 15f9e: ea4f 4e1c mov.w lr, ip, lsr #16 15fa2: fa1f f68c uxth.w r6, ip 15fa6: fbb7 f1fe udiv r1, r7, lr 15faa: 0c23 lsrs r3, r4, #16 15fac: fb0e 7711 mls r7, lr, r1, r7 15fb0: ea43 4307 orr.w r3, r3, r7, lsl #16 15fb4: fb01 f006 mul.w r0, r1, r6 15fb8: 4298 cmp r0, r3 15fba: d90a bls.n 15fd2 <__udivmoddi4+0x62> 15fbc: eb1c 0303 adds.w r3, ip, r3 15fc0: f101 37ff add.w r7, r1, #4294967295 ; 0xffffffff 15fc4: f080 8120 bcs.w 16208 <__udivmoddi4+0x298> 15fc8: 4298 cmp r0, r3 15fca: f240 811d bls.w 16208 <__udivmoddi4+0x298> 15fce: 3902 subs r1, #2 15fd0: 4463 add r3, ip 15fd2: 1a1b subs r3, r3, r0 15fd4: b2a4 uxth r4, r4 15fd6: fbb3 f0fe udiv r0, r3, lr 15fda: fb0e 3310 mls r3, lr, r0, r3 15fde: ea44 4403 orr.w r4, r4, r3, lsl #16 15fe2: fb00 f606 mul.w r6, r0, r6 15fe6: 42a6 cmp r6, r4 15fe8: d90a bls.n 16000 <__udivmoddi4+0x90> 15fea: eb1c 0404 adds.w r4, ip, r4 15fee: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff 15ff2: f080 810b bcs.w 1620c <__udivmoddi4+0x29c> 15ff6: 42a6 cmp r6, r4 15ff8: f240 8108 bls.w 1620c <__udivmoddi4+0x29c> 15ffc: 4464 add r4, ip 15ffe: 3802 subs r0, #2 16000: ea40 4001 orr.w r0, r0, r1, lsl #16 16004: 1ba4 subs r4, r4, r6 16006: 2100 movs r1, #0 16008: b11d cbz r5, 16012 <__udivmoddi4+0xa2> 1600a: 40d4 lsrs r4, r2 1600c: 2300 movs r3, #0 1600e: e9c5 4300 strd r4, r3, [r5] 16012: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 16016: 428b cmp r3, r1 16018: d908 bls.n 1602c <__udivmoddi4+0xbc> 1601a: 2d00 cmp r5, #0 1601c: f000 80f1 beq.w 16202 <__udivmoddi4+0x292> 16020: 2100 movs r1, #0 16022: e9c5 0600 strd r0, r6, [r5] 16026: 4608 mov r0, r1 16028: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 1602c: fab3 f183 clz r1, r3 16030: 2900 cmp r1, #0 16032: d14a bne.n 160ca <__udivmoddi4+0x15a> 16034: 42b3 cmp r3, r6 16036: d302 bcc.n 1603e <__udivmoddi4+0xce> 16038: 4282 cmp r2, r0 1603a: f200 8100 bhi.w 1623e <__udivmoddi4+0x2ce> 1603e: 1a84 subs r4, r0, r2 16040: eb66 0203 sbc.w r2, r6, r3 16044: 2001 movs r0, #1 16046: 4617 mov r7, r2 16048: 2d00 cmp r5, #0 1604a: d0e2 beq.n 16012 <__udivmoddi4+0xa2> 1604c: e9c5 4700 strd r4, r7, [r5] 16050: e7df b.n 16012 <__udivmoddi4+0xa2> 16052: b902 cbnz r2, 16056 <__udivmoddi4+0xe6> 16054: deff udf #255 ; 0xff 16056: fab2 f282 clz r2, r2 1605a: 2a00 cmp r2, #0 1605c: f040 8094 bne.w 16188 <__udivmoddi4+0x218> 16060: eba1 030c sub.w r3, r1, ip 16064: ea4f 471c mov.w r7, ip, lsr #16 16068: fa1f fe8c uxth.w lr, ip 1606c: 2101 movs r1, #1 1606e: fbb3 f6f7 udiv r6, r3, r7 16072: fb07 3016 mls r0, r7, r6, r3 16076: 0c23 lsrs r3, r4, #16 16078: ea43 4300 orr.w r3, r3, r0, lsl #16 1607c: fb0e f006 mul.w r0, lr, r6 16080: 4298 cmp r0, r3 16082: d908 bls.n 16096 <__udivmoddi4+0x126> 16084: eb1c 0303 adds.w r3, ip, r3 16088: f106 38ff add.w r8, r6, #4294967295 ; 0xffffffff 1608c: d202 bcs.n 16094 <__udivmoddi4+0x124> 1608e: 4298 cmp r0, r3 16090: f200 80d2 bhi.w 16238 <__udivmoddi4+0x2c8> 16094: 4646 mov r6, r8 16096: 1a1b subs r3, r3, r0 16098: b2a4 uxth r4, r4 1609a: fbb3 f0f7 udiv r0, r3, r7 1609e: fb07 3310 mls r3, r7, r0, r3 160a2: ea44 4403 orr.w r4, r4, r3, lsl #16 160a6: fb0e fe00 mul.w lr, lr, r0 160aa: 45a6 cmp lr, r4 160ac: d908 bls.n 160c0 <__udivmoddi4+0x150> 160ae: eb1c 0404 adds.w r4, ip, r4 160b2: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff 160b6: d202 bcs.n 160be <__udivmoddi4+0x14e> 160b8: 45a6 cmp lr, r4 160ba: f200 80ba bhi.w 16232 <__udivmoddi4+0x2c2> 160be: 4618 mov r0, r3 160c0: eba4 040e sub.w r4, r4, lr 160c4: ea40 4006 orr.w r0, r0, r6, lsl #16 160c8: e79e b.n 16008 <__udivmoddi4+0x98> 160ca: f1c1 0720 rsb r7, r1, #32 160ce: 408b lsls r3, r1 160d0: fa22 fc07 lsr.w ip, r2, r7 160d4: ea4c 0c03 orr.w ip, ip, r3 160d8: fa06 fe01 lsl.w lr, r6, r1 160dc: fa20 f407 lsr.w r4, r0, r7 160e0: fa26 f307 lsr.w r3, r6, r7 160e4: ea44 040e orr.w r4, r4, lr 160e8: fa00 f801 lsl.w r8, r0, r1 160ec: ea4f 401c mov.w r0, ip, lsr #16 160f0: ea4f 4914 mov.w r9, r4, lsr #16 160f4: fbb3 fef0 udiv lr, r3, r0 160f8: fa1f f68c uxth.w r6, ip 160fc: fb00 331e mls r3, r0, lr, r3 16100: ea49 4303 orr.w r3, r9, r3, lsl #16 16104: fb0e f906 mul.w r9, lr, r6 16108: 4599 cmp r9, r3 1610a: fa02 f201 lsl.w r2, r2, r1 1610e: d90b bls.n 16128 <__udivmoddi4+0x1b8> 16110: eb1c 0303 adds.w r3, ip, r3 16114: f10e 3aff add.w sl, lr, #4294967295 ; 0xffffffff 16118: f080 8089 bcs.w 1622e <__udivmoddi4+0x2be> 1611c: 4599 cmp r9, r3 1611e: f240 8086 bls.w 1622e <__udivmoddi4+0x2be> 16122: f1ae 0e02 sub.w lr, lr, #2 16126: 4463 add r3, ip 16128: eba3 0909 sub.w r9, r3, r9 1612c: b2a4 uxth r4, r4 1612e: fbb9 f3f0 udiv r3, r9, r0 16132: fb00 9913 mls r9, r0, r3, r9 16136: ea44 4409 orr.w r4, r4, r9, lsl #16 1613a: fb03 f606 mul.w r6, r3, r6 1613e: 42a6 cmp r6, r4 16140: d908 bls.n 16154 <__udivmoddi4+0x1e4> 16142: eb1c 0404 adds.w r4, ip, r4 16146: f103 30ff add.w r0, r3, #4294967295 ; 0xffffffff 1614a: d26c bcs.n 16226 <__udivmoddi4+0x2b6> 1614c: 42a6 cmp r6, r4 1614e: d96a bls.n 16226 <__udivmoddi4+0x2b6> 16150: 3b02 subs r3, #2 16152: 4464 add r4, ip 16154: ea43 400e orr.w r0, r3, lr, lsl #16 16158: 1ba4 subs r4, r4, r6 1615a: fba0 e602 umull lr, r6, r0, r2 1615e: 42b4 cmp r4, r6 16160: 4673 mov r3, lr 16162: 46b1 mov r9, r6 16164: d356 bcc.n 16214 <__udivmoddi4+0x2a4> 16166: d053 beq.n 16210 <__udivmoddi4+0x2a0> 16168: 2d00 cmp r5, #0 1616a: d06a beq.n 16242 <__udivmoddi4+0x2d2> 1616c: ebb8 0203 subs.w r2, r8, r3 16170: eb64 0409 sbc.w r4, r4, r9 16174: fa22 f301 lsr.w r3, r2, r1 16178: fa04 f707 lsl.w r7, r4, r7 1617c: 431f orrs r7, r3 1617e: 40cc lsrs r4, r1 16180: e9c5 7400 strd r7, r4, [r5] 16184: 2100 movs r1, #0 16186: e744 b.n 16012 <__udivmoddi4+0xa2> 16188: f1c2 0120 rsb r1, r2, #32 1618c: fa20 f301 lsr.w r3, r0, r1 16190: fa0c fc02 lsl.w ip, ip, r2 16194: fa26 f101 lsr.w r1, r6, r1 16198: 4096 lsls r6, r2 1619a: 4333 orrs r3, r6 1619c: ea4f 471c mov.w r7, ip, lsr #16 161a0: fa1f fe8c uxth.w lr, ip 161a4: fbb1 f0f7 udiv r0, r1, r7 161a8: fb07 1610 mls r6, r7, r0, r1 161ac: 0c19 lsrs r1, r3, #16 161ae: ea41 4106 orr.w r1, r1, r6, lsl #16 161b2: fb00 f60e mul.w r6, r0, lr 161b6: 428e cmp r6, r1 161b8: fa04 f402 lsl.w r4, r4, r2 161bc: d908 bls.n 161d0 <__udivmoddi4+0x260> 161be: eb1c 0101 adds.w r1, ip, r1 161c2: f100 38ff add.w r8, r0, #4294967295 ; 0xffffffff 161c6: d230 bcs.n 1622a <__udivmoddi4+0x2ba> 161c8: 428e cmp r6, r1 161ca: d92e bls.n 1622a <__udivmoddi4+0x2ba> 161cc: 3802 subs r0, #2 161ce: 4461 add r1, ip 161d0: 1b89 subs r1, r1, r6 161d2: b29b uxth r3, r3 161d4: fbb1 f6f7 udiv r6, r1, r7 161d8: fb07 1116 mls r1, r7, r6, r1 161dc: ea43 4301 orr.w r3, r3, r1, lsl #16 161e0: fb06 f10e mul.w r1, r6, lr 161e4: 4299 cmp r1, r3 161e6: d908 bls.n 161fa <__udivmoddi4+0x28a> 161e8: eb1c 0303 adds.w r3, ip, r3 161ec: f106 38ff add.w r8, r6, #4294967295 ; 0xffffffff 161f0: d217 bcs.n 16222 <__udivmoddi4+0x2b2> 161f2: 4299 cmp r1, r3 161f4: d915 bls.n 16222 <__udivmoddi4+0x2b2> 161f6: 3e02 subs r6, #2 161f8: 4463 add r3, ip 161fa: 1a5b subs r3, r3, r1 161fc: ea46 4100 orr.w r1, r6, r0, lsl #16 16200: e735 b.n 1606e <__udivmoddi4+0xfe> 16202: 4629 mov r1, r5 16204: 4628 mov r0, r5 16206: e704 b.n 16012 <__udivmoddi4+0xa2> 16208: 4639 mov r1, r7 1620a: e6e2 b.n 15fd2 <__udivmoddi4+0x62> 1620c: 4618 mov r0, r3 1620e: e6f7 b.n 16000 <__udivmoddi4+0x90> 16210: 45f0 cmp r8, lr 16212: d2a9 bcs.n 16168 <__udivmoddi4+0x1f8> 16214: ebbe 0302 subs.w r3, lr, r2 16218: eb66 060c sbc.w r6, r6, ip 1621c: 3801 subs r0, #1 1621e: 46b1 mov r9, r6 16220: e7a2 b.n 16168 <__udivmoddi4+0x1f8> 16222: 4646 mov r6, r8 16224: e7e9 b.n 161fa <__udivmoddi4+0x28a> 16226: 4603 mov r3, r0 16228: e794 b.n 16154 <__udivmoddi4+0x1e4> 1622a: 4640 mov r0, r8 1622c: e7d0 b.n 161d0 <__udivmoddi4+0x260> 1622e: 46d6 mov lr, sl 16230: e77a b.n 16128 <__udivmoddi4+0x1b8> 16232: 4464 add r4, ip 16234: 3802 subs r0, #2 16236: e743 b.n 160c0 <__udivmoddi4+0x150> 16238: 3e02 subs r6, #2 1623a: 4463 add r3, ip 1623c: e72b b.n 16096 <__udivmoddi4+0x126> 1623e: 4608 mov r0, r1 16240: e702 b.n 16048 <__udivmoddi4+0xd8> 16242: 4629 mov r1, r5 16244: e6e5 b.n 16012 <__udivmoddi4+0xa2> 16246: bf00 nop 00016248 <__aeabi_idiv0>: 16248: 4770 bx lr 1624a: bf00 nop 0001624c <__libc_init_array>: 1624c: b570 push {r4, r5, r6, lr} 1624e: 4d0d ldr r5, [pc, #52] ; (16284 <__libc_init_array+0x38>) 16250: 4c0d ldr r4, [pc, #52] ; (16288 <__libc_init_array+0x3c>) 16252: 1b64 subs r4, r4, r5 16254: 10a4 asrs r4, r4, #2 16256: 2600 movs r6, #0 16258: 42a6 cmp r6, r4 1625a: d109 bne.n 16270 <__libc_init_array+0x24> 1625c: 4d0b ldr r5, [pc, #44] ; (1628c <__libc_init_array+0x40>) 1625e: 4c0c ldr r4, [pc, #48] ; (16290 <__libc_init_array+0x44>) 16260: f00e fa2c bl 246bc <_init> 16264: 1b64 subs r4, r4, r5 16266: 10a4 asrs r4, r4, #2 16268: 2600 movs r6, #0 1626a: 42a6 cmp r6, r4 1626c: d105 bne.n 1627a <__libc_init_array+0x2e> 1626e: bd70 pop {r4, r5, r6, pc} 16270: f855 3b04 ldr.w r3, [r5], #4 16274: 4798 blx r3 16276: 3601 adds r6, #1 16278: e7ee b.n 16258 <__libc_init_array+0xc> 1627a: f855 3b04 ldr.w r3, [r5], #4 1627e: 4798 blx r3 16280: 3601 adds r6, #1 16282: e7f2 b.n 1626a <__libc_init_array+0x1e> 16284: 000246c8 .word 0x000246c8 16288: 000246c8 .word 0x000246c8 1628c: 000246c8 .word 0x000246c8 16290: 000246cc .word 0x000246cc 00016294 : 16294: b510 push {r4, lr} 16296: 3901 subs r1, #1 16298: 4402 add r2, r0 1629a: 4290 cmp r0, r2 1629c: d101 bne.n 162a2 1629e: 2000 movs r0, #0 162a0: e005 b.n 162ae 162a2: 7803 ldrb r3, [r0, #0] 162a4: f811 4f01 ldrb.w r4, [r1, #1]! 162a8: 42a3 cmp r3, r4 162aa: d001 beq.n 162b0 162ac: 1b18 subs r0, r3, r4 162ae: bd10 pop {r4, pc} 162b0: 3001 adds r0, #1 162b2: e7f2 b.n 1629a 000162b4 : 162b4: 440a add r2, r1 162b6: 4291 cmp r1, r2 162b8: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff 162bc: d100 bne.n 162c0 162be: 4770 bx lr 162c0: b510 push {r4, lr} 162c2: f811 4b01 ldrb.w r4, [r1], #1 162c6: f803 4f01 strb.w r4, [r3, #1]! 162ca: 4291 cmp r1, r2 162cc: d1f9 bne.n 162c2 162ce: bd10 pop {r4, pc} 000162d0 : 162d0: 4288 cmp r0, r1 162d2: b510 push {r4, lr} 162d4: eb01 0402 add.w r4, r1, r2 162d8: d902 bls.n 162e0 162da: 4284 cmp r4, r0 162dc: 4623 mov r3, r4 162de: d807 bhi.n 162f0 162e0: 1e43 subs r3, r0, #1 162e2: 42a1 cmp r1, r4 162e4: d008 beq.n 162f8 162e6: f811 2b01 ldrb.w r2, [r1], #1 162ea: f803 2f01 strb.w r2, [r3, #1]! 162ee: e7f8 b.n 162e2 162f0: 4402 add r2, r0 162f2: 4601 mov r1, r0 162f4: 428a cmp r2, r1 162f6: d100 bne.n 162fa 162f8: bd10 pop {r4, pc} 162fa: f813 4d01 ldrb.w r4, [r3, #-1]! 162fe: f802 4d01 strb.w r4, [r2, #-1]! 16302: e7f7 b.n 162f4 00016304 : 16304: 4402 add r2, r0 16306: 4603 mov r3, r0 16308: 4293 cmp r3, r2 1630a: d100 bne.n 1630e 1630c: 4770 bx lr 1630e: f803 1b01 strb.w r1, [r3], #1 16312: e7f9 b.n 16308 00016314 : 16314: f810 2b01 ldrb.w r2, [r0], #1 16318: f811 3b01 ldrb.w r3, [r1], #1 1631c: 2a01 cmp r2, #1 1631e: bf28 it cs 16320: 429a cmpcs r2, r3 16322: d0f7 beq.n 16314 16324: 1ad0 subs r0, r2, r3 16326: 4770 bx lr 00016328 : 16328: 4603 mov r3, r0 1632a: f811 2b01 ldrb.w r2, [r1], #1 1632e: f803 2b01 strb.w r2, [r3], #1 16332: 2a00 cmp r2, #0 16334: d1f9 bne.n 1632a 16336: 4770 bx lr 00016338 : 16338: 4603 mov r3, r0 1633a: f813 2b01 ldrb.w r2, [r3], #1 1633e: 2a00 cmp r2, #0 16340: d1fb bne.n 1633a 16342: 1a18 subs r0, r3, r0 16344: 3801 subs r0, #1 16346: 4770 bx lr 16348: 682f2e2e .word 0x682f2e2e 1634c: 732f6c61 .word 0x732f6c61 16350: 682f6372 .word 0x682f6372 16354: 695f6c61 .word 0x695f6c61 16358: 00632e6f .word 0x00632e6f 1635c: 682f2e2e .word 0x682f2e2e 16360: 732f6c61 .word 0x732f6c61 16364: 682f6372 .word 0x682f6372 16368: 745f6c61 .word 0x745f6c61 1636c: 72656d69 .word 0x72656d69 16370: 632e .short 0x632e 16372: 00 .byte 0x00 16373: 2e .byte 0x2e 16374: 61682f2e .word 0x61682f2e 16378: 74752f6c .word 0x74752f6c 1637c: 2f736c69 .word 0x2f736c69 16380: 2f637273 .word 0x2f637273 16384: 6c697475 .word 0x6c697475 16388: 696c5f73 .word 0x696c5f73 1638c: 632e7473 .word 0x632e7473 16390: 00 .byte 0x00 16391: 2e .byte 0x2e 16392: 2f2e .short 0x2f2e 16394: 2f6c7068 .word 0x2f6c7068 16398: 63726573 .word 0x63726573 1639c: 682f6d6f .word 0x682f6d6f 163a0: 735f6c70 .word 0x735f6c70 163a4: 6f637265 .word 0x6f637265 163a8: 00632e6d .word 0x00632e6d 163ac: 40003000 .word 0x40003000 163b0: 40003400 .word 0x40003400 163b4: 41012000 .word 0x41012000 163b8: 41014000 .word 0x41014000 163bc: 43000000 .word 0x43000000 163c0: 43000400 .word 0x43000400 163c4: 43000800 .word 0x43000800 163c8: 43000c00 .word 0x43000c00 000163cc <_i2cms>: 163cc: 00000003 00200014 00000100 000000ff ...... ......... 163dc: 00d70000 07270400 ......'. 000163e4 : ... 163f4: 2f2e2e00 2f6c6168 2f637273 5f6c6168 .../hal/src/hal_ 16404: 72617375 73615f74 2e636e79 2e2e0063 usart_async.c... 16414: 6c61682f 6974752f 732f736c 752f6372 /hal/utils/src/u 16424: 736c6974 6e69725f 66756267 2e726566 tils_ringbuffer. 16434: 2e2e0063 6c70682f 2f63742f 5f6c7068 c.../hpl/tc/hpl_ 16444: 632e6374 00000000 40003800 40003c00 tc.c.....8.@.<.@ 16454: 4101a000 4101c000 42001400 42001800 ...A...A...B...B 16464: 43001400 43001800 ...C...C 0001646c <_tcs>: 1646c: 006b0000 00000308 00000000 00003a97 ..k..........:.. 1647c: 00000000 682f2e2e 702f6c70 2f74726f ....../hpl/port/ 1648c: 5f6c7068 6f697067 7361625f 00682e65 hpl_gpio_base.h. 1649c: 6c6c6548 6f57206f 00646c72 Hello World. 000164a8 : 164a8: 1662e40a 0000855b 000164b4 ..b.[....d.. 000164b4 : 164b4: ff07060b ffac882c ff871f25 ff895139 ....,...%...9Q.. 164c4: ffdcc46d ffc88348 ffc65632 ff46434d m...H...2V..MCF. 164d4: ff480a16 ffbca25c ffc22d38 ff8b6c67 ..H.\...8-..gl.. 164e4: ff48272d ff893622 ffc76d41 ffc38576 -'H."6..Am..v... 164f4: ffc6a49a ffa53520 ff692621 ffa95139 .... 5..!&i.9Q.. 16504: ffe8e2a9 ff26242e ffe96e40 ffe98843 .....$&.@n..C... 16514: ffaea64b ff873848 ffc5c4c9 ffa86e33 K...H8......3n.. 16524: ff69646a ffe45640 ff69342e ff280917 jdi.@V...4i...(. 16534: ffa8554e ffe7a996 ff838383 ff67101b NU............g. 16544: ff9e8880 ffc76e60 ffe7a65f ffe99647 ....`n.._...G... 16554: ffe68779 ffa9202e ff694527 ff8a4335 y.... ..'Ei.5C.. 16564: ffa76f64 ff493329 ffc0b5af ff89575f do..)3I....._W.. 16574: ffc75543 ffa9462d ff9f9789 ffab603f CU..-F......?`.. 16584: ff882c1d ffc97948 ff27151b ffc69482 .,..Hy....'..... 16594: ff69282f ffe6b669 ffdfd484 ff48151b /(i.i.........H. 165a4: ffc89364 ffe66e5b ffc14715 ffe4c4bc d...[n...G...... 165b4: ff98371e ffc66343 ffe1e4e8 ff73542a .7..Cc......*Ts. 165c4: ff673a3e ffb7532b ff872b32 ffe68a60 >:g.+S..2+..`... 165d4: ff19141e ffd68448 ff38373f ffea9964 ....H...?78.d... 165e4: ffd69881 ff875f47 ff592621 ff37161a ....G_..!&Y...7. 165f4: ffe65550 ff886e77 ffd8a894 ffa97a73 PU..wn......sz.. 16604: ff571922 ffeba872 fff6f3de ffa3a59e ".W.r........... 16614: ffe03d49 ff671c24 ffa28c94 ffa86254 I=..$.g.....Tb.. 16624: ffecc483 ffd76e48 ffa9473f ffa93a38 ....Hn..?G..8:.. 16634: ffd5d4d6 ffa77937 ffe76254 ff595861 ....7y..Tb..aXY. 16644: ff884648 ffd6b4a7 ffb0999a ff9b5036 HF..........6P.. 16654: ff782620 ff392328 ffb3b5b4 ffe77a45 &x.(#9.....Ez.. 16664: ffe8b596 ff593331 ffd87a46 ffc19aa2 ....13Y.Fz...... 16674: ff160c16 ffb1887e ff886263 ff797679 ....~...cb..yvy. 16684: ff762930 ffc13d43 ff973c30 ff79362d 0)v.C=..0<..-6y. 16694: ff67474c ff994530 ffbfb560 fff7975f LGg.0E..`..._... 166a4: ffd7624b ffc9875c ff952d18 ffe87959 Kb..\....-..Yy.. 166b4: ffc04945 ff94968f ff9c9729 ffebddae EI......)....... 166c4: ffc0aa64 ffe99a78 fff3ead1 ffc56232 d...x.......2b.. 166d4: ffd8343e ff685a61 ffda9842 fff1643e >4..aZh.B...>d.. 166e4: ff928678 ffd8b859 ffc67a62 ffe4dcdd x...Y...bz...... 166f4: ff867c7c ff574a54 ffdaa94f ffd58a7b ||..TJW.O...{... 16704: ffafa9a4 ffd9a57b ffd6cdcd ff766b6f ....{.......okv. 16714: ffecd27c fff7b894 ffa99931 ff84766c |.......1...lv.. 16724: ffe1cb82 ffd85019 fff5b57b ffb96d49 .....P..{...Im.. 16734: ffbb7947 ffac2b34 ffd7895e ffa48654 Gy..4+..^...T... 16744: ff972129 ff570c18 ffc3aaaf ffede6bf )!....W......... 16754: ffacac64 ff370815 fff9a55c ff7b4432 d.....7.\...2D{. 16764: ffc1bcbf fff69b7e ff78575a ffb76e5f ....~...ZWx._n.. 16774: ff99614b ffb97a64 ff771a22 ff994747 Ka..dz..".w.GG.. 16784: ff986266 fff68745 fff6a996 ff77121c fb..E.........w. 16794: fff7964c ffd8544a fffbc7b6 ff783a40 L...JT......@:x. 167a4: fffa875f fff5a67a ffae8b97 ff78484a _...z.......JHx. 167b4: fff8d7bb fffbfaf8 fff2c89a ffeeebeb ................ 167c4: fffb6e49 ffb7624f fffb6459 ffd97965 In..Ob..Yd..ey.. 167d4: ff883930 ff973747 ff483942 ff291825 09..G7..B9H.%.). 167e4: ffe4da9b ff481725 ffd79d99 ff381825 ....%.H.....%.8. 167f4: fff75652 ff995249 ffe5bcb4 ff5a373e RV..IR......>7Z. 16804: ff98944c ffd99566 fffcd2d4 ffb7584e L...f.......NX.. 16814: ff97595d ffc3343f ffdc494b ff95786b ]Y..?4..KI..kx.. 16824: ffb9613b ff982931 fff97a43 ffd03c46 ;a..1)..Cz..F<.. 16834: fffb785b ff997b7b ffa63c23 ffc79d8b [x..{{..#<...... 16844: ffdadbdf ff885350 ff9f9b96 ffeab97a ....PS......z... 16854: ffb7553a ff572a2f ffd7aba7 ffd9babb :U../*W......... 16864: ff382938 ff8e8b89 ffdbbb69 ffecd7a1 8)8.....i....... 16874: fff8b8ab ff966f68 ffab6c51 ffd86f5d ....ho..Ql..]o.. 16884: fffb6e5b ff997077 ffd56331 ffd14848 [n..wp..1c..HH.. 16894: fffc5a44 ffdccc73 ff4b4b54 ffc38c7a DZ..s...TKK.z... 168a4: ffc6ac9f ff2b2c37 ffcbcbcf ff6b6b6f ....7,+.....okk. 168b4: 70707070 70707070 70707070 70704870 pppppppppppppHpp 168c4: 48487070 36363648 e90c69cb 7744442d ppHHH666.i..-DDw 168d4: 771212e9 133179c8 c8763113 133179c8 ...w.y1..1v..y1. 168e4: e2e23131 407e40e2 40e2e2e2 25c531e2 11...@~@...@.1.% 168f4: 30c785a2 0d76b35e 46464646 404040dd ...0^.v.FFFF.@@@ 16904: d1135e5f 5f762bb3 c876765f 9ca240c8 _^...+v__vv..@.. 16914: e714c156 bd0439bd 9c263ae7 140404a7 V....9...:&..... 16924: 7be0bce7 8047efef f3bc3d80 569c4733 ...{..G..=..3G.V 16934: 5c56c1c1 9ce79cee 56ef39f9 9c86f93a ..V\.....9.V:... 16944: 0e0ec785 9ccc55c7 c156e74b 9f35a2c2 .....U..K.V...5. 16954: 9f9f9f9f 339f9f9f 67672033 20677979 .......33 ggyyg 16964: dc132020 1e126717 7070704e 70707070 ...g..Nppppppp 16974: 70707070 70487070 48487070 36364848 ppppppHpppHHHH66 16984: 694e0c36 2b2b2d69 744e1e2b 3179c877 6.Nii-+++.Ntw.y1 16994: 7631315e 3179c8c8 e2313113 3440e2e2 ^11v..y1.11...@4 169a4: e2313140 9f9fd731 c72825c5 76b35e30 @11.1....%(.0^.v 169b4: 4634340d 40407e46 13b37640 2b2bb3d1 .44FF~@@@v....++ 169c4: 40765f5f 6e407676 86c1869c f9e73904 __v@vv@n.....9.. 169d4: 559c3955 ee9c869c f4bc5c14 4783ef7b U9.U.....\..{..G 169e4: bc625e80 044720f3 c1c1c186 c28304f9 .^b.. G......... 169f4: 9c39f9e7 a7f9ccc1 35354b9c a75cd535 ..9......K555.\. 16a04: 565c55ef 3cd5efc1 7d7d7d7d 05050505 .U\V...<}}}}.... 16a14: c59f9fa0 33333333 dc333333 77136e17 ....3333333..n.w 16a24: 7070740d 70707070 70707070 36487070 .tppppppppppppH6 16a34: 48707048 cb364848 4e4ecb36 bb1e1e0c HppHHH6.6.NN.... 16a44: 4ec82bb3 2bc87777 79797979 79c8c876 .+.Nww.+yyyyv..y 16a54: 31131331 40e2e231 1331e240 13c5af33 1..11..@@.1.3... 16a64: 28f3e831 b35ee8f3 34340d76 7e7e4646 1..(..^.v.44FF~~ 16a74: b3764040 2bb3d113 76315f2b 40767640 @@v....++_1v@vv@ 16a84: 86a79c6e e7393a56 f955553a 9c86e726 n...V:9.:UU.&... 16a94: b59c83ee 83efbce0 7cb35e4b 6e13f3e0 ........K^.|...n 16aa4: c1c186e7 a73a3ac1 550455e7 0483c19c .....::..U.U.... 16ab4: 67a2e73a 5c55a2a0 5c9e14a7 2683c156 :..g..U\...\V..& 16ac4: 3c3c3cd5 7d7d3c3c 9f350505 9fdcdc9f .<<<<<}}..5..... 16ad4: 3113c5c5 33336e0e 700d0d34 70707070 ...1.n334..ppppp 16ae4: 70707070 48707070 70704836 36484848 pppppppH6HppHHH6 16af4: 1e6936cb bb790c0c c82bbbbb c877744e .6i...y...+.Ntw. 16b04: 2b2bc8c8 76c8c8c8 13133179 31313131 ..++...vy1..1111 16b14: c53176e2 7613c5af 25e83176 b3e841f3 .v1....vv1.%.A.. 16b24: 340d76b3 34343434 5f114040 b3d1d1b3 .v.44444@@._.... 16b34: 3131762b 76767676 c2e7f340 04a7c1c0 +v11vvvv@....... 16b44: 55553a04 86e72604 9ccc8d3a c2bce0b8 .:UU.&..:....... 16b54: b35e4bcc d13de07c c1a7396e 8383c1c1 .K^.|.=.n9...... 16b64: 042639a7 14c19c55 9f4b9ee7 99853564 .9&.U.....K.d5.. 16b74: 9e14a75c 83c186e7 7d3cd526 7d3c3c3c \.......&.<}<<<} 16b84: a005057d 33dc9f9f 13dcc5dc 0d794579 }......3....yEy. 16b94: 0d74680d 70707070 70707070 70707070 .ht.pppppppppppp 16ba4: 70704836 36484870 cfcbcbcb 2b1e6912 6HpppHH6.....i.+ 16bb4: 2b6dbbbb 7774122b 762b2bc8 c8c8c876 ..m++.tw.++vv... 16bc4: 13317976 13313113 9f133131 407933af vy1..11.11...3y@ 16bd4: 790d7676 5ee8e8e8 0d76b3b3 34343434 vv.y...^..v.4444 16be4: 11407e34 1313b35f 31767967 76767631 4~@._...gyv11vvv 16bf4: 390e7676 c1c156ef 39cc043a 39260426 vv.9.V..:..9&.&9 16c04: cc8def86 bce0b89c 5e4bcc5c 3dbc7c64 ........\.K^d|.= 16c14: a7550ed1 a7c1c1c1 26e7a7cc 569c55ee ..U........&.U.V 16c24: 35475583 2149f1b0 14143a9c c186e79e .UG5..I!.:...... 16c34: 3cd52683 7d7d7d7d 3505057d dc9fa035 .&.<}}}}}..55... 16c44: 13133333 0d767979 12743379 70707068 33..yyv.y3t.hppp 16c54: 70707070 70707070 70704848 36484870 ppppppppHHpppHH6 16c64: cbcbcb36 c80c3636 d344bb2b 7412bb79 6...66..+.D.y..t 16c74: 792bc877 76797979 3179c8c8 13131313 w.+yyyyv..y1.... 16c84: af9f1331 763113dc e6344040 3131e22c 1.....1v@@4.,.11 16c94: 7679b35e 34340d0d 40403434 13b35f11 ^.yv..4444@@._.. 16ca4: 76b31313 7679315f 417676c8 c1c11439 ...v_1yv.vvA9... 16cb4: 1404ccc1 26ee4be7 8d83a755 f4b89c3a .....K.&U...:... 16cc4: 4bcce7bc bc7cb35e 260e133d c1c1c183 ...K^.|.=..&.... 16cd4: e7a79c83 e755e726 0e4befa7 a2f2f5dc ....&.U...K..... 16ce4: 143acc5c ef55e714 d52683c1 a27d7d3c \.:...U...&.<}}. 16cf4: 05057d7d 9f356e35 311333dc 40767979 }}..5n5..3.1yyv@ 16d04: c87d3334 70701268 70707070 70704870 43}.h.pppppppHpp 16d14: 70707070 48487070 cbcbcb36 773636cb ppppppHH6....66w 16d24: 44bb2b76 1ee91ebb 2bc87774 31317979 v+.D....tw.+yy11 16d34: 79c8c879 e8e81331 c5b19fe8 31313131 y..y1.......1111 16d44: 647e0d40 5e406fc1 b35e5e5e 34340d76 @.~d.o@^^^^.v.44 16d54: 40343434 b35f4040 5e131313 31313176 444@@@_....^v111 16d64: 76767631 56ef3941 f914c1c1 397b5ca7 1vvvA9.V.....\{9 16d74: 83a72626 273a9c8d 3a39e0f4 b9b3804b &&....:'..9:K... 16d84: c5133dbc c1c18355 869c83c1 55e7269c .=..U........&.U 16d94: c75c3ae7 33e633dc 3a145cd5 bde714cc .:\..3.3.\.:.... 16da4: 26ef865c 7d7d3c3c 05057d7d 35491735 \..&<<}}}}..5.I5 16db4: 1333dc9f 0d0d7979 c513680d 7074680d ..3.yy...h...htp 16dc4: 48487070 70364870 70483670 48707070 ppHHpH6pp6HppppH 16dd4: cbcbcb48 cbcbcbcb bb2b7677 771e6d44 H.......wv+.Dm.w 16de4: 77771277 3179792b c8c87931 e8131379 w.ww+yy11y..y... 16df4: d78e8ec5 31e2e231 024040e2 40a6c1be ....1..1.@@....@ 16e04: 5e5e5e5e 340d76b3 0d346834 5f404040 ^^^^.v.44h4.@@@_ 16e14: 1313135e 31315e5e 795e3131 5c264176 ^...^^1111^yvA&\ 16e24: a7c1c186 7b9ca7f9 83264b55 3a048da7 .......{UK&....: 16e34: bdf4f44b 5e807b3a 5b3de030 c18699af K...:{.^0.=[.... 16e44: 9c14c1c1 554b9c86 4be75555 662ce89f ......KUUU.K..,f 16e54: 145c4b33 e714cc3a efcc9ebd 7d3c7d85 3K\.:........}<} 16e64: 057d7d7d 6e176e05 33dc9f35 0d767913 }}}..n.n5..3.yv. 16e74: 79680d0d 74687413 70707070 48367070 ..hy.thtpppppp6H 16e84: 36367070 48707048 cbcb3648 69cbcbcb pp66HppHH6.....i 16e94: bb1e6936 bb44d344 777777c8 792b2b77 6i..D.D..wwww++y 16ea4: c8c87979 e8137979 e8257d8e 40403113 yy..yy...}%..1@@ 16eb4: 4040e2e2 60c1fe68 5e5e3176 0d76b35e ..@@h..`v1^^^.v. 16ec4: bb72680d 11e27eb2 13135e5f 315ee813 .hr..~.._^....^1 16ed4: 5ee85e31 aa877931 c1c1869e 3aa7f9a7 1^.^1y.........: 16ee4: 4b4b267b ee26a783 f4f44b3a 307b9cad {&KK..&.:K....{0 16ef4: 17e0e85e 83c210b1 a7c1c156 4b9c869c ^.......V......K 16f04: 477b5555 6613dc0e 5c4bdc24 cc3a9ccc UU{G...f$.K\..:. 16f14: 5cbdade7 7d7dd55c 7d7d7d7d 49173505 ...\\.}}}}}}.5.I 16f24: dc9f9f35 76797913 340d0d0d 68687468 5....yyv...4hthh 16f34: 70707068 70707070 48703670 70484836 hpppppppp6pH6HHp 16f44: cbcb4848 cbcbcbcb 69cbcbcb 2b44d32d HH.........i-.D+ 16f54: 770dc8ab 2b2b7777 c8c8792b 9f137979 ...www+++y..yy.. 16f64: d7418e8e 344031e8 40e2e27e 5642e534 ..A..1@4~..@4.BV 16f74: 5e5fd156 76b35e5e 2eb20d0d 7e7766c1 V._^^^.v.....fw~ 16f84: 135e31e2 5ee81313 13133131 6e311313 .1^....^11....1n 16f94: c156e7aa 863a86c1 4b4b7bcc 39a7cc4b ..V...:..{KKK..9 16fa4: e04bf939 7be77bc6 27dc5e30 5510fc85 9.K..{.{0^.'...U 16fb4: c1c1569c 9c86f9a7 bcad4b4b 67dce80e .V......KK.....g 16fc4: d50eb4ac 9c9c3a5c 85ade7cc 7dd59e9e ....\:.........} 16fd4: 7d7d7d7d 4935057d dc9f3535 79791333 }}}}}.5I55..3.yy 16fe4: 0d0d4076 6868340d 70707474 70707070 v@...4hhttpppppp 16ff4: 70487070 4836cf48 cb484870 cb15cbcb ppHpH.6HpHH..... 17004: 0ccbcbcb 44d32d0c 7979ab2b 2b77c840 .....-.D+.yy@.w+ 17014: 7931792b 8edc7979 4141258e 7e1131d7 +y1yyy...%AA.1.~ 17024: 11117e34 c3e10240 4053c1c3 b35e5e5e 4~..@.....S@^^^. 17034: 340d0d76 42c142bb 5e3134f1 13131313 v..4.B.B.41^.... 17044: 13135e5e dcc535e8 569c4b27 3a86c1c1 ^^...5..'K.V...: 17054: 7b7bcca7 a73a4b4b 4bee2639 e7bcc6e0 ..{{KK:.9&.K.... 17064: 8ac5b97b 5b715255 c156ee47 86f9a7c1 {...URq[G.V..... 17074: bc7b4b3a 1313e85d 0ed11ab4 9c3ae7d5 :K{.].........:. 17084: ad5ccc9c a2555585 7d7d7d7d 05057d7d ..\..UU.}}}}}}.. 17094: 9f9f3505 793113dc 76767979 76767676 .5....1yyyvvvvvv 170a4: 70120d0d 48707070 70707070 36cfcf70 ...ppppHppppp..6 170b4: 36487036 69cbcbcb e9cb6969 6d4477c8 6pH6...iii...wDm 170c4: 132bd344 c80d795e dc13792b 8eaf1313 D.+.^y..+y...... 170d4: 2541c525 11e2e841 117e347e 94684011 %.A%A...~4~..@h. 170e4: 10c1c3c3 5e5e5e40 460d76b3 c172b240 ....@^^^.v.F@.r. 170f4: c894c1c1 131313e2 135e5e5e dc3939e8 ........^^^..99. 17104: 9c47dcdc 56c1c156 27cca7f9 9c277bb8 ..G.V..V...'.{'. 17114: 394b39a7 bcc6e07b d5f37b55 20b13755 .9K9{...U{..U7. 17124: 86396ed1 f9a7c1c1 bc27efa7 e813e87f .n9.......'..... 17134: 13ac6679 f9e7856e 5c3a5c5c d5d585bd yf..n...\\:\.... 17144: 7d7d7dd5 05050505 35350505 1313dc35 .}}}......555... 17154: 79797979 79797979 c8797979 70707070 yyyyyyyyyyy.pppp 17164: 70707048 cbcf3600 48483636 cbcbcb36 Hppp.6..66HH6... 17174: cb696969 bb77c877 ababb3bb 0d763113 iii.w.w......1v. 17184: 13792bc8 9fb19fc5 41d7e813 e245e841 .+y........AA.E. 17194: 7e347e11 68401111 c1c3c32e 5e31c896 .~4~..@h......1^ 171a4: 0d76b35e 5940460d c1c1c194 2079d160 ^.v..F@Y....`.y 171b4: 5eb3b3d1 9f9895e8 47313113 c1c1869c ...^.....11G.... 171c4: cca73a56 17b8bc27 b839a79c d0f4b8aa V:..'.....9..... 171d4: 21b69ebc 205bb195 395dd1d1 a7c1c1a7 ...!..[ ..]9.... 171e4: 273aa7f9 1313dc3d be1a79e8 e7ad47e8 ..:'=....y...G.. 171f4: 3a5ce79c a285bd5c 7da24bd5 a005057d ..\:\....K.}}... 17204: 350505a0 13130e6e 79767979 31797979 ...5n...yyvyyyy1 17214: 5e5e315e 70707079 70704848 36004870 ^1^^ypppHHpppH.6 17224: 48cb36cf cbcbcb48 69696915 c8c869cb .6.HH....iii.i.. 17234: b3b32b1e 4076b32b 79797940 138e8e13 .+..+.v@@yyy.... 17244: 31317979 31314531 3440e2e2 40e2117e yy111E11..@4~..@ 17254: c3c360c8 31d1c3c1 7679b313 46460d0d .`.....1..yv..FF 17264: c1e47734 53c3c1c1 b3b31379 9fd59f5e 4w.....Sy...^... 17274: 31311313 c1a70447 a73a56c1 b8e04bcc ..11G....V:..K.. 17284: 55a7e7b5 e0b5bce0 babaadf4 b320c54c ...U........L. . 17294: 5db3d1b3 c1c18326 cc830486 13134127 ...]&.......'A.. 172a4: e4d81313 adad5db4 e7e79c9e 85bd5c3a .....]......:\.. 172b4: a285d5a2 a0057d7d a0a0a0a0 13339f9f ....}}........3. 172c4: 0d2b7913 31797976 795e3131 70707979 .y+.vyy111^yyypp 172d4: 70483648 480ce969 cb363670 cbcb4836 H6Hpi..Hp66.6H.. 172e4: 696915cb 794ecb69 abab6d77 40312b67 ..iii.Nywm..g+1@ 172f4: 13131376 13af8e33 79797979 e2317979 v...3...yyyyyy1. 17304: 4011e2e2 e2117e34 8f42e57e 53c1c342 ...@4~..~.B.B..S 17314: b37913e2 460d0d76 72a44034 c1c156c1 ..y.v..F4@.r.V.. 17324: b37971c1 13d75eb3 795e135e a7046e76 .qy..^..^.^yvn.. 17334: f956c1c1 e04b1414 14e7b8b5 bce06226 ..V...K.....&b.. 17344: babaadbc 5e807cad b3d1b364 c1cc265d .....|.^d...]&.. 17354: cc0486c1 31e8273a 24791331 ad47d860 ....:'.11.y$`.G. 17364: e79c9e85 bd5c9ce7 85d5a285 7d7d7da2 ......\......}}} 17374: a0a0057d 9f9fa0a0 79133333 760d0d0d }.......33.y...v 17384: 5e793179 7079795e 36364870 0c0c7000 y1y^^yyppH66.p.. 17394: 367070cb cb484836 6969cbcb 4ecb6969 .pp66HH...iiii.N 173a4: bb1ee9c8 79b32b64 c5d71376 13c57d8e ....d+.yv....}.. 173b4: 76767679 76797979 11e2e240 117e347e yvvvyyyv@...~4~. 173c4: c3e57ee2 c1c3e4e4 79137610 0d0d7679 .~.......v.yyv.. 173d4: 5f403434 c3c16602 37c1c1c1 5e5eb3c8 44@_.f.....7..^^ 173e4: 315e5e5e ee6e7676 56c1c114 4b14ccf9 ^^^1vvn....V...K 173f4: 39b5b5e0 bc414b3a adf0babd 80dabcbd ...9:KA......... 17404: 20b3645e 3a2641b3 0486c156 13179c9c ^d. .A&:V....... 17414: c8135e79 adc56aac 9c398585 5c9ce7e7 y^...j....9....\ 17424: 4bd585bd 3c7dd5ad 7d7d3c3c a0a07d7d ...K..}<<<}}}}.. 17434: 3333339f 0d2b6733 79790d0d b3b35e79 .3333g+...yyy^.. 17444: 36367070 36000070 7048360c 48487070 pp66p..6.6HpppHH 17454: 69cbcbcb cb696969 abe9cbcb 1364642b ...iiii.....+dd. 17464: c5133179 13c57d0f 76767913 79797976 y1...}...yvvvyyy 17474: 11404076 7e347e40 f17ee211 c36060c1 v@@.@~4~..~..``. 17484: 137696c1 0d767979 11403446 6077e211 ..v.yyv.F4@...w` 17494: 565642c3 5e0d6fc1 5e795e5e 5d40765e .BVV.o.^^^y^^v@] 174a4: c1c1cc39 14ccf956 b5bce026 8ed59c26 9...V...&...&... 174b4: e0f0d699 dae07be0 b3645e80 2741b320 .....{...^d. .A' 174c4: 86c186f9 49040404 31137913 f35ae4e5 .......I.y.1..Z. 174d4: 558555bd 9c9ee75c d5bdbd9c 9595b685 .U.U\........... 174e4: 216c2121 52525252 b13ce395 13339fa0 !!l!RRRR..<...3. 174f4: 0d34c879 b3797676 700036b3 70487048 y.4.vvy..6.pHpHp 17504: 36363670 48707070 15cbcb48 69696969 p666pppHH...iiii 17514: e90c69cb 206413bb c5137920 d7c58e0f .i....d y...... 17524: 76311313 79797676 11404079 347e4011 ..1vvvyyy@@..@~4 17534: 02e21134 fe60c15a d856c1c3 76797931 4...Z.`...V.1yyv 17544: 40340d0d 11315f11 8fe4c12f 66c156c3 ..4@._1./....V.f 17554: 765e5e0d 0d765e5e 56cc3941 3af956c1 .^^v^^v.A9.V.V.: 17564: e0f426cc 219ebdb5 bc9eba65 e0bcc6c6 .&.....!e....... 17574: 195e75da d7b32064 c1860427 ee048d86 .u^.d ..'....... 17584: 1379136e f542e179 85555547 9e9ee755 n.y.y.B.GUU.U... 17594: 99993a3a d2baf06c 3c4c9521 7d7d3c3c ::..l...!.L<<<}} 175a4: 4c3c7d7d fbce5252 c879139f 0d34340d }}E. 1a308: e887dce8 06e845e8 4545e8e8 45e8dce8 .....E....EE...E 1a318: 13f6de87 37797679 0d0db0fc 7774740d ....yvy7.....ttw 1a328: 74777777 77777474 bbbb77bb 69e90c38 wwwtttww.w..8..i 1a338: 0ccfcfcf 483648cf cbcb48cb 89579169 .....H6H.H..i.W. 1a348: 69690c2d e944bf44 1ebb6444 771e1e1e -.iiD.D.Dd.....w 1a358: 79792b77 0dc8c82b 4141e876 76797913 w+yy+...v.AA.yyv 1a368: 76404040 79797676 40763131 e2e24040 @@@vvvyy11v@@@.. 1a378: 7d333140 13a09552 31e23131 404040e2 @13}R...11.1.@@@ 1a388: 12114011 ff735722 4a979797 00000000 .@.."Ws....J.... 1a398: 00000000 1c1c97ec 739797ff 70704897 ...........s.Hpp 1a3a8: 60cf7070 31134066 45313131 acace640 pp.`f@.1111E@... 1a3b8: 32e1db24 4545e2e6 87dce8e8 4545e806 $..2..EE......EE 1a3c8: 45e8e8e8 e8e8e845 13e80645 e3677631 ...EE...E...1vg. 1a3d8: 7774b0fc 74747477 77777777 38747474 ..twwtttwwwwttt8 1a3e8: bb772b77 cde9bbab cfcfcf69 366969cf w+w.....i....ii6 1a3f8: 6d69cbcb e61c6969 6969ec91 d1e5780c ..imii....ii.x.. 1a408: 1e6d6dab 1e1e6464 792b771e c8c82b2b .mm.dd...w+y++.. 1a418: 5d30790d 76791341 40404076 79767676 .y0]A.yvv@@@vvvy 1a428: 79313179 31404040 523c9f13 e2319f4c y11y@@@1.. 1bbc8: 4a6391ab 00000048 00000000 70700000 ..cJH.........pp 1bbd8: cf4fcfcf cd4ecd4f 545454cd cd54544e ..O.O.N..TTTNTT. 1bbe8: 4e54543b 12771212 46a1df68 cd545459 ;TTN..w.h..FYTT. 1bbf8: 232354cd a9a9a9a5 a9a9a9a9 080808a9 .T##............ 1bc08: 08080808 08080808 a5a5a508 a5a5a5a5 ................ 1bc18: a5a5a5a5 08a5a5a5 d9b2a9a9 2323a4df ..............## 1bc28: a5a52323 a5a90223 a5a5a5a5 b202b7a5 ##..#........... 1bc38: a4d9ddb7 89897391 4444e978 44ed4444 .....s..x.DDDD.D 1bc48: f7f7b975 5f75dff7 b702a4a1 59b2b2b7 u.....u_.......Y 1bc58: 54a55459 3b3ba93b 4f4fcdcd 1f4f3636 YT.T;.;;..OO66O. 1bc68: 1f363636 701f1f70 48707070 70707070 666.p..ppppHpppp 1bc78: cb364848 79690c69 ec89aef6 00000048 HH6.i.iy....H... 1bc88: 00000000 70000000 cd1fcd1f 4ecdcdcd .......p.......N 1bc98: 5454cdcd 54545454 54543b54 12124e54 ..TTTTTTT;TTTN.. 1bca8: a968d959 1f1f1f1f 701f1f1f a9a5a5a9 Y.h........p.... 1bcb8: a9a9a9a9 a9a9a9a9 0808a908 08080808 ................ 1bcc8: a5080808 a5a5a5a5 a9a908a5 08a9a9a9 ................ 1bcd8: dfd90254 2323a4d9 a5a52323 08a423a5 T.....####...#.. 1bce8: a5a5a508 b7a5a5a5 02b7b2b2 89971c59 ............Y... 1bcf8: 6de96d89 2278d344 dd02dd74 a1a1a1a1 .m.mD.x"t....... 1bd08: a4a4dda1 b2020202 54a55459 3ba90854 ........YT.TT..; 1bd18: 4f3bcd3b 36361f4f 3636361f 361f1f70 ;.;OO.66.666p..6 1bd28: 70707036 70707070 36cb3670 770c69cb 6pppppppp6.6.i.w 1bd38: ec91338b 00000048 00007000 70000000 .3..H....p.....p 1bd48: 364fcf70 4e4fcdcd 54cd3b38 544e4e54 p.O6..ON8;.TTNNT 1bd58: 54545454 12545454 1f3bdd54 1f1f1f1f TTTTTTT.T.;..... 1bd68: 1f1f1f1f 0870701f a9a9a9a5 a9a9a9a9 .....pp......... 1bd78: a9a9a9a9 08080808 08080808 08a50808 ................ 1bd88: b2a5a9a9 d9a1a1dd d95858d9 2323a4a1 .........XX...## 1bd98: a5232323 a4a5a5a5 a5a5a959 a5a5a5a5 ###.....Y....... 1bda8: b2b223a5 89970cb7 e9e97889 89e9d36d .#.......x..m... 1bdb8: dfda021c 2323b2a1 23b7b7b7 54232323 ......##...####T 1bdc8: 3b545454 3ba93b3b 4f3b3b3b 1f1f1f4f TTT;;;.;;;;OO... 1bdd8: 361f1f36 3670701f 48707036 70707070 6..6.pp66ppHpppp 1bde8: cb707048 6d69cf69 6944f606 00007036 Hpp.i.im..Di6p.. 1bdf8: 00700000 00000000 36cd7000 cdcdcd1f ..p......p.6.... 1be08: 4ecd4ee9 545454cd 54545454 54545454 .N.N.TTTTTTTTTTT 1be18: 1f3b5954 1f1f1fa9 1f1f1f1f 1f1f1f1f TY;............. 1be28: a9a5a970 a9a9a9a9 a9a9a9a9 0808a9a9 p............... 1be38: 08080808 a9080808 d9a10208 58585858 ............XXXX 1be48: d9d9dfdf 2323a4a1 a5232323 a508a5a5 ......#####..... 1be58: a51f0202 a5a5a5a5 23a5a5a5 97fae546 ...........#F... 1be68: e9788989 e96de9e9 2308911c a1d9a102 ..x...m....#.... 1be78: a523b2a4 080808a5 cd54543b a93b3b3b ..#.....;TT.;;;. 1be88: 1f4f3b3b 4fa91f1f 1f70704f 70707070 ;;O....OOpp.pppp 1be98: 70707036 70707070 70363670 d30c6936 6pppppppp66p6i.. 1bea8: 69798b67 007048cb 00000000 00000000 g.yi.Hp......... 1beb8: 4f700000 cdcd4f1f 543bcd1e 545438e9 ..pO.O....;T.8TT 1bec8: 5454544e 54545454 a9545459 1f1f1fa9 NTTTTTTTYTT..... 1bed8: 1f1f1f1f 1f1f1f1f a9701f1f a9a9a9a5 ..........p..... 1bee8: a9a9a9a9 a9a9a9a9 0808a9a9 08a90808 ................ 1bef8: d9d9d9dd d9dfdfdf a1d9d9d9 23b702a1 ...............# 1bf08: a5232323 08a5a5a5 a9a10223 a5a5a508 ###.....#....... 1bf18: a5a5a5a5 6389e644 2d898989 6de90c0c ....D..c...-...m 1bf28: 0a1effe9 b7b2dda1 020202b2 02a4a402 ................ 1bf38: 3ba559b2 3ba9a908 543ba9a9 d9a1ddb2 .Y.;...;..;T.... 1bf48: 4f298888 70701f70 48707070 70707070 ..)Op.pppppHpppp 1bf58: cb487070 78693636 0c3e06e5 7048cb69 ppH.66ix..>.i.Hp ... 1bf70: 70700000 4f4f7070 cdcd1e4e bbbb4e4e ..ppppOON...NN.. 1bf80: 54544e54 54545454 08545454 1f1f1fa9 TNTTTTTTTTT..... 1bf90: 1f1f1f1f 1f1f1f1f 1f1f1f1f a908a91f ................ 1bfa0: a9a9a9a9 a9a9a9a9 a9a9a9a9 591f08a9 ...............Y 1bfb0: d9a1a1d9 dfdfdfdf a1d9d9d9 23b70229 ............)..# 1bfc0: a5232323 a5a5a5a5 a1b22308 08a5a9b2 ###......#...... 1bfd0: 54a5a5a5 69bfe651 918991ff 2d0c0c0c ...TQ..i.......- 1bfe0: 741c6d2d 58585888 0a0a8858 b202dda1 -m.t.XXXX....... 1bff0: 88d9ddb2 d90ad9d9 88d9d9d9 88888888 ................ 1c000: 88888888 701f7029 70707070 70707070 ....)p.ppppppppp 1c010: 70487070 892d6936 0ce2c889 4848cb69 ppHp6i-.....i.HH 1c020: 00000070 00000000 70000000 36707070 p..........pppp6 1c030: 3b381ecd 381eab1e 54543864 54545454 ..8;...8d8TTTTTT 1c040: cd545454 1f1fa9a9 1f1f1f1f 1f1f1f1f TTT............. 1c050: 1f1f1f1f 081f1f1f a9a91f08 a9a9a9a9 ................ 1c060: a9a9a9a9 591f08a9 dfd9d958 d9d9df58 .......YX...X... 1c070: a1a1d9d9 232302a4 a5232323 a5a5a5a5 ......#####..... 1c080: b22308a5 08a9a1dd 44a508a5 08388ced ..#........D..8. 1c090: 89911cca 0c0c0c91 63d30c2d d9a12923 ........-..c#).. 1c0a0: 888888d9 58585858 59b229d9 d9d9a102 ....XXXX.).Y.... 1c0b0: 880a0ad9 0a0a0ad9 0a0a0a0a 704f0a0a ..............Op 1c0c0: 70707070 70707070 48707070 89cacb48 pppppppppppHH... 1c0d0: 4e0d2d91 4836cbcb 00007070 00000000 .-.N..6Hpp...... 1c0e0: 00000000 36707000 cd38cd1f bb1e7977 .....pp6..8.wy.. 1c0f0: 54abbb1e 54545454 3b545454 a9a9083b ...TTTTTTTT;;... 1c100: 1f1f1f1f a9a91f1f 1f1f1f1f 1f1f1f1f ................ 1c110: a9a90800 a9a9a9a9 a9a9a9a9 08a9a9a9 ................ 1c120: 0854dd88 d9465908 a1a1a1d9 b723b7a4 ..T..YF.......#. 1c130: a5232323 a5a5a5a5 2308a5a5 b2d902b2 ###........#.... 1c140: 5154081f a508bfed 918963a9 0ccdca63 ..TQ.....c..c... 1c150: 910c2d0c a4a4b791 0a0aa1a1 dfd9d90a .-.............. 1c160: 5858dfdf 6859ddd9 a1a1a129 0a0a0a0a ..XX..Yh)....... 1c170: a1a10a0a cfdda1a1 70703670 70707070 ........p6pppppp 1c180: 70707070 6391ec48 cdcd69ca 4836cbcb ppppH..c.i....6H 1c190: 00007048 00000000 00000000 70700000 Hp............pp 1c1a0: 4f4fcd4f 54c80e4e 641e1e1e 54545438 O.OON..T...d8TTT 1c1b0: 54545454 a9083b3b 1f1f1fa9 1f1f1f1f TTTT;;.......... 1c1c0: 1f1fa9a9 1f1f1f1f 08a9cd1f a9a9a9a9 ................ 1c1d0: a9a9a9a9 1fa9a9a9 1f00a502 1f1f1f1f ................ 1c1e0: a1d9dda9 2323b702 a5a5a523 a5a5a5a5 ......###....... 1c1f0: 08a5a5a5 a1b2b223 e6d3540a 08084e90 ....#....T...N.. 1c200: 91ffcb08 690c6391 0c2d0c0c a4b72d63 .....c.i..-.c-.. 1c210: a1a12929 a1a1a1a1 88d9d9d9 d958dfd9 ))............X. 1c220: a42959b2 a1a129a4 dda1a1a1 6846dddd .Y)..)........Fh 1c230: 7036703b 70707070 70707070 07910769 ;p6pppppppppi... 1c240: 36484815 48483648 00707048 00000000 .HH6H6HHHpp..... 1c250: 00000000 70007000 cdcd7070 12dc33cd .....p.ppp...3.. 1c260: 4e4e4e12 5454bbab 54545454 08543b54 .NNN..TTTTTTT;T. 1c270: 1f1fa9a9 1f1f1f1f 1fa91fa9 1f1f1f1f ................ 1c280: 12131e1f a9a9a9a9 a9a9a9a9 1fa9a9a9 ................ 1c290: a9000808 a9a9a9a9 021f1fa9 2323b2a1 ..............## 1c2a0: a5a5a523 a5a5a5a5 08a5a5a5 b2b22308 #............#.. 1c2b0: e69380a4 08080878 1c4a0808 69916391 ....x.....J..c.i 1c2c0: 0c0c0c69 a5cf632d a40223a5 29a12929 i...-c...#..)).) 1c2d0: a1a1a1a1 d9df88d9 cd0258df 54545968 .........X..hYTT 1c2e0: 59595454 59595959 1f70cd54 70707070 TTYYYYYYT.p.pppp 1c2f0: cb707070 ec91fa4a 48707048 48484848 ppp.J...HppHHHHH 1c300: 70704848 00000000 00000000 00000000 HHpp............ 1c310: 36367000 77791e4f 54e94e77 54ab1e54 .p66O.ywwN.TT..T 1c320: 54545454 54545454 1fa9a908 1f1f1f1f TTTTTTTT........ 1c330: a9a9a91f 1f1f1f1f 67331e1f a9084f79 ..........3gyO.. 1c340: 1fa9a9a9 a9a9a9a9 1f1fa91f 1f1f1f1f ................ 1c350: a9a9a91f 23dddd1f a5a52323 08a508a5 .......###...... 1c360: a5a5a5a5 b2230808 ceea5bb2 08a9a95e ......#..[..^... 1c370: 63a90808 ca639163 0c0c6969 a963ca0c ...cc.c.ii....c. 1c380: a5a508a5 a4a4b2a5 dda1dddd dfd9a1dd ................ 1c390: dfd9d9df b212cd68 595959b2 cdcd5454 ....h....YYYTT.. 1c3a0: 70cfcdcd 70707070 4acb7070 cbec0707 ...ppppppp.J.... 1c3b0: 70707048 48484870 48484848 00000070 HppppHHHHHHHp... 1c3c0: 00000000 001f0000 4f700000 541ecd4f ..........pOO..T 1c3d0: 4e4e774e 3838544e 54545454 54595454 NwNNNT88TTTTTTYT 1c3e0: a9a90854 1f1f1f1f a9a91f1f 1f1f1fa9 T............... 1c3f0: 1379121f a9123113 a9a9a9a9 a9a91f1f ..y..1.......... 1c400: 1fa91fa9 1f1f1f1f a91f1f1f a1a91fa9 ................ 1c410: a5a5a5b2 08080808 08080808 23080808 ...............# 1c420: 5ba66619 08290aa1 3608a91f 639191ff .f.[..)....6...c 1c430: 0cec690c fa91ec2d a5a5a508 a5080808 .i..-........... 1c440: 020202b2 4646dddd d9dfd9a1 cf54d9d9 ......FF......T. 1c450: 595454cd 59595959 cd545959 70707070 .TTYYYYYYYT.pppp 1c460: ca154870 70cb4a07 70700000 48487070 pH...J.p..ppppHH 1c470: 48484848 00007070 00000000 70000000 HHHHpp.........p 1c480: 70000070 4ecf3b36 381e543b 1e544e4e p..p6;.N;T.8NNT. 1c490: 54545454 59545454 08a53b59 a91f1fa9 TTTTTTTYY;...... 1c4a0: a9a91f1f 1fa9a9a9 0d34121f 79131379 ..........4.y..y 1c4b0: a9a908a9 1f1f1fa9 a91fa9a9 1f1f1f1f ................ 1c4c0: 1f1f1f1f 1fa91f1f a5a5a454 08080808 ........T....... 1c4d0: 08080808 cd08a508 7453a6f1 0aa12902 ..........St.).. 1c4e0: 1f1f23a1 6391ff4a ec696991 63ec2d0c .#..J..c.ii..-.c 1c4f0: a5a508ca 3ba5a5a5 b2543b3b dd466802 .......;;;T..hF. 1c500: d9dd5968 a1d9d9df cdcfcfcf cdcdcdcd hY.............. 1c510: 545454cd 7070704f 07ca1548 7070154a .TTTOpppH...J.pp 1c520: 70700070 70707070 48484848 00707070 p.ppppppHHHHppp. ... 1c53c: 4f1f7000 38cd3b4e 544e5438 544e5454 .p.ON;.88TNTTTNT 1c54c: 54545454 a9595959 1fa9a908 a91f1f1f TTTTYYY......... 1c55c: 1fa9a9a9 686868a9 13790d34 08081279 .....hhh4.y.y... 1c56c: 1fa9a9a9 1f1f1f1f 1f1f1fa9 1f1f1f1f ................ 1c57c: 1f1f1f1f b7b21fa9 080808a5 08080808 ................ 1c58c: 44080808 596466e6 a1a40223 a4290a0a ...D.fdY#.....). 1c59c: 63fffaa9 69690763 0c0cecec 08086963 ...cc.ii....ci.. 1c5ac: 08080808 3b3b3b3b 6868593b 5468dd68 ....;;;;;Yhhh.hT 1c5bc: a1d9d946 cdcb68d9 cdcdcdcd cdcdcd54 F....h......T... 1c5cc: 36704f54 4a07caec 70704815 70007070 TOp6...J.Hpppp.p 1c5dc: 70707070 70704848 70707070 00000000 ppppHHpppppp.... 1c5ec: 70000000 0000701f 70707000 cd3b544f ...p.p...pppOT;. 1c5fc: 4e4e3838 4e4e5454 54545459 12595959 88NNTTNNYTTTYYY. 1c60c: 1f1fa959 a9a91f1f a91f1f1f 68686854 Y...........Thhh 1c61c: 76343468 08797979 a9a9a908 1f1f1f1f h44vyyy......... 1c62c: 1f1fa91f 1f1f1f1f 1f1f1f1f 3b1fa91f ...............; 1c63c: 0808a502 08080808 5154083b 23597294 ........;.TQ.rY# 1c64c: 02b223b2 a1a1a1a4 ffec0229 69ec631c .#......)....c.i 1c65c: ececec69 a5a963ca 3b3b3b08 3b3b3b3b i....c...;;;;;;; 1c66c: 54cdcd3b 46686868 d9745468 cfa1a1a1 ;..ThhhFhTt..... 1c67c: cdcdcdcf cdcdcdcd 1536cdcd cbec4aca ..........6..J.. 1c68c: 70707070 70707070 70707000 70707070 pppppppp.ppppppp 1c69c: 70704870 00000070 00000000 001f7000 pHppp........p.. 1c6ac: a9700000 1f1f7070 381e38cd 3854544e ..p.pp...8.8NTT8 1c6bc: 5454541e 12595959 3b591212 1f1f1fa9 .TTTYYY...Y;.... 1c6cc: 593ba91f 68b26868 34346868 310d0d0d ..;Yhh.hhh44...1 1c6dc: a9a9a912 1f1fa9a9 1f081f1f 1f1f1f1f ................ 1c6ec: 1f1f1f1f a9a91f1f 0823021f 3b080808 ..........#....; 1c6fc: e6783b3b a508e9ed 2323b259 a1a102b2 ;;x.....Y.##.... 1c70c: a5292929 699163ec ececec69 1ffa07ec )))..c.ii....... 1c71c: 3b3b0808 3b3b3b4f cdcd3b3b 686854cd ..;;O;;;;;...Thh 1c72c: cd6868b2 d9a1a168 cfcfcf54 cdcdcdcd .hh.h...T....... 1c73c: 36cdcdcd 704815ec 70707070 70707070 ...6..Hppppppppp 1c74c: 70707070 70707070 70484870 00000070 pppppppppHHpp... 1c75c: 00000000 00707000 00000000 1f70701f .....pp......pp. 1c76c: 1e38cd1f 5454381e 5412bb12 59595959 ..8..8TT...TYYYY 1c77c: 59121259 59595959 0d741259 6868680d Y..YYYYYY.t..hhh 1c78c: 34346868 0d343434 a9a97931 1fa9a9a9 hh44444.1y...... 1c79c: a91f1f1f 1f1f1fa9 1f1f1f1f a9a91f1f ................ 1c7ac: b259364f 08080808 94e1e908 3b083bae O6Y..........;.; 1c7bc: 23b223a5 a4b259a5 29292929 ca697002 .#.#.Y..)))).pi. 1c7cc: ecec6969 4a91ecec 08a94fa9 4f4f3b3b ii.....J.O..;;OO 1c7dc: 3bcf4f4f 54cdcdcd 6868b2b2 a1ddcd54 OO.;...T..hhT... 1c7ec: cfcb46d9 cfcdcfcf cfcdcfcf 70707070 .F..........pppp 1c7fc: 70707070 70364848 70707070 70707070 ppppHH6ppppppppp 1c80c: 70484870 00007070 00000000 00000000 pHHppp.......... 1c81c: 00000000 70707070 383b1f1f 544e3838 ....pppp..;888NT 1c82c: 12771254 59595959 59681259 b2595959 T.w.YYYYY.hYYYY. 1c83c: 683468b2 0dc82bc8 34686868 34343434 .h4h.+..hhh44444 1c84c: 3b131340 a9a9a9a9 1f1f1f1f 1f1f081f @..;............ 1c85c: 1f1f1f1f a91f1f1f 0d1e4f4f 083b3bb2 ........OO...;;. 1c86c: 90e6ae08 083b08e9 59a5a53b b723a523 ......;.;..Y#.#. 1c87c: 2929a4b2 cba92929 ec6969cf 63ececec ..))))...ii....c 1c88c: a94fa9ec 4f4f4f4f cf4f4f4f cdcdcfcf ..O.OOOOOOO..... 1c89c: 59b259cd 546868b2 cfa14654 cfcfcfcf .Y.Y.hhTTF...... 1c8ac: cdcfcfcf 7070001f 70707070 36363636 ......pppppp6666 1c8bc: 00707048 70700070 70487070 00007070 Hpp.p.ppppHppp.. ... 1c8d8: 701f7000 a91f7070 5454543b 38121254 .p.ppp..;TTTT..8 1c8e8: 12125959 68126812 34685959 0d0d6868 YY...h.hYYh4hh.. 1c8f8: c8c87468 68340dc8 34343434 e8314034 ht....4h44444@1. 1c908: a9a9a912 1f1f1fa9 1f08701f 1f1f1f1f .........p...... 1c918: 4fa9a91f 161e4f4f 0854b245 78e6ed6d ...OOO..E.T.m..x 1c928: 083b3b3b a5a53ba9 a5082359 2902b723 ;;;..;..Y#..#..) 1c938: 1fa5b729 151569cb ecececec a9a936fa )....i.......6.. 1c948: 4f4f4fa9 4f4f4f4f cfcfcfcf 54cdcd4f .OOOOOOO....O..T 1c958: 36540259 54484848 cfcfcfcd cfcfcfcf Y.T6HHHT........ 1c968: 707070cf 48707070 4e4f3636 0070704f .ppppppH66ONOpp. 1c978: 00000000 70707000 00000000 00000000 .....ppp........ 1c988: 00000000 00007070 00000000 3b707070 ....pp......ppp; 1c998: 543ba9a9 59545454 59591259 68686868 ..;TTTTYY.YYhhhh 1c9a8: 0db2b268 c8683476 6868680d 34c80d0d h...v4h..hhh...4 1c9b8: 34340234 31403434 a9a9c813 1f1fa91f 4.4444@1........ 1c9c8: a91f1f1f 1f1f1fa9 a9a9a9a9 06774fa9 .............Ow. 1c9d8: 4e23e8b5 0c51e697 3b3bcd08 a53ba93b ..#N..Q...;;;.;. 1c9e8: a52323a5 b702b2a5 00000008 15360000 .##...........6. 1c9f8: ecec1569 4f1ffafa a9a9a9a9 4f4f4f4f i......O....OOOO 1ca08: cfcf4f4f cf4fcfcf 483659cd 48cbcb36 OO....O..Y6H6..H 1ca18: cfcb4f36 cfcfcfcf 700036cf 36707070 6O.......6.pppp6 1ca28: 404f3636 70703640 00000000 70000000 66O@@6pp.......p 1ca38: 00000070 00000000 00000000 00000000 p............... 1ca48: 70000000 70700070 3b08a9a9 59125454 ...pp.pp...;TT.Y 1ca58: 77123812 68746812 b2b26868 3476130d .8.w.hthhh....v4 1ca68: b268c876 0d346868 34023434 40343434 v.h.hh4.44.4444@ 1ca78: 3b797979 1f1f1fa9 701f1f1f a91fa9a9 yyy;.......p.... 1ca88: 1fa9a9a9 31c8cd1f bf79f687 a9d3edbe .......1..y..... 1ca98: 3bcdcd3b 3ba9083b 23a5a5a5 08022308 ;..;;..;...#.#.. ... 1cab0: 70700000 1f15cb70 a9a9a9a9 4fa9a9a9 ..ppp..........O 1cac0: 4f4f4f4f cfcfcf4f 481f59cf 48483636 OOOOO....Y.H66HH 1cad0: cf4f3648 4f4fcfcf 7070cf4f 70707070 H6O...OOO.pppppp 1cae0: 344f4f36 7036129d 00000070 00000000 6OO4..6pp....... 1caf0: 00000070 70007070 00007070 70700000 p...pp.ppp....pp 1cb00: 00000000 70007070 4f1f1f70 3838593b ....pp.pp..O;Y88 1cb10: 12771212 74127477 68686868 340d68b2 ..w.wt.thhhh.h.4 1cb20: 68767634 0d68b2b2 3434340d 34343434 4vvh..h..4444444 1cb30: af79400d 1f1f08b4 1f1f1f1f 1fa91f1f .@y............. 1cb40: 701fa9a9 79311e4f e35b7976 a94fbf5a ...pO.1yvy[.Z.O. 1cb50: cdcd3b3b 4f3b3bcd a508a53b 0023b2a5 ;;...;;O;.....#. ... 1cb68: 70000000 701fa91f a94f1f4f a9a9a9a9 ...p...pO.O..... 1cb78: 4f4f4f4f cb364f4f 481f594f 48483636 OOOOOO6.OY.H66HH 1cb88: 363b4848 364fcfcf 0048cb36 70707070 HH;6..O66.H.pppp 1cb98: 124fcf36 364fe29d 00000070 70000000 6.O...O6p......p 1cba8: 00000000 48707000 70707048 00000070 .....ppHHpppp... ... 1cbc0: 1f1f7070 383854a9 77123838 59747412 pp...T8888.w.ttY 1cbd0: 68681268 59b26868 3468b2b2 68686834 h.hhhh.Y..h44hhh 1cbe0: 340dc8c8 34020234 fc37f279 a9543765 ...44..4y.7.e7T. 1cbf0: 1f1fa91f a91f1fa9 4f1f1fa9 7913791e ...........O.y.y 1cc00: 65fbd176 3b081e0f cd3b4fa9 4f4fcdcd v..e...;.O;...OO 1cc10: a53b3b4f 00a559a5 00000000 00000000 O;;..Y.......... 1cc20: 00000000 4f1f1f1f 1f361f1f 3636361f .......O..6..666 1cc30: 4f4f3636 364f3636 48a95436 48484836 66OO66O66T.H6HHH 1cc40: 1fcf4848 36364f36 0036cb36 70707070 HH..6O666.6.pppp 1cc50: 4ecf3670 36129d3e 70007036 00000000 p6.N>..66p.p.... 1cc60: 70000070 48487070 48484848 00004848 p..pppHHHHHHHH.. ... 1cc78: 1f707000 7454a91f 12383874 74741274 .pp...Ttt88.t.tt 1cc88: 68b25959 68686868 b2686868 686868b2 YY.hhhhhhhh..hhh 1cc98: c8790d68 2c2b3434 fbfc2ee3 c831795b h.y.44+,....[y1. 1cca8: a91f1fa9 a91f1fa9 1e4f1f1f 79314513 ..........O..E1y 1ccb8: e3657167 4f740dd1 3b4fa908 4fcfcdcd gqe...tO..O;...O 1ccc8: 3b4f4f4f 00a9233b 00000000 00000000 OOO;;#.......... 1ccd8: 00000000 701f1f70 3670a91f 361f1f1f ....p..p..p6...6 1cce8: 36363636 364f4f36 70083b36 48484848 66666OO66;.pHHHH 1ccf8: 1f364848 36364f36 00363636 70707070 HH6.6O66666.pppp 1cd08: 3b4f361f cde29d40 00004836 70007000 .6O;@...6H...p.p 1cd18: 70707000 48484848 15484848 00fd1515 .pppHHHHHHH..... 1cd28: 00007070 70000000 70707070 54a9361f pp.....ppppp.6.T 1cd38: 74747412 68121212 68595974 68686868 .ttt...htYYhhhhh 1cd48: 68686868 68b26868 0d343468 fce32c79 hhhhhh.hh44.y,.. 1cd58: 76d153e3 79764040 1fa97745 1f1f1f1f .S.v@@vyEw...... 1cd68: 13c84ea9 133113e8 f2fcfcaf 0d0d0dc8 .N....1......... 1cd78: a9a9a93b cfcdcd4f a9a94f4f 00a9543b ;...O...OO..;T.. ... 1cd90: 48151500 1f007070 1fa9701f 36361f1f ...Hpp...p....66 1cda0: 36361f1f 36363636 703b3b36 48484848 ..6666666;;pHHHH 1cdb0: a9364848 36364f1f 70363636 70707000 HH6..O66666p.ppp 1cdc0: 4f363670 123e3e12 00703636 00000000 p66O.>>.66p..... 1cdd0: 48487070 15484848 fd151515 07074a4a ppHHHHH.....JJ.. ... 1cde8: 1f700000 4f361f1f 7412543b 12681274 ..p...6O;T.tt.h. 1cdf8: 5959340d 740d6868 68687434 b2686868 .4YYhh.t4thhhhh. 1ce08: c8346868 71fcfc53 34340dd1 76767676 hh4.S..q..44vvvv 1ce18: 31453131 4e541277 e8e86777 af313113 11E1w.TNwg...11. 1ce28: 79716510 0d0d0d0d a9a94e0d cfcf4fa9 .eqy.....N...O.. 1ce38: a94f4fcf 001fa5a9 00000000 00000000 .OO............. 1ce48: cb150000 70707048 1f1f7000 1f1f70a9 ....Hppp.p...p.. 1ce58: 1f36361f 36363636 703b4f36 48484870 .66.66666O;ppHHH 1ce68: 1f364848 36363648 70483636 70707070 HH6.H66666Hppppp 1ce78: 36367070 343e403b 7048364f 00000000 pp66;@>4O6Hp.... 1ce88: 48484870 15151548 07074afd 4a4a0707 pHHHH....J....JJ 1ce98: 000000fd 00000000 70700000 361f1f1f ..........pp...6 1cea8: 12543b4f 68127474 b268130d 0d68b2b2 O;T.tt.h..h...h. 1ceb8: 34346874 68686868 712b6868 79b46ffc th44hhhhhh+q.o.y 1cec8: 340d0d0d 76797634 31313176 13e8e813 ...44vyvv111.... 1ced8: 1313e845 37333113 76d13765 0d0dc876 E....137e7.vv... 1cee8: 4f74770d cf4fa9a9 a94fcfcf 007008a9 .wtO..O...O...p. ... 1cf00: 15480000 70707015 70007070 1f70a91f ..H..ppppp.p..p. 1cf10: 361f1f1f 36363636 703b3636 70007070 ...6666666;ppp.p 1cf20: 36484848 48484870 00704836 70707070 HHH6pHHH6Hp.pppp 1cf30: 36707070 e23e1236 704836cd 48707070 ppp66.>..6HppppH 1cf40: 48484848 4afd1515 4a070707 1515fd4a HHHH...J...JJ... 1cf50: 00004848 00000000 00000000 1f363670 HH..........p66. 1cf60: 543b4f36 12747459 68c80d74 68b25959 6O;TYtt.t..hYY.h 1cf70: 68686868 68686834 fc53c8b2 68345b10 hhhh4hhh..S..[4h 1cf80: 0dc8c834 79763434 31313176 13131331 4...44vyv1111... 1cf90: 13131313 650f1331 76795b10 c80dc876 ....1..e.[yvv... 1cfa0: 7474770d 4f3b1f4e 4f4fcfcf 0070a93b .wttN.;O..OO;.p. ... 1cfb8: 15000000 700015cb 70707070 a91f0070 .......pppppp... 1cfc8: 36363670 36363636 704f3648 70701f70 p6666666H6Opp.pp 1cfd8: 48487070 36364870 70707048 70707070 ppHHpH66Hppppppp 1cfe8: 36707070 e240cf36 483636cd 48484870 ppp66.@..66HpHHH 1cff8: 15484848 07074afd 15fd4a4a 48481515 HHH..J..JJ....HH 1d008: 00484848 00000000 00000000 1f700000 HHH...........p. 1d018: cd363670 59595454 74127459 68685912 p66.TTYYYt.t.Yhh 1d028: 68686868 b2683468 711053c8 34767664 hhhhh4h..S.qdvv4 1d038: 0d0d3468 0d34340d 13137676 13133131 h4...44.vv..11.. 1d048: 31131313 eafcaf13 797979b1 c8c8c876 ...1.....yyyv... 1d058: 74770dc8 1fcf7474 3bcdcd3b 00001f3b ..wttt..;..;;... ... 1d074: 00481515 70707070 00707070 36701f1f ..H.ppppppp...p6 1d084: 48363636 70a94f36 70701f70 70707070 666H6O.pp.pppppp 1d094: 48707070 70007070 70707070 70707070 pppHpp.ppppppppp 1d0a4: 34cd3636 483636cd 48484848 4afd1548 66.4.66HHHHHH..J 1d0b4: fd4a074a 48151515 48484848 00707048 J.J....HHHHHHpp. 1d0c4: 00000000 70000000 70000000 4f367070 .......p...ppp6O 1d0d4: 5454cdcd 12125959 68685974 0d686868 ..TTYY..tYhhhhh. 1d0e4: 77b26868 2b241053 0d346868 34683434 hh.wS.$+hh4.44h4 1d0f4: 34343434 31404034 31313113 13131313 44444@@1.111.... 1d104: 0f65e35b 79797967 c8c8c82b 777777c8 [.e.gyyy+....www 1d114: 74383874 4f4f7070 0000701f 00000000 t88tppOO.p...... ... 1d12c: 48151548 70707000 70707070 00707070 H..H.pppppppppp. 1d13c: 361f7070 701fa936 70707070 70707070 pp.66..ppppppppp 1d14c: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d15c: cf364870 48cbcbcf 15484848 074afd15 pH6....HHHH...J. 1d16c: 1515fd4a 48484815 70484848 00000070 J....HHHHHHpp... ... 1d184: 70000070 4f487070 121254cf 12125959 p..pppHO.T..YY.. 1d194: 68595974 68343434 f1746868 b2c85310 tYYh444hhht..S.. 1d1a4: 68686868 34343468 34686868 400d3434 hhhhh444hhh444.@ 1d1b4: 31311331 33313131 33e365fb 76797979 1.111113.e.3yyyv 1d1c4: c8c8c876 797977c8 38387477 00000038 v....wyywt888... ... 1d1e4: 15154800 70700000 70707070 70707070 .H....pppppppppp 1d1f4: 70000070 70707070 70707070 70707070 p..ppppppppppppp 1d204: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d214: 36487070 cbcbcb36 fd151515 fd4a074a ppH66.......J.J. 1d224: 48481515 48484848 00707048 00000000 ..HHHHHHHpp..... ... 1d23c: 70000000 36707070 0d12cdcd 59595968 ...pppp6....hYYY 1d24c: 59595959 34686868 66e56868 34682bbe YYYYhhh4hh.f.+h4 1d25c: 68686868 34686868 34686834 34343434 hhhhhhh44hh44444 1d26c: 31317634 b1133131 79f210fc 76767979 4v1111.....yyyvv 1d27c: c8c8c8c8 45c877c8 381e74c8 00006938 .....w.E.t.88i.. 1d28c: 00707070 00000000 00000000 00000000 ppp............. 1d29c: 15150000 70000015 70707070 70707070 .......ppppppppp 1d2ac: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d2bc: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d2cc: 48487070 cbcbcbcb 074aec15 15fd4a07 ppHH......J..J.. 1d2dc: 48484848 00704848 00000000 00000000 HHHHHHp......... ... 1d2f8: 70707070 4554cd4f 59595976 59595959 ppppO.TEvYYYYYYY 1d308: 68685959 66be2b68 0d6868e5 68683434 YYhhh+.f.hh.44hh 1d318: 68686868 34686868 34460d34 76763434 hhhhhhh44.F444vv 1d328: e3f27940 7967b1fc c8767679 c8c8c8c8 @y....gyyvv..... 1d338: 77777777 381e1e77 00483838 70707000 wwwww..888H..ppp ... 1d354: 15700000 00004815 70707070 70707070 ..p..H..pppppppp 1d364: 70707070 701f7070 70707070 70707070 pppppp.ppppppppp 1d374: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d384: 48484848 15cb4848 ca91074a 4815694a HHHHHH..J...Ji.H 1d394: 70484848 00000000 00000000 00000000 HHHp............ ... 1d3b0: 70700000 ab4f3636 59126887 59595959 ..pp66O..h.YYYYY 1d3c0: 68685959 dba6f174 6868b274 68340d0d YYhht...t.hh..4h 1d3d0: 68686868 34686868 0d0d3434 40343446 hhhhhhh444..F44@ 1d3e0: e3372c79 764067b1 c8c8c876 77c8c8c8 y,7..g@vv......w 1d3f0: 77777777 1e1e1e1e 000c3838 70000000 wwww....88.....p ... 1d40c: 48000000 00701515 70707000 70707070 ...H..p..ppppppp 1d41c: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d42c: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d43c: 48484848 ca15cbcb eccafa91 4815e969 HHHH........i..H 1d44c: 00004848 00000000 00000000 00000000 HH.............. ... 1d464: 70000000 70007070 0c363636 121277dc ...ppp.p666..w.. 1d474: 59595959 68595959 646666d1 68686868 YYYYYYYh.ffdhhhh 1d484: 68680d68 68686868 34686868 46346834 h.hhhhhhhhh44h4F 1d494: 2b34460d f27171f1 76767679 c8c8c876 .F4+.qq.yvvvv... 1d4a4: 7777c8c8 77777777 381e1e1e cb384e38 ..wwwwww...88N8. 1d4b4: 00000000 00000070 00000000 00000000 ....p........... 1d4c4: 00000000 00151515 70700000 70707070 ..........pppppp 1d4d4: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d4e4: 70707070 70707070 4f367070 48707070 pppppppppp6OpppH 1d4f4: 48cb4848 6307fd48 15154a91 48e9e9cb HH.HH..c.J.....H 1d504: 00007048 00000000 00000000 00000000 Hp.............. ... 1d51c: 00007000 70707070 36cfcf1f 4e6979ab .p..pppp...6.yiN 1d52c: 54545454 12595959 74f16553 68686868 TTTTYYY.Se.thhhh 1d53c: 68686868 68686868 34686868 6868340d hhhhhhhhhhh4.4hh 1d54c: b02b4634 0d67f153 4076400d c80d0d0d 4F+.S.g..@v@.... 1d55c: 7777c8c8 1e1e7777 381e1e1e e94ee938 ..wwww.....88.N. 1d56c: 00000048 00007000 00000000 00000000 H....p.......... 1d57c: 00000000 1548fd00 70000000 70707070 ......H....ppppp 1d58c: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d59c: 70707070 70707070 594f7070 4848703b ppppppppppOY;pHH 1d5ac: 48cbcb48 9163faec 15cb154a 691e69cb H..H..c.J....i.i 1d5bc: 00007048 00000000 00000000 00000000 Hp.............. ... 1d5d4: 00707000 70700000 4f367070 cf691e0c .pp...pppp6O..i. 1d5e4: 54cdcdcf bb545954 682b5a66 68686868 ...TTYT.fZ+hhhhh 1d5f4: 68686834 34686868 68686834 340d0d68 4hhhhhh44hhhh..4 1d604: b0640d68 34462bb0 0d0d0d34 0d0d0d0d h.d..+F44....... 1d614: 7777c8c8 1e1e1e77 381e1e1e 4ee9e9e9 ..www......8...N 1d624: 0000000c 00700000 00000000 00000000 ......p......... 1d634: 00000000 15fd4800 70000048 70707070 .....H..H..ppppp 1d644: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d654: 70707070 70707070 59367070 48483659 pppppppppp6YY6HH 1d664: ec4848cb 4a631c63 cbcb1515 124ecbcb .HH.c.cJ......N. 1d674: 00007036 00000000 00000000 00000000 6p.............. ... 1d68c: 70700000 70707070 36367070 cfcfcf36 ..pppppppp666... 1d69c: 59cdcfcf 2f545459 59597294 68686812 ...YYTT/.rYY.hhh 1d6ac: 68346868 34686868 6874460d 0d466868 hh4hhhh4.FthhhF. 1d6bc: 2b2bc80d 46464646 0d343446 0d0d0d0d ..++FFFFF44..... 1d6cc: 7777c80d 1e1e7777 e91e3838 4ee9e9e9 ..wwww..88.....N 1d6dc: 0000cb4e 70000000 00000000 00000000 N......p........ 1d6ec: 00000000 15150000 00007015 70707070 .........p..pppp 1d6fc: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d70c: 48707070 70707048 cf487070 cb483654 pppHHpppppH.T6H. 1d71c: 631548cb 154a6397 484815cb 12693648 .H.c.cJ...HHH6i. 1d72c: 0070703b 00000000 00000000 00000000 ;pp............. ... 1d744: 70700000 70707070 4f707070 3636364f ..pppppppppOO666 1d754: 544fcf4f 0b545968 59a5bf94 74681259 O.OThYT....YY.ht 1d764: 34686868 6868400d 74460d68 74686868 hhh4.@hhh.Fthhht 1d774: 74460d0d 46746868 46746874 0d0d3434 ..FthhtFthtF44.. 1d784: c80dc80d 1e1e7779 e9e9381e 4ee9e9e9 ....yw...8.....N 1d794: 00480c0c 00000000 00000070 00000000 ..H.....p....... 1d7a4: 00000000 fd000000 00001548 70707000 ........H....ppp 1d7b4: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d7c4: 361f7070 70363636 36707070 15cb36cf pp.6666pppp6.6.. 1d7d4: 73071548 48154a1c 48484848 4e484848 H..s.J.HHHHHHHHN 1d7e4: 00703612 00000000 00000000 00000000 .6p............. ... 1d7fc: 70700000 70707070 70707070 36364f4f ..ppppppppppOO66 1d80c: cfcf3636 24387454 54541e94 12595959 66..Tt8$..TTYYY. 1d81c: 68687474 6831f640 68686868 74686874 tthh@.1hhhhhthht 1d82c: 68747474 68687468 74686868 0d464646 ttthhthhhhhtFFF. 1d83c: 79c80d0d 387731f6 e9e9e938 0c0ce9e9 ...y.1w88....... 1d84c: 0069cdcd 00000000 00007000 00000000 ..i......p...... ... 1d864: 001548fd 70700000 70707070 70707070 .H....pppppppppp 1d874: 70707070 70707070 36367070 4f543636 pppppppppp6666TO 1d884: 48707070 15cb3636 73ff4acb 48481507 pppH66...J.s..HH 1d894: 48484848 cb484848 70704f12 00000000 HHHHHHH..Opp.... ... 1d8b4: 70000000 70707070 701f1f70 36361f70 ...pppppp..pp.66 1d8c4: cf363636 5a4ecdcf cd3b38e6 5959593b 666...NZ.8;.;YYY 1d8d4: 68747412 3487f634 68686834 74747468 .tth4..44hhhhttt 1d8e4: 74747474 68687474 74746868 46467468 tttttthhhhtthtFF 1d8f4: 31c8c80d 1ec8f616 e9e9e91e cd0ce9e9 ...1............ 1d904: cbcdcdcd 00000000 00000000 00000000 ................ 1d914: 70700000 00000070 4848fd48 48000000 ..ppp...H.HH...H 1d924: 70707070 70707070 70707070 70707070 pppppppppppppppp 1d934: 36367070 59684f36 48484836 cb15cb36 pp666OhY6HHH6... 1d944: 63736315 48154815 48484848 48484848 .csc.H.HHHHHHHHH 1d954: 7070cdcd 00000000 00000000 00000000 ..pp............ ... 1d970: 361f1f70 36361f1f 1f1f1f1f cf363636 p..6..66....666. 1d980: 32e9cfcf cd54e932 59543b3b 74746859 ...22.T.;;TYYhtt 1d990: 34877968 68686868 74746868 68686868 hy.4hhhhhhtthhhh 1d9a0: 68686874 74746868 74747468 79c80d74 thhhhhtthtttt..y 1d9b0: 7479165d e9e9e91e cd0c0c0c cdcdcdcd ].yt............ 1d9c0: 00000048 00000000 70000000 36363636 H..........p6666 1d9d0: 00363636 48151500 00000000 70707048 666....H....Hppp 1d9e0: 70707070 70707070 70707070 36484870 pppppppppppppHH6 1d9f0: 34684f36 4848484f 15151548 4aff73ca 6Oh4OHHHH....s.J 1da00: 48481548 70704848 48487070 0048cd36 H.HHHHppppHH6.H. ... 1da28: 361f1f00 36363636 36363636 36363636 ...6666666666666 1da38: e66dcfcb 59544e5a 543b3b54 74125959 ..m.ZNTYT;;TYY.t 1da48: 34406874 68686868 68686868 68686868 th@4hhhhhhhhhhhh 1da58: 68121268 74741212 74686874 c80d7474 h..h..ttthhttt.. 1da68: 77e816f6 0ce9e91e cd0c0c0c cfcdcdcd ...w............ 1da78: 00007069 00000000 cb000000 36cbcfcf ip.............6 1da88: 48703636 48fd0070 00000015 70704800 66pHp..H.....Hpp 1da98: 70707070 70707070 70707070 36487070 ppppppppppppppH6 1daa8: 7e593636 48363654 fdcb1548 15fa901c 66Y~T66HH....... 1dab8: 48481515 70704848 70707070 00363648 ..HHHHppppppH66. ... 1dae0: 1f1f0000 3636361f 36363636 36363636 .....66666666666 1daf0: 576d4f36 54cf4e24 3b3b5974 12595954 6OmW$N.TtY;;TYY. 1db00: 68747474 68686868 12686812 12747474 ttthhhhh.hh.ttt. 1db10: 12121274 74121212 12127474 c8747412 t......ttt...tt. 1db20: c8871606 0ce9381e cdcdcd0c cfcfcfcd .....8.......... 1db30: 0000cbcf 00000000 36000000 36cbcfcf ...........6...6 1db40: 48363636 fd707048 00004848 70700000 666HHpp.HH....pp 1db50: 70707070 70487070 48707070 48487048 ppppppHppppHHpHH 1db60: 7e543636 cb36cf68 071515cb 484aff73 66T~h.6.....s.JH 1db70: 48484815 70707048 70707070 70707070 .HHHHppppppppppp ... 1db98: 1f000000 361f1f1f 36363636 36363636 .......666666666 1dba8: 57e93636 cfcd548c cd5454cf 59543b4f 66.W.T...TT.O;TY 1dbb8: 74747459 12686868 12686812 38743812 Yttthhh..hh..8t8 1dbc8: 12121212 12121212 12383812 74741212 .........88...tt 1dbd8: c8f61613 0ce9381e cfcdcdcd cfcfcfcf .....8.......... 1dbe8: 0048cfcf 00000000 70000000 cbcbcfcf ..H........p.... 1dbf8: 483636cb 48704848 007048fd 70000000 .66HHHpH.Hp....p 1dc08: 70707070 70707070 70707070 48484870 pppppppppppppHHH 1dc18: 343b3636 cbcbcd68 1cfd4815 1515fa22 66;4h....H.."... 1dc28: 48484815 70707048 70707070 00707070 .HHHHpppppppppp. ... 1dc54: 1f36361f 3636361f 36363636 e60c3636 .66..666666666.. 1dc64: cdcfcded cfcfcfcf 3b4f4fcf 38121254 .........OO;T..8 1dc74: 12121238 12686812 12121212 12121212 8....hh......... 1dc84: 12121212 12125959 12121212 c8f6f60d ....YY.......... 1dc94: 0ce93838 cfcfcdcd cfcfcfcf 70cfcfcf 88.............p ... 1dcac: cbcbcfcb 363636cb 70484848 004815fd .....666HHHp..H. 1dcbc: 00000000 70707070 70707070 70707070 ....pppppppppppp 1dccc: 48487070 68cf3648 cbcb5402 7307cbcb ppHHH6.h.T.....s 1dcdc: 1548fdff 70484848 70707070 70707070 ..H.HHHppppppppp 1dcec: 00707070 00000000 00000000 00000000 ppp............. ... 1dd0c: 36363600 1f36361f 36361f1f edcd3636 .666.66...6666.. 1dd1c: cf4f0c32 cfcfcfcf 3b4f54cf 12593b3b 2.O......TO;;;Y. 1dd2c: 12121212 12681212 12121259 12123838 ......h.Y...88.. 1dd3c: 59121212 59595912 59595959 77310d12 ...Y.YYYYYYY..1w 1dd4c: 0ce94e12 cfcfcfcd cfcfcfcf 36cfcfcf .N.............6 ... 1dd64: cbcfcf70 36363636 48484848 4848fd70 p...6666HHHHp.HH 1dd74: 00000000 70707000 48707070 70707070 .....ppppppHpppp 1dd84: 48707070 59364848 69695402 226315cb pppHHH6Y.Tii..c" 1dd94: 151515fa 70484848 70707070 70707070 ....HHHppppppppp 1dda4: 70707070 00000000 00000000 00000000 pppp............ ... 1ddc4: 1f1f0000 1f361f1f 1f1f1f36 9bcf3636 ......6.6...66.. 1ddd4: cf366d57 cfcfcfcf 3636cfcf 593b4f36 Wm6.......666O;Y 1dde4: 59121212 59125959 12121212 12121212 ...YYY.Y........ 1ddf4: 59121212 54595959 54545454 4e125454 ...YYYYTTTTTTT.N 1de04: cd0c4e4e cfcfcfcf cfcfcfcf cb3636cb NN...........66. 1de14: 00000048 00000000 cbcfcb00 483636cb H............66H 1de24: 48484848 48fd4870 00000048 70700000 HHHHpH.HH.....pp 1de34: 70707070 70707048 70707070 cd484848 ppppHpppppppHHH. 1de44: 69695968 7397eccb 4815484a 70704848 hYii...sJH.HHHpp 1de54: 70707070 70707070 70707070 00000070 ppppppppppppp... ... 1de7c: 1f000000 1f1f1f1f 361f1f1f 891f361f ...........6.6.. 1de8c: cb1f7857 cdcfcbcf 54cfcfcf 3b3b4fcd Wx.........T.O;; 1de9c: 59121259 59595959 59126812 59595959 Y..YYYYY.h.YYYYY 1deac: 54595959 54545454 54545454 54545454 YYYTTTTTTTTTTTTT 1debc: cdcdcd54 cfcfcfcf cbcbcbcf 363636cb T............666 1decc: 00007036 00000000 cbcf7000 703636cb 6p.......p...66p 1dedc: 48487070 15157048 00007048 70000000 ppHHHp..Hp.....p 1deec: 70707070 70707070 70707070 36484870 pppppppppppppHH6 1defc: 15695454 6373cacb 48484815 70484848 TTi...sc.HHHHHHp 1df0c: 70707070 70707070 00000070 00000000 ppppppppp....... ... 1df38: 70707070 1f707070 2d1f361f 364f9781 ppppppp..6.-..O6 1df48: cd4f3636 cf69cfcd 4f4f4fcd 125959cd 66O...i..OOO.YY. 1df58: 59595959 59121259 54545959 54545454 YYYYY..YYYTTTTTT 1df68: 54545454 54545454 cdcd5454 cfcdcdcd TTTTTTTTTT...... 1df78: 4f4fcfcf 36363636 36363636 00003636 ..OO6666666666.. 1df88: 00000000 cb360000 483636cb 48707048 ......6..66HHppH 1df98: fd704848 00004848 00000000 70707070 HHp.HH......pppp 1dfa8: 70707070 70707070 48487070 cbcbcf36 ppppppppppHH6... 1dfb8: ca736315 48481548 70707048 70707070 .cs.H.HHHppppppp 1dfc8: 70707070 00000070 00000000 00000000 ppppp........... ... 1dff0: 70707000 70707070 cf1f1f70 1f692273 .pppppppp...s"i. 1e000: 36363636 cd69cf4f 36cf4e0c 5954cf36 6666O.i..N.66.TY 1e010: 54595959 54545459 54545454 54544e54 YYYTYTTTTTTTTNTT 1e020: 54545454 54545454 3bcdcd3b 4f4f3b3b TTTTTTTT;..;;;OO 1e030: 364f4f4f 36363636 36363636 00703636 OOO66666666666p. 1e040: 00000000 36000000 483636cb 48484848 .......6.66HHHHH 1e050: 48484848 0048484a 00000000 70707000 HHHHJHH......ppp 1e060: 70707070 70707070 48707070 cbcbcb48 pppppppppppHH... 1e070: fd1c1cec 48481548 70707070 70707070 ....H.HHpppppppp 1e080: 00707070 00000070 00000000 00000000 ppp.p........... ... 1e0a8: 70700000 70707070 1f707070 7091ed91 ..ppppppppp....p 1e0b8: 36361f70 0ccdcf36 cd2b2b0c cdcf4fcf p.666....++..O.. 1e0c8: 54545454 54545454 54545454 54545454 TTTTTTTTTTTTTTTT 1e0d8: 54545454 3b54cd54 4fa9a9a9 1f1fa91f TTTTT.T;...O.... 1e0e8: 1f1f701f 361f1f1f 36361f1f 00701f36 .p.....6..666.p. 1e0f8: 00000000 70000000 48363636 48704848 .......p666HHHpH 1e108: 70484848 4848fd48 00000000 70480000 HHHpH.HH......Hp 1e118: 70707048 70707070 48707070 cbcb4848 HppppppppppHHH.. 1e128: 15631c4a 48484848 70707070 70707070 J.c.HHHHpppppppp 1e138: 00000000 70007000 00000000 00000000 .....p.p........ ... 1e160: 70000000 70707070 70707070 361cff69 ...pppppppppi..6 1e170: 36707070 cdcd3636 1e6eab0c 4f3636cf ppp666....n..66O 1e180: 545454cf 54545454 54545454 54545454 .TTTTTTTTTTTTTTT 1e190: 3b3b3b3b a93b3b3b 701f1f1f 70707070 ;;;;;;;....ppppp 1e1a0: 70707070 701f1f70 70707070 70707070 ppppp..ppppppppp ... 1e1b8: 36367070 48484870 48487070 4815fd70 pp66pHHHppHHp..H 1e1c8: 00000070 70000000 70707070 70707070 p......ppppppppp 1e1d8: 48707070 48cb4848 48071c4a 70484848 pppHHH.HJ..HHHHp 1e1e8: 00000070 00007000 00000000 00007000 p....p.......p.. ... 1e21c: 70707070 70707070 4affca70 70707070 ppppppppp..Jpppp 1e22c: cf363636 0e6ee9cd 3636cf0c 54544f36 666...n...666OTT 1e23c: 3bcdcd54 cdcdcdcd 3b54cd3b 3b3b3b3b T..;....;.T;;;;; 1e24c: 1f3b3b3b 7070701f 70707070 00007000 ;;;..ppppppp.p.. 1e25c: 70700000 70707070 00707070 00000000 ..ppppppppp..... 1e26c: 00000000 48707000 70484848 48484848 .....ppHHHHpHHHH 1e27c: 48fd0048 00000048 70000000 70707070 H..HH......ppppp 1e28c: 70700070 48707070 48484848 484a634a p.pppppHHHHHJcJH 1e29c: 70704848 00000070 00007070 00000070 HHppp...pp..p... 1e2ac: 00707000 00000000 00000000 00000000 .pp............. ... 1e2d4: 70707000 70707070 91633670 70707036 .pppppppp6c.6ppp 1e2e4: 36367070 b5670ccf 36cdcdab 3b4f3636 pp66..g....666O; 1e2f4: 3b3b3bcd 3b3b3b3b 4f3b3b3b 1f1fa94f .;;;;;;;;;;OO... 1e304: 701fa9a9 70707070 00707070 00000000 ...pppppppp..... 1e314: 00000000 00707000 00700000 00000000 .....pp...p..... 1e324: 00000000 70700000 70704870 70487070 ......pppHppppHp 1e334: 4a707048 00004848 00000000 00707000 HppJHH.......pp. 1e344: 00000000 70707000 48484848 48fd634a .....pppHHHHJc.H 1e354: 70704848 00007070 00000000 00000000 HHpppp.......... 1e364: 70700000 00000070 00000000 00000000 ..ppp........... ... 1e38c: 70700000 70707070 63ec7000 707070ec ..pppppp.p.c.ppp 1e39c: 36707070 6e4e4f36 cf690c87 4f1f7036 ppp66ONn..i.6p.O 1e3ac: 3b3b3b3b a9080808 70a9a91f 1f707070 ;;;;.......pppp. 1e3bc: 7070701f 00707070 00000070 00000000 .pppppp.p....... ... 1e3e0: 70000000 70707070 70707070 48007070 ...ppppppppppp.H 1e3f0: 007070fd 00000000 00700000 00000000 .pp.......p..... 1e400: 70700000 48484848 4815fa4a 00704848 ..ppHHHHJ..HHHp. 1e410: 00007000 00000000 00000000 70700000 .p............pp 1e420: 00007036 00000000 00000000 00000000 6p.............. ... 1e444: 70000000 00707070 4a700000 000036fa ...pppp...pJ.6.. 1e454: 70700000 2a363670 4f4f1e6e 70707036 ..ppp66*n.OO6ppp 1e464: 1f4f4f1f 1f1fa91f 70700070 70707070 .OO.....p.pppppp 1e474: 70707070 00707070 00000000 00000000 ppppppp......... 1e484: 00000000 00007000 00000000 00000000 .....p.......... ... 1e49c: 70707000 70707070 00707070 00701515 .pppppppppp...p. ... 1e4b8: 70700000 48484848 48154a4a 00704848 ..ppHHHHJJ.HHHp. ... 1e4d4: 70700000 00704f36 00000000 00000000 ..pp6Op......... ... 1e500: 00007070 70000000 00704a4a 70000000 pp.....pJJp....p 1e510: 36367070 4f4fab67 70703636 1f1f7070 pp66g.OO66pppp.. 1e520: 00707070 70707000 70707070 70707070 ppp..ppppppppppp 1e530: 70707070 00000000 00000000 00000000 pppp............ 1e540: 00700000 00000000 00000000 00000000 ..p............. 1e550: 00000000 70000000 00007070 00000000 .......ppp...... 1e560: 70481500 00000000 00000000 00000000 ..Hp............ 1e570: 70000000 48484848 48484afd 00007048 ...pHHHH.JHHHp.. ... 1e58c: 70000000 00363b70 00000000 00000000 ...pp;6......... ... 1e5b8: 00707000 00000000 70154a70 00000000 .pp.....pJ.p.... 1e5c8: 70707000 36364e4f 70703636 70707070 .pppON6666pppppp 1e5d8: 70707070 00000070 70707000 70707070 ppppp....ppppppp 1e5e8: 00707070 00000000 00000000 00000000 ppp............. ... 1e618: 00150000 00000000 00000000 00000000 ................ 1e628: 70000000 48484870 4848fdfd 00007048 ...ppHHH..HHHp.. ... 1e644: 70000000 703b4f70 00000000 00000000 ...ppO;p........ ... 1e678: cb4a4800 00000000 70700000 36707070 .HJ.......ppppp6 1e688: 7070701f 70707070 70707070 00007070 .ppppppppppppp.. 1e698: 00000000 70000000 00000000 00000000 .......p........ ... 1e6d0: 48700000 00000000 00000000 00000000 ..pH............ 1e6e0: 00000000 48484870 4848fdfd 00007048 ....pHHH..HHHp.. ... 1e700: 364f1f70 00000070 00000000 00000000 p.O6p........... ... 1e730: fd480000 00000048 00000000 70707070 ..H.H.......pppp 1e740: 70707070 70000070 70707070 00707070 ppppp..pppppppp. ... 1e79c: 48487070 48481515 00000070 00000000 ppHH..HHp....... ... 1e7b8: 4f4f7000 00000070 00000000 00000000 .pOOp........... ... 1e7e8: 48000000 00004848 00000000 70000000 ...HHH.........p 1e7f8: 70707070 00000070 70707000 00000070 ppppp....pppp... ... 1e854: 48487000 48481515 00000070 00000000 .pHH..HHp....... ... 1e870: 4f1f0000 0000001f 00000000 00000000 ...O............ ... 1e8a0: 70000000 70484848 00000000 00000000 ...pHHHp........ 1e8b0: 70000000 00000000 70000000 00000070 ...p.......pp... ... 1e90c: 48700000 48481515 00000070 00000000 ..pH..HHp....... ... 1e928: 36700000 00007036 00000000 00000000 ..p66p.......... ... 1e95c: 48484870 00000000 00000000 00000000 pHHH............ ... 1e9c4: 70000000 70481548 00000070 00000000 ...pH.Hpp....... ... 1e9e0: 70000000 00007036 00000000 00000000 ...p6p.......... ... 1ea0c: 2e000000 68732f2e 64657261 6968742f ...../shared/thi 1ea1c: 61706472 2f797472 6c67766c 6372732f rdparty/lvgl/src 1ea2c: 5f766c2f 65726f63 5f766c2f 75626564 /lv_core/lv_debu 1ea3c: 00632e67 645f766c 67756265 6568635f g.c.lv_debug_che 1ea4c: 735f6b63 203a7274 6f6e2061 53412d6e ck_str: a non-AS 1ea5c: 20494943 72616863 73616820 70657220 CII char has rep 1ea6c: 65746165 6f6d2064 74206572 206e6168 eated more than 1ea7c: 445f564c 47554245 5254535f 58414d5f LV_DEBUG_STR_MAX 1ea8c: 5045525f 20544145 656d6974 6c002973 _REPEAT times).l 1ea9c: 65645f76 5f677562 63656863 74735f6b v_debug_check_st 1eaac: 69203a72 6c61766e 63206469 20726168 r: invalid char 1eabc: 74206e69 73206568 6e697274 3c282067 in the string (< 1eacc: 20303120 756c6176 6c002965 65645f76 10 value).lv_de 1eadc: 5f677562 63656863 74735f6b 73203a72 bug_check_str: s 1eaec: 6e697274 73692067 6e6f6c20 20726567 tring is longer 1eafc: 6e616874 5f564c20 55424544 54535f47 than LV_DEBUG_ST 1eb0c: 414d5f52 454c5f58 4854474e R_MAX_LENGTH. 0001eb19 <__func__.2>: 1eb19: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 1eb29: tr. 0001eb2c : 1eb2c: 33323130 37363534 42413938 46454443 0123456789ABCDEF ... 0001eb3d <__func__.0>: 1eb3d: 645f766c 67756265 676f6c5f 7272655f lv_debug_log_err 1eb4d: 2e00726f 68732f2e 64657261 6968742f or.../shared/thi 1eb5d: 61706472 2f797472 6c67766c 6372732f rdparty/lvgl/src 1eb6d: 5f766c2f 65726f63 5f766c2f 70736964 /lv_core/lv_disp 1eb7d: 6c00632e 63735f76 63615f72 6e203a74 .c.lv_scr_act: n 1eb8d: 6964206f 616c7073 65722079 74736967 o display regist 1eb9d: 64657265 206f7420 20746567 20737469 ered to get its 1ebad: 2e746361 72637320 006e6565 6c5f766c act. screen.lv_l 1ebbd: 72657961 706f745f 6f6e203a 73696420 ayer_top: no dis 1ebcd: 79616c70 67657220 65747369 20646572 play registered 1ebdd: 67206f74 69207465 74207374 6c20706f to get its top l 1ebed: 72657961 5f766c00 6579616c 79735f72 ayer.lv_layer_sy 1ebfd: 6e203a73 6964206f 616c7073 65722079 s: no display re 1ec0d: 74736967 64657265 206f7420 20746567 gistered to get 1ec1d: 20737469 2e737973 79616c20 6c007265 its sys. layer.l 1ec2d: 69645f76 615f7073 67697373 63735f6e v_disp_assign_sc 1ec3d: 6e656572 7274203a 6f742079 73736120 reen: try to ass 1ec4d: 206e6769 6f6e2061 63732d6e 6e656572 ign a non-screen 1ec5d: 6a626f20 00746365 645f766c 5f707369 object.lv_disp_ 1ec6d: 5f746567 63616e69 65766974 6d69745f get_inactive_tim 1ec7d: 6e203a65 6964206f 616c7073 65722079 e: no display re 1ec8d: 74736967 64657265 5f766c00 70736964 gistered.lv_disp 1ec9d: 6972745f 63615f67 69766974 203a7974 _trig_activity: 1ecad: 64206f6e 6c707369 72207961 73696765 no display regis 1ecbd: 65726574 766c0064 7369645f 65675f70 tered.lv_disp_ge 1eccd: 65725f74 745f7266 3a6b7361 206f6e20 t_refr_task: no 1ecdd: 70736964 2079616c 69676572 72657473 display register 1eced: ed. 0001ecf0 <__func__.6>: 1ecf0: 645f766c 5f707369 5f746567 5f726373 lv_disp_get_scr_ 1ed00: 00746361 act. 0001ed04 <__func__.5>: 1ed04: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 1ed14: 6f745f72 r_top. 0001ed1a <__func__.4>: 1ed1a: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 1ed2a: 79735f72 r_sys. 0001ed30 <__func__.3>: 1ed30: 645f766c 5f707369 69737361 735f6e67 lv_disp_assign_s 1ed40: 65657263 creen. 0001ed46 <__func__.2>: 1ed46: 645f766c 5f707369 5f746567 63616e69 lv_disp_get_inac 1ed56: 65766974 6d69745f tive_time. 0001ed60 <__func__.1>: 1ed60: 645f766c 5f707369 67697274 7463615f lv_disp_trig_act 1ed70: 74697669 ivity. 0001ed76 <__func__.0>: 1ed76: 5f766c5f 70736964 7465675f 6665725f _lv_disp_get_ref 1ed86: 61745f72 2e006b73 68732f2e 64657261 r_task.../shared 1ed96: 6968742f 61706472 2f797472 6c67766c /thirdparty/lvgl 1eda6: 6372732f 5f766c2f 65726f63 5f766c2f /src/lv_core/lv_ 1edb6: 756f7267 00632e70 2074754f 6d20666f group.c.Out of m 1edc6: 726f6d65 766c0079 6f72675f 615f7075 emory.lv_group_a 1edd6: 6f5f6464 203a6a62 20656874 656a626f dd_obj: the obje 1ede6: 69207463 6c612073 64616572 64612079 ct is already ad 1edf6: 20646564 74206f74 20736968 756f7267 ded to this grou 1ee06: 766c0070 6f72675f 615f7075 6f5f6464 p.lv_group_add_o 1ee16: 203a6a62 69737361 6f206e67 63656a62 bj: assign objec 1ee26: 6f742074 206e6120 6568746f 72672072 t to an other gr 1ee36: 0070756f oup. 0001ee3a <__func__.1>: 1ee3a: 675f766c 70756f72 6572635f 00657461 lv_group_create. 0001ee4a <__func__.0>: 1ee4a: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 1ee5a: 2f2e2e00 72616873 742f6465 64726968 .../shared/third 1ee6a: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1ee7a: 6f635f76 6c2f6572 626f5f76 00632e6a v_core/lv_obj.c. 1ee8a: 695f766c 3a74696e 726c6120 79646165 lv_init: already 1ee9a: 696e6920 00646574 695f766c 2074696e inited.lv_init 1eeaa: 64616572 766c0079 6965645f 2074696e ready.lv_deinit 1eeba: 656e6f64 4c554e00 6f70204c 65746e69 done.NULL pointe 1eeca: 766c0072 7263735f 7465675f 7369645f r.lv_scr_get_dis 1eeda: 73203a70 65657263 6f6e206e 6f662074 p: screen not fo 1eeea: 00646e75 6f5f766c 735f6a62 625f7465 und.lv_obj_set_b 1eefa: 5f657361 3a726964 766e6920 64696c61 ase_dir: invalid 1ef0a: 73616220 69642065 766c0072 6a626f5f base dir.lv_obj 1ef1a: 656c635f 735f6e61 656c7974 73696c5f _clean_style_lis 1ef2a: 63203a74 74276e61 6e696620 74732064 t: can't find st 1ef3a: 20656c79 68746977 61706020 00607472 yle with `part`. 1ef4a: 6f5f766c 735f6a62 705f7465 203a736f lv_obj_set_pos: 1ef5a: 20746f6e 6e616863 676e6967 736f7020 not changing pos 1ef6a: 6f697469 666f206e 72637320 206e6565 ition of screen 1ef7a: 656a626f 6c007463 626f5f76 64615f6a object.lv_obj_ad 1ef8a: 74735f64 3a656c79 6e616320 66207427 d_style: can't f 1ef9a: 20646e69 6c797473 69772065 60206874 ind style with ` 1efaa: 65707974 766c0060 6a626f5f 6572635f type`.lv_obj_cre 1efba: 3a657461 746f6e20 73696420 79616c70 ate: not display 1efca: 65726320 64657461 206f7420 66206f73 created to so f 1efda: 202e7261 70206f4e 6563616c 206f7420 ar. No place to 1efea: 69737361 74206e67 6e206568 73207765 assign the new s 1effa: 65657263 624f006e 7463656a 65726320 creen.Object cre 1f00a: 20657461 64616572 61430079 2074276e ate ready.Can't 1f01a: 20746573 20656874 65726170 6f20746e set the parent o 1f02a: 20612066 65726373 43006e65 74276e61 f a screen.Can't 1f03a: 74657320 72617020 20746e65 4e203d3d set parent == N 1f04a: 204c4c55 61206f74 626f206e 7463656a ULL to an object 1f05a: 5f766c00 006a626f .lv_obj. 0001f062 <__func__.90>: 1f062: 695f766c 0074696e lv_init. 0001f06a <__func__.89>: 1f06a: 645f766c 696e6965 lv_deinit. 0001f074 <__func__.86>: 1f074: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async ... 0001f085 <__func__.69>: 1f085: 6f5f766c 735f6a62 615f7465 5f6f7475 lv_obj_set_auto_ 1f095: 6c616572 006e6769 realign. 0001f09d <__func__.68>: 1f09d: 6f5f766c 735f6a62 655f7465 635f7478 lv_obj_set_ext_c 1f0ad: 6b63696c 6572615f lick_area. 0001f0b7 <__func__.62>: 1f0b7: 6f5f766c 735f6a62 615f7465 685f7664 lv_obj_set_adv_h 1f0c7: 65747469 ittest. 0001f0ce <__func__.61>: 1f0ce: 6f5f766c 735f6a62 635f7465 6b63696c lv_obj_set_click ... 0001f0df <__func__.60>: 1f0df: 6f5f766c 735f6a62 745f7465 lv_obj_set_top. 0001f0ee <__func__.59>: 1f0ee: 6f5f766c 735f6a62 645f7465 00676172 lv_obj_set_drag. 0001f0fe <__func__.58>: 1f0fe: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 1f10e: 00726964 dir. 0001f112 <__func__.57>: 1f112: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 1f122: 6f726874 throw. 0001f128 <__func__.56>: 1f128: 6f5f766c 735f6a62 645f7465 5f676172 lv_obj_set_drag_ 1f138: 65726170 parent. 0001f13f <__func__.55>: 1f13f: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 1f14f: 76655f74 00746e65 t_event. 0001f157 <__func__.53>: 1f157: 6f5f766c 615f6a62 705f6464 65746f72 lv_obj_add_prote 1f167: ct. 0001f16a <__func__.52>: 1f16a: 6f5f766c 635f6a62 7261656c 6f72705f lv_obj_clear_pro 1f17a: 74636574 tect. 0001f17f <__func__.47>: 1f17f: 6f5f766c 735f6a62 655f7465 746e6576 lv_obj_set_event 1f18f: 0062635f _cb. 0001f193 <__func__.45>: 1f193: 655f766c 746e6576 6e65735f 75665f64 lv_event_send_fu 1f1a3: nc. 0001f1a6 <__func__.46>: 1f1a6: 655f766c 746e6576 6e65735f lv_event_send. 0001f1b4 <__func__.44>: 1f1b4: 6f5f766c 735f6a62 735f7465 616e6769 lv_obj_set_signa 1f1c4: 62635f6c l_cb. 0001f1c9 <__func__.43>: 1f1c9: 6f5f766c 735f6a62 645f7465 67697365 lv_obj_set_desig 1f1d9: 62635f6e n_cb. 0001f1de <__func__.42>: 1f1de: 6f5f766c 615f6a62 636f6c6c 5f657461 lv_obj_allocate_ 1f1ee: 5f747865 72747461 ext_attr. 0001f1f7 <__func__.41>: 1f1f7: 6f5f766c 725f6a62 65726665 655f6873 lv_obj_refresh_e 1f207: 645f7478 5f776172 00646170 xt_draw_pad. 0001f213 <__func__.38>: 1f213: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 1f223: t. 0001f225 <__func__.40>: 1f225: 6f5f766c 675f6a62 735f7465 65657263 lv_obj_get_scree 1f235: n. 0001f237 <__func__.39>: 1f237: 6f5f766c 675f6a62 645f7465 00707369 lv_obj_get_disp. 0001f247 <__func__.37>: 1f247: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child ... 0001f258 <__func__.54>: 1f258: 6f5f766c 735f6a62 625f7465 5f657361 lv_obj_set_base_ 1f268: 00726964 dir. 0001f26c <__func__.36>: 1f26c: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 1f27c: 6361625f _back. 0001f282 <__func__.35>: 1f282: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 1f292: 6572646c ldren. 0001f298 <__func__.34>: 1f298: 6f5f766c 635f6a62 746e756f 6968635f lv_obj_count_chi 1f2a8: 6572646c 65725f6e 73727563 00657669 ldren_recursive. 0001f2b8 <__func__.33>: 1f2b8: 6f5f766c 675f6a62 635f7465 64726f6f lv_obj_get_coord 1f2c8: s. 0001f2ca <__func__.31>: 1f2ca: 6f5f766c 675f6a62 785f7465 lv_obj_get_x. 0001f2d7 <__func__.30>: 1f2d7: 6f5f766c 675f6a62 795f7465 lv_obj_get_y. 0001f2e4 <__func__.29>: 1f2e4: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width ... 0001f2f5 <__func__.28>: 1f2f5: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 1f305: t. 0001f307 <__func__.25>: 1f307: 6f5f766c 675f6a62 615f7465 5f6f7475 lv_obj_get_auto_ 1f317: 6c616572 006e6769 realign. 0001f31f <__func__.24>: 1f31f: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f32f: 6b63696c 6461705f 66656c5f lick_pad_left. 0001f33d <__func__.23>: 1f33d: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f34d: 6b63696c 6461705f 6769725f lick_pad_right. 0001f35c <__func__.22>: 1f35c: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f36c: 6b63696c 6461705f 706f745f lick_pad_top. 0001f379 <__func__.21>: 1f379: 6f5f766c 675f6a62 655f7465 635f7478 lv_obj_get_ext_c 1f389: 6b63696c 6461705f 746f625f 006d6f74 lick_pad_bottom. 0001f399 <__func__.20>: 1f399: 6f5f766c 675f6a62 655f7465 645f7478 lv_obj_get_ext_d 1f3a9: 5f776172 00646170 raw_pad. 0001f3b1 <__func__.66>: 1f3b1: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 1f3c1: 6c5f656c 00747369 le_list. 0001f3c9 <__func__.19>: 1f3c9: 6f5f766c 675f6a62 6c5f7465 6c61636f lv_obj_get_local 1f3d9: 7974735f _style. 0001f3e0 <__func__.65>: 1f3e0: 6f5f766c 725f6a62 766f6d65 74735f65 lv_obj_remove_st 1f3f0: 5f656c79 61636f6c 72705f6c yle_local_prop. 0001f3ff <__func__.18>: 1f3ff: 6f5f766c 675f6a62 685f7465 65646469 lv_obj_get_hidde 1f40f: n. 0001f411 <__func__.83>: 1f411: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 1f421: 72615f65 e_area. 0001f428 <__func__.82>: 1f428: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 1f438: e. 0001f43a <__func__.80>: 1f43a: 6f5f766c 6d5f6a62 5f65766f 65726f66 lv_obj_move_fore 1f44a: 756f7267 ground. 0001f451 <__func__.79>: 1f451: 6f5f766c 6d5f6a62 5f65766f 6b636162 lv_obj_move_back 1f461: 756f7267 ground. 0001f468 <__func__.78>: 1f468: 6f5f766c 735f6a62 705f7465 lv_obj_set_pos. 0001f477 <__func__.77>: 1f477: 6f5f766c 735f6a62 785f7465 lv_obj_set_x. 0001f484 <__func__.76>: 1f484: 6f5f766c 735f6a62 795f7465 lv_obj_set_y. 0001f491 <__func__.72>: 1f491: 6f5f766c 615f6a62 6e67696c lv_obj_align. 0001f49e <__func__.71>: 1f49e: 6f5f766c 615f6a62 6e67696c 69726f5f lv_obj_align_ori 1f4ae: go. 0001f4b1 <__func__.70>: 1f4b1: 6f5f766c 725f6a62 696c6165 lv_obj_realign. 0001f4c0 <__func__.64>: 1f4c0: 6f5f766c 725f6a62 65726665 735f6873 lv_obj_refresh_s 1f4d0: 656c7974 tyle. 0001f4d5 <__func__.67>: 1f4d5: 6f5f766c 615f6a62 735f6464 656c7974 lv_obj_add_style ... 0001f4e6 <__func__.63>: 1f4e6: 6f5f766c 735f6a62 685f7465 65646469 lv_obj_set_hidde 1f4f6: n. 0001f4f8 <__func__.17>: 1f4f8: 6f5f766c 675f6a62 615f7465 685f7664 lv_obj_get_adv_h 1f508: 65747469 ittest. 0001f50f <__func__.16>: 1f50f: 6f5f766c 675f6a62 635f7465 6b63696c lv_obj_get_click ... 0001f520 <__func__.15>: 1f520: 6f5f766c 675f6a62 745f7465 lv_obj_get_top. 0001f52f <__func__.14>: 1f52f: 6f5f766c 675f6a62 645f7465 00676172 lv_obj_get_drag. 0001f53f <__func__.13>: 1f53f: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 1f54f: 00726964 dir. 0001f553 <__func__.12>: 1f553: 6f5f766c 675f6a62 645f7465 5f676172 lv_obj_get_drag_ 1f563: 6f726874 throw. 0001f569 <__func__.11>: 1f569: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 1f579: 76655f74 00746e65 t_event. 0001f581 <__func__.10>: 1f581: 6f5f766c 675f6a62 625f7465 5f657361 lv_obj_get_base_ 1f591: 00726964 dir. 0001f595 <__func__.88>: 1f595: 6f5f766c 635f6a62 74616572 lv_obj_create. 0001f5a3 <__func__.81>: 1f5a3: 6f5f766c 735f6a62 705f7465 6e657261 lv_obj_set_paren 1f5b3: t. 0001f5b5 <__func__.75>: 1f5b5: 6f5f766c 735f6a62 735f7465 00657a69 lv_obj_set_size. 0001f5c5 <__func__.74>: 1f5c5: 6f5f766c 735f6a62 775f7465 68746469 lv_obj_set_width ... 0001f5d6 <__func__.73>: 1f5d6: 6f5f766c 735f6a62 685f7465 68676965 lv_obj_set_heigh 1f5e6: t. 0001f5e8 <__func__.9>: 1f5e8: 6f5f766c 675f6a62 705f7465 65746f72 lv_obj_get_prote 1f5f8: ct. 0001f5fb <__func__.8>: 1f5fb: 6f5f766c 695f6a62 72705f73 6365746f lv_obj_is_protec 1f60b: 00646574 ted. 0001f60f <__func__.7>: 1f60f: 6f5f766c 675f6a62 735f7465 65746174 lv_obj_get_state ... 0001f620 <__func__.27>: 1f620: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 1f630: 7469665f _fit. 0001f635 <__func__.26>: 1f635: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 1f645: 69665f74 t_fit. 0001f64b <__func__.32>: 1f64b: 6f5f766c 675f6a62 695f7465 72656e6e lv_obj_get_inner 1f65b: 6f6f635f 00736472 _coords.... 0001f666 <__func__.51>: 1f666: 6f5f766c 735f6a62 735f7465 65746174 lv_obj_set_state ... 0001f677 <__func__.50>: 1f677: 6e617274 72635f73 65746165 trans_create. 0001f684 <__func__.49>: 1f684: 6f5f766c 615f6a62 735f6464 65746174 lv_obj_add_state ... 0001f695 <__func__.48>: 1f695: 6f5f766c 635f6a62 7261656c 6174735f lv_obj_clear_sta 1f6a5: te. 0001f6a8 <__func__.6>: 1f6a8: 6f5f766c 675f6a62 735f7465 616e6769 lv_obj_get_signa 1f6b8: 62635f6c l_cb. 0001f6bd <__func__.5>: 1f6bd: 6f5f766c 675f6a62 645f7465 67697365 lv_obj_get_desig 1f6cd: 62635f6e n_cb. 0001f6d2 <__func__.4>: 1f6d2: 6f5f766c 675f6a62 655f7465 746e6576 lv_obj_get_event 1f6e2: 0062635f _cb. 0001f6e6 <__func__.3>: 1f6e6: 6f5f766c 675f6a62 655f7465 615f7478 lv_obj_get_ext_a 1f6f6: 00727474 ttr. 0001f6fa <__func__.2>: 1f6fa: 6f5f766c 675f6a62 745f7465 00657079 lv_obj_get_type. 0001f70a <__func__.1>: 1f70a: 6f5f766c 675f6a62 675f7465 70756f72 lv_obj_get_group ... 0001f71b <__func__.87>: 1f71b: 6f5f766c 645f6a62 lv_obj_del. 0001f726 <__func__.85>: 1f726: 6f5f766c 645f6a62 615f6c65 636e7973 lv_obj_del_async 1f736: 0062635f _cb. 0001f73a <__func__.84>: 1f73a: 6f5f766c 635f6a62 6e61656c lv_obj_clean. 0001f747 <__func__.0>: 1f747: 6f5f766c 695f6a62 6f665f73 65737563 lv_obj_is_focuse 1f757: 2e2e0064 6168732f 2f646572 72696874 d.../shared/thir 1f767: 72617064 6c2f7974 2f6c6776 2f637273 dparty/lvgl/src/ 1f777: 635f766c 2f65726f 725f766c 2e726665 lv_core/lv_refr. 1f787: 61430063 2074276e 20746573 20424456 c.Can't set VDB 1f797: 67696568 75207468 676e6973 65687420 height using the 1f7a7: 756f7220 6620646e 74636e75 2e6e6f69 round function. 1f7b7: 72572820 20676e6f 6e756f72 62635f64 (Wrong round_cb 1f7c7: 20726f20 73206f74 6c6c616d 42445620 or to small VDB 1f7d7: ). 0001f7d9 <__func__.0>: 1f7d9: 725f766c 5f726665 61657261 2f2e2e00 lv_refr_area.../ 1f7e9: 72616873 742f6465 64726968 74726170 shared/thirdpart 1f7f9: 766c2f79 732f6c67 6c2f6372 6f635f76 y/lvgl/src/lv_co 1f809: 6c2f6572 74735f76 2e656c79 766c0063 re/lv_style.c.lv 1f819: 7974735f 6c5f656c 5f747369 6f6d6572 _style_list_remo 1f829: 735f6576 656c7974 6f63203a 6e646c75 ve_style: couldn 1f839: 72207427 6c6c6165 7461636f 6c632065 't reallocate cl 1f849: 20737361 7473696c 5f766c00 6c797473 ass list.lv_styl 1f859: 696c5f65 615f7473 735f6464 656c7974 e_list_add_style 1f869: 6f63203a 6e646c75 61207427 74206464 : couldn't add t 1f879: 63206568 7373616c 74656700 636f6c5f he class.get_loc 1f889: 735f6c61 656c7974 6f63203a 6e646c75 al_style: couldn 1f899: 63207427 74616572 6f6c2065 206c6163 't create local 1f8a9: 6c797473 766c0065 7974735f 6c5f656c style.lv_style_l 1f8b9: 5f747369 5f646461 6e617274 74735f73 ist_add_trans_st 1f8c9: 3a656c79 756f6320 276e646c 72632074 yle: couldn't cr 1f8d9: 65746165 61727420 7469736e 206e6f69 eate transition 1f8e9: 6c797473 style. 0001f8ef <__func__.5>: 1f8ef: 5f766c5f 6c797473 696c5f65 725f7473 _lv_style_list_r 1f8ff: 766f6d65 74735f65 00656c79 emove_style. 0001f90b <__func__.6>: 1f90b: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 1f91b: 735f6464 656c7974 dd_style. 0001f924 <__func__.7>: 1f924: 5f746567 6f6c6c61 6f6c5f63 5f6c6163 get_alloc_local_ 1f934: 6c797473 style. 0001f93a <__func__.4>: 1f93a: 5f766c5f 6c797473 65735f65 6e695f74 _lv_style_set_in 1f94a: t. 0001f94c <__func__.3>: 1f94c: 5f766c5f 6c797473 65735f65 6f635f74 _lv_style_set_co 1f95c: 00726f6c lor. 0001f960 <__func__.2>: 1f960: 5f766c5f 6c797473 65735f65 706f5f74 _lv_style_set_op 1f970: a. 0001f972 <__func__.1>: 1f972: 5f766c5f 6c797473 65735f65 74705f74 _lv_style_set_pt 1f982: r. 0001f984 <__func__.0>: 1f984: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 1f994: 745f6464 736e6172 7974735f 2e00656c dd_trans_style.. 1f9a4: 68732f2e 64657261 6968742f 61706472 ./shared/thirdpa 1f9b4: 2f797472 6c67766c 6372732f 5f766c2f rty/lvgl/src/lv_ 1f9c4: 77617264 5f766c2f 77617264 656c625f draw/lv_draw_ble 1f9d4: 632e646e 6c696600 6c625f6c 65646e65 nd.c.fill_blende 1f9e4: 75203a64 7075736e 74726f70 62206465 d: unsupported b 1f9f4: 646e656c 646f6d20 lend mode. 0001f9fe <__func__.1>: 1f9fe: 6c6c6966 656c625f 6465646e fill_blended. 0001fa0b <__func__.0>: 1fa0b: 5f70616d 6e656c62 00646564 732f2e2e map_blended.../s 1fa1b: 65726168 68742f64 70647269 79747261 hared/thirdparty 1fa2b: 67766c2f 72732f6c 766c2f63 6172645f /lvgl/src/lv_dra 1fa3b: 766c2f77 6172645f 6d695f77 00632e67 w/lv_draw_img.c. 1fa4b: 67616d49 72642065 203a7761 20637273 Image draw: src 1fa5b: 4e207369 004c4c55 640a6f4e 00617461 is NULL.No.data. 1fa6b: 67616d49 72642065 65207761 726f7272 Image draw error 1fa7b: 616d4900 64206567 20776172 276e6163 .Image draw can' 1fa8b: 65722074 74206461 6c206568 00656e69 t read the line. 1fa9b: ... 0001fa9e : 1fa9e: 01101810 01080402 ........... 0001faa9 <__func__.2>: 1faa9: 645f766c 5f776172 00676d69 lv_draw_img. 0001fab5 <__func__.1>: 1fab5: 695f766c 645f676d 5f776172 65726f63 lv_img_draw_core 1fac5: 2f2e2e00 72616873 742f6465 64726968 .../shared/third 1fad5: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1fae5: 72645f76 6c2f7761 72645f76 6c5f7761 v_draw/lv_draw_l 1faf5: 6c656261 6c00632e 72645f76 6c5f7761 abel.c.lv_draw_l 1fb05: 65747465 67203a72 6870796c 63736420 etter: glyph dsc 1fb15: 6f6e202e 6f662074 00646e75 645f766c . not found.lv_d 1fb25: 5f776172 7474656c 203a7265 72616863 raw_letter: char 1fb35: 65746361 20732772 6d746962 6e207061 acter's bitmap n 1fb45: 6620746f 646e756f 5f766c00 77617264 ot found.lv_draw 1fb55: 74656c5f 3a726574 766e6920 64696c61 _letter: invalid 1fb65: 70706220 746f6e20 756f6620 6c00646e bpp not found.l 1fb75: 72645f76 6c5f7761 65747465 69203a72 v_draw_letter: i 1fb85: 6c61766e 62206469 nvalid bpp. 0001fb90 <_lv_bpp1_opa_table>: 1fb90: .. 0001fb92 <_lv_bpp2_opa_table>: 1fb92: ffaa5500 .U.. 0001fb96 <_lv_bpp4_opa_table>: 1fb96: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........ 0001fba6 <_lv_bpp8_opa_table>: 1fba6: 03020100 07060504 0b0a0908 0f0e0d0c ................ 1fbb6: 13121110 17161514 1b1a1918 1f1e1d1c ................ 1fbc6: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./ 1fbd6: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>? 1fbe6: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO 1fbf6: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_ 1fc06: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno 1fc16: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~. 1fc26: 83828180 87868584 8b8a8988 8f8e8d8c ................ 1fc36: 93929190 97969594 9b9a9998 9f9e9d9c ................ 1fc46: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................ 1fc56: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................ 1fc66: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................ 1fc76: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................ 1fc86: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................ 1fc96: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................ 0001fca6 <__func__.5>: 1fca6: 645f766c 5f776172 7474656c lv_draw_letter. 0001fcb5 <__func__.4>: 1fcb5: 77617264 74656c5f 5f726574 70627573 draw_letter_subp 1fcc5: x. 0001fcc7 <__func__.3>: 1fcc7: 77617264 74656c5f 5f726574 6d726f6e draw_letter_norm 1fcd7: al. 0001fcda <_lv_bpp3_opa_table>: 1fcda: 6d492400 ffdbb692 .$Im.... 0001fce2 : 1fce2: 81808080 83828281 87868584 8d8c8a89 ................ 1fcf2: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................ 1fd02: 2f2e2eb5 72616873 742f6465 64726968 .../shared/third 1fd12: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1fd22: 72645f76 6c2f7761 72645f76 6d5f7761 v_draw/lv_draw_m 1fd32: 2e6b7361 766c0063 73616d5f 64615f6b ask.c.lv_mask_ad 1fd42: 6e203a64 6c70206f 20656361 61206f74 d: no place to a 1fd52: 74206464 6d206568 006b7361 dd the mask. 0001fd5e <__func__.1>: 1fd5e: 645f766c 5f776172 6b73616d 6464615f lv_draw_mask_add 1fd6e: 2f2e2e00 72616873 742f6465 64726968 .../shared/third 1fd7e: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 1fd8e: 72645f76 6c2f7761 72645f76 725f7761 v_draw/lv_draw_r 1fd9e: 2e746365 72640063 695f7761 203a676d ect.c.draw_img: 1fdae: 276e6163 65672074 6d692074 20656761 can't get image 1fdbe: 6f666e69 5f766c00 5f676d69 69736564 info.lv_img_desi 1fdce: 203a6e67 67616d69 6f732065 65637275 gn: image source 1fdde: 70797420 73692065 6b6e7520 6e776f6e type is unknown 1fdee: ffff0000 .... 0001fdf2 <__func__.0>: 1fdf2: 77617264 7461705f 6e726574 22110000 draw_pattern..." 1fe02: 66554433 aa998877 eeddccbb 3DUfw........ 0001fe0f <__func__.0>: 1fe0f: 695f766c 625f676d 735f6675 705f7465 lv_img_buf_set_p 1fe1f: 74656c61 2e006574 68732f2e 64657261 alette.../shared 1fe2f: 6968742f 61706472 2f797472 6c67766c /thirdparty/lvgl 1fe3f: 6372732f 5f766c2f 77617264 5f766c2f /src/lv_draw/lv_ 1fe4f: 5f676d69 68636163 00632e65 695f766c img_cache.c.lv_i 1fe5f: 635f676d 65686361 65706f5f 74203a6e mg_cache_open: t 1fe6f: 63206568 65686361 7a697320 73692065 he cache size is 1fe7f: 69003020 6567616d 61726420 63203a77 0.image draw: c 1fe8f: 65686361 73696d20 63202c73 65736f6c ache miss, close 1fe9f: 646e6120 75657220 61206573 6e65206e and reuse an en 1feaf: 00797274 67616d69 72642065 203a7761 try.image draw: 1febf: 68636163 696d2065 202c7373 68636163 cache miss, cach 1fecf: 74206465 6e61206f 706d6520 65207974 ed to an empty e 1fedf: 7972746e 616d4900 64206567 20776172 ntry.Image draw 1feef: 6e6e6163 6f20746f 206e6570 20656874 cannot open the 1feff: 67616d69 65722065 72756f73 image resource. 0001ff0e <__func__.1>: 1ff0e: 5f766c5f 5f676d69 68636163 706f5f65 _lv_img_cache_op 1ff1e: en. 0001ff21 <__func__.0>: 1ff21: 695f766c 635f676d 65686361 7465735f lv_img_cache_set 1ff31: 7a69735f 2e2e0065 6168732f 2f646572 _size.../shared/ 1ff41: 72696874 72617064 6c2f7974 2f6c6776 thirdparty/lvgl/ 1ff51: 2f637273 645f766c 2f776172 695f766c src/lv_draw/lv_i 1ff61: 645f676d 646f6365 632e7265 616d4900 mg_decoder.c.Ima 1ff71: 67206567 69207465 206f666e 20746567 ge get info get 1ff81: 64616572 6c696620 65682065 72656461 read file header 1ff91: 616d4900 67206567 69207465 206f666e .Image get info 1ffa1: 6e756f66 6e752064 776f6e6b 7273206e found unknown sr 1ffb1: 79742063 42006570 746c6975 206e692d c type.Built-in 1ffc1: 67616d69 65642065 65646f63 65732072 image decoder se 1ffd1: 66206b65 656c6961 75420064 2d746c69 ek failed.Built- 1ffe1: 69206e69 6567616d 63656420 7265646f in image decoder 1fff1: 61657220 61662064 64656c69 69754200 read failed.Bui 20001: 692d746c 6d69206e 20656761 6f636564 lt-in image deco 20011: 20726564 64616572 746f6e20 70757320 der read not sup 20021: 74726f70 68742073 6f632065 20726f6c ports the color 20031: 6d726f66 62007461 42006e69 746c6975 format.bin.Built 20041: 206e692d 67616d69 65642065 65646f63 -in image decode 20051: 61632072 2074276e 6e65706f 65687420 r can't open the 20061: 6c696620 6d690065 65645f67 65646f63 file.img_decode 20071: 75625f72 5f746c69 6f5f6e69 3a6e6570 r_built_in_open: 20081: 74756f20 20666f20 6f6d656d 49007972 out of memory.I 20091: 6567616d 63656420 7265646f 65706f20 mage decoder ope 200a1: 75203a6e 6f6e6b6e 63206e77 726f6c6f n: unknown color 200b1: 726f6620 0074616d 695f766c 645f676d format.lv_img_d 200c1: 646f6365 695f7265 3a74696e 74756f20 ecoder_init: out 200d1: 20666f20 6f6d656d of memory. 000200dc <__func__.3>: 200dc: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 200ec: 746c6975 5f6e695f 6f666e69 uilt_in_info. 000200f9 <__func__.0>: 200f9: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 20109: 746c6975 5f6e695f 656e696c 7572745f uilt_in_line_tru 20119: 6f635f65 00726f6c 33221100 77665544 e_color..."3DUfw 20129: bbaa9988 ffeeddcc ........ 00020131 <__func__.1>: 20131: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 20141: 746c6975 5f6e695f 64616572 6e696c5f uilt_in_read_lin 20151: e. 00020153 <__func__.2>: 20153: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 20163: 746c6975 5f6e695f 6e65706f uilt_in_open. 00020170 <__func__.4>: 20170: 695f766c 645f676d 646f6365 635f7265 lv_img_decoder_c 20180: 74616572 reate. 00020186 <__func__.5>: 20186: 5f766c5f 5f676d69 6f636564 5f726564 _lv_img_decoder_ 20196: 74696e69 2f2e2e00 72616873 742f6465 init.../shared/t 201a6: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 201b6: 6c2f6372 6f665f76 6c2f746e 6f665f76 rc/lv_font/lv_fo 201c6: 665f746e 745f746d 632e7478 nt_fmt_txt.c. 000201d3 : 201d3: 06040200 0f0d0b09 ........ 000201db <__func__.0>: 201db: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm 201eb: 665f7061 745f746d 00007478 ap_fmt_txt... 000201f8 : 201f8: 00020208 00020e50 00020db5 0000313d ....P.......=1.. 00020208 : 20208: 00000100 00000000 00000100 00000003 ................ 20218: 00000200 00000000 00000000 00000000 ................ 20228: 00010000 00000000 00000000 00000000 ................ 20238: 000c0100 0000fa07 f1f20000 04060c02 ................ 20248: 010d02f6 0008030b 00000000 00000000 ................ 20258: 020f0000 000000fe 00000000 00000000 ................ 20268: f8000500 00000000 0504fb00 00fd0000 ................ 20278: fd0003fe fbfffd00 00000000 fd0000fd ................ 20288: fd0000fc 0000fb00 00000000 fd000000 ................ 20298: 00fc00fd 00e100f9 0500fb00 fb000008 ................ 202a8: 05080303 000005fc 000000f1 00000000 ................ 202b8: 00000000 000000f7 00000000 00000000 ................ 202c8: f9000000 f600f3fd 000000fe 000a0100 ................ 202d8: 01fffef8 0000fc00 0000edfe 00000000 ................ 202e8: 00000000 0afeec00 00000000 00000000 ................ 202f8: 00000000 000000f6 00000000 08000000 ................ 20308: 00000300 000000fb 00000000 00000000 ................ 20318: 00000000 020a0000 00000001 00000000 ................ ... 20348: 000000f7 00000000 00000000 00000000 ................ 20358: 00000000 02000000 fd080305 fd050000 ................ 20368: 0702ddf8 00fd0105 00080009 00e80008 ................ 20378: 080008fd 000305fd 00fd0100 0014fc00 ................ 20388: 00080014 0804030b f7000000 00000000 ................ 20398: 0200fe01 02fbfdfb 0000fd00 0000f600 ................ ... 203b0: 0000ef00 00000000 00000000 00000000 ................ 203c0: 00f20100 000000f0 1900fe00 0303fdfd ................ 203d0: 03fd00fe 00f20000 00000000 00000000 ................ 203e0: 00e70000 00000003 00000000 00000000 ................ 203f0: 0f00f000 00f70000 e7ef0008 0008fbef ................ 20400: 0300ef00 00fc00fa 00000000 00000000 ................ 20410: 07000000 0000e108 00000000 00000000 ................ 20420: 000c0000 00000002 02020000 ff00fbfd ................ 20430: 0000fdff 000000fe 00fe00fb fa00fbfa ................ 20440: 00fbf8f8 00fb00fb fe000000 00030000 ................ 20450: 0100fd02 03000000 000000fe ff0303fe ................ 20460: fb000000 0000ff00 01000000 00fe0300 ................ 20470: 00fc00fd 0800fe00 00fd0000 00000000 ................ 20480: fefe01ff 00fd0000 000000fd 00000000 ................ 20490: ffff0000 00fdfd00 00000000 fe000001 ................ 204a0: fdfdfd00 00000000 00000000 0000fe00 ................ 204b0: fdfe0000 f800fc00 0005f8fe 0503fb00 ................ 204c0: fffa0007 f4ff00fd f202fe03 01000003 ................ 204d0: fef200f3 f300feea 00070500 00000003 ................ 204e0: fb000100 00f800fd 00fd0000 00fd0000 ................ 204f0: 00000000 ff00ffff 000000fd 00000000 ................ 20500: fe00fdfd 0000fefd 000000fd 00000000 ................ 20510: 00000000 fd00fefe fb00fe00 fd000003 ................ 20520: 00030301 00000000 0000fe00 02000000 ................ 20530: 00fd0000 00fdfefd 00000000 00020000 ................ 20540: 000000fe 00fcfd00 fe0800fb 0000f801 ................ 20550: f5f3f307 fe0003fb fb00fbef fb04fb00 ................ 20560: 00f900f0 02ff0100 000300fe f300f6f8 ................ 20570: f8fafbfa fbfff9fd 010002f9 0000fd00 ................ 20580: 03000200 00000000 00000000 fd000000 ................ 20590: ff00ff00 fafc00fd f800fffa 00000000 ................ 205a0: 00fe0000 01000000 000000fe 00000003 ................ 205b0: 00000000 00000c00 00000000 00000002 ................ 205c0: 000000fd 00000000 00000000 000300fb ................ ... 205dc: 000000fe 000000fb 00f8f300 f3fc0000 ................ 205ec: 03fd0000 0000f900 00000000 00000000 ................ 205fc: fb0000fc 00000000 00000000 00000000 ................ 2060c: 00fb0003 03000000 fbfb0200 fdfdfd00 ................ 2061c: 00000000 00f80000 fdfc00fd f8fafa00 ................ 2062c: 00fb00fe 000000f8 00001400 fd000001 ................ 2063c: f5000300 00000000 08fbe800 00f5fe08 ................ 2064c: f300fc03 ee03fdff 040003fd f8f7fcf7 ................ 2065c: f10000f5 00000f00 000000ff f9fdffff ................ 2066c: 00e8fff8 00000000 00000000 00000001 ................ ... 20688: ff00fd00 0000fcfd 00fd00fb 00000000 ................ ... 206a0: 00ff0000 050000fb fa0003ff f9fffe03 ................ 206b0: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................ 206c0: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................ 206d0: 00000003 00000000 0003fb00 fdfe00fc ................ 206e0: fefefef8 fffdfeff 00000000 fefefd00 ................ 206f0: 00000000 fe00fe03 fe000000 fdfefefd ................ 20700: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................ 20710: 03fcf400 fe0002fc fc00f8fe fc000001 ................ 20720: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................ 20730: 0008fcfb 00000000 00000000 00000003 ................ ... 20754: 000000fc 00000000 00000000 00000000 ................ ... 20780: 000000fe 00000000 00000000 00000000 ................ ... 2079c: fdfe0000 00000000 00000000 00000000 ................ 207ac: fd0000fc fdfd0000 00000000 000000fd ................ 207bc: 0000ff00 fe000000 00000000 00fb00fc ................ 207cc: 00f80000 0105fa02 0000f4fe f600fdfa ................ 207dc: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................ 207ec: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................ 207fc: feee0000 f7fa0608 00f80100 05fdfef3 ................ 2080c: 0001fde8 f3fdef00 0000edfd 010f00ee ................ 2081c: 0000fe00 feff0000 ef00fef6 00000000 ................ 2082c: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................ 2083c: f4000000 fef8f8fd fcfdfafc f8fefb00 ................ 2084c: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................ 2085c: 03000000 0afb0200 fdfdfd00 00000000 ................ 2086c: 00f80000 fdfc00fd f8fafa00 02fb00fe ................ 2087c: 0000000a 00001400 fd000001 00000300 ................ 2088c: 00000000 00ff0000 00000000 0000fbfe ................ 2089c: ff000000 fd000000 fb0000fd fb0000fd ................ 208ac: 00ff0400 00000000 00000100 05040000 ................ 208bc: f800fe02 f80800fc 0afbfbf8 feea0305 ................ 208cc: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................ 208dc: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................ 208ec: 00fc0003 080200f9 faf6f7fa ed010008 ................ 208fc: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................ 2090c: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................ 2091c: fd000007 00fefb00 0400fbfd 000003f8 ................ 2092c: fafd00f2 faf8fefc f800faf8 f8fbfafd ................ 2093c: 010000fd f800fc0c fbfd00fd f6f9f9fa ................ 2094c: 0005fbfd fdf300fc f7f80502 fd08f8fb ................ 2095c: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................ 2096c: 080000ff 00effe07 f606faf1 f5f7fbef ................ 2097c: 0005f8f3 fd000000 fd030000 05fb0205 ................ 2098c: fff80000 0100ff00 0000fe01 00000000 ................ 2099c: 000000fd 01080200 0000fd00 fefe0000 ................ 209ac: 000000fd 00000201 00020000 000a00fe ................ 209bc: fd010105 00000500 00000200 00000000 ................ 209cc: 00000000 07000800 00000000 00000000 ................ 209dc: 00000000 00f10000 080004fd 03190000 ................ 209ec: 0303fbfb 00f301fe 00f10c00 00000000 ................ 209fc: 00000000 0aef0000 00000024 00000000 ........$....... 20a0c: 00000000 0000f100 00000000 00000000 ................ ... 20a2c: fb0000fc 000000fe 00000000 00000000 ................ ... 20a44: 00f900fe 00000100 fefb2103 03f90708 .........!...... 20a54: 03030000 000000fd 00000000 00000000 ................ 20a64: 000007df 00000000 00000000 00000000 ................ 20a74: f9000000 f9000000 00000000 0000fffa ................ 20a84: fd00fa00 0000f400 00000000 00000000 ................ 20a94: 0000ef00 00010000 00000000 0000fd00 ................ 20aa4: 00fc00fb 000000f9 00fd03fc fafdf900 ................ 20ab4: 00f90000 00f400fd eb0000fd f7fdf6fb ................ 20ac4: 00ef0000 0000fff9 00000000 fbfc0000 ................ 20ad4: 0000fcfe 00fa0000 05fd03fa fefafe00 ................ 20ae4: fd00fbfc f902feff 000000ff 00fcfee9 ................ 20af4: f4fe00fa fe0000fe 000000fe fe000200 ................ 20b04: 0004fefc 00000000 00000000 00000000 ................ ... 20b30: 00030000 00000000 fe00fa00 fb000000 ................ 20b40: 00000003 00fbfdf9 fd00f900 0000f400 ................ 20b50: 00e70000 00f3f7fb fe00ef00 000000fc ................ 20b60: 00000000 fffcfd00 000001fc 0800fd04 ................ 20b70: f8fdfd0d 06040d03 030b03f9 00070607 ................ ... 20b88: 0c100000 fe00fdfb 00140b14 00030000 ................ 20b98: 00000900 000000fc 00000000 00fe0000 ................ 20ba8: 00000000 04000000 00000000 f6fefdea ................ 20bb8: ef0000f3 00000000 00000000 00000000 ................ 20bc8: 00000000 0000fc00 00000000 fe000000 ................ ... 20be0: 00000004 fefdea00 0000f3f6 000000f6 ................ ... 20c00: 000000fe fd0003fa f8030502 03feff00 ................ 20c10: 00000200 00fa0000 00fbfefe 1000f6fe ................ 20c20: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................ ... 20c38: 0000fe00 00000000 00040000 ea000000 ................ 20c48: f3f6fefd 00ef0000 00000000 00000d00 ................ ... 20c60: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................ 20c70: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................ 20c80: fefefdfd fe00fefd 040004ff 000800fe ................ ... 20c98: fe000000 0000fdfd 00ff00f9 000000fc ................ ... 20cb0: 000000f1 00000000 00000000 fd00fdfd ................ 20cc0: 00000000 fc0000fe fc0003fd f900fefb ................ 20cd0: fdfefafe 0000fc00 00000000 00000000 ................ 20ce0: 0800ef00 00fb0000 fd000000 0000fd00 ................ 20cf0: fe0000ff 0000fa00 f8f8fd0b ff030302 ................ 20d00: 020402f9 fe080208 f60000f9 f9f80000 ................ 20d10: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................ 20d20: 000009fd 00fb00fe 00fa0300 0002fd03 ................ 20d30: fe00f800 03fd00ff 000000fe 00fafdf6 ................ 20d40: f40000f8 00fd0900 000200fb f8fd00fd ................ 20d50: 0003fd00 fe000000 fd030000 fd000001 ................ 20d60: 00fd00fe 00000000 00000000 00000000 ................ 20d70: 00000000 000600f0 0000fe00 00010000 ................ 20d80: 0000fdfd 06000500 00000000 01f1f000 ................ 20d90: f604080b 09000b02 00000500 00000000 ................ 20da0: 00000000 00000e00 00000000 00000000 ................ 20db0: 00000000 ..... 00020db5 : 20db5: 02010000 05040300 08070602 0a090a09 ................ 20dc5: 0e0d0c0b 0c11100f 15141312 00000015 ................ 20dd5: 19181716 19191917 1a191917 19191919 ................ 20de5: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#. 20df5: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&** 20e05: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#. 20e15: 00000931 00000000 00000000 00000000 1............... ... 00020e50 : 20e50: 02010000 05040300 08070602 0a090a09 ................ 20e60: 0d000c0b 11100f0e 140c1312 00000014 ................ 20e70: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. .. 20e80: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+. 20e90: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450-- 20ea0: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)... 20eb0: 0000093d 00000000 00000000 00000000 =............... ... 00020eec : 20eec: 00000020 0001005f 00000000 00000000 ..._........... 20efc: 00000000 000000b0 0060f7f3 00020f14 ..........`..... 20f0c: 00000000 0002003b ....;... 00020f14 : 20f14: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a. 20f24: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x. 20f34: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................ 20f44: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................ 20f54: efc9efc8 efe3efcb f014efe5 f017f015 ................ 20f64: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;... 20f74: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T. 20f84: f712f4aa 0000f7f2 ........ 00020f8c : ... 20f94: 04500000 00000000 04500000 00010c03 ..P.......P..... 20fa4: 06400012 07010505 0b40001f 00000c0b ..@.......@..... 20fb4: 09f00061 fe00100a 0d8000b1 00000c0d a............... 20fc4: 0b0000ff ff000d0b 03600147 07010502 ........G.`..... 20fd4: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p..... 20fe4: 06600188 05000707 095001a1 02010808 ..`.......P..... 20ff4: 03a001c1 fe000503 062001c9 03000306 .......... ..... 21004: 03a001d2 00000303 05a001d7 feff1008 ................ 21014: 0ab00217 00000c0a 05f00253 00000c05 ........S....... 21024: 09300271 00000c09 092002a7 00000c09 q.0....... ..... 21034: 0ab002dd 00000c0b 0930031f 00000c09 ..........0..... 21044: 09e00355 00000c0a 09900391 00000c09 U............... 21054: 0a5003c7 00000c0a 09e00403 00000c0a ..P............. 21064: 03a0043f 00000903 03a0044d fd000c03 ?.......M....... 21074: 0950045f 02010808 0950047f 03010608 _.P.......P..... 21084: 09500497 02010808 093004b7 00000c09 ..P.......0..... 21094: 109004ed fd000f10 0bb00565 00ff0c0d ........e....... 210a4: 0c2005b3 00010c0b 0b9005f5 00000c0b .. ............. 210b4: 0d300637 00010c0c 0ac0067f 00010c09 7.0............. 210c4: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`..... 210d4: 0d000733 00010c0b 04f00775 00010c03 3.......u....... 210e4: 08300787 00ff0c08 0b8007b7 00010c0b ..0............. 210f4: 098007f9 00010c09 0f40082f 00010c0d ......../.@..... 21104: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p..... 21114: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p..... 21124: 0ba009b2 00010c0a 09f009ee 00000c0a ................ 21134: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f....... 21144: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`............. 21154: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`..... 21164: 0a800bec 00000c0b 05500c2e fd010f05 ..........P..... 21174: 05a00c54 feff1008 05500c94 fd000f04 T.........P..... 21184: 09500cb2 02010708 08000cce fe000208 ..P............. 21194: 09a00cd6 0a010205 09900cdb 00000909 ................ 211a4: 0af00d04 00010c0a 09200d40 00000909 ........@. ..... 211b4: 0af00d69 00000c0a 09d00da5 0000090a i............... 211c4: 05a00dd2 00000c07 0b100dfc fd000c0a ................ 211d4: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p..... 211e4: 04900e80 fdfe0f06 09e00ead 00010c09 ................ 211f4: 04700ee3 00010c02 10f00eef 0001090f ..p............. 21204: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0..... 21214: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................ 21224: 06901001 00010906 0800101c 00000908 ................ 21234: 06a01040 00000b07 0ad01067 00010909 @.......g....... 21244: 08f01090 00ff090a 0e6010bd 0000090f ..........`..... 21254: 08d01101 00000909 08f0112a fdff0c0a ........*....... 21264: 08501166 00000908 05a0118a fd000f06 f.P............. 21274: 04d011b7 fd010f03 05a011ce fd000f05 ................ 21284: 095011f4 04000509 06b0120b 06000606 ..P............. 21294: 0500121d 03010403 10001223 fe001110 ........#....... 212a4: 100012ab 00000c10 1000130b ff000e10 ................ 212b4: 1000137b 00000c10 0b0013db 00000c0b {............... 212c4: 1000141d fe001010 1000149d fe001010 ................ 212d4: 1200151d ff000e12 1000159b fe001010 ................ 212e4: 1200161b 00000c12 10001687 fe001010 ................ 212f4: 08001707 ff000e08 0c00173f ff000e0c ........?....... 21304: 12001793 fe001012 10001823 00000c10 ........#....... 21314: 0e001883 fe02100a 0e0018d3 fd00120e ................ 21324: 0e001951 ff000f0e 0e0019ba ff000e0e Q............... 21334: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l....... 21344: 0a001adc ff000e0a 0a001b22 ff000e0a ........"....... 21354: 0e001b68 ff000e0e 0e001bca 0400040e h............... 21364: 12001be6 00000c12 14001c52 fe001014 ........R....... 21374: 12001cf2 feff1014 10001d92 fe001010 ................ 21384: 0e001e12 01000a0e 0e001e58 01000a0e ........X....... 21394: 14001e9e ff000e14 10001f2a 00000c10 ........*....... 213a4: 10001f8a fe001010 1000200a feff1111 ......... ...... 213b4: 0e00209b ff000e0f 0e002104 fe00100e . .......!...... 213c4: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!...... 213d4: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."...... 213e4: 12002316 00000c12 10002382 fdff1212 .#.......#...... 213f4: 0c002424 fe00100c 14002484 ff000f14 $$.......$...... 21404: 1400251a 01000a14 1400257e 01000a14 .%......~%...... 21414: 140025e2 01000a14 14002646 01000a14 .%......F&...... 21424: 140026aa 01000a14 1400270e ff000e15 .&.......'...... 21434: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(...... 21444: 10002871 fdff1111 14002902 00000c14 q(.......)...... 21454: 0c00297a fe00100c 102029da 01000b11 z).......) ..... 00021464 : 21464: aff00bbf 089ee00a c0078cd0 bf100000 ................ 21474: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r... 21484: e003c005 007a0000 0900005c 01a00780 ......z.\....... 21494: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0..... 214a4: 0e100f00 f0020030 9f00f200 ffffffff ....0........... 214b4: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p.. 214c4: 79000000 00000000 00000079 20e9ff5c ...y....y...\.. 214d4: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y... 214e4: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@.. 214f4: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../.. 21504: ae03a0af 0000d7ff 00007900 00790000 .........y....y. 21514: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L. 21524: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P 21534: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<... 21544: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... < 21554: 0b003d00 09e20070 00d00680 00a0dd04 .=..p........... 21564: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}.. 21574: a01cc00c ae3f0000 010000c1 0000c0df ......?......... 21584: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@... 21594: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0 215a4: 000000a5 f5000000 72e4e4f5 f205da00 ...........r.... 215b4: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._ 215c4: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0.... 215d4: e900f601 ad00bc00 ad00ae00 e900bc00 ................ 215e4: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+ 215f4: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........ 21604: 10050000 500f0000 500f0000 511f0100 .......P...P...Q 21614: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P 21624: fd520900 0fc5a00b 10110100 04f3ff1f ..R............. 21634: 12034044 00901efc 00f10500 00b00a00 D@.............. 21644: 00600f00 00105f00 0000ab00 0000f600 ..`.._.......... 21654: 0000f105 0000b00a 0000600f 0000104f .........`..O... 21664: 000000ac 040000f6 0a0000f1 0e0000c0 ................ 21674: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............ 21684: 00f50770 c00df20a 1ff80100 dc000080 p............... 21694: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`......... 216a4: f80100c0 0a00f507 a8cf00f2 080070cf .............p.. 216b4: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0 216c4: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0. 216d4: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(..... 216e4: 00f20700 00af0000 804f0000 c03f0000 ..........O...?. 216f4: c13e0000 c12e0000 d12e0000 f82e0000 ..>............. 21704: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww.. 21714: e10c0000 f3090000 f6050000 df000000 ................ 21724: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d 21734: f3080040 fb8cc9bf d7ff7c00 01000000 @........|...... 21744: 000000eb 0010be00 506f0000 2f000000 ..........oP.../ 21754: 00000090 0000d00c 01f30800 f80300d5 ................ 21764: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U 21774: 52f95655 2f000000 00000060 0500f602 UV.R.../`....... 21784: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........ 21794: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. . 217a4: 00f80400 920f0000 f6050050 fd8ad98f ........P....... 217b4: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p. 217c4: 000000f8 0000d00c 00801f00 682f0000 ............../h 217d4: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../....... 217e4: f109f602 01f30600 b09f86de d8ef1900 ................ 217f4: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU. 21804: 00e00b00 00f80200 109f0000 b00f0000 ................ 21814: f4060000 dd000000 3f000000 0a000070 ...........?p... 21824: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v. 21834: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^. 21844: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O 21854: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l 21864: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P. 21874: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0....... 21884: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1....... 21894: 9f000000 8da70930 df0700f7 1e0040eb ....0........@.. 218a4: 1003fc92 00000000 1efc1203 fc921e90 ................ 218b4: 00001003 01000000 a8d01fe9 00a0300e .............0.. 218c4: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}.......... 218d4: 17000081 0000b4df 00d2af04 ef820100 ................ 218e4: 45f3ffff 00515555 01000000 ef101111 ...EUUQ......... 218f4: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........ 21904: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... . 21914: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w.. 21924: cf000027 09000000 010000f0 010000ea '............... 21934: 000010dd 000010ce 0000603f 00003001 ........?`...0.. 21944: 00000100 00f50600 405f0000 17000000 .........._@.... 21954: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@ 21964: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I.... 21974: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@.... 21984: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\... 21994: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@.... 219a4: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@ 219b4: 00000000 fb060000 00752353 17000000 ........S#u..... 219c4: 00a3fdce 02000000 000000fd f49f0000 ................ 219d4: 00000000 00b09e0f f2060000 0000207f ............. .. 219e4: f801dc00 4f000000 00e00b60 00f00b00 .......O`....... 219f4: 0100604f ed1111fa ff8f0000 00f3ffff O`.............. 21a04: 4444c40e f406a04f af000000 0000cd10 ..DDO........... 21a14: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@ 21a24: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:... 21a34: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._ 21a44: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj.. 21a54: d7ffffff 8d020000 0400b4fe f99db8ff ................ 21a64: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........ 21a74: 0000f602 602f0000 00000000 000000fa ....../`........ 21a84: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._.. 21a94: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w 21aa4: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._ 21ab4: 06000040 00405ff4 5ff60300 03000040 @...._@...._@... 21ac4: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@. 21ad4: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._ 21ae4: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@...... 21af4: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD.. 21b04: 5f000000 05000040 000000f4 7777975f ..._@......._.ww 21b14: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@ 21b24: f4050000 5f000000 05000040 102222f5 ......._@...."". 21b34: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@..... 21b44: 405f0000 f4050000 00000000 b5fe8d01 .._@............ 21b54: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`... 21b64: 0f000000 000000a0 00602f00 2f000000 ........./`..../ 21b74: 09000060 00a00ff0 0bf00900 090000f2 `............... 21b84: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O....... 21b94: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@ 21ba4: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U. 21bb4: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._ 21bc4: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU 21bd4: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E 21be4: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww.. 21bf4: 00fa0000 00fa0000 00fa0000 00fa0000 ................ 21c04: 00fa0000 00fa0000 07f90000 0df60320 ............ ... 21c14: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@....... 21c24: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@. 21c34: f4050030 0000909f 40efcf5f 91ff0500 0......._..@.... 21c44: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@ 21c54: 05f50900 0c0000f4 00405ff2 00f40500 ........._@..... 21c64: 405f0000 f4050000 5f000000 05000040 .._@......._@... 21c74: 000000f4 0000405f 0000f405 00405f00 ...._@......._@. 21c84: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._ 21c94: 00000040 00fc951e f9080000 0000f55f @..........._... 21ca4: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_. 21cb4: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........ 21cc4: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._... 21cd4: 7100305f f3950f00 00000000 00505ff9 _0.q........._P. 21ce4: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU.. 21cf4: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@ 21d04: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U. 21d14: f5df0000 0200405f 00f455ff 00f50600 ...._@...U...... 21d24: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. . 21d34: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r 21d44: 000000f6 602ff900 0f000000 0000fa90 ....../`........ 21d54: 0bf70300 000000f2 d22f20af 908f0000 ......... /..... 21d64: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._.. 21d74: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@.. 21d84: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n. 21d94: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._ 21da4: 00000040 0000405f 8d010000 0000b5fe @..._@.......... 21db4: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ...... 21dc4: af000000 00a00f20 703f0000 0000602f .... .....?p/`.. 21dd4: 2f900f00 00000060 901f900f 2f000000 .../`........../ 21de4: 00f10b70 20af0000 0010fc03 0000f907 p...... ........ 21df4: df78fa6f 030000b0 00c5ffae 00000000 o.x............. 21e04: b015d43e 02000000 0080ffbf 01000000 >............... 21e14: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@.. 21e24: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@... 21e34: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._ 21e44: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\ 21e54: 0720d9ef 90af87fc 0100c00e 00800f10 .. ............. 21e64: f50d0000 03000000 0050eaef feae0500 ..........P..... 21e74: 00000040 0000f14e 08f30500 f2080000 @...N........... 21e84: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g 21e94: 7277fb78 00f70100 f7010000 01000000 x.wr............ 21ea4: 000000f7 0000f701 00f70100 f7010000 ................ 21eb4: 01000000 000000f7 0000f701 00f70100 ................ 21ec4: f7010000 306f0000 168f0000 080000f3 ......o0........ 21ed4: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0.. 21ee4: 00f3168f 6ff10800 8f000030 0000f405 .......o0....... 21ef4: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._.... 21f04: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o 21f14: 0c000050 00fb00c0 00f60300 0000f209 P............... 21f24: 2f0000ae 901f0080 00ce0000 0000f207 .../............ 21f34: db00f605 0e000000 00504fc0 3b8f0000 .........OP....; 21f44: 000000e0 00f8fb02 0b000000 000010ff ................ 21f54: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........ 21f64: ff020090 f0070040 0700e00b 0c0090fe ....@........... 21f74: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T. 21f84: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ . 21f94: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&.... 21fa4: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{........... 21fb4: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ... 21fc4: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0... 21fd4: 0300802f 00d00cfa f3fb0700 0c000000 /............... 21fe4: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o 21ff4: 0020af60 ed01b02f 00f10c00 f607f804 `. ./........... 22004: f3090000 0000e00c f703f207 901f0000 ................ 22014: 0010af00 1f00109e 00f602a0 0bf30800 ................ 22024: 000000d0 00404fec fb5f0000 00000000 .....O@..._..... 22034: 0000f20c f0090000 00000000 0000f009 ................ 22044: f0090000 00000000 0000f009 ffffff3f ............?... 22054: 777701fd 0090bf77 c01e0000 0c000000 ..www........... 22064: 000000f2 0000f508 00f90400 ec010000 ................ 22074: 00000000 000020cf 00508f00 904f0000 ..... ....P...O. 22084: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_. 22094: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0. 220a4: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0.. 220b4: 00ff5f50 0000007e 0000401f 0000900c P_..~....@...... 220c4: 0000e007 0000f402 0000c900 00007e00 .............~.. 220d4: 00402f00 00900c00 00e00700 00f30200 ./@............. 220e4: 00d90000 007e0000 302f0000 900d0000 ......~.../0.... 220f4: e0070000 ea35fabf ea00ea00 ea00ea00 ......5......... 22104: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5. 22114: 2f00fabf 9d000080 f30000e0 d00600d5 .../............ 22124: 600c007b 103f201f 009a800b ffffe004 {..`. ?......... 22134: 1111ffff f6071111 01e70300 0080fd9e ................ 22144: 90af87ce af000002 06000000 ffbe02f2 ................ 22154: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B... 22164: 206ffbbf 0000008f 00008f00 008f0000 ..o ............ 22174: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0... 22184: 208fc01e 8ff10700 f3050000 0700208f ... ......... .. 22194: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+... 221a4: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........ 221b4: 304f0000 f6030000 0d000000 100600d0 ..O0............ 221c4: f47cd74f c4ef3a00 00000000 0000f701 O.|..:.......... 221d4: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;...... 221e4: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0.. 221f4: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e.. 22204: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. . 22214: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r 22224: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:. 22234: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p....... 22244: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0... 22254: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;.. 22264: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`... 22274: 0000404f 00603ff9 d00ef901 04f90900 O@...?`......... 22284: f8cf87fd b3ff3b00 000000f7 e909f405 .....;.......... 22294: 01b0af77 00d8ff7c 0000008f 0000f008 w...|........... 222a4: 00008f00 bff20800 fb8f10ea f808fd89 ................ 222b4: 8ff40600 781f0010 f80000f0 0f00008f .......x........ 222c4: 0000f088 00008ff8 00f0880f 1a9ef800 ................ 222d4: f00800f2 8ff0088f 088ff008 f0088ff0 ................ 222e4: 00e20700 0000f309 f1070000 00f10700 ................ 222f4: 0700f107 f10700f1 00f10700 0700f107 ................ 22304: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ... 22314: 00f00800 008f0000 f0080000 8fd11d00 ................ 22324: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p 22334: bfe28f00 01f20830 008f10ee f008fb03 ....0........... 22344: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................ 22354: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p 22364: 00c09f00 00f1585f 0100f605 00008ff7 ...._X.......... 22374: 0f00404f 0400f088 f80000f4 4f00008f O@.............O 22384: 880f0040 f40400f0 8ff80000 404f0000 @.............O@ 22394: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o 223a4: 0100f148 00008ff7 00f0880f 008ff800 H............... 223b4: f0880f00 8ff80000 800f0000 c4ef3b00 .............;.. 223c4: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`... 223d4: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`......... 223e4: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;..... 223f4: 8f30df57 c00d0090 0700108f 00008ff1 W.0............. 22404: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x. 22414: fe2b8f30 008f00b3 8f000000 00000000 0.+............. 22424: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;......... 22434: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?` 22444: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;. 22454: 0000f7a3 00f70100 f7010000 01000000 ................ 22464: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ .... 22474: 8f00008f 008f0000 00008f00 91fdae02 ................ 22484: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......` 22494: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@ 224a4: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0.. 224b4: 305f0000 00f30500 00305f00 0000f404 .._0....._0..... 224c4: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z.... 224d4: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y.. 224e4: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P 224f4: 0000c00d 00f206cb f900f502 00e00900 ................ 22504: 800f009e 6f602f00 c00c0010 050000cb ...../`o........ 22514: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p.... 22524: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`.. 22534: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P. 22544: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O. 22554: ff040000 a0ef0040 e00e0000 00f40800 ....@........... 22564: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P...... 22574: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................ 22584: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@...... 22594: f40200f3 0900ea00 108f00d0 1f00701f .............p.. 225a4: 00107f70 00d9e00a f2f90300 cf000000 p............... 225b4: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y.. 225c4: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[... 225d4: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@... 225e4: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a 225f4: 0000cc00 db0000db 00db0000 1f00ea02 ................ 22604: fa0500f4 00db0000 0000db00 cc0000db ................ 22614: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._.. 22624: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._... 22634: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p... 22644: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p.... 22654: 0090be40 00000000 00e43d00 f5860cb5 @........=...... 22664: 03f0201e 000290ef 02001000 400d90ce . .............@ 22674: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@....... 22684: 00f7e7ef 00000000 00000000 00000000 ................ 22694: 00dc4900 16000000 00ffffbf ff8d0300 .I.............. 226a4: 00ffffff ffffcf00 00ffffff ffffff00 ................ 226b4: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q....... 226c4: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 226d4: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 226e4: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+.... 226f4: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+....... 22704: 2b000000 0000b2ff d0000000 ffffff0f ...+............ 22714: ff0df0ff 8888c8ff f0ffff8c 0000800f ................ 22724: f00ff008 0000800f ff0ff008 000080ff ................ 22734: f0ffff08 ccccec0f f00ff0ce ccccec0f ................ 22744: ff0ff0ce 000080ff f0ffff08 0000800f ................ 22754: f00ff008 0000800f ff0ff008 8888c8ff ................ 22764: d0ffff8c ffffff0f df0df0ff ffff73ff .............s.. 22774: fffdffff ffffa5ff ffffffff ffffa5ff ................ 22784: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 22794: df000000 ffff73ff fffdffff ffffa5ff .....s.......... 227a4: ffffffff ffffa5ff dfffffff ffff73ff .............s.. 227b4: 00fdffff 00000000 df000000 ffff73ff .............s.. 227c4: fffdffff ffffa5ff ffffffff ffffa5ff ................ 227d4: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 227e4: 00b10a00 00000000 00fcbf00 00000000 ................ 227f4: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................ 22804: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................ 22814: 0c0000fc ffbffbff 000000c0 fbffffcf ................ 22824: 00000000 b0ffff0c 00000000 00fbbf00 ................ 22834: 00000000 00b00b00 03000000 03000000 ................ 22844: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,. 22854: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................ 22864: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................ 22874: f5dffcff d1ff0500 040000a4 000000a1 ................ 22884: 0000e04f 10020000 1003f16f d05f0000 O.......o....._. 22894: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@ 228a4: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o....... 228b4: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../.... 228c4: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o.. 228d4: af000000 10fe0ff0 ff050000 d3ff06a0 ................ 228e4: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ........... 228f4: 30fdffff 17000000 0050cabd 00000000 ...0......P..... 22904: 0000b88b 00000000 0000ffff 06300000 ..............0. 22914: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@... 22924: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O.......... 22934: ffff0220 f9ff0080 ff9f0000 f9ff0000 ............... 22944: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O.. 22954: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................ 22964: dffdffff 06300040 0360ffff 00000000 ....@.0...`..... 22974: 0000ffff 00000000 0000b88b 00000000 ................ 22984: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O... 22994: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o.. 229a4: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S......... 229b4: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@............. 229c4: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A.. 229d4: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................ 229e4: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................ 229f4: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........ 22a04: 00000000 ffff0000 00000000 ffff0000 ................ 22a14: 00000000 ffff0000 00000000 ffff0000 ................ 22a24: 00000000 ffff0000 00000000 ffffff4f ............O... 22a34: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................ 22a44: 000000fb ffff0b00 000000b0 fbbf0000 ................ 22a54: df000000 b11bfcff fffdffcf 2cc2ffff ..............., 22a64: ffffffff ffffffff ffffffff ffffffff ................ 22a74: dfffe0f0 ffffffff 00fdffff ffffef04 ................ 22a84: 0040feff ffff1e00 e1ffffff b0af0000 ..@............. 22a94: 0b000000 ff0500fa 00000010 1e50ff01 ..............P. 22aa4: 000000f6 e16f0000 0000b0af 0b000000 ......o......... 22ab4: fffffffa ff080080 ffffffff 1f00f1ff ................ 22ac4: ffffffff ffffffff ffffffff ffffffff ................ 22ad4: ffffffff ffffffff ffffffff ff8fffff ................ 22ae4: ffffffff 00f8ffff dabd0600 00ff0250 ............P... 22af4: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{.... 22b04: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._ 22b14: 0f0000f2 8fffffff 0f0000b0 00ffffff ................ ... 22b30: ff000000 00f0ffff fff80b00 00f0ffff ................ 22b40: fff42f00 002022fd ffe0cf00 0000c2ff ./..." ......... 22b50: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$... 22b60: ff0050fe dbac0520 00000060 00000000 .P.. ...`....... 22b70: 008d0000 00ff0800 dfff8f00 ffffffff ................ 22b80: ffffffff ffffffff ffffffff dfffffff ................ 22b90: 00ffffff 00ff8f00 00ff0800 008d0000 ................ ... 22bac: 0000008d 00ff0800 8f000000 cf0000ff ................ 22bbc: 01ffffff ffffff50 fff706ff 00ffffff ....P........... 22bcc: ffffffbe ffae00ff 05ffffff ffffdff8 ................ 22bdc: 006002ff 00ff9f00 09000000 000000ff ..`............. 22bec: 009e0000 00000000 00000000 00000000 ................ 22bfc: 00100600 00000000 d21f0000 00000000 ................ 22c0c: 0300008d 000010ee 0a00ff08 00b02fb1 ............./.. 22c1c: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_` 22c2c: fffffff9 0df706ff ffffbdc0 ae00ffff ................ 22c3c: ff9ff009 00ffffff 8ff009ae ffffffff ................ 22c4c: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`... 22c5c: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../. 22c6c: 8d000000 ee020000 00000010 1f000000 ................ 22c7c: 000000d2 00000000 8f001006 ffffffff ................ 22c8c: fff8ffff fffffffc ffffffff ffff2f20 ............ /.. 22c9c: fcffffff ffff0c00 ffffffee feff2f20 ............ /.. 22cac: ffffef22 e2fffffc ffff2e00 20fe4efe "............N. 22cbc: ffff0200 00c202e2 ffff0000 00000020 ............ ... 22ccc: ffff0000 00000000 ffff0000 ffffffff ................ 22cdc: 8fffffff ffffffff 00f8ffff 00000000 ................ 22cec: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@.... 22cfc: ffff3f40 ffff44ff ff9fffff ffffffff @?...D.......... 22d0c: ffffffff ffffffff ffffafff ff45ffff ..............E. 22d1c: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@.. 22d2c: 0030ffff 0000cc01 00000000 00000000 ..0............. 22d3c: 918f0000 00000000 70ffff00 00000000 ...........p.... 22d4c: 40fdffff ff000000 10faffff ffff0000 ...@............ 22d5c: 00f7ffff ffffff00 00d5ffff ffffffff ................ 22d6c: ffb2ffff ffffffff fffffdff ffffffff ................ 22d7c: fffffffd b2ffffff ffffffff ff00d5ff ................ 22d8c: f7ffffff ffff0000 0010faff fdffff00 ................ 22d9c: 00000040 0070ffff 8e000000 000000a1 @.....p......... ... 22dbc: 00f8ff8f fff8ff8f ff00ffff ffffffff ................ 22dcc: ffff00ff ffffffff ffffff00 00ffffff ................ 22ddc: ffffffff ff00ffff ffffffff ffff00ff ................ 22dec: ffffffff ffffff00 00ffffff ffffffff ................ 22dfc: ff00ffff ffffffff ffff00ff ffffffff ................ 22e0c: ffffff00 00ffffff 7fffffff 7f00f7ff ................ 22e1c: ff8ff7ff ffffffff fffffff8 ffffffff ................ 22e2c: ffffffff ffffffff ffffffff ffffffff ................ 22e3c: ffffffff ffffffff ffffffff ffffffff ................ 22e4c: ffffffff ffffffff ffffffff ffffffff ................ 22e5c: ffffffff ffffffff ffffffff ffffffff ................ 22e6c: ffffffff ffffffff ffffffff ffff8fff ................ 22e7c: f8ffffff 00000000 0010cc00 d2ffff03 ................ 22e8c: ffff0400 ff0430fe 04f4ffff ffffffff .....0.......... 22e9c: ffffff54 fffff9ff ffffffff ffffffff T............... 22eac: ffffffff fffffff9 ffff44ff ff04f3ff .........D...... 22ebc: 0430feff 00d2ffff 10ccff04 00ff0300 ..0............. 22ecc: 00000000 2d000000 000000d2 ef010000 .......-........ 22edc: 000010fe ff1d0000 0000d1ff ffcf0000 ................ 22eec: 0000fcff ffff0b00 00b0ffff ffffaf00 ................ 22efc: 00faffff ffffff09 90ffffff ffffff0f ................ 22f0c: f0ffffff ffffff08 80ffffff 00000000 ................ 22f1c: 00000000 ffffff0c c0ffffff ffffff0f ................ 22f2c: f0ffffff ffffff0f f0ffffff ffffff0c ................ 22f3c: c0ffffff 1a000000 01000040 0000f0df ........@....... 22f4c: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................ 22f5c: ff0c0000 0d0000a0 000080ff 00f8df01 ................ 22f6c: ff1d0000 01000080 0000f8df 80ff1d00 ................ 22f7c: df010000 000000f0 a104501b 0f000000 .........P...... 22f8c: 000010fd 00d1ff0a fdaf0000 0a000010 ................ 22f9c: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................ 22fac: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................ 22fbc: d1ff0800 fd0f0000 05000010 000000b1 ................ 22fcc: ff040000 00000040 80ff0800 00000000 ....@........... 22fdc: 0080ff08 08000000 000080ff ff080000 ................ 22fec: 48000080 c8ff8c88 ffff8488 ffffffff ...H............ 22ffc: ffffffff ffffffff ff8c8848 008488c8 ........H....... 2300c: 80ff0800 00000000 0080ff08 08000000 ................ 2301c: 000080ff ff080000 00000080 40ff0400 ...............@ 2302c: 44140000 44444444 ffffef41 feffffff ...DDDDDA....... 2303c: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........ 2304c: daffad05 00000050 88fcdf04 0040fdcf ....P.........@. 2305c: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O 2306c: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO............. 2307c: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O.. 2308c: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p. 2309c: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@ 230ac: 05000000 50daffad 208c0000 00000000 .......P... .... 230bc: 00000000 0000e4df 00000000 ff1b0000 ................ 230cc: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I.............. 230dc: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p..... 230ec: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@ 230fc: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-. 2310c: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0.. 2311c: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>. 2312c: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z 2313c: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N. ... 23154: 0000c802 d22d0000 00000000 00000000 ......-......... 23164: 0000fbbf 00000000 ffff0500 00000050 ............P... 23174: 0d000000 00d0ffff 00000000 ffff7f00 ................ 23184: 000000f7 ff010000 10ff8dd8 00000000 ................ 23194: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?..... 231a4: 00000000 0cc0ffcf 0000fcff ffff0500 ................ 231b4: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P........... 231c4: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................ 231d4: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>...... 231e4: ffffffff f0ffffff ffffff08 ffffffff ................ 231f4: 000080ff 00000000 00000000 00000000 ................ 23204: 000000d8 00000000 ffff80ff ff070070 ............p... 23214: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x..... 23224: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ...... 23234: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^ 23244: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o. 23254: fffffdff ff070070 0000f8ff 00000000 ....p........... 23264: 000080ff 00000000 000000d8 00000000 ................ ... 2327c: 01000000 000010dd ff1d0000 000000d1 ................ 2328c: fdffdf01 1d000010 d1ff99ff f9df0100 ................ 2329c: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................ 232ac: 905ffb9f 09000000 000000f5 00000000 .._............. 232bc: 00000000 5f000000 00000090 f9bff509 ......._........ 232cc: 9f000000 90ff1dfb d1ff0900 00f9df01 ................ 232dc: 0010fd9f ff99ff1d 010000d1 10fdffdf ................ 232ec: 1d000000 0000d1ff dd010000 00000010 ................ ... 2330c: 00d11d00 00000000 df010000 ffef10fd ................ 2331c: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................ 2332c: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k....... 2333c: 0f0000f0 000000f0 00f00f00 00f00f00 ................ 2334c: 0f000000 0f0000f0 000000f0 b6f11f6b ............k... 2335c: 00f00f00 cfcf0000 0f00fcfc faffffff ................ 2336c: d1ffff1d ffff0d00 df01feff 000010fd ................ 2337c: 00000000 00d11d00 00000000 00000000 ................ 2338c: ff8f0000 0000e2ff ffff0000 0020feff .............. . 2339c: ffff0000 ffffffff fffff8ff ffffffff ................ 233ac: ffffffff ffffffff ffffffff ffffffff ................ 233bc: ffffffff ffffffff ffffffff ffffffff ................ 233cc: ffffffff ffffffff ffffffff ffffffff ................ 233dc: ffffffff ffffffff ff8fffff ffffffff ................ 233ec: 0000f8ff 00b00b00 00000000 00fbbf00 ................ 233fc: 00000000 b0ffff0b 00000000 fbffffbf ................ 2340c: 0b000000 ffffffff 4f0000b0 ffffffff ...........O.... 2341c: 000000f4 00ffff00 00000000 00ffff00 ................ 2342c: 00000000 00ffff00 00000000 00ffff00 ................ 2343c: 00000000 00ffff00 ffdf0000 0ffddff0 ................ 2344c: fffffdff 9f0000f9 ffffffff ffffffff ................ 2345c: ffffffff f0ffffff ffdfffe0 ffffffff ................ 2346c: 0000fdff 00000000 00000000 00000000 ................ 2347c: 0062ea0a 00000000 f0ffff02 00000000 ..b............. 2348c: ffff9f00 00000000 ffff0f00 000000d0 ................ 2349c: ffff0200 000000fb ef030000 000070ff .............p.. 234ac: 04000000 0000f2ff 00000000 0000fbbf ................ 234bc: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O... 234cc: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o........... 234dc: ffffef00 00d1ffff ffff0a00 0090ffff ................ 234ec: ff6f0000 0030fbff ff020000 000072db ..o...0......r.. 234fc: 08000000 000080ee ff086106 2d0080ff .........a.....- 2350c: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?.... 2351c: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n........... 2352c: ffef0200 000000f3 ffff2e00 08000030 ............0... 2353c: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3 2354c: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0... 2355c: fddf0200 00e88e00 10660000 ffdf0000 ..........f..... 2356c: 00200dff ffffff00 0000e20f 0fffffff .. ............. 2357c: fff0dffd 0020ffff fffff0ff ffffffff ...... ......... 2358c: fffffff0 f0ffffff ffffffff fff0ffff ................ 2359c: ffffffff fffff0ff ffffffff fffffff0 ................ 235ac: f0ffffff ffffffff fff0ffff ffffffff ................ 235bc: ffdff0ff fffdffff 000000f9 ffff0000 ................ 235cc: 00ffffff ffffdf00 0000fdff ffffff8f ................ 235dc: ff00c2ff ffffffff 00ff20fe ff010000 ......... ...... 235ec: 0000ffe2 fcff0000 000000ff ffffff00 ................ 235fc: 00000000 ffffffff ffffffff ffffffff ................ 2360c: ffffffff 11fbffff ffffffbf 1f00f1ff ................ 2361c: ffffffff ff1f00f1 fbffffff ffffbf11 ................ 2362c: ffffffff 8fffffff ffffffff df00f8ff ................ 2363c: 0000fdff fcffff01 ff030000 0000f7ff ................ 2364c: f2ffff06 ff080000 0000d0ff ffffff0a ................ 2365c: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. .. 2366c: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P. 2367c: fc2f0000 00000000 0000f35f a09f0000 ../....._....... 2368c: 00000000 000010df 00d70000 04000000 ................ 2369c: 000040ee 99ffdf00 0000fdff ff99ffff .@.............. 236ac: ff0000ff ffffffff ffff0000 00000090 ................ 236bc: 0dffff00 200dffff ff0fffff ffe20fff ....... ........ 236cc: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... .... 236dc: ffffffff ff0fffff ffffffff ffff0fff ................ 236ec: ffdfffff ffffff0f 0f0000ff ffffffff ................ 236fc: ff0f0000 00ffffff ffff0d00 0000fdff ................ 2370c: 0000cc00 02000000 000030ff ffbf0100 .........0...... 2371c: 000020fc ffffff1e 9f0000e1 f8ffffff . .............. 2372c: ffef0000 00fdffff ffffff00 0100ffff ................ 2373c: ffffffff ff0300ff ffffffff ffff0830 ............0... 2374c: 80ffffff ffffff1e cfe1ffff ffffffff ................ 2375c: ffcffcff ffffffff 000000fc 00000000 ................ 2376c: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@.... 2377c: ffffffff fff8ffff ffffffff ffffffff ................ 2378c: 0ff000ff 000ff000 f000ffff 0ff0000f ................ 2379c: ffffff00 ffffffff ffffffff 888008f8 ................ 237ac: ff8f8008 8008f8ff 8f800888 ffffffff ................ 237bc: ffffffff 00ffffff 000000f0 ffff000f ................ 237cc: 0000f000 ff000f00 ffffffff ffffffff ................ 237dc: ffff8fff ffffffff 0000f8ff 00000000 ................ ... 237f4: 70af0300 00000000 ffcf0400 000000f0 ...p............ 23804: ffdf0600 0000a0ff ffef1700 0030ffff ..............0. 23814: ffff1800 00fcffff ffff2a00 f4ffffff .........*...... 23824: ffff0800 ffffffff ff0f00d0 ffffffff ................ 23834: 080060ff ffffffff 0000feff 00000000 .`.............. 23844: 00f7ffff 00000000 f1ffff00 00000000 ................ 23854: ffff0000 00000080 ff000000 000010ff ................ 23864: 00000000 0000faff 00000000 00f2ff00 ................ 23874: 00000000 808f0000 00000000 00000000 ................ 23884: 00000000 f0ffffdf ffff00d2 20fef0ff ............... 23894: f0ffffff ffffe2ff fdfff0ff f2ffffff ................ 238a4: ffff0000 ffffffff ffffffff ffffffff ................ 238b4: ffffffff ffffffff ffffffff ffffffff ................ 238c4: ffffffff ffffffff ffffffff ffffffff ................ 238d4: ffffffff ffffffff ffffffff ffdfffff ................ 238e4: fdffffff 00000000 00000000 00000000 ................ 238f4: feef9c04 000040c9 ffef0700 feffffff .....@.......... 23904: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o... 23914: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o. 23924: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M... 23934: 0000d4ff feff0500 ffef8aa8 01000050 ............P... 23944: 000070df 0010fd07 00120000 21000000 .p.............! 23954: 00000000 e44e0000 00000000 00000000 ......N......... 23964: 0000feef 00000000 feef0000 00000000 ................ 23974: 00000000 0000e44e ff8f0000 ffffffff ....N........... 23984: 80ffffff ffffffff ffffffff 00fff0ff ................ 23994: 00000000 fd0f0000 ffff0fff ffffffff ................ 239a4: 0fffff0f ffffffff ff00ffff ffff0fff ................ 239b4: ffffffff 0fffff00 ffffffff ff0fffff ................ 239c4: 000000ff 00000000 fffffd0f ffffffff ................ 239d4: f0ffffff ffffff8f ffffffff ff8f80ff ................ 239e4: ffffffff 80ffffff ffffffff ffffffff ................ 239f4: 00fff0ff 00000000 fd0f0000 ffff0fff ................ 23a04: 00f0ffff 0fffff0f ffffffff ff0000f0 ................ 23a14: ffff0fff 00f0ffff 0fffff00 ffffffff ................ 23a24: ff0f00f0 000000ff 00000000 fffffd0f ................ 23a34: ffffffff f0ffffff ffffff8f ffffffff ................ 23a44: ff8f80ff ffffffff 80ffffff ffffffff ................ 23a54: ffffffff 00fff0ff 00000000 fd0f0000 ................ 23a64: ffff0fff 000000ff 0fffff0f 00ffffff ................ 23a74: ff000000 ffff0fff 000000ff 0fffff00 ................ 23a84: 00ffffff ff0f0000 000000ff 00000000 ................ 23a94: fffffd0f ffffffff f0ffffff ffffff8f ................ 23aa4: ffffffff ff8f80ff ffffffff 80ffffff ................ 23ab4: ffffffff ffffffff 00fff0ff 00000000 ................ 23ac4: fd0f0000 f0ff0fff 00000000 0fffff0f ................ 23ad4: 0000f0ff ff000000 f0ff0fff 00000000 ................ 23ae4: 0fffff00 0000f0ff ff0f0000 000000ff ................ 23af4: 00000000 fffffd0f ffffffff f0ffffff ................ 23b04: ffffff8f ffffffff ff8f80ff ffffffff ................ 23b14: 80ffffff ffffffff ffffffff 00fff0ff ................ 23b24: 00000000 fd0f0000 000000ff 00000000 ................ 23b34: 00ffff0f 00000000 ff000000 000000ff ................ 23b44: 00000000 00ffff00 00000000 ff0f0000 ................ 23b54: 000000ff 00000000 fffffd0f ffffffff ................ 23b64: f0ffffff ffffff8f ffffffff 000080ff ................ 23b74: 01000000 00000000 00000000 10fd0700 ................ 23b84: 00000000 cf010000 0000f5ff 00000000 ................ 23b94: fe29b900 00000010 3f000000 00000210 ..)........?.... 23ba4: df030000 00900a80 70030000 77ffdf00 ...........p...w 23bb4: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU........... 23bc4: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F.. 23bd4: 3302f201 00000010 09000000 00f9cfb1 ...3............ 23be4: 00000000 ff0a0000 000090ff 00000000 ................ 23bf4: f9bf0000 00000000 00000000 00002201 .............".. 23c04: df180000 020092fd ffeffbef faff0d30 ............0... 23c14: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O.. 23c24: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=............. 23c34: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y 23c44: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._...... 23c54: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P..... 23c64: 7f000000 0000f7ff ffffffef effeffff ................ 23c74: ffffffff 0000feff 00000000 ffff0f00 ................ 23c84: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................ 23c94: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................ 23ca4: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................ 23cb4: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................ 23cc4: 0ff09ff9 ffffffff ff08f0ff ffffffff ................ 23cd4: 00000080 7f000000 000000a0 8f000000 ................ 23ce4: 0000b0ff 0d000000 00a0ffff 8a000000 ................ 23cf4: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p.... 23d04: 801dfaff 8f000000 00faffff 8f000000 ................ 23d14: 80ffffff 8f000000 80ffffff 8f000000 ................ 23d24: 80ffffff 8f000000 80ffffff 6f000000 ...............o 23d34: 80ffffff 0b000000 80ffffff 00000000 ................ 23d44: 80ffffdf 00000000 80ffff0e 00000000 ................ 23d54: 60dbde00 00000000 00000000 00000000 ...`............ 23d64: 00000000 ffffff1b e4ffffff ffdf0100 ................ 23d74: ffffffff 1d00feff effaffff ffffaffe ................ 23d84: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................ 23d94: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ...... 23da4: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... . 23db4: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................ 23dc4: affeeffa 0100ffff ffffffdf feffffff ................ 23dd4: ff1b0000 ffffffff 0800e4ff e4ffffff ................ 23de4: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@..... 23df4: f8ffff40 ff400b0f ffffffff ffffffff @.....@......... 23e04: ffffffff ffffffff ffffffff ffffffff ................ 23e14: ffffffff ffffffff ffffffff ffffffff ................ 23e24: ffffffff ffffffff ffffffff ffefffff ................ 23e34: feffffff ffffff4e 0000e4ff 00000000 ....N........... 23e44: 00000100 00000000 00e00300 00001000 ................ 23e54: 10ef0200 0000bf00 f17f0000 00f1cf00 ................ 23e64: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww..... 23e74: ffffffff ffff17ff ffffffff ff07e0ff ................ 23e84: 000000f1 06000000 000010ff 00000000 ................ 23e94: 0000a005 00000000 732f2e2e 65726168 ........../share 23ea4: 68742f64 70647269 79747261 67766c2f d/thirdparty/lvg 23eb4: 72732f6c 766c2f63 6c61685f 5f766c2f l/src/lv_hal/lv_ 23ec4: 5f6c6168 70736964 hal_disp.c. 00023ecf <__func__.0>: 23ecf: 645f766c 5f707369 5f767264 69676572 lv_disp_drv_regi 23edf: 72657473 2f2e2e00 72616873 742f6465 ster.../shared/t 23eef: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 23eff: 6c2f6372 696d5f76 6c2f6373 6e615f76 rc/lv_misc/lv_an 23f0f: 632e6d69 im.c. 00023f14 <__func__.0>: 23f14: 615f766c 5f6d696e 72617473 00000074 lv_anim_start... 00023f24 : 23f24: 0000da6d 00000000 732f2e2e 65726168 m........./share 23f34: 68742f64 70647269 79747261 67766c2f d/thirdparty/lvg 23f44: 72732f6c 766c2f63 73696d5f 766c2f63 l/src/lv_misc/lv 23f54: 2e73665f _fs.c. 00023f5a <__func__.0>: 23f5a: 665f766c 72645f73 65725f76 74736967 lv_fs_drv_regist 23f6a: er. 00023f6d <__func__.2>: 23f6d: 665f766c 706f5f73 lv_fs_open. 00023f78 <__func__.1>: 23f78: 665f766c 69645f73 706f5f72 00006e65 lv_fs_dir_open.. 00023f88 : 23f88: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a... 23f98: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!! 23fa8: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2 23fb8: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A 23fc8: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI: 24152: 6d5f766c 615f6d65 636f6c6c lv_mem_alloc. 0002415f <__func__.0>: 2415f: 5f766c5f 5f6d656d 5f667562 656c6572 _lv_mem_buf_rele 2416f: 00657361 ase. 00024173 <__func__.2>: 24173: 6d5f766c 725f6d65 6c6c6165 lv_mem_realloc. 00024182 <__func__.1>: 24182: 5f766c5f 5f6d656d 5f667562 00746567 _lv_mem_buf_get. 24192: 732f2e2e 65726168 68742f64 70647269 ../shared/thirdp 241a2: 79747261 67766c2f 72732f6c 766c2f63 arty/lvgl/src/lv 241b2: 73696d5f 766c2f63 7361745f 00632e6b _misc/lv_task.c. 000241c2 <__func__.1>: 241c2: 745f766c 5f6b7361 61657263 625f6574 lv_task_create_b 241d2: 63697361 asic. 000241d7 <__func__.0>: 241d7: 745f766c 5f6b7361 61657263 20006574 lv_task_create. 241e7: 3a3b2e2c 2e005f2d 68732f2e 64657261 ,.;:-_.../shared 241f7: 6968742f 61706472 2f797472 6c67766c /thirdparty/lvgl 24207: 6372732f 5f766c2f 6373696d 5f766c2f /src/lv_misc/lv_ 24217: 2e747874 766c0063 7478745f 7465675f txt.c.lv_txt_get 24227: 7a69735f 69203a65 6765746e 6f207265 _size: integer o 24237: 66726576 20776f6c 6c696877 61632065 verflow while ca 24247: 6c75636c 6e697461 65742067 68207478 lculating text h 24257: 68676965 eight. 0002425d <__func__.0>: 2425d: 5f766c5f 5f747874 5f746567 657a6973 _lv_txt_get_size 2426d: 8c80ef00 10ffff00 2ec61884 68732f2e ............./sh 2427d: 64657261 6968742f 61706472 2f797472 ared/thirdparty/ 2428d: 6c67766c 6372732f 5f766c2f 67646977 lvgl/src/lv_widg 2429d: 2f737465 695f766c 632e676d 5f766c00 ets/lv_img.c.lv_ 242ad: 5f676d69 5f746573 3a637273 6b6e7520 img_set_src: unk 242bd: 6e776f6e 70797420 766c0065 676d695f nown type.lv_img 242cd: 7465735f 6372735f 6e75203a 776f6e6b _set_src: unknow 242dd: 6d69206e 20656761 65707974 5f766c00 n image type.lv_ 242ed: 5f676d69 5f746573 3a637273 4c602020 img_set_src: `L 242fd: 4d495f56 52535f47 41565f43 42414952 V_IMG_SRC_VARIAB 2430d: 2060454c 65707974 756f6620 6900646e LE` type found.i 2431d: 6567616d 65726320 64657461 5f766c00 mage created.lv_ 2432d: 00676d69 img. 00024331 <__func__.13>: 24331: 695f766c 645f676d 67697365 lv_img_design. 0002433f <__func__.11>: 2433f: 695f766c 735f676d 615f7465 5f6f7475 lv_img_set_auto_ 2434f: 657a6973 size. 00024354 <__func__.10>: 24354: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 24364: 00785f74 t_x. 00024368 <__func__.9>: 24368: 695f766c 735f676d 6f5f7465 65736666 lv_img_set_offse 24378: 00795f74 t_y. 0002437c <__func__.8>: 2437c: 695f766c 675f676d 735f7465 lv_img_get_src. 0002438b <__func__.7>: 2438b: 695f766c 675f676d 665f7465 5f656c69 lv_img_get_file_ 2439b: 656d616e name. 000243a0 <__func__.6>: 243a0: 695f766c 675f676d 615f7465 5f6f7475 lv_img_get_auto_ 243b0: 657a6973 size. 000243b5 <__func__.12>: 243b5: 695f766c 735f676d 735f7465 lv_img_set_src. 000243c4 <__func__.14>: 243c4: 695f766c 635f676d 74616572 lv_img_create. 000243d2 <__func__.5>: 243d2: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 243e2: 00785f74 t_x. 000243e6 <__func__.4>: 243e6: 695f766c 675f676d 6f5f7465 65736666 lv_img_get_offse 243f6: 00795f74 t_y. 000243fa <__func__.3>: 243fa: 695f766c 675f676d 705f7465 746f7669 lv_img_get_pivot ... 0002440b <__func__.2>: 2440b: 695f766c 675f676d 615f7465 656c676e lv_img_get_angle ... 0002441c <__func__.1>: 2441c: 695f766c 675f676d 7a5f7465 006d6f6f lv_img_get_zoom. 0002442c <__func__.0>: 2442c: 695f766c 675f676d 615f7465 6169746e lv_img_get_antia 2443c: 7361696c 2f2e2e00 72616873 742f6465 lias.../shared/t 2444c: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 2445c: 6c2f6372 69775f76 74656764 766c2f73 rc/lv_widgets/lv 2446c: 62616c5f 632e6c65 69614600 2064656c _label.c.Failed 2447c: 61206f74 636f6c6c 20657461 6f6d656d to allocate memo 2448c: 66207972 6420726f 745f746f 705f706d ry for dot_tmp_p 2449c: 54007274 00747865 6562616c 7263206c tr.Text.label cr 244ac: 65746165 766c0064 62616c5f eated.lv_label. 000244bb <__func__.21>: 244bb: 6c5f766c 6c656261 7465735f 746f645f lv_label_set_dot 244cb: 706d745f _tmp. 000244d0 <__func__.16>: 244d0: 6c5f766c 6c656261 7465735f 696c615f lv_label_set_ali 244e0: gn. 000244e3 <__func__.13>: 244e3: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 244f3: 65735f74 74735f6c 00747261 t_sel_start. 000244ff <__func__.12>: 244ff: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 2450f: 65735f74 6e655f6c t_sel_end. 00024519 <__func__.11>: 24519: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 24529: t. 0002452b <__func__.10>: 2452b: 6c5f766c 6c656261 7465675f 6e6f6c5f lv_label_get_lon 2453b: 6f6d5f67 g_mode. 00024542 <__func__.9>: 24542: 6c5f766c 6c656261 7465675f 696c615f lv_label_get_ali 24552: gn. 00024555 <__func__.8>: 24555: 6c5f766c 6c656261 7465675f 6365725f lv_label_get_rec 24565: 726f6c6f olor. 0002456a <__func__.7>: 2456a: 6c5f766c 6c656261 7465675f 696e615f lv_label_get_ani 2457a: 70735f6d 00646565 m_speed. 00024582 <__func__.6>: 24582: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 24592: 5f726574 00736f70 ter_pos. 0002459a <__func__.5>: 2459a: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 245aa: 5f726574 ter_on. 000245b1 <__func__.20>: 245b1: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 245c1: t. 000245c3 <__func__.19>: 245c3: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 245d3: 6d665f74 t_fmt. 000245d9 <__func__.18>: 245d9: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 245e9: 74735f74 63697461 t_static. 000245f2 <__func__.17>: 245f2: 6c5f766c 6c656261 7465735f 6e6f6c5f lv_label_set_lon 24602: 6f6d5f67 g_mode. 00024609 <__func__.15>: 24609: 6c5f766c 6c656261 7465735f 6365725f lv_label_set_rec 24619: 726f6c6f olor. 0002461e <__func__.22>: 2461e: 6c5f766c 6c656261 6572635f 00657461 lv_label_create. 0002462e <__func__.14>: 2462e: 6c5f766c 6c656261 7465735f 696e615f lv_label_set_ani 2463e: 70735f6d 00646565 m_speed. 00024646 <__func__.4>: 24646: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 24656: 65735f74 74735f6c 00747261 t_sel_start. 00024662 <__func__.3>: 24662: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 24672: 65735f74 6e655f6c t_sel_end. 0002467c <__func__.2>: 2467c: 6c5f766c 6c656261 5f73695f 72616863 lv_label_is_char 2468c: 646e755f 705f7265 _under_pos. 00024697 <__func__.1>: 24697: 6c5f766c 6c656261 736e695f 7865745f lv_label_ins_tex 246a7: t. 000246a9 <__func__.0>: 246a9: 6c5f766c 6c656261 7475635f 7865745f lv_label_cut_tex 246b9: t.. 000246bc <_init>: 246bc: b5f8 push {r3, r4, r5, r6, r7, lr} 246be: bf00 nop 246c0: bcf8 pop {r3, r4, r5, r6, r7} 246c2: bc08 pop {r3} 246c4: 469e mov lr, r3 246c6: 4770 bx lr 000246c8 <__frame_dummy_init_array_entry>: 246c8: 02cd 0000 .... 000246cc <_fini>: 246cc: b5f8 push {r3, r4, r5, r6, r7, lr} 246ce: bf00 nop 246d0: bcf8 pop {r3, r4, r5, r6, r7} 246d2: bc08 pop {r3} 246d4: 469e mov lr, r3 246d6: 4770 bx lr 000246d8 <__do_global_dtors_aux_fini_array_entry>: 246d8: 02a5 0000 ....