You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

54817 lines
2.3 MiB

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 <exception_table>:
/**
* \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 <deregister_tm_clones>:
264: 4803 ldr r0, [pc, #12] ; (274 <deregister_tm_clones+0x10>)
266: 4b04 ldr r3, [pc, #16] ; (278 <deregister_tm_clones+0x14>)
268: 4283 cmp r3, r0
26a: d002 beq.n 272 <deregister_tm_clones+0xe>
26c: 4b03 ldr r3, [pc, #12] ; (27c <deregister_tm_clones+0x18>)
26e: b103 cbz r3, 272 <deregister_tm_clones+0xe>
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 <register_tm_clones>:
280: 4805 ldr r0, [pc, #20] ; (298 <register_tm_clones+0x18>)
proc->pr_timestamp = lv_tick_get();
282: 4b06 ldr r3, [pc, #24] ; (29c <register_tm_clones+0x1c>)
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 <register_tm_clones+0x16>
proc->pr_timestamp = lv_tick_get();
290: 4b03 ldr r3, [pc, #12] ; (2a0 <register_tm_clones+0x20>)
proc->types.pointer.gesture_sum.x = 0;
292: b103 cbz r3, 296 <register_tm_clones+0x16>
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 <deregister_tm_clones>
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 <frame_dummy>:
if(indev_reset_check(proc)) return;
2cc: b508 push {r3, lr}
2ce: 4b04 ldr r3, [pc, #16] ; (2e0 <frame_dummy+0x14>)
2d0: b11b cbz r3, 2da <frame_dummy+0xe>
2d2: 4904 ldr r1, [pc, #16] ; (2e4 <frame_dummy+0x18>)
lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL);
2d4: 4804 ldr r0, [pc, #16] ; (2e8 <frame_dummy+0x1c>)
2d6: f3af 8000 nop.w
2da: e8bd 4008 ldmia.w sp!, {r3, lr}
if(indev_reset_check(proc)) return;
2de: e7cf b.n 280 <register_tm_clones>
2e0: 00000000 .word 0x00000000
2e4: 2000007c .word 0x2000007c
if(indev_act->proc.wait_until_release) return;
2e8: 000246e4 .word 0x000246e4
000002ec <io_write>:
{
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 <io_write+0x10>
2f6: 1e08 subs r0, r1, #0
2f8: bf18 it ne
2fa: 2001 movne r0, #1
2fc: 4905 ldr r1, [pc, #20] ; (314 <io_write+0x28>)
2fe: 4b06 ldr r3, [pc, #24] ; (318 <io_write+0x2c>)
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 <timer_add_timer_task>:
* \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 <timer_add_timer_task+0xe>
list_insert_as_head(list, new_task);
366: 4b0f ldr r3, [pc, #60] ; (3a4 <timer_add_timer_task+0x44>)
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 <timer_add_timer_task+0x3e>
* \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 <timer_add_timer_task+0x3a>
list_insert_after(prev, new_task);
394: 4b04 ldr r3, [pc, #16] ; (3a8 <timer_add_timer_task+0x48>)
396: 4630 mov r0, r6
398: e7e6 b.n 368 <timer_add_timer_task+0x8>
39a: 461c mov r4, r3
39c: e7ed b.n 37a <timer_add_timer_task+0x1a>
if (it == head) {
39e: 42a5 cmp r5, r4
3a0: d0e1 beq.n 366 <timer_add_timer_task+0x6>
3a2: e7f7 b.n 394 <timer_add_timer_task+0x34>
3a4: 00000615 .word 0x00000615
3a8: 00000641 .word 0x00000641
000003ac <timer_process_counted>:
/**
* \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 <timer_process_counted+0x54>
3c0: 7e03 ldrb r3, [r0, #24]
3c2: 079b lsls r3, r3, #30
3c4: d41c bmi.n 400 <timer_process_counted+0x54>
}
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 <timer_process_counted+0x60>
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 <timer_process_counted+0x64>
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 <timer_process_counted+0x5c>
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 <timer_process_counted+0x5c>
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 <timer_process_counted+0x46>
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_process_counted+0x26>
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 <timer_init>:
{
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 <timer_init+0xe>
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 <timer_init+0x28>)
426: 4b06 ldr r3, [pc, #24] ; (440 <timer_init+0x2c>)
428: 4798 blx r3
_timer_init(&descr->device, hw);
42a: 4b06 ldr r3, [pc, #24] ; (444 <timer_init+0x30>)
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 <timer_init+0x34>)
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 <timer_start>:
{
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 <timer_start+0x2c>)
458: 4b08 ldr r3, [pc, #32] ; (47c <timer_start+0x30>)
45a: 2253 movs r2, #83 ; 0x53
45c: 4798 blx r3
if (_timer_is_started(&descr->device)) {
45e: 4b08 ldr r3, [pc, #32] ; (480 <timer_start+0x34>)
460: 4628 mov r0, r5
462: 4798 blx r3
464: 4604 mov r4, r0
466: b920 cbnz r0, 472 <timer_start+0x26>
_timer_start(&descr->device);
468: 4628 mov r0, r5
46a: 4b06 ldr r3, [pc, #24] ; (484 <timer_start+0x38>)
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 <timer_start+0x24>
478: 0001635c .word 0x0001635c
47c: 00000655 .word 0x00000655
480: 00000ed1 .word 0x00000ed1
484: 00000ebd .word 0x00000ebd
00000488 <timer_add_task>:
{
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 <timer_add_task+0x10>
492: 1e08 subs r0, r1, #0
494: bf18 it ne
496: 2001 movne r0, #1
498: 491e ldr r1, [pc, #120] ; (514 <timer_add_task+0x8c>)
49a: f8df 8090 ldr.w r8, [pc, #144] ; 52c <timer_add_task+0xa4>
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 <timer_add_task+0x90>)
4b2: 4638 mov r0, r7
4b4: 4798 blx r3
4b6: 4606 mov r6, r0
4b8: b160 cbz r0, 4d4 <timer_add_task+0x4c>
descr->flags &= ~TIMER_FLAG_QUEUE_IS_TAKEN;
4ba: 7e23 ldrb r3, [r4, #24]
ASSERT(false);
4bc: 4915 ldr r1, [pc, #84] ; (514 <timer_add_task+0x8c>)
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 <timer_add_task+0x94>)
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 <timer_add_task+0x86>
CRITICAL_SECTION_ENTER()
4f0: 4b0b ldr r3, [pc, #44] ; (520 <timer_add_task+0x98>)
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 <timer_add_task+0x9c>)
502: 4798 blx r3
CRITICAL_SECTION_LEAVE()
504: a801 add r0, sp, #4
506: 4b08 ldr r3, [pc, #32] ; (528 <timer_add_task+0xa0>)
508: 4798 blx r3
return ERR_NONE;
50a: 4630 mov r0, r6
50c: e7df b.n 4ce <timer_add_task+0x46>
50e: 4618 mov r0, r3
510: e7dd b.n 4ce <timer_add_task+0x46>
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 <delay_init>:
/**
* \brief Initialize Delay driver
*/
void delay_init(void *const hw)
{
_delay_init(hardware = hw);
530: 4b01 ldr r3, [pc, #4] ; (538 <delay_init+0x8>)
532: 6018 str r0, [r3, #0]
534: 4b01 ldr r3, [pc, #4] ; (53c <delay_init+0xc>)
536: 4718 bx r3
538: 20000094 .word 0x20000094
53c: 00000357 .word 0x00000357
00000540 <delay_us>:
/**
* \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 <delay_us+0x18>)
{
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 <delay_us+0x1c>)
548: 4798 blx r3
54a: 4b05 ldr r3, [pc, #20] ; (560 <delay_us+0x20>)
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 <delay_ms>:
/**
* \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 <delay_ms+0x18>)
{
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 <delay_ms+0x1c>)
56c: 4798 blx r3
56e: 4b05 ldr r3, [pc, #20] ; (584 <delay_ms+0x20>)
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 <RAMECC_Handler>:
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 <RAMECC_Handler+0x30>)
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 <RAMECC_Handler+0x1c>
5dc: 4b08 ldr r3, [pc, #32] ; (600 <RAMECC_Handler+0x34>)
5de: 681b ldr r3, [r3, #0]
5e0: b113 cbz r3, 5e8 <RAMECC_Handler+0x1c>
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 <RAMECC_Handler+0x2c>
5ee: 4b04 ldr r3, [pc, #16] ; (600 <RAMECC_Handler+0x34>)
5f0: 685b ldr r3, [r3, #4]
5f2: b10b cbz r3, 5f8 <RAMECC_Handler+0x2c>
5f4: 4a01 ldr r2, [pc, #4] ; (5fc <RAMECC_Handler+0x30>)
5f6: e7f4 b.n 5e2 <RAMECC_Handler+0x16>
}
5f8: b002 add sp, #8
5fa: 4770 bx lr
5fc: 41020000 .word 0x41020000
600: 20000098 .word 0x20000098
00000604 <is_list_element>:
* \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 <is_list_element+0x6>
608: 4770 bx lr
if (it == element) {
60a: 4288 cmp r0, r1
60c: d1fa bne.n 604 <is_list_element>
return true;
60e: 2001 movs r0, #1
}
}
return false;
}
610: 4770 bx lr
...
00000614 <list_insert_as_head>:
/**
* \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 <list_insert_as_head+0x20>)
{
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 <list_insert_as_head+0x24>)
624: 4905 ldr r1, [pc, #20] ; (63c <list_insert_as_head+0x28>)
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 <list_insert_after>:
/**
* \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 <list_remove_head>:
/**
* \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 <list_remove_head+0x8>
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 <assert>:
/**
* \brief Assert function
*/
void assert(const bool condition, const char *const file, const int line)
{
if (!(condition)) {
654: b900 cbnz r0, 658 <assert+0x4>
__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 <hri_sercomi2cm_wait_for_sync>:
while (((Sercom *)hw)->I2CM.SYNCBUSY.reg & reg) {
6a4: 69c3 ldr r3, [r0, #28]
6a6: 420b tst r3, r1
6a8: d1fc bne.n 6a4 <hri_sercomi2cm_wait_for_sync>
}
6aa: 4770 bx lr
000006ac <hri_sercomi2cm_set_CTRLA_ENABLE_bit>:
((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 <hri_sercomi2cm_set_CTRLA_ENABLE_bit+0x10>)
((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 <hri_sercomi2cm_clear_CTRLA_ENABLE_bit>:
((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 <hri_sercomi2cm_clear_CTRLA_ENABLE_bit+0x10>)
((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 <hri_sercomi2cm_write_CTRLA_reg>:
((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 <hri_sercomi2cm_write_CTRLA_reg+0x8>)
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 <SERCOM0_0_Handler>:
/**
* \internal Sercom interrupt handler
*/
void SERCOM0_0_Handler(void)
{
_sercom_usart_interrupt_handler(_sercom0_dev);
8b0: 4b19 ldr r3, [pc, #100] ; (918 <SERCOM0_0_Handler+0x68>)
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 <SERCOM0_0_Handler+0x20>
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 <SERCOM0_0_Handler+0x20>
((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 <SERCOM0_0_Handler+0x34>
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 <SERCOM0_0_Handler+0x34>
((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 <SERCOM0_0_Handler+0x1a>
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 <SERCOM0_0_Handler+0x54>
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 <SERCOM0_0_Handler+0x48>
((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 <SERCOM0_0_Handler+0x46>
((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 <SERCOM0_0_Handler+0x44>
918: 200000a8 .word 0x200000a8
0000091c <SERCOM0_1_Handler>:
91c: 4b00 ldr r3, [pc, #0] ; (920 <SERCOM0_1_Handler+0x4>)
91e: 4718 bx r3
920: 000008b1 .word 0x000008b1
00000924 <SERCOM0_2_Handler>:
924: 4b00 ldr r3, [pc, #0] ; (928 <SERCOM0_2_Handler+0x4>)
926: 4718 bx r3
928: 000008b1 .word 0x000008b1
0000092c <SERCOM0_3_Handler>:
92c: 4b00 ldr r3, [pc, #0] ; (930 <SERCOM0_3_Handler+0x4>)
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 <Dummy_Handler>:
/**
* \brief Default interrupt handler for unused IRQs.
*/
void Dummy_Handler(void)
{
while (1) {
954: e7fe b.n 954 <Dummy_Handler>
...
00000958 <Reset_Handler>:
if (pSrc != pDest) {
958: 4918 ldr r1, [pc, #96] ; (9bc <Reset_Handler+0x64>)
95a: 4819 ldr r0, [pc, #100] ; (9c0 <Reset_Handler+0x68>)
95c: 4281 cmp r1, r0
{
95e: b510 push {r4, lr}
if (pSrc != pDest) {
960: d00a beq.n 978 <Reset_Handler+0x20>
*pDest++ = *pSrc++;
962: 4b18 ldr r3, [pc, #96] ; (9c4 <Reset_Handler+0x6c>)
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 <Reset_Handler+0x70>)
976: 4798 blx r3
*pDest++ = 0;
978: 4b14 ldr r3, [pc, #80] ; (9cc <Reset_Handler+0x74>)
97a: 4815 ldr r0, [pc, #84] ; (9d0 <Reset_Handler+0x78>)
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 <Reset_Handler+0x7c>)
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 <Reset_Handler+0x80>)
994: 4b11 ldr r3, [pc, #68] ; (9dc <Reset_Handler+0x84>)
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 <Reset_Handler+0x88>)
9b2: 4798 blx r3
main();
9b4: 4b0b ldr r3, [pc, #44] ; (9e4 <Reset_Handler+0x8c>)
9b6: 4798 blx r3
while (1)
9b8: e7fe b.n 9b8 <Reset_Handler+0x60>
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 <main>:
#include "oracle.h"
int main(void)
{
9e8: b508 push {r3, lr}
oracle_init();
9ea: 4b02 ldr r3, [pc, #8] ; (9f4 <main+0xc>)
for(;;)
{
oracle_service();
9ec: 4c02 ldr r4, [pc, #8] ; (9f8 <main+0x10>)
oracle_init();
9ee: 4798 blx r3
oracle_service();
9f0: 47a0 blx r4
for(;;)
9f2: e7fd b.n 9f0 <main+0x8>
9f4: 000009fd .word 0x000009fd
9f8: 00000a35 .word 0x00000a35
000009fc <oracle_init>:
#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 <oracle_init+0x20>)
a00: 4798 blx r3
// init mcu
init_mcu();
// uart init
p_usart_init();
a02: 4b07 ldr r3, [pc, #28] ; (a20 <oracle_init+0x24>)
a04: 4798 blx r3
// i2c init
p_i2c_init();
a06: 4b07 ldr r3, [pc, #28] ; (a24 <oracle_init+0x28>)
a08: 4798 blx r3
// gpio init
p_gpio_init();
a0a: 4b07 ldr r3, [pc, #28] ; (a28 <oracle_init+0x2c>)
a0c: 4798 blx r3
// time init
p_tcc_init();
a0e: 4b07 ldr r3, [pc, #28] ; (a2c <oracle_init+0x30>)
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 <oracle_init+0x34>)
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 <oracle_service>:
void oracle_service(void)
{
p_screen_service();
a34: 4b00 ldr r3, [pc, #0] ; (a38 <oracle_service+0x4>)
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 <usart_transmission_complete>:
*/
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 <usart_transmission_complete+0xc>
descr->usart_cb.tx_done(descr);
a64: 3808 subs r0, #8
a66: 4718 bx r3
}
}
a68: 4770 bx lr
00000a6a <usart_error>:
*/
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 <usart_error+0xc>
descr->usart_cb.error(descr);
a72: 3808 subs r0, #8
a74: 4718 bx r3
}
}
a76: 4770 bx lr
00000a78 <usart_fill_rx_buffer>:
{
a78: b570 push {r4, r5, r6, lr}
a7a: 4604 mov r4, r0
ringbuffer_put(&descr->rx, data);
a7c: 4b05 ldr r3, [pc, #20] ; (a94 <usart_fill_rx_buffer+0x1c>)
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 <usart_fill_rx_buffer+0x1a>
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 <usart_async_write>:
{
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 <usart_async_write+0x12>
aa2: b1d9 cbz r1, adc <usart_async_write+0x44>
aa4: 1e10 subs r0, r2, #0
aa6: bf18 it ne
aa8: 2001 movne r0, #1
aaa: 4b0f ldr r3, [pc, #60] ; (ae8 <usart_async_write+0x50>)
aac: 490f ldr r1, [pc, #60] ; (aec <usart_async_write+0x54>)
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 <usart_async_write+0x48>
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 <usart_async_write+0x58>)
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 <usart_async_write+0x12>
return ERR_NO_RESOURCE;
ae0: f06f 001b mvn.w r0, #27
ae4: e7f9 b.n ada <usart_async_write+0x42>
ae6: bf00 nop
ae8: 00000655 .word 0x00000655
aec: 000163f5 .word 0x000163f5
af0: 0000089f .word 0x0000089f
00000af4 <usart_process_byte_sent>:
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_process_byte_sent+0x24>
_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 <usart_process_byte_sent+0x28>)
b0c: 4798 blx r3
_usart_async_enable_byte_sent_irq(&descr->device);
b0e: 4b04 ldr r3, [pc, #16] ; (b20 <usart_process_byte_sent+0x2c>)
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 <usart_process_byte_sent+0x30>)
b1a: e7fa b.n b12 <usart_process_byte_sent+0x1e>
b1c: 00000899 .word 0x00000899
b20: 0000089f .word 0x0000089f
b24: 000008a7 .word 0x000008a7
00000b28 <usart_async_read>:
{
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 <usart_async_read+0x14>
b34: b1e9 cbz r1, b72 <usart_async_read+0x4a>
b36: 1e10 subs r0, r2, #0
b38: bf18 it ne
b3a: 2001 movne r0, #1
b3c: 4910 ldr r1, [pc, #64] ; (b80 <usart_async_read+0x58>)
b3e: 4b11 ldr r3, [pc, #68] ; (b84 <usart_async_read+0x5c>)
ringbuffer_get(&descr->rx, &buf[was_read++]);
b40: f8df 9050 ldr.w r9, [pc, #80] ; b94 <usart_async_read+0x6c>
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 <usart_async_read+0x60>)
b4e: a801 add r0, sp, #4
b50: 4798 blx r3
num = ringbuffer_num(&descr->rx);
b52: 4b0e ldr r3, [pc, #56] ; (b8c <usart_async_read+0x64>)
b54: 4620 mov r0, r4
b56: 4798 blx r3
CRITICAL_SECTION_LEAVE()
b58: 4b0d ldr r3, [pc, #52] ; (b90 <usart_async_read+0x68>)
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 <usart_async_read+0x42>
b66: 42bd cmp r5, r7
b68: d105 bne.n b76 <usart_async_read+0x4e>
}
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 <usart_async_read+0x14>
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 <usart_async_read+0x3a>
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 <usart_async_init>:
{
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 <usart_async_init+0x16>
ba4: b309 cbz r1, bea <usart_async_init+0x52>
ba6: b312 cbz r2, bee <usart_async_init+0x56>
ba8: 1e18 subs r0, r3, #0
baa: bf18 it ne
bac: 2001 movne r0, #1
bae: 4912 ldr r1, [pc, #72] ; (bf8 <usart_async_init+0x60>)
bb0: 4b12 ldr r3, [pc, #72] ; (bfc <usart_async_init+0x64>)
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 <usart_async_init+0x68>)
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 <usart_async_init+0x5a>
init_status = _usart_async_init(&descr->device, hw);
bc4: 4b0f ldr r3, [pc, #60] ; (c04 <usart_async_init+0x6c>)
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 <usart_async_init+0x50>
descr->io.read = usart_async_read;
bd0: 4b0d ldr r3, [pc, #52] ; (c08 <usart_async_init+0x70>)
bd2: 6063 str r3, [r4, #4]
descr->io.write = usart_async_write;
bd4: 4b0d ldr r3, [pc, #52] ; (c0c <usart_async_init+0x74>)
bd6: 6023 str r3, [r4, #0]
descr->device.usart_cb.tx_byte_sent = usart_process_byte_sent;
bd8: 4b0d ldr r3, [pc, #52] ; (c10 <usart_async_init+0x78>)
bda: 60a3 str r3, [r4, #8]
descr->device.usart_cb.rx_done_cb = usart_fill_rx_buffer;
bdc: 4b0d ldr r3, [pc, #52] ; (c14 <usart_async_init+0x7c>)
bde: 60e3 str r3, [r4, #12]
descr->device.usart_cb.tx_done_cb = usart_transmission_complete;
be0: 4b0d ldr r3, [pc, #52] ; (c18 <usart_async_init+0x80>)
be2: 6123 str r3, [r4, #16]
descr->device.usart_cb.error_cb = usart_error;
be4: 4b0d ldr r3, [pc, #52] ; (c1c <usart_async_init+0x84>)
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 <usart_async_init+0x16>
bee: 4610 mov r0, r2
bf0: e7dd b.n bae <usart_async_init+0x16>
return ERR_INVALID_ARG;
bf2: f06f 000c mvn.w r0, #12
bf6: e7f7 b.n be8 <usart_async_init+0x50>
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 <usart_async_enable>:
{
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 <usart_async_enable+0x20>)
c2c: 4b05 ldr r3, [pc, #20] ; (c44 <usart_async_enable+0x24>)
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 <usart_async_enable+0x28>)
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 <ringbuffer_init>:
/**
* \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 <ringbuffer_init+0x12>
c56: b189 cbz r1, c7c <ringbuffer_init+0x30>
c58: 1e10 subs r0, r2, #0
c5a: bf18 it ne
c5c: 2001 movne r0, #1
c5e: 4908 ldr r1, [pc, #32] ; (c80 <ringbuffer_init+0x34>)
c60: 4b08 ldr r3, [pc, #32] ; (c84 <ringbuffer_init+0x38>)
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 <ringbuffer_init+0x12>
c80: 00016412 .word 0x00016412
c84: 00000655 .word 0x00000655
00000c88 <ringbuffer_get>:
/**
* \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 <ringbuffer_get+0xe>
c90: 1e08 subs r0, r1, #0
c92: bf18 it ne
c94: 2001 movne r0, #1
c96: 4b0a ldr r3, [pc, #40] ; (cc0 <ringbuffer_get+0x38>)
c98: 490a ldr r1, [pc, #40] ; (cc4 <ringbuffer_get+0x3c>)
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 <ringbuffer_get+0x32>
*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 <ringbuffer_get+0x30>
cc0: 00000655 .word 0x00000655
cc4: 00016412 .word 0x00016412
00000cc8 <ringbuffer_put>:
/**
* \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 <ringbuffer_put+0x38>)
cd0: 490c ldr r1, [pc, #48] ; (d04 <ringbuffer_put+0x3c>)
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 <ringbuffer_num>:
/**
* \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 <ringbuffer_num+0x18>)
d0c: 4b05 ldr r3, [pc, #20] ; (d24 <ringbuffer_num+0x1c>)
{
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 <hri_tc_wait_for_sync>:
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 <hri_tc_wait_for_sync>
};
}
d2e: 4770 bx lr
00000d30 <get_tc_index>:
* \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 <get_tc_index+0x44>)
{
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 <get_tc_index+0x28>
if (_tcs[i].number == index) {
d52: b930 cbnz r0, d62 <get_tc_index+0x32>
}
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 <get_tc_index+0x1a>
return i;
d5e: 2000 movs r0, #0
d60: e7f8 b.n d54 <get_tc_index+0x24>
ASSERT(false);
d62: 2000 movs r0, #0
d64: 4904 ldr r1, [pc, #16] ; (d78 <get_tc_index+0x48>)
d66: 4b05 ldr r3, [pc, #20] ; (d7c <get_tc_index+0x4c>)
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 <get_tc_index+0x24>
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 <TC0_Handler>:
tc_interrupt_handler(_tc0_dev);
f2c: 4b05 ldr r3, [pc, #20] ; (f44 <TC0_Handler+0x18>)
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 <TC0_Handler+0x14>
((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 <atomic_enter_critical>:
__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 <atomic_leave_critical>:
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_set_pin_direction>:
* 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 <gpio_set_pin_direction+0x32>
f74: 2902 cmp r1, #2
f76: d01f beq.n fb8 <gpio_set_pin_direction+0x54>
f78: bb29 cbnz r1, fc6 <gpio_set_pin_direction+0x62>
((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 <gpio_set_pin_direction+0x50>
((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 <gpio_set_pin_direction+0x6c>)
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 <gpio_set_pin_direction+0x22>
break;
default:
ASSERT(false);
fc6: 4903 ldr r1, [pc, #12] ; (fd4 <gpio_set_pin_direction+0x70>)
fc8: 4b03 ldr r3, [pc, #12] ; (fd8 <gpio_set_pin_direction+0x74>)
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 <gpio_set_pin_pull_mode>:
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 <gpio_set_pin_pull_mode+0x2c>
1054: 2902 cmp r1, #2
1056: d01d beq.n 1094 <gpio_set_pin_pull_mode+0x4c>
1058: bb69 cbnz r1, 10b6 <gpio_set_pin_pull_mode+0x6e>
((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 <gpio_set_pin_pull_mode+0x78>)
10b8: 4b02 ldr r3, [pc, #8] ; (10c4 <gpio_set_pin_pull_mode+0x7c>)
10ba: 2289 movs r2, #137 ; 0x89
10bc: 2000 movs r0, #0
10be: 4718 bx r3
10c0: 00016480 .word 0x00016480
10c4: 00000655 .word 0x00000655
000010c8 <p_gpio_set_port_data>:
}
}
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 <p_gpio_parallel_write>:
{
10f4: b538 push {r3, r4, r5, lr}
10f6: 4c05 ldr r4, [pc, #20] ; (110c <p_gpio_parallel_write+0x18>)
p_gpio_set_port_data(group, mask, (uint32_t)data);
10f8: 4b05 ldr r3, [pc, #20] ; (1110 <p_gpio_parallel_write+0x1c>)
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 <p_gpio_parallel_write_arr>:
{
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 <p_gpio_parallel_write_arr+0x24>)
{
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 <p_gpio_parallel_write_arr+0x16>
}
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 <p_gpio_parallel_write_arr+0xe>
1136: bf00 nop
1138: 000010f5 .word 0x000010f5
0000113c <p_gpio_set_port_group_config>:
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 <p_gpio_set_port_group_config+0x5c>)
_gpio_set_pin_function(pin, function);
1144: f8df a058 ldr.w sl, [pc, #88] ; 11a0 <p_gpio_set_port_group_config+0x64>
{
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 <p_gpio_set_port_group_config+0x52>
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 <p_gpio_set_port_group_config+0x60>)
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 <p_gpio_set_port_group_config+0x5c>)
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 <p_gpio_set_port_group_config+0x16>
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 <p_gpio_init>:
{
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 <p_gpio_init+0xb0>)
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 <p_gpio_init+0xb4>)
gpio_set_pin_direction(SSD1963_TFT_CS, GPIO_DIRECTION_OUT);
11bc: f8df 80a8 ldr.w r8, [pc, #168] ; 1268 <p_gpio_init+0xc4>
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 <p_gpio_init+0xb8>)
_gpio_set_pin_function(pin, function);
11d0: 4e23 ldr r6, [pc, #140] ; (1260 <p_gpio_init+0xbc>)
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 <p_gpio_init+0xc0>)
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 <p_i2c_init>:
//// 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 <TIMER_0_task1_cb>:
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 <TIMER_0_task1_cb+0x1c>)
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 <TIMER_0_task1_cb+0x20>)
}
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 <p_tcc_init>:
//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 <p_tcc_init+0x4c>)
1298: 4b12 ldr r3, [pc, #72] ; (12e4 <p_tcc_init+0x50>)
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 <p_tcc_init+0x54>)
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 <p_tcc_init+0x58>)
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 <p_tcc_init+0x5c>)
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 <p_tcc_init+0x60>)
12b2: 4798 blx r3
12b4: f104 051c add.w r5, r4, #28
12b8: 4602 mov r2, r0
12ba: 490f ldr r1, [pc, #60] ; (12f8 <p_tcc_init+0x64>)
12bc: 4b0f ldr r3, [pc, #60] ; (12fc <p_tcc_init+0x68>)
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 <p_tcc_init+0x6c>)
//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 <p_tcc_init+0x70>)
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 <p_tcc_init+0x74>)
}
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 <p_usart_init>:
130c: 4b21 ldr r3, [pc, #132] ; (1394 <p_usart_init+0x88>)
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 <p_usart_init+0x8c>)
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 <p_usart_init+0x90>)
1320: 6953 ldr r3, [r2, #20]
1322: 4d1f ldr r5, [pc, #124] ; (13a0 <p_usart_init+0x94>)
1324: f443 5380 orr.w r3, r3, #4096 ; 0x1000
1328: 6153 str r3, [r2, #20]
132a: 4a1e ldr r2, [pc, #120] ; (13a4 <p_usart_init+0x98>)
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 <p_usart_init+0x9c>)
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 <p_usart_init+0xa0>)
1380: 4798 blx r3
io_write(&p_usart_debug_inst.io, example_USART_0, 12);
1382: 490b ldr r1, [pc, #44] ; (13b0 <p_usart_init+0xa4>)
1384: 4b0b ldr r3, [pc, #44] ; (13b4 <p_usart_init+0xa8>)
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 <p_screen_init>:
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 <p_screen_init+0x6c>)
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 <p_screen_init+0x70>)
13be: 4d1b ldr r5, [pc, #108] ; (142c <p_screen_init+0x74>)
{
13c0: b08d sub sp, #52 ; 0x34
lv_init();
13c2: 4798 blx r3
ssd1963_init();
13c4: 4b1a ldr r3, [pc, #104] ; (1430 <p_screen_init+0x78>)
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 <p_screen_init+0x7c>)
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 <p_screen_init+0x80>)
13d8: 4798 blx r3
disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/
13da: 4b18 ldr r3, [pc, #96] ; (143c <p_screen_init+0x84>)
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 <p_screen_init+0x88>)
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 <p_screen_init+0x8c>)
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 <p_screen_init+0x90>)
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 <p_screen_init+0x94>)
13f6: 4916 ldr r1, [pc, #88] ; (1450 <p_screen_init+0x98>)
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 <p_screen_init+0x9c>)
1404: 47a8 blx r5
lv_obj_t* random_text = lv_label_create(scr, NULL);
1406: 4b14 ldr r3, [pc, #80] ; (1458 <p_screen_init+0xa0>)
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 <p_screen_init+0xa4>)
1418: 4b11 ldr r3, [pc, #68] ; (1460 <p_screen_init+0xa8>)
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 <p_screen_service>:
void p_screen_service(void)
{
lv_task_handler();
1464: 4b00 ldr r3, [pc, #0] ; (1468 <p_screen_service+0x4>)
1466: 4718 bx r3
1468: 0000f9fd .word 0x0000f9fd
0000146c <ssd1963_cmd>:
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
146c: 4909 ldr r1, [pc, #36] ; (1494 <ssd1963_cmd+0x28>)
/**
* 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 <ssd1963_cmd+0x2c>)
{
1476: 4602 mov r2, r0
if(cmd_mode == false) {
1478: 7818 ldrb r0, [r3, #0]
147a: b918 cbnz r0, 1484 <ssd1963_cmd+0x18>
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 <ssd1963_cmd+0x30>)
1486: 4906 ldr r1, [pc, #24] ; (14a0 <ssd1963_cmd+0x34>)
1488: 4806 ldr r0, [pc, #24] ; (14a4 <ssd1963_cmd+0x38>)
148a: 4798 blx r3
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
148c: 4b01 ldr r3, [pc, #4] ; (1494 <ssd1963_cmd+0x28>)
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 <ssd1963_data>:
((Port *)hw)->Group[submodule_index].OUTCLR.reg = mask;
14a8: 4909 ldr r1, [pc, #36] ; (14d0 <ssd1963_data+0x28>)
/**
* 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 <ssd1963_data+0x2c>)
{
14b2: 4602 mov r2, r0
if(cmd_mode != false) {
14b4: 7818 ldrb r0, [r3, #0]
14b6: b118 cbz r0, 14c0 <ssd1963_data+0x18>
((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 <ssd1963_data+0x30>)
14c2: 4906 ldr r1, [pc, #24] ; (14dc <ssd1963_data+0x34>)
14c4: 4806 ldr r0, [pc, #24] ; (14e0 <ssd1963_data+0x38>)
14c6: 4798 blx r3
14c8: 4b01 ldr r3, [pc, #4] ; (14d0 <ssd1963_data+0x28>)
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 <ssd1963_init>:
{
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 <ssd1963_init+0x184>)
LV_DRV_DELAY_MS(50);
14ec: 4e5f ldr r6, [pc, #380] ; (166c <ssd1963_init+0x188>)
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_init+0x18c>)
ssd1963_data(0x2F); //N=0x36 for 6.5M, 0x23 for 10M crystal
151a: 4c56 ldr r4, [pc, #344] ; (1674 <ssd1963_init+0x190>)
ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size
151c: f8df 9160 ldr.w r9, [pc, #352] ; 1680 <ssd1963_init+0x19c>
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 <ssd1963_init+0x194>)
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_init+0x198>)
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 <ssd1963_init+0x1a0>
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 <ssd1963_flush>:
{
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 <ssd1963_flush+0x120>
if(area->y2 < 0) return;
16a4: f9b1 3006 ldrsh.w r3, [r1, #6]
16a8: 2b00 cmp r3, #0
16aa: db7d blt.n 17a8 <ssd1963_flush+0x120>
if(area->x1 > SSD1963_HOR_RES - 1) return;
16ac: 4f41 ldr r7, [pc, #260] ; (17b4 <ssd1963_flush+0x12c>)
16ae: f8df a118 ldr.w sl, [pc, #280] ; 17c8 <ssd1963_flush+0x140>
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 <ssd1963_flush+0x120>
if(area->y1 > SSD1963_VER_RES - 1) return;
16be: 47b8 blx r7
16c0: f8df b108 ldr.w fp, [pc, #264] ; 17cc <ssd1963_flush+0x144>
16c4: 47d8 blx fp
16c6: f9b5 6002 ldrsh.w r6, [r5, #2]
16ca: 42b0 cmp r0, r6
16cc: dd6c ble.n 17a8 <ssd1963_flush+0x120>
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 <ssd1963_flush+0x106>
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 <ssd1963_flush+0x10a>
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_flush+0x148>
ssd1963_data(act_x1 >> 8);
1704: f8df b0cc ldr.w fp, [pc, #204] ; 17d4 <ssd1963_flush+0x14c>
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 <ssd1963_flush+0x130>)
1748: 4b1c ldr r3, [pc, #112] ; (17bc <ssd1963_flush+0x134>)
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 <ssd1963_flush+0xd0>
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 <ssd1963_flush+0x138>)
1762: f8df b074 ldr.w fp, [pc, #116] ; 17d8 <ssd1963_flush+0x150>
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 <ssd1963_flush+0x154>
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 <ssd1963_flush+0x10e>
((Port *)hw)->Group[submodule_index].OUTSET.reg = mask;
1776: 4b11 ldr r3, [pc, #68] ; (17bc <ssd1963_flush+0x134>)
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 <ssd1963_flush+0x13c>)
}
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 <ssd1963_flush+0x66>
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 <ssd1963_flush+0x78>
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 <ssd1963_flush+0x138>)
17a4: b236 sxth r6, r6
17a6: e7e4 b.n 1772 <ssd1963_flush+0xea>
}
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 <lv_debug_check_null>:
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_debug_log_error>:
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 <lv_debug_log_error+0x70>)
{
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 <lv_debug_log_error+0x66>
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 <lv_debug_log_error+0x74>)
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 <lv_debug_log_error+0x78>)
*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 <lv_debug_log_error+0x36>
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 <lv_debug_log_error+0x7c>)
183e: 9500 str r5, [sp, #0]
1840: 22bc movs r2, #188 ; 0xbc
}
else {
LV_LOG_ERROR(msg);
1842: 4909 ldr r1, [pc, #36] ; (1868 <lv_debug_log_error+0x80>)
1844: 4c09 ldr r4, [pc, #36] ; (186c <lv_debug_log_error+0x84>)
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 <lv_debug_log_error+0x7c>)
1850: 9700 str r7, [sp, #0]
1852: 22bf movs r2, #191 ; 0xbf
1854: e7f5 b.n 1842 <lv_debug_log_error+0x5a>
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 <lv_disp_get_scr_act>:
* @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 <lv_disp_get_scr_act+0x24>
1876: 4b08 ldr r3, [pc, #32] ; (1898 <lv_disp_get_scr_act+0x28>)
1878: 4798 blx r3
if(!disp) {
187a: 4604 mov r4, r0
187c: b950 cbnz r0, 1894 <lv_disp_get_scr_act+0x24>
LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen");
187e: 4b07 ldr r3, [pc, #28] ; (189c <lv_disp_get_scr_act+0x2c>)
1880: 9300 str r3, [sp, #0]
1882: 4907 ldr r1, [pc, #28] ; (18a0 <lv_disp_get_scr_act+0x30>)
1884: 4b07 ldr r3, [pc, #28] ; (18a4 <lv_disp_get_scr_act+0x34>)
1886: 4d08 ldr r5, [pc, #32] ; (18a8 <lv_disp_get_scr_act+0x38>)
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 <lv_disp_get_scr_act+0x1e>
1898: 0000d8fd .word 0x0000d8fd
189c: 0001eb80 .word 0x0001eb80
18a0: 0001eb50 .word 0x0001eb50
18a4: 0001ecf0 .word 0x0001ecf0
18a8: 0000e8e9 .word 0x0000e8e9
000018ac <lv_disp_get_layer_top>:
* 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 <lv_disp_get_layer_top+0x24>
18b2: 4b08 ldr r3, [pc, #32] ; (18d4 <lv_disp_get_layer_top+0x28>)
18b4: 4798 blx r3
if(!disp) {
18b6: 4604 mov r4, r0
18b8: b950 cbnz r0, 18d0 <lv_disp_get_layer_top+0x24>
LV_LOG_WARN("lv_layer_top: no display registered to get its top layer");
18ba: 4b07 ldr r3, [pc, #28] ; (18d8 <lv_disp_get_layer_top+0x2c>)
18bc: 9300 str r3, [sp, #0]
18be: 4907 ldr r1, [pc, #28] ; (18dc <lv_disp_get_layer_top+0x30>)
18c0: 4b07 ldr r3, [pc, #28] ; (18e0 <lv_disp_get_layer_top+0x34>)
18c2: 4d08 ldr r5, [pc, #32] ; (18e4 <lv_disp_get_layer_top+0x38>)
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 <lv_disp_get_layer_top+0x1e>
18d4: 0000d8fd .word 0x0000d8fd
18d8: 0001ebb9 .word 0x0001ebb9
18dc: 0001eb50 .word 0x0001eb50
18e0: 0001ed04 .word 0x0001ed04
18e4: 0000e8e9 .word 0x0000e8e9
000018e8 <lv_disp_get_layer_sys>:
* 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 <lv_disp_get_layer_sys+0x24>
18ee: 4b08 ldr r3, [pc, #32] ; (1910 <lv_disp_get_layer_sys+0x28>)
18f0: 4798 blx r3
if(!disp) {
18f2: 4604 mov r4, r0
18f4: b950 cbnz r0, 190c <lv_disp_get_layer_sys+0x24>
LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer");
18f6: 4b07 ldr r3, [pc, #28] ; (1914 <lv_disp_get_layer_sys+0x2c>)
18f8: 9300 str r3, [sp, #0]
18fa: 4907 ldr r1, [pc, #28] ; (1918 <lv_disp_get_layer_sys+0x30>)
18fc: 4b07 ldr r3, [pc, #28] ; (191c <lv_disp_get_layer_sys+0x34>)
18fe: 4d08 ldr r5, [pc, #32] ; (1920 <lv_disp_get_layer_sys+0x38>)
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 <lv_disp_get_layer_sys+0x1e>
1910: 0000d8fd .word 0x0000d8fd
1914: 0001ebf2 .word 0x0001ebf2
1918: 0001eb50 .word 0x0001eb50
191c: 0001ed1a .word 0x0001ed1a
1920: 0000e8e9 .word 0x0000e8e9
00001924 <obj_to_foreground>:
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 <obj_to_foreground+0x28>)
lv_obj_t * last_top = NULL;
1928: 2400 movs r4, #0
while(i != NULL) {
192a: b928 cbnz r0, 1938 <obj_to_foreground+0x14>
}
if(last_top != NULL) {
192c: b164 cbz r4, 1948 <obj_to_foreground+0x24>
/*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 <obj_to_foreground+0x2c>)
}
}
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 <obj_to_foreground+0x6>
}
1948: bd70 pop {r4, r5, r6, pc}
194a: bf00 nop
194c: 00002125 .word 0x00002125
1950: 00002811 .word 0x00002811
00001954 <focus_next_core>:
{
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 <focus_next_core+0xcc>
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 <focus_next_core+0xe0>
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 <focus_next_core+0xba>
if(group->wrap || obj_sentinel == NULL) {
1974: 7d2b ldrb r3, [r5, #20]
1976: 06db lsls r3, r3, #27
1978: d401 bmi.n 197e <focus_next_core+0x2a>
197a: 2e00 cmp r6, #0
197c: d150 bne.n 1a20 <focus_next_core+0xcc>
if(!can_begin) return;
197e: f1b9 0f00 cmp.w r9, #0
1982: d04d beq.n 1a20 <focus_next_core+0xcc>
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 <focus_next_core+0xb0>
if(obj_sentinel == NULL) return; /*Group is empty*/
198e: 2800 cmp r0, #0
1990: d046 beq.n 1a20 <focus_next_core+0xcc>
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 <focus_next_core+0x1c>
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 <focus_next_core+0xcc>
if(group->obj_focus) {
19a8: 4e1f ldr r6, [pc, #124] ; (1a28 <focus_next_core+0xd4>)
19aa: b17b cbz r3, 19cc <focus_next_core+0x78>
(*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 <focus_next_core+0xcc>
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 <focus_next_core+0xd8>)
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 <focus_next_core+0xcc>
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 <focus_next_core+0xdc>)
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 <focus_next_core+0xd8>)
19f4: 4798 blx r3
if(group->focus_cb) group->focus_cb(group);
19f6: 692b ldr r3, [r5, #16]
19f8: b193 cbz r3, 1a20 <focus_next_core+0xcc>
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 <focus_next_core+0x44>
1a0c: e7b2 b.n 1974 <focus_next_core+0x20>
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 <focus_next_core+0xb4>
}
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 <lv_group_focus_next>:
focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next);
1a48: 4a01 ldr r2, [pc, #4] ; (1a50 <lv_group_focus_next+0x8>)
1a4a: 4902 ldr r1, [pc, #8] ; (1a54 <lv_group_focus_next+0xc>)
1a4c: 4b02 ldr r3, [pc, #8] ; (1a58 <lv_group_focus_next+0x10>)
1a4e: 4718 bx r3
1a50: 0000e6b5 .word 0x0000e6b5
1a54: 0000e6a9 .word 0x0000e6a9
1a58: 00001955 .word 0x00001955
00001a5c <lv_group_focus_prev>:
focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev);
1a5c: 4a01 ldr r2, [pc, #4] ; (1a64 <lv_group_focus_prev+0x8>)
1a5e: 4902 ldr r1, [pc, #8] ; (1a68 <lv_group_focus_prev+0xc>)
1a60: 4b02 ldr r3, [pc, #8] ; (1a6c <lv_group_focus_prev+0x10>)
1a62: 4718 bx r3
1a64: 0000e6d5 .word 0x0000e6d5
1a68: 0000e6af .word 0x0000e6af
1a6c: 00001955 .word 0x00001955
00001a70 <lv_group_refocus>:
{
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_refocus+0x24>)
lv_group_focus_prev(g);
1a86: 4b04 ldrmi r3, [pc, #16] ; (1a98 <lv_group_refocus+0x28>)
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 <lv_group_add_obj>:
{
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_group_add_obj+0x7a>
_LV_LL_READ(group->obj_ll, obj_i) {
1aa8: f8df 80c4 ldr.w r8, [pc, #196] ; 1b70 <lv_group_add_obj+0xd4>
1aac: 4e24 ldr r6, [pc, #144] ; (1b40 <lv_group_add_obj+0xa4>)
1aae: 47c0 blx r8
1ab0: bb30 cbnz r0, 1b00 <lv_group_add_obj+0x64>
if(obj->group_p) {
1ab2: 6bab ldr r3, [r5, #56] ; 0x38
1ab4: b173 cbz r3, 1ad4 <lv_group_add_obj+0x38>
if(lv_obj_is_focused(obj)) {
1ab6: 4b23 ldr r3, [pc, #140] ; (1b44 <lv_group_add_obj+0xa8>)
1ab8: 4628 mov r0, r5
1aba: 4798 blx r3
1abc: b150 cbz r0, 1ad4 <lv_group_add_obj+0x38>
lv_group_refocus(obj->group_p);
1abe: 6ba8 ldr r0, [r5, #56] ; 0x38
1ac0: 4b21 ldr r3, [pc, #132] ; (1b48 <lv_group_add_obj+0xac>)
LV_LOG_INFO("lv_group_add_obj: assign object to an other group");
1ac2: 4e22 ldr r6, [pc, #136] ; (1b4c <lv_group_add_obj+0xb0>)
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 <lv_group_add_obj+0xb4>)
1ac8: 9300 str r3, [sp, #0]
1aca: 4922 ldr r1, [pc, #136] ; (1b54 <lv_group_add_obj+0xb8>)
1acc: 4b22 ldr r3, [pc, #136] ; (1b58 <lv_group_add_obj+0xbc>)
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 <lv_group_add_obj+0xc0>)
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_group_add_obj+0xc4>)
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 <lv_group_add_obj+0x88>
1ae6: 4b1c ldr r3, [pc, #112] ; (1b58 <lv_group_add_obj+0xbc>)
1ae8: 491a ldr r1, [pc, #104] ; (1b54 <lv_group_add_obj+0xb8>)
1aea: 9300 str r3, [sp, #0]
1aec: 2285 movs r2, #133 ; 0x85
1aee: 2003 movs r0, #3
1af0: 4c16 ldr r4, [pc, #88] ; (1b4c <lv_group_add_obj+0xb0>)
1af2: 47a0 blx r4
1af4: 481b ldr r0, [pc, #108] ; (1b64 <lv_group_add_obj+0xc8>)
1af6: 491c ldr r1, [pc, #112] ; (1b68 <lv_group_add_obj+0xcc>)
1af8: 4632 mov r2, r6
1afa: 463b mov r3, r7
1afc: 4788 blx r1
1afe: e7fe b.n 1afe <lv_group_add_obj+0x62>
if((*obj_i) == obj) {
1b00: 6803 ldr r3, [r0, #0]
1b02: 42ab cmp r3, r5
1b04: d10a bne.n 1b1c <lv_group_add_obj+0x80>
LV_LOG_INFO("lv_group_add_obj: the object is already added to this group");
1b06: 4b19 ldr r3, [pc, #100] ; (1b6c <lv_group_add_obj+0xd0>)
1b08: 9300 str r3, [sp, #0]
1b0a: 4912 ldr r1, [pc, #72] ; (1b54 <lv_group_add_obj+0xb8>)
1b0c: 4b12 ldr r3, [pc, #72] ; (1b58 <lv_group_add_obj+0xbc>)
1b0e: 4c0f ldr r4, [pc, #60] ; (1b4c <lv_group_add_obj+0xb0>)
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 <lv_group_add_obj+0x14>
if(next == NULL) return;
1b24: 2e00 cmp r6, #0
1b26: d0f6 beq.n 1b16 <lv_group_add_obj+0x7a>
*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_add_obj+0x7a>
lv_group_refocus(group);
1b32: 4b05 ldr r3, [pc, #20] ; (1b48 <lv_group_add_obj+0xac>)
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 <lv_group_remove_obj>:
{
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 <lv_group_remove_obj+0x72>
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 <lv_group_remove_obj+0x72>
if(*g->obj_focus == obj) {
1b84: 681b ldr r3, [r3, #0]
1b86: 4d1c ldr r5, [pc, #112] ; (1bf8 <lv_group_remove_obj+0x84>)
1b88: 4283 cmp r3, r0
1b8a: d11b bne.n 1bc4 <lv_group_remove_obj+0x50>
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 <lv_group_remove_obj+0x74>
1ba2: 4b16 ldr r3, [pc, #88] ; (1bfc <lv_group_remove_obj+0x88>)
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 <lv_group_remove_obj+0x74>
(*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 <lv_group_remove_obj+0x8c>)
1bca: 4605 mov r5, r0
1bcc: b15d cbz r5, 1be6 <lv_group_remove_obj+0x72>
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_group_remove_obj+0x7c>
_lv_ll_remove(&g->obj_ll, i);
1bd8: 4b0a ldr r3, [pc, #40] ; (1c04 <lv_group_remove_obj+0x90>)
1bda: 4798 blx r3
lv_mem_free(i);
1bdc: 4b0a ldr r3, [pc, #40] ; (1c08 <lv_group_remove_obj+0x94>)
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 <lv_group_remove_obj+0x98>)
1bea: 4620 mov r0, r4
1bec: 4798 blx r3
1bee: e7e3 b.n 1bb8 <lv_group_remove_obj+0x44>
_LV_LL_READ(g->obj_ll, i) {
1bf0: 47b8 blx r7
1bf2: 4605 mov r5, r0
1bf4: e7ea b.n 1bcc <lv_group_remove_obj+0x58>
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 <lv_group_get_focused>:
if(!group) return NULL;
1c10: b110 cbz r0, 1c18 <lv_group_get_focused+0x8>
if(group->obj_focus == NULL) return NULL;
1c12: 68c0 ldr r0, [r0, #12]
1c14: b100 cbz r0, 1c18 <lv_group_get_focused+0x8>
return *group->obj_focus;
1c16: 6800 ldr r0, [r0, #0]
}
1c18: 4770 bx lr
00001c1a <lv_group_get_editing>:
if(!group) return false;
1c1a: b110 cbz r0, 1c22 <lv_group_get_editing+0x8>
return group->editing ? true : false;
1c1c: 7d00 ldrb r0, [r0, #20]
1c1e: f3c0 0040 ubfx r0, r0, #1, #1
}
1c22: 4770 bx lr
00001c24 <lv_indev_reset.part.0>:
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 <lv_indev_reset.part.0+0x34>)
if(indev_act == i) indev_obj_act = NULL;
1c28: 4e0c ldr r6, [pc, #48] ; (1c5c <lv_indev_reset.part.0+0x38>)
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 <lv_indev_reset.part.0+0x12>
}
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 <lv_indev_reset.part.0+0x2e>
1c4c: 6bc3 ldr r3, [r0, #60] ; 0x3c
1c4e: 429c cmp r4, r3
1c50: d100 bne.n 1c54 <lv_indev_reset.part.0+0x30>
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 <lv_indev_reset.part.0+0xe>
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 <lv_indev_get_act>:
}
1c6c: 4b01 ldr r3, [pc, #4] ; (1c74 <lv_indev_get_act+0x8>)
1c6e: 6858 ldr r0, [r3, #4]
1c70: 4770 bx lr
1c72: bf00 nop
1c74: 200080ec .word 0x200080ec
00001c78 <lv_indev_reset>:
if(indev) {
1c78: 4603 mov r3, r0
1c7a: b190 cbz r0, 1ca2 <lv_indev_reset+0x2a>
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 <lv_indev_reset+0x34>)
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 <lv_indev_reset+0x24>
1c96: 6bda ldr r2, [r3, #60] ; 0x3c
1c98: 428a cmp r2, r1
1c9a: d105 bne.n 1ca8 <lv_indev_reset+0x30>
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 <lv_indev_reset+0x38>)
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 <lv_indev_get_obj_act>:
}
1cb4: 4b01 ldr r3, [pc, #4] ; (1cbc <lv_indev_get_obj_act+0x8>)
1cb6: 6818 ldr r0, [r3, #0]
1cb8: 4770 bx lr
1cba: bf00 nop
1cbc: 200080ec .word 0x200080ec
00001cc0 <refresh_children_position>:
* @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 <refresh_children_position+0x50>)
1cc8: f8df 9048 ldr.w r9, [pc, #72] ; 1d14 <refresh_children_position+0x54>
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 <refresh_children_position+0x24>
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 <refresh_children_position>
_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 <refresh_children_position+0x1e>
1d10: 0000e6a9 .word 0x0000e6a9
1d14: 0000e6b5 .word 0x0000e6b5
00001d18 <lv_area_copy>:
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 <lv_area_copy+0x6>
* @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 <lv_init>:
{
1d2c: b5f0 push {r4, r5, r6, r7, lr}
if(lv_initialized) {
1d2e: 4e20 ldr r6, [pc, #128] ; (1db0 <lv_init+0x84>)
1d30: 4d20 ldr r5, [pc, #128] ; (1db4 <lv_init+0x88>)
1d32: 7833 ldrb r3, [r6, #0]
{
1d34: b085 sub sp, #20
if(lv_initialized) {
1d36: b143 cbz r3, 1d4a <lv_init+0x1e>
LV_LOG_WARN("lv_init: already inited");
1d38: 4b1f ldr r3, [pc, #124] ; (1db8 <lv_init+0x8c>)
1d3a: 9300 str r3, [sp, #0]
1d3c: 491f ldr r1, [pc, #124] ; (1dbc <lv_init+0x90>)
1d3e: 4b20 ldr r3, [pc, #128] ; (1dc0 <lv_init+0x94>)
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_init+0x98>)
_lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t));
1d4c: 4c1e ldr r4, [pc, #120] ; (1dc8 <lv_init+0x9c>)
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_init+0xa0>)
_lv_mem_init();
1d50: 4798 blx r3
_lv_task_core_init();
1d52: 4b1f ldr r3, [pc, #124] ; (1dd0 <lv_init+0xa4>)
1d54: 4798 blx r3
_lv_fs_init();
1d56: 4b1f ldr r3, [pc, #124] ; (1dd4 <lv_init+0xa8>)
1d58: 4798 blx r3
_lv_anim_core_init();
1d5a: 4b1f ldr r3, [pc, #124] ; (1dd8 <lv_init+0xac>)
1d5c: 4798 blx r3
_lv_group_init();
1d5e: 4b1f ldr r3, [pc, #124] ; (1ddc <lv_init+0xb0>)
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 <lv_init+0xb4>)
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 <lv_init+0xb8>)
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 <lv_init+0xbc>)
1d7e: 4798 blx r3
_lv_refr_init();
1d80: 4b1a ldr r3, [pc, #104] ; (1dec <lv_init+0xc0>)
1d82: 4798 blx r3
_lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t));
1d84: 481a ldr r0, [pc, #104] ; (1df0 <lv_init+0xc4>)
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 <lv_init+0xc8>)
1d90: 47a0 blx r4
_lv_indev_init();
1d92: 4b19 ldr r3, [pc, #100] ; (1df8 <lv_init+0xcc>)
1d94: 4798 blx r3
_lv_img_decoder_init();
1d96: 4b19 ldr r3, [pc, #100] ; (1dfc <lv_init+0xd0>)
1d98: 4798 blx r3
lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE);
1d9a: 4b19 ldr r3, [pc, #100] ; (1e00 <lv_init+0xd4>)
1d9c: 2001 movs r0, #1
1d9e: 4798 blx r3
LV_LOG_INFO("lv_init ready");
1da0: 4b18 ldr r3, [pc, #96] ; (1e04 <lv_init+0xd8>)
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 <lv_init+0x94>)
1da8: 4904 ldr r1, [pc, #16] ; (1dbc <lv_init+0x90>)
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 <lv_init+0x18>
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 <lv_obj_set_adv_hittest>:
{
1e08: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
1e0a: 4b0e ldr r3, [pc, #56] ; (1e44 <lv_obj_set_adv_hittest+0x3c>)
{
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 <lv_obj_set_adv_hittest+0x2a>
1e16: 4b0c ldr r3, [pc, #48] ; (1e48 <lv_obj_set_adv_hittest+0x40>)
1e18: 490c ldr r1, [pc, #48] ; (1e4c <lv_obj_set_adv_hittest+0x44>)
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 <lv_obj_set_adv_hittest+0x48>)
1e24: 47b0 blx r6
1e26: 480b ldr r0, [pc, #44] ; (1e54 <lv_obj_set_adv_hittest+0x4c>)
1e28: 490b ldr r1, [pc, #44] ; (1e58 <lv_obj_set_adv_hittest+0x50>)
1e2a: 4622 mov r2, r4
1e2c: 462b mov r3, r5
1e2e: 4788 blx r1
1e30: e7fe b.n 1e30 <lv_obj_set_adv_hittest+0x28>
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 <lv_obj_set_click>:
{
1e5c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
1e5e: 4b0e ldr r3, [pc, #56] ; (1e98 <lv_obj_set_click+0x3c>)
{
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 <lv_obj_set_click+0x2a>
1e6a: 4b0c ldr r3, [pc, #48] ; (1e9c <lv_obj_set_click+0x40>)
1e6c: 490c ldr r1, [pc, #48] ; (1ea0 <lv_obj_set_click+0x44>)
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 <lv_obj_set_click+0x48>)
1e78: 47b0 blx r6
1e7a: 480b ldr r0, [pc, #44] ; (1ea8 <lv_obj_set_click+0x4c>)
1e7c: 490b ldr r1, [pc, #44] ; (1eac <lv_obj_set_click+0x50>)
1e7e: 4622 mov r2, r4
1e80: 462b mov r3, r5
1e82: 4788 blx r1
1e84: e7fe b.n 1e84 <lv_obj_set_click+0x28>
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 <lv_event_send_func>:
{
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_event_send_func+0x36>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
1ec0: 4b24 ldr r3, [pc, #144] ; (1f54 <lv_event_send_func+0xa4>)
1ec2: 4608 mov r0, r1
1ec4: 4798 blx r3
1ec6: 4605 mov r5, r0
1ec8: b968 cbnz r0, 1ee6 <lv_event_send_func+0x36>
1eca: 4b23 ldr r3, [pc, #140] ; (1f58 <lv_event_send_func+0xa8>)
1ecc: 4923 ldr r1, [pc, #140] ; (1f5c <lv_event_send_func+0xac>)
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 <lv_event_send_func+0xb0>)
1ed8: 47b0 blx r6
1eda: 4822 ldr r0, [pc, #136] ; (1f64 <lv_event_send_func+0xb4>)
1edc: 4922 ldr r1, [pc, #136] ; (1f68 <lv_event_send_func+0xb8>)
1ede: 4622 mov r2, r4
1ee0: 462b mov r3, r5
1ee2: 4788 blx r1
1ee4: e7fe b.n 1ee4 <lv_event_send_func+0x34>
if(event_temp_data_head) {
1ee6: 4d21 ldr r5, [pc, #132] ; (1f6c <lv_event_send_func+0xbc>)
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 <lv_event_send_func+0xc0>)
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 <lv_event_send_func+0x5c>
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 <lv_event_send_func+0x5c>
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 <lv_event_send_func+0x68>
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 <lv_event_send_func+0x9a>
if(obj) {
1f28: b18c cbz r4, 1f4e <lv_event_send_func+0x9e>
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 <lv_event_send_func+0x9e>
1f32: 6820 ldr r0, [r4, #0]
1f34: b158 cbz r0, 1f4e <lv_event_send_func+0x9e>
lv_res_t res = lv_event_send(obj->parent, event, data);
1f36: 4b0f ldr r3, [pc, #60] ; (1f74 <lv_event_send_func+0xc4>)
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 <lv_event_send_func+0x94>
return LV_RES_OK;
1f4e: 2001 movs r0, #1
1f50: e7f8 b.n 1f44 <lv_event_send_func+0x94>
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 <lv_event_send>:
{
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_event_send+0x42>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
1f82: 4a0f ldr r2, [pc, #60] ; (1fc0 <lv_event_send+0x48>)
1f84: 4790 blx r2
1f86: 9b03 ldr r3, [sp, #12]
1f88: 4605 mov r5, r0
1f8a: b968 cbnz r0, 1fa8 <lv_event_send+0x30>
1f8c: 4b0d ldr r3, [pc, #52] ; (1fc4 <lv_event_send+0x4c>)
1f8e: 490e ldr r1, [pc, #56] ; (1fc8 <lv_event_send+0x50>)
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 <lv_event_send+0x54>)
1f9a: 47b0 blx r6
1f9c: 480c ldr r0, [pc, #48] ; (1fd0 <lv_event_send+0x58>)
1f9e: 490d ldr r1, [pc, #52] ; (1fd4 <lv_event_send+0x5c>)
1fa0: 4622 mov r2, r4
1fa2: 462b mov r3, r5
1fa4: 4788 blx r1
1fa6: e7fe b.n 1fa6 <lv_event_send+0x2e>
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 <lv_event_send+0x60>)
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 <lv_obj_set_signal_cb>:
{
1fdc: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
1fde: 4b0b ldr r3, [pc, #44] ; (200c <lv_obj_set_signal_cb+0x30>)
{
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 <lv_obj_set_signal_cb+0x2a>
1fea: 4b09 ldr r3, [pc, #36] ; (2010 <lv_obj_set_signal_cb+0x34>)
1fec: 4909 ldr r1, [pc, #36] ; (2014 <lv_obj_set_signal_cb+0x38>)
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 <lv_obj_set_signal_cb+0x3c>)
1ff8: 47b0 blx r6
1ffa: 4808 ldr r0, [pc, #32] ; (201c <lv_obj_set_signal_cb+0x40>)
1ffc: 4908 ldr r1, [pc, #32] ; (2020 <lv_obj_set_signal_cb+0x44>)
1ffe: 4622 mov r2, r4
2000: 462b mov r3, r5
2002: 4788 blx r1
2004: e7fe b.n 2004 <lv_obj_set_signal_cb+0x28>
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 <lv_signal_send>:
if(obj == NULL) return LV_RES_OK;
2024: b110 cbz r0, 202c <lv_signal_send+0x8>
if(obj->signal_cb) res = obj->signal_cb(obj, signal, param);
2026: 69c3 ldr r3, [r0, #28]
2028: b103 cbz r3, 202c <lv_signal_send+0x8>
202a: 4718 bx r3
}
202c: 2001 movs r0, #1
202e: 4770 bx lr
00002030 <lv_obj_set_design_cb>:
{
2030: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2032: 4b0b ldr r3, [pc, #44] ; (2060 <lv_obj_set_design_cb+0x30>)
{
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 <lv_obj_set_design_cb+0x2a>
203e: 4b09 ldr r3, [pc, #36] ; (2064 <lv_obj_set_design_cb+0x34>)
2040: 4909 ldr r1, [pc, #36] ; (2068 <lv_obj_set_design_cb+0x38>)
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 <lv_obj_set_design_cb+0x3c>)
204c: 47b0 blx r6
204e: 4808 ldr r0, [pc, #32] ; (2070 <lv_obj_set_design_cb+0x40>)
2050: 4908 ldr r1, [pc, #32] ; (2074 <lv_obj_set_design_cb+0x44>)
2052: 4622 mov r2, r4
2054: 462b mov r3, r5
2056: 4788 blx r1
2058: e7fe b.n 2058 <lv_obj_set_design_cb+0x28>
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 <lv_obj_allocate_ext_attr>:
{
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 <lv_obj_allocate_ext_attr+0x3c>)
{
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 <lv_obj_allocate_ext_attr+0x2c>
2088: 4b0b ldr r3, [pc, #44] ; (20b8 <lv_obj_allocate_ext_attr+0x40>)
208a: 490c ldr r1, [pc, #48] ; (20bc <lv_obj_allocate_ext_attr+0x44>)
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 <lv_obj_allocate_ext_attr+0x48>)
2096: 47b0 blx r6
2098: 480a ldr r0, [pc, #40] ; (20c4 <lv_obj_allocate_ext_attr+0x4c>)
209a: 490b ldr r1, [pc, #44] ; (20c8 <lv_obj_allocate_ext_attr+0x50>)
209c: 4622 mov r2, r4
209e: 462b mov r3, r5
20a0: 4788 blx r1
20a2: e7fe b.n 20a2 <lv_obj_allocate_ext_attr+0x2a>
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 <lv_obj_allocate_ext_attr+0x54>)
20a8: 4798 blx r3
if(new_ext == NULL) return NULL;
20aa: b100 cbz r0, 20ae <lv_obj_allocate_ext_attr+0x36>
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 <lv_obj_refresh_ext_draw_pad>:
{
20d0: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
20d2: 4b0e ldr r3, [pc, #56] ; (210c <lv_obj_refresh_ext_draw_pad+0x3c>)
{
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 <lv_obj_refresh_ext_draw_pad+0x28>
20dc: 4b0c ldr r3, [pc, #48] ; (2110 <lv_obj_refresh_ext_draw_pad+0x40>)
20de: 490d ldr r1, [pc, #52] ; (2114 <lv_obj_refresh_ext_draw_pad+0x44>)
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 <lv_obj_refresh_ext_draw_pad+0x48>)
20ea: 47b0 blx r6
20ec: 480b ldr r0, [pc, #44] ; (211c <lv_obj_refresh_ext_draw_pad+0x4c>)
20ee: 490c ldr r1, [pc, #48] ; (2120 <lv_obj_refresh_ext_draw_pad+0x50>)
20f0: 4622 mov r2, r4
20f2: 462b mov r3, r5
20f4: 4788 blx r1
20f6: e7fe b.n 20f6 <lv_obj_refresh_ext_draw_pad+0x26>
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 <lv_obj_get_parent>:
{
2124: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2126: 4b0b ldr r3, [pc, #44] ; (2154 <lv_obj_get_parent+0x30>)
{
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 <lv_obj_get_parent+0x28>
2130: 4b09 ldr r3, [pc, #36] ; (2158 <lv_obj_get_parent+0x34>)
2132: 490a ldr r1, [pc, #40] ; (215c <lv_obj_get_parent+0x38>)
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 <lv_obj_get_parent+0x3c>)
213e: 47b0 blx r6
2140: 4808 ldr r0, [pc, #32] ; (2164 <lv_obj_get_parent+0x40>)
2142: 4909 ldr r1, [pc, #36] ; (2168 <lv_obj_get_parent+0x44>)
2144: 4622 mov r2, r4
2146: 462b mov r3, r5
2148: 4788 blx r1
214a: e7fe b.n 214a <lv_obj_get_parent+0x26>
}
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 <lv_obj_get_screen>:
{
216c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
216e: 4b0e ldr r3, [pc, #56] ; (21a8 <lv_obj_get_screen+0x3c>)
{
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 <lv_obj_get_screen+0x20>
par = lv_obj_get_parent(act_p);
2178: 4e0c ldr r6, [pc, #48] ; (21ac <lv_obj_get_screen+0x40>)
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 <lv_obj_get_screen+0xe>
}
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 <lv_obj_get_screen+0x44>)
218e: 4909 ldr r1, [pc, #36] ; (21b4 <lv_obj_get_screen+0x48>)
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 <lv_obj_get_screen+0x4c>)
219a: 47b0 blx r6
219c: 4807 ldr r0, [pc, #28] ; (21bc <lv_obj_get_screen+0x50>)
219e: 4908 ldr r1, [pc, #32] ; (21c0 <lv_obj_get_screen+0x54>)
21a0: 4622 mov r2, r4
21a2: 462b mov r3, r5
21a4: 4788 blx r1
21a6: e7fe b.n 21a6 <lv_obj_get_screen+0x3a>
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 <lv_obj_get_disp>:
{
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 <lv_obj_get_disp+0x80>)
{
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 <lv_obj_get_disp+0x2a>
21d2: 4b1d ldr r3, [pc, #116] ; (2248 <lv_obj_get_disp+0x84>)
21d4: 491d ldr r1, [pc, #116] ; (224c <lv_obj_get_disp+0x88>)
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 <lv_obj_get_disp+0x8c>)
21e0: 47b0 blx r6
21e2: 481c ldr r0, [pc, #112] ; (2254 <lv_obj_get_disp+0x90>)
21e4: 491c ldr r1, [pc, #112] ; (2258 <lv_obj_get_disp+0x94>)
21e6: 462a mov r2, r5
21e8: 4623 mov r3, r4
21ea: 4788 blx r1
21ec: e7fe b.n 21ec <lv_obj_get_disp+0x28>
if(obj->parent == NULL)
21ee: 682b ldr r3, [r5, #0]
21f0: b11b cbz r3, 21fa <lv_obj_get_disp+0x36>
scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/
21f2: 4628 mov r0, r5
21f4: 4b19 ldr r3, [pc, #100] ; (225c <lv_obj_get_disp+0x98>)
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 <lv_obj_get_disp+0x9c>)
21fc: 4e19 ldr r6, [pc, #100] ; (2264 <lv_obj_get_disp+0xa0>)
_LV_LL_READ(d->scr_ll, s) {
21fe: 4f1a ldr r7, [pc, #104] ; (2268 <lv_obj_get_disp+0xa4>)
_LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) {
2200: f8df 805c ldr.w r8, [pc, #92] ; 2260 <lv_obj_get_disp+0x9c>
2204: 47b0 blx r6
2206: 4604 mov r4, r0
2208: b964 cbnz r4, 2224 <lv_obj_get_disp+0x60>
LV_LOG_WARN("lv_scr_get_disp: screen not found")
220a: 4b18 ldr r3, [pc, #96] ; (226c <lv_obj_get_disp+0xa8>)
220c: 9300 str r3, [sp, #0]
220e: 490f ldr r1, [pc, #60] ; (224c <lv_obj_get_disp+0x88>)
2210: 4b0d ldr r3, [pc, #52] ; (2248 <lv_obj_get_disp+0x84>)
2212: 4d0f ldr r5, [pc, #60] ; (2250 <lv_obj_get_disp+0x8c>)
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_obj_get_disp+0x74>
_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 <lv_obj_get_disp+0x44>
if(s == scr) return d;
2238: 4285 cmp r5, r0
223a: d0ef beq.n 221c <lv_obj_get_disp+0x58>
_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 <lv_obj_get_disp+0x68>
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 <lv_obj_get_child>:
{
2270: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2272: 4b10 ldr r3, [pc, #64] ; (22b4 <lv_obj_get_child+0x44>)
{
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 <lv_obj_get_child+0x2a>
227e: 4b0e ldr r3, [pc, #56] ; (22b8 <lv_obj_get_child+0x48>)
2280: 490e ldr r1, [pc, #56] ; (22bc <lv_obj_get_child+0x4c>)
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 <lv_obj_get_child+0x50>)
228c: 47a8 blx r5
228e: 480d ldr r0, [pc, #52] ; (22c4 <lv_obj_get_child+0x54>)
2290: 490d ldr r1, [pc, #52] ; (22c8 <lv_obj_get_child+0x58>)
2292: 4622 mov r2, r4
2294: 4633 mov r3, r6
2296: 4788 blx r1
2298: e7fe b.n 2298 <lv_obj_get_child+0x28>
result = _lv_ll_get_head(&obj->child_ll);
229a: 1d20 adds r0, r4, #4
if(child == NULL) {
229c: b925 cbnz r5, 22a8 <lv_obj_get_child+0x38>
result = _lv_ll_get_head(&obj->child_ll);
229e: 4b0b ldr r3, [pc, #44] ; (22cc <lv_obj_get_child+0x5c>)
}
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 <lv_obj_get_child+0x60>)
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 <lv_obj_get_coords>:
{
22d4: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
22d6: 4b0e ldr r3, [pc, #56] ; (2310 <lv_obj_get_coords+0x3c>)
{
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 <lv_obj_get_coords+0x2a>
22e2: 4b0c ldr r3, [pc, #48] ; (2314 <lv_obj_get_coords+0x40>)
22e4: 490c ldr r1, [pc, #48] ; (2318 <lv_obj_get_coords+0x44>)
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 <lv_obj_get_coords+0x48>)
22f0: 47b0 blx r6
22f2: 480b ldr r0, [pc, #44] ; (2320 <lv_obj_get_coords+0x4c>)
22f4: 490b ldr r1, [pc, #44] ; (2324 <lv_obj_get_coords+0x50>)
22f6: 4622 mov r2, r4
22f8: 462b mov r3, r5
22fa: 4788 blx r1
22fc: e7fe b.n 22fc <lv_obj_get_coords+0x28>
lv_area_copy(cords_p, &obj->coords);
22fe: 4b0a ldr r3, [pc, #40] ; (2328 <lv_obj_get_coords+0x54>)
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 <lv_obj_get_x>:
{
232c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
232e: 4b10 ldr r3, [pc, #64] ; (2370 <lv_obj_get_x+0x44>)
{
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 <lv_obj_get_x+0x28>
2338: 4b0e ldr r3, [pc, #56] ; (2374 <lv_obj_get_x+0x48>)
233a: 490f ldr r1, [pc, #60] ; (2378 <lv_obj_get_x+0x4c>)
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 <lv_obj_get_x+0x50>)
2346: 47b0 blx r6
2348: 480d ldr r0, [pc, #52] ; (2380 <lv_obj_get_x+0x54>)
234a: 490e ldr r1, [pc, #56] ; (2384 <lv_obj_get_x+0x58>)
234c: 4622 mov r2, r4
234e: 462b mov r3, r5
2350: 4788 blx r1
2352: e7fe b.n 2352 <lv_obj_get_x+0x26>
lv_obj_t * parent = lv_obj_get_parent(obj);
2354: 4b0c ldr r3, [pc, #48] ; (2388 <lv_obj_get_x+0x5c>)
2356: 4620 mov r0, r4
2358: 4798 blx r3
if(parent) {
235a: b128 cbz r0, 2368 <lv_obj_get_x+0x3c>
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 <lv_obj_get_x+0x38>
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 <lv_obj_get_y>:
{
238c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
238e: 4b10 ldr r3, [pc, #64] ; (23d0 <lv_obj_get_y+0x44>)
{
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 <lv_obj_get_y+0x28>
2398: 4b0e ldr r3, [pc, #56] ; (23d4 <lv_obj_get_y+0x48>)
239a: 490f ldr r1, [pc, #60] ; (23d8 <lv_obj_get_y+0x4c>)
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 <lv_obj_get_y+0x50>)
23a6: 47b0 blx r6
23a8: 480d ldr r0, [pc, #52] ; (23e0 <lv_obj_get_y+0x54>)
23aa: 490e ldr r1, [pc, #56] ; (23e4 <lv_obj_get_y+0x58>)
23ac: 4622 mov r2, r4
23ae: 462b mov r3, r5
23b0: 4788 blx r1
23b2: e7fe b.n 23b2 <lv_obj_get_y+0x26>
lv_obj_t * parent = lv_obj_get_parent(obj);
23b4: 4b0c ldr r3, [pc, #48] ; (23e8 <lv_obj_get_y+0x5c>)
23b6: 4620 mov r0, r4
23b8: 4798 blx r3
if(parent) {
23ba: b128 cbz r0, 23c8 <lv_obj_get_y+0x3c>
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 <lv_obj_get_y+0x38>
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 <lv_obj_get_width>:
{
23ec: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
23ee: 4b0d ldr r3, [pc, #52] ; (2424 <lv_obj_get_width+0x38>)
{
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 <lv_obj_get_width+0x28>
23f8: 4b0b ldr r3, [pc, #44] ; (2428 <lv_obj_get_width+0x3c>)
23fa: 490c ldr r1, [pc, #48] ; (242c <lv_obj_get_width+0x40>)
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 <lv_obj_get_width+0x44>)
2406: 47b0 blx r6
2408: 480a ldr r0, [pc, #40] ; (2434 <lv_obj_get_width+0x48>)
240a: 490b ldr r1, [pc, #44] ; (2438 <lv_obj_get_width+0x4c>)
240c: 4622 mov r2, r4
240e: 462b mov r3, r5
2410: 4788 blx r1
2412: e7fe b.n 2412 <lv_obj_get_width+0x26>
* @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 <lv_obj_get_height>:
{
243c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
243e: 4b0d ldr r3, [pc, #52] ; (2474 <lv_obj_get_height+0x38>)
{
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 <lv_obj_get_height+0x28>
2448: 4b0b ldr r3, [pc, #44] ; (2478 <lv_obj_get_height+0x3c>)
244a: 490c ldr r1, [pc, #48] ; (247c <lv_obj_get_height+0x40>)
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 <lv_obj_get_height+0x44>)
2456: 47b0 blx r6
2458: 480a ldr r0, [pc, #40] ; (2484 <lv_obj_get_height+0x48>)
245a: 490b ldr r1, [pc, #44] ; (2488 <lv_obj_get_height+0x4c>)
245c: 4622 mov r2, r4
245e: 462b mov r3, r5
2460: 4788 blx r1
2462: e7fe b.n 2462 <lv_obj_get_height+0x26>
* @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 <lv_obj_get_style_list>:
{
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 <lv_obj_get_style_list+0xa>
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 <lv_obj_get_style_list+0x24>)
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 <lv_obj_get_style_list+0x6>
24b0: 00002025 .word 0x00002025
000024b4 <trans_del>:
* @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 <trans_del+0x70>)
24be: 4b1a ldr r3, [pc, #104] ; (2528 <trans_del+0x74>)
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 <trans_del+0x70>
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 <trans_del+0x90>
{
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 <trans_del+0x22>
_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 <trans_del+0x1e>
tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
24da: 4b14 ldr r3, [pc, #80] ; (252c <trans_del+0x78>)
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 <trans_del+0x6c>
24ea: 79a1 ldrb r1, [r4, #6]
24ec: 42a9 cmp r1, r5
24ee: d001 beq.n 24f4 <trans_del+0x40>
24f0: 2dff cmp r5, #255 ; 0xff
24f2: d115 bne.n 2520 <trans_del+0x6c>
24f4: 88a2 ldrh r2, [r4, #4]
24f6: 42b2 cmp r2, r6
24f8: d001 beq.n 24fe <trans_del+0x4a>
24fa: 2eff cmp r6, #255 ; 0xff
24fc: d110 bne.n 2520 <trans_del+0x6c>
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 <trans_del+0x7c>)
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 <trans_del+0x80>)
2508: 4790 blx r2
lv_anim_del(tr, NULL);
250a: 4a0b ldr r2, [pc, #44] ; (2538 <trans_del+0x84>)
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 <trans_del+0x88>)
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 <trans_del+0x8c>)
251c: 4620 mov r0, r4
251e: 4790 blx r2
{
2520: 4654 mov r4, sl
2522: e7d5 b.n 24d0 <trans_del+0x1c>
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 <lv_obj_clean_style_list>:
{
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 <lv_obj_clean_style_list+0x3c>)
{
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_obj_clean_style_list+0x22>
LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`");
2554: 4b0c ldr r3, [pc, #48] ; (2588 <lv_obj_clean_style_list+0x40>)
2556: 9300 str r3, [sp, #0]
2558: 490c ldr r1, [pc, #48] ; (258c <lv_obj_clean_style_list+0x44>)
255a: 4b0d ldr r3, [pc, #52] ; (2590 <lv_obj_clean_style_list+0x48>)
255c: 4c0d ldr r4, [pc, #52] ; (2594 <lv_obj_clean_style_list+0x4c>)
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 <lv_obj_clean_style_list+0x50>)
256c: 4798 blx r3
trans_del(obj, part, 0xFF, NULL);
256e: 4620 mov r0, r4
2570: 4c0a ldr r4, [pc, #40] ; (259c <lv_obj_clean_style_list+0x54>)
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 <trans_anim_ready_cb>:
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 <trans_anim_ready_cb+0x5c>)
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 <trans_anim_ready_cb+0x60>)
25aa: 4e15 ldr r6, [pc, #84] ; (2600 <trans_anim_ready_cb+0x60>)
25ac: 4f15 ldr r7, [pc, #84] ; (2604 <trans_anim_ready_cb+0x64>)
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 <trans_anim_ready_cb+0x3a>
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 <trans_anim_ready_cb+0x28>
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 <trans_anim_ready_cb+0x68>)
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 <trans_anim_ready_cb+0x6c>)
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 <trans_anim_ready_cb+0x70>)
25c6: 4798 blx r3
}
_lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
25c8: 480d ldr r0, [pc, #52] ; (2600 <trans_anim_ready_cb+0x60>)
25ca: 4b12 ldr r3, [pc, #72] ; (2614 <trans_anim_ready_cb+0x74>)
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 <trans_anim_ready_cb+0x78>)
}
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 <trans_anim_ready_cb+0x54>
25de: 6802 ldr r2, [r0, #0]
25e0: 6823 ldr r3, [r4, #0]
25e2: 429a cmp r2, r3
25e4: d106 bne.n 25f4 <trans_anim_ready_cb+0x54>
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 <trans_anim_ready_cb+0x12>
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 <lv_obj_get_hidden>:
{
261c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
261e: 4b0c ldr r3, [pc, #48] ; (2650 <lv_obj_get_hidden+0x34>)
{
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 <lv_obj_get_hidden+0x28>
2628: 4b0a ldr r3, [pc, #40] ; (2654 <lv_obj_get_hidden+0x38>)
262a: 490b ldr r1, [pc, #44] ; (2658 <lv_obj_get_hidden+0x3c>)
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 <lv_obj_get_hidden+0x40>)
2636: 47b0 blx r6
2638: 4809 ldr r0, [pc, #36] ; (2660 <lv_obj_get_hidden+0x44>)
263a: 490a ldr r1, [pc, #40] ; (2664 <lv_obj_get_hidden+0x48>)
263c: 4622 mov r2, r4
263e: 462b mov r3, r5
2640: 4788 blx r1
2642: e7fe b.n 2642 <lv_obj_get_hidden+0x26>
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 <lv_obj_invalidate_area>:
{
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 <lv_obj_invalidate_area+0xdc>)
{
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 <lv_obj_invalidate_area+0x2e>
267a: 4b33 ldr r3, [pc, #204] ; (2748 <lv_obj_invalidate_area+0xe0>)
267c: 4933 ldr r1, [pc, #204] ; (274c <lv_obj_invalidate_area+0xe4>)
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 <lv_obj_invalidate_area+0xe8>)
2688: 47b0 blx r6
268a: 4832 ldr r0, [pc, #200] ; (2754 <lv_obj_invalidate_area+0xec>)
268c: 4932 ldr r1, [pc, #200] ; (2758 <lv_obj_invalidate_area+0xf0>)
268e: 4622 mov r2, r4
2690: 462b mov r3, r5
2692: 4788 blx r1
2694: e7fe b.n 2694 <lv_obj_invalidate_area+0x2c>
if(lv_obj_get_hidden(obj)) return;
2696: 4f31 ldr r7, [pc, #196] ; (275c <lv_obj_invalidate_area+0xf4>)
2698: 4620 mov r0, r4
269a: 47b8 blx r7
269c: 2800 cmp r0, #0
269e: d141 bne.n 2724 <lv_obj_invalidate_area+0xbc>
lv_obj_t * obj_scr = lv_obj_get_screen(obj);
26a0: 4b2f ldr r3, [pc, #188] ; (2760 <lv_obj_invalidate_area+0xf8>)
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_invalidate_area+0xfc>)
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_obj_invalidate_area+0x100>)
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_obj_invalidate_area+0xa8>
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 <lv_obj_invalidate_area+0x104>)
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 <lv_obj_invalidate_area+0x108>)
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_invalidate_area+0xbc>
lv_obj_t * par = lv_obj_get_parent(obj);
26fa: f8df 8084 ldr.w r8, [pc, #132] ; 2780 <lv_obj_invalidate_area+0x118>
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 <lv_obj_invalidate_area+0xc2>
if(is_common) _lv_inv_area(disp, &area_trunc);
2706: 4b1b ldr r3, [pc, #108] ; (2774 <lv_obj_invalidate_area+0x10c>)
2708: a904 add r1, sp, #16
270a: 4630 mov r0, r6
270c: 4798 blx r3
270e: e009 b.n 2724 <lv_obj_invalidate_area+0xbc>
if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) ||
2710: 4b19 ldr r3, [pc, #100] ; (2778 <lv_obj_invalidate_area+0x110>)
2712: 4630 mov r0, r6
2714: 4798 blx r3
2716: 4285 cmp r5, r0
2718: d0cd beq.n 26b6 <lv_obj_invalidate_area+0x4e>
obj_scr == lv_disp_get_layer_sys(disp)) {
271a: 4b18 ldr r3, [pc, #96] ; (277c <lv_obj_invalidate_area+0x114>)
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 <lv_obj_invalidate_area+0x4e>
}
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 <lv_obj_invalidate_area+0xbc>
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 <lv_obj_invalidate_area+0xbc>
par = lv_obj_get_parent(par);
2740: 4620 mov r0, r4
2742: e7dd b.n 2700 <lv_obj_invalidate_area+0x98>
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 <lv_obj_invalidate>:
{
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 <lv_obj_invalidate+0x6c>)
{
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 <lv_obj_invalidate+0x28>
2790: 4b18 ldr r3, [pc, #96] ; (27f4 <lv_obj_invalidate+0x70>)
2792: 4919 ldr r1, [pc, #100] ; (27f8 <lv_obj_invalidate+0x74>)
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 <lv_obj_invalidate+0x78>)
279e: 47b0 blx r6
27a0: 4817 ldr r0, [pc, #92] ; (2800 <lv_obj_invalidate+0x7c>)
27a2: 4918 ldr r1, [pc, #96] ; (2804 <lv_obj_invalidate+0x80>)
27a4: 462a mov r2, r5
27a6: 4623 mov r3, r4
27a8: 4788 blx r1
27aa: e7fe b.n 27aa <lv_obj_invalidate+0x26>
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 <lv_obj_invalidate+0x84>)
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 <lv_obj_invalidate+0x88>)
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 <lv_obj_move_foreground>:
{
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 <lv_obj_move_foreground+0x68>)
{
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 <lv_obj_move_foreground+0x28>
281c: 4b17 ldr r3, [pc, #92] ; (287c <lv_obj_move_foreground+0x6c>)
281e: 4918 ldr r1, [pc, #96] ; (2880 <lv_obj_move_foreground+0x70>)
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 <lv_obj_move_foreground+0x74>)
282a: 47b0 blx r6
282c: 4816 ldr r0, [pc, #88] ; (2888 <lv_obj_move_foreground+0x78>)
282e: 4917 ldr r1, [pc, #92] ; (288c <lv_obj_move_foreground+0x7c>)
2830: 462a mov r2, r5
2832: 4623 mov r3, r4
2834: 4788 blx r1
2836: e7fe b.n 2836 <lv_obj_move_foreground+0x26>
lv_obj_t * parent = lv_obj_get_parent(obj);
2838: 4b15 ldr r3, [pc, #84] ; (2890 <lv_obj_move_foreground+0x80>)
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_move_foreground+0x84>)
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_move_foreground+0x64>
lv_obj_invalidate(parent);
284c: 4e12 ldr r6, [pc, #72] ; (2898 <lv_obj_move_foreground+0x88>)
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 <lv_obj_move_foreground+0x8c>)
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 <lv_obj_set_pos>:
{
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 <lv_obj_set_pos+0xc0>)
{
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 <lv_obj_set_pos+0x30>
28b4: 4b2b ldr r3, [pc, #172] ; (2964 <lv_obj_set_pos+0xc4>)
28b6: 492c ldr r1, [pc, #176] ; (2968 <lv_obj_set_pos+0xc8>)
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 <lv_obj_set_pos+0xcc>)
28c2: 47b0 blx r6
28c4: 482a ldr r0, [pc, #168] ; (2970 <lv_obj_set_pos+0xd0>)
28c6: 492b ldr r1, [pc, #172] ; (2974 <lv_obj_set_pos+0xd4>)
28c8: 4622 mov r2, r4
28ca: 462b mov r3, r5
28cc: 4788 blx r1
28ce: e7fe b.n 28ce <lv_obj_set_pos+0x2e>
lv_obj_t * par = obj->parent;
28d0: 6826 ldr r6, [r4, #0]
if(par == NULL) {
28d2: b95e cbnz r6, 28ec <lv_obj_set_pos+0x4c>
LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object");
28d4: 4b28 ldr r3, [pc, #160] ; (2978 <lv_obj_set_pos+0xd8>)
28d6: 9300 str r3, [sp, #0]
28d8: 4923 ldr r1, [pc, #140] ; (2968 <lv_obj_set_pos+0xc8>)
28da: 4b22 ldr r3, [pc, #136] ; (2964 <lv_obj_set_pos+0xc4>)
28dc: 4c23 ldr r4, [pc, #140] ; (296c <lv_obj_set_pos+0xcc>)
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_set_pos+0x46>
lv_obj_invalidate(obj);
2910: 4620 mov r0, r4
2912: f8df 9070 ldr.w r9, [pc, #112] ; 2984 <lv_obj_set_pos+0xe4>
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 <lv_obj_set_pos+0xdc>)
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 <lv_obj_set_pos+0xe0>)
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 <lv_obj_set_pos+0x46>
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 <lv_obj_set_x>:
{
2988: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
298a: 4b0f ldr r3, [pc, #60] ; (29c8 <lv_obj_set_x+0x40>)
{
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 <lv_obj_set_x+0x2a>
2996: 4b0d ldr r3, [pc, #52] ; (29cc <lv_obj_set_x+0x44>)
2998: 490d ldr r1, [pc, #52] ; (29d0 <lv_obj_set_x+0x48>)
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 <lv_obj_set_x+0x4c>)
29a4: 47b0 blx r6
29a6: 480c ldr r0, [pc, #48] ; (29d8 <lv_obj_set_x+0x50>)
29a8: 490c ldr r1, [pc, #48] ; (29dc <lv_obj_set_x+0x54>)
29aa: 4622 mov r2, r4
29ac: 462b mov r3, r5
29ae: 4788 blx r1
29b0: e7fe b.n 29b0 <lv_obj_set_x+0x28>
lv_obj_set_pos(obj, x, lv_obj_get_y(obj));
29b2: 4b0b ldr r3, [pc, #44] ; (29e0 <lv_obj_set_x+0x58>)
29b4: 4620 mov r0, r4
29b6: 4798 blx r3
29b8: 4b0a ldr r3, [pc, #40] ; (29e4 <lv_obj_set_x+0x5c>)
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 <lv_obj_set_y>:
{
29e8: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
29ea: 4b0f ldr r3, [pc, #60] ; (2a28 <lv_obj_set_y+0x40>)
{
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 <lv_obj_set_y+0x2a>
29f6: 4b0d ldr r3, [pc, #52] ; (2a2c <lv_obj_set_y+0x44>)
29f8: 490d ldr r1, [pc, #52] ; (2a30 <lv_obj_set_y+0x48>)
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 <lv_obj_set_y+0x4c>)
2a04: 47b0 blx r6
2a06: 480c ldr r0, [pc, #48] ; (2a38 <lv_obj_set_y+0x50>)
2a08: 490c ldr r1, [pc, #48] ; (2a3c <lv_obj_set_y+0x54>)
2a0a: 4622 mov r2, r4
2a0c: 462b mov r3, r5
2a0e: 4788 blx r1
2a10: e7fe b.n 2a10 <lv_obj_set_y+0x28>
lv_obj_set_pos(obj, lv_obj_get_x(obj), y);
2a12: 4b0b ldr r3, [pc, #44] ; (2a40 <lv_obj_set_y+0x58>)
2a14: 4620 mov r0, r4
2a16: 4798 blx r3
2a18: 4b0a ldr r3, [pc, #40] ; (2a44 <lv_obj_set_y+0x5c>)
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 <lv_obj_align>:
{
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 <lv_obj_align+0xe0>
{
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 <lv_obj_align+0x36>
2a62: 4b2a ldr r3, [pc, #168] ; (2b0c <lv_obj_align+0xc4>)
2a64: 492a ldr r1, [pc, #168] ; (2b10 <lv_obj_align+0xc8>)
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 <lv_obj_align+0xcc>)
2a70: 47a8 blx r5
2a72: 4829 ldr r0, [pc, #164] ; (2b18 <lv_obj_align+0xd0>)
2a74: 4929 ldr r1, [pc, #164] ; (2b1c <lv_obj_align+0xd4>)
2a76: 4622 mov r2, r4
2a78: 464b mov r3, r9
2a7a: 4788 blx r1
2a7c: e7fe b.n 2a7c <lv_obj_align+0x34>
if(base == NULL) base = lv_obj_get_parent(obj);
2a7e: b91d cbnz r5, 2a88 <lv_obj_align+0x40>
2a80: 4b27 ldr r3, [pc, #156] ; (2b20 <lv_obj_align+0xd8>)
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 <lv_obj_align+0x64>
2a90: 4b1e ldr r3, [pc, #120] ; (2b0c <lv_obj_align+0xc4>)
2a92: 491f ldr r1, [pc, #124] ; (2b10 <lv_obj_align+0xc8>)
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 <lv_obj_align+0xcc>)
2a9e: 47a0 blx r4
2aa0: 481d ldr r0, [pc, #116] ; (2b18 <lv_obj_align+0xd0>)
2aa2: 491e ldr r1, [pc, #120] ; (2b1c <lv_obj_align+0xd4>)
2aa4: 462a mov r2, r5
2aa6: 464b mov r3, r9
2aa8: 4788 blx r1
2aaa: e7fe b.n 2aaa <lv_obj_align+0x62>
_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 <lv_obj_align+0xe4>
2abc: 47c8 blx r9
lv_obj_t * par = lv_obj_get_parent(obj);
2abe: 4b18 ldr r3, [pc, #96] ; (2b20 <lv_obj_align+0xd8>)
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 <lv_obj_align+0xdc>)
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 <lv_obj_align_origo>:
{
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 <lv_obj_align_origo+0x1b0>
{
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 <lv_obj_align_origo+0x3a>
2b4e: 4b5a ldr r3, [pc, #360] ; (2cb8 <lv_obj_align_origo+0x188>)
2b50: 495a ldr r1, [pc, #360] ; (2cbc <lv_obj_align_origo+0x18c>)
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 <lv_obj_align_origo+0x190>)
2b5c: 47a8 blx r5
2b5e: 4859 ldr r0, [pc, #356] ; (2cc4 <lv_obj_align_origo+0x194>)
2b60: 4959 ldr r1, [pc, #356] ; (2cc8 <lv_obj_align_origo+0x198>)
2b62: 4642 mov r2, r8
2b64: 4623 mov r3, r4
2b66: 4788 blx r1
2b68: e7fe b.n 2b68 <lv_obj_align_origo+0x38>
lv_coord_t new_x = lv_obj_get_x(obj);
2b6a: 4b58 ldr r3, [pc, #352] ; (2ccc <lv_obj_align_origo+0x19c>)
lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2;
2b6c: f8df 9174 ldr.w r9, [pc, #372] ; 2ce4 <lv_obj_align_origo+0x1b4>
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_obj_align_origo+0x1a0>)
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_obj_align_origo+0x1a4>)
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 <lv_obj_align_origo+0x66>
base = lv_obj_get_parent(obj);
2b8e: 4952 ldr r1, [pc, #328] ; (2cd8 <lv_obj_align_origo+0x1a8>)
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 <lv_obj_align_origo+0x1a4>)
2b9c: 4683 mov fp, r0
2b9e: b968 cbnz r0, 2bbc <lv_obj_align_origo+0x8c>
2ba0: 4b45 ldr r3, [pc, #276] ; (2cb8 <lv_obj_align_origo+0x188>)
2ba2: 4946 ldr r1, [pc, #280] ; (2cbc <lv_obj_align_origo+0x18c>)
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 <lv_obj_align_origo+0x190>)
2bae: 47a0 blx r4
2bb0: 4844 ldr r0, [pc, #272] ; (2cc4 <lv_obj_align_origo+0x194>)
2bb2: 4945 ldr r1, [pc, #276] ; (2cc8 <lv_obj_align_origo+0x198>)
2bb4: 4632 mov r2, r6
2bb6: 465b mov r3, fp
2bb8: 4788 blx r1
2bba: e7fe b.n 2bba <lv_obj_align_origo+0x8a>
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 <lv_obj_align_origo+0xec>
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 <lv_obj_align_origo+0xe8>
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 <lv_obj_align_origo+0x1a8>)
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 <lv_obj_align_origo+0x1ac>)
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 <lv_obj_align_origo+0xec>
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 <lv_obj_align_origo+0xe6>
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 <lv_obj_align_origo+0xca>
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 <lv_obj_align_origo+0x14a>
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 <lv_obj_align_origo+0xe6>
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 <lv_obj_align_origo+0xca>
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 <lv_obj_align_origo+0x14a>
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 <lv_obj_realign>:
{
2ce8: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2cea: 4b12 ldr r3, [pc, #72] ; (2d34 <lv_obj_realign+0x4c>)
{
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 <lv_obj_realign+0x28>
2cf4: 4b10 ldr r3, [pc, #64] ; (2d38 <lv_obj_realign+0x50>)
2cf6: 4911 ldr r1, [pc, #68] ; (2d3c <lv_obj_realign+0x54>)
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 <lv_obj_realign+0x58>)
2d02: 47b0 blx r6
2d04: 480f ldr r0, [pc, #60] ; (2d44 <lv_obj_realign+0x5c>)
2d06: 4910 ldr r1, [pc, #64] ; (2d48 <lv_obj_realign+0x60>)
2d08: 4622 mov r2, r4
2d0a: 462b mov r3, r5
2d0c: 4788 blx r1
2d0e: e7fe b.n 2d0e <lv_obj_realign+0x26>
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_realign+0x64>)
lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs);
2d2c: 4c08 ldrpl r4, [pc, #32] ; (2d50 <lv_obj_realign+0x68>)
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 <refresh_children_style>:
{
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 <refresh_children_style+0x34>)
lv_obj_invalidate(child);
2d5a: 4f0c ldr r7, [pc, #48] ; (2d8c <refresh_children_style+0x38>)
{
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 <refresh_children_style+0x12>
}
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 <refresh_children_style>
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 <refresh_children_style+0xe>
2d88: 00002271 .word 0x00002271
2d8c: 00002785 .word 0x00002785
00002d90 <lv_obj_refresh_style>:
{
2d90: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
2d92: 4b36 ldr r3, [pc, #216] ; (2e6c <lv_obj_refresh_style+0xdc>)
{
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 <lv_obj_refresh_style+0x2a>
2d9e: 4b34 ldr r3, [pc, #208] ; (2e70 <lv_obj_refresh_style+0xe0>)
2da0: 4934 ldr r1, [pc, #208] ; (2e74 <lv_obj_refresh_style+0xe4>)
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 <lv_obj_refresh_style+0xe8>)
2dac: 47a0 blx r4
2dae: 4833 ldr r0, [pc, #204] ; (2e7c <lv_obj_refresh_style+0xec>)
2db0: 4933 ldr r1, [pc, #204] ; (2e80 <lv_obj_refresh_style+0xf0>)
2db2: 462a mov r2, r5
2db4: 4633 mov r3, r6
2db6: 4788 blx r1
2db8: e7fe b.n 2db8 <lv_obj_refresh_style+0x28>
switch(prop) {
2dba: 2c90 cmp r4, #144 ; 0x90
2dbc: 4e31 ldr r6, [pc, #196] ; (2e84 <lv_obj_refresh_style+0xf4>)
2dbe: d838 bhi.n 2e32 <lv_obj_refresh_style+0xa2>
2dc0: 2c72 cmp r4, #114 ; 0x72
2dc2: d819 bhi.n 2df8 <lv_obj_refresh_style+0x68>
2dc4: 2c53 cmp r4, #83 ; 0x53
2dc6: d82e bhi.n 2e26 <lv_obj_refresh_style+0x96>
2dc8: 2c3f cmp r4, #63 ; 0x3f
2dca: d822 bhi.n 2e12 <lv_obj_refresh_style+0x82>
2dcc: 2c07 cmp r4, #7
2dce: d825 bhi.n 2e1c <lv_obj_refresh_style+0x8c>
2dd0: 2c01 cmp r4, #1
2dd2: d918 bls.n 2e06 <lv_obj_refresh_style+0x76>
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 <lv_obj_refresh_style+0xc0>
2de6: 2c14 cmp r4, #20
2de8: d934 bls.n 2e54 <lv_obj_refresh_style+0xc4>
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 <lv_obj_refresh_style+0xc4>
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 <lv_obj_refresh_style+0xc4>
2df8: f1a4 0273 sub.w r2, r4, #115 ; 0x73
2dfc: 4b22 ldr r3, [pc, #136] ; (2e88 <lv_obj_refresh_style+0xf8>)
2dfe: b292 uxth r2, r2
2e00: 40d3 lsrs r3, r2
2e02: 07da lsls r2, r3, #31
2e04: d4e6 bmi.n 2dd4 <lv_obj_refresh_style+0x44>
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 <lv_obj_refresh_style+0xfc>)
2e18: b292 uxth r2, r2
2e1a: e7f1 b.n 2e00 <lv_obj_refresh_style+0x70>
switch(prop) {
2e1c: f1a4 0310 sub.w r3, r4, #16
2e20: 2b08 cmp r3, #8
2e22: d8f0 bhi.n 2e06 <lv_obj_refresh_style+0x76>
2e24: e7d6 b.n 2dd4 <lv_obj_refresh_style+0x44>
2e26: 2c5c cmp r4, #92 ; 0x5c
2e28: d0d4 beq.n 2dd4 <lv_obj_refresh_style+0x44>
2e2a: f1a4 0370 sub.w r3, r4, #112 ; 0x70
2e2e: 2b01 cmp r3, #1
2e30: e7f7 b.n 2e22 <lv_obj_refresh_style+0x92>
2e32: f248 0381 movw r3, #32897 ; 0x8081
2e36: 429c cmp r4, r3
2e38: d806 bhi.n 2e48 <lv_obj_refresh_style+0xb8>
2e3a: f248 037f movw r3, #32895 ; 0x807f
2e3e: 429c cmp r4, r3
2e40: d8c8 bhi.n 2dd4 <lv_obj_refresh_style+0x44>
2e42: 2cff cmp r4, #255 ; 0xff
2e44: d1df bne.n 2e06 <lv_obj_refresh_style+0x76>
2e46: e7c5 b.n 2dd4 <lv_obj_refresh_style+0x44>
2e48: f248 038e movw r3, #32910 ; 0x808e
2e4c: 429c cmp r4, r3
2e4e: e7f9 b.n 2e44 <lv_obj_refresh_style+0xb4>
switch(prop) {
2e50: 2cff cmp r4, #255 ; 0xff
2e52: d0ca beq.n 2dea <lv_obj_refresh_style+0x5a>
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 <lv_obj_refresh_style+0xd0>
2e5c: 0423 lsls r3, r4, #16
2e5e: d502 bpl.n 2e66 <lv_obj_refresh_style+0xd6>
2e60: 4b0b ldr r3, [pc, #44] ; (2e90 <lv_obj_refresh_style+0x100>)
2e62: 4628 mov r0, r5
2e64: e7d1 b.n 2e0a <lv_obj_refresh_style+0x7a>
}
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 <lv_obj_reset_style_list>:
{
2e94: b510 push {r4, lr}
lv_obj_clean_style_list(obj, part);
2e96: 4b04 ldr r3, [pc, #16] ; (2ea8 <lv_obj_reset_style_list+0x14>)
{
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 <lv_obj_reset_style_list+0x18>)
}
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 <report_style_mod_core>:
{
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 <report_style_mod_core+0x7c>)
{
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 <report_style_mod_core+0x54>
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 <report_style_mod_core+0x4e>
*/
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 <report_style_mod_core+0x74>
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 <report_style_mod_core+0x62>
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 <report_style_mod_core+0x46>
2eee: f10c 0c01 add.w ip, ip, #1
2ef2: 2e00 cmp r6, #0
2ef4: d1e9 bne.n 2eca <report_style_mod_core+0x1a>
lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL);
2ef6: 4b0e ldr r3, [pc, #56] ; (2f30 <report_style_mod_core+0x80>)
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 <report_style_mod_core+0xa>
lv_obj_t * child = lv_obj_get_child(obj, NULL);
2f04: 4f0b ldr r7, [pc, #44] ; (2f34 <report_style_mod_core+0x84>)
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 <report_style_mod_core+0x66>
}
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+0x3a>
report_style_mod_core(style, child);
2f16: 4621 mov r1, r4
2f18: 4630 mov r0, r6
2f1a: f7ff ffc9 bl 2eb0 <report_style_mod_core>
child = lv_obj_get_child(obj, child);
2f1e: 4621 mov r1, r4
2f20: 4628 mov r0, r5
2f22: e7f2 b.n 2f0a <report_style_mod_core+0x5a>
2f24: 2900 cmp r1, #0
2f26: d1dd bne.n 2ee4 <report_style_mod_core+0x34>
2f28: 460b mov r3, r1
2f2a: e7de b.n 2eea <report_style_mod_core+0x3a>
2f2c: 0000248d .word 0x0000248d
2f30: 00002d91 .word 0x00002d91
2f34: 00002271 .word 0x00002271
00002f38 <lv_obj_report_style_mod>:
{
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_obj_report_style_mod+0x44>)
_LV_LL_READ(d->scr_ll, i) {
2f3e: f8df 9040 ldr.w r9, [pc, #64] ; 2f80 <lv_obj_report_style_mod+0x48>
report_style_mod_core(style, i);
2f42: f8df a040 ldr.w sl, [pc, #64] ; 2f84 <lv_obj_report_style_mod+0x4c>
{
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 <lv_obj_report_style_mod+0x1c>
}
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 <lv_obj_report_style_mod+0x50>
2f60: 4605 mov r5, r0
2f62: b91d cbnz r5, 2f6c <lv_obj_report_style_mod+0x34>
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 <lv_obj_report_style_mod+0x16>
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 <lv_obj_report_style_mod+0x2a>
2f7c: 0000d9c5 .word 0x0000d9c5
2f80: 0000e6a9 .word 0x0000e6a9
2f84: 00002eb1 .word 0x00002eb1
2f88: 0000e6b5 .word 0x0000e6b5
00002f8c <trans_anim_cb>:
{
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 <trans_anim_cb+0xf4>)
{
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 <trans_anim_cb+0xf8>)
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 <trans_anim_cb+0x4c>
if(v == 0) x = tr->start_value._int;
2faa: b94d cbnz r5, 2fc0 <trans_anim_cb+0x34>
2fac: f9b4 2008 ldrsh.w r2, [r4, #8]
_lv_style_set_int(style, tr->prop, x);
2fb0: 4b35 ldr r3, [pc, #212] ; (3088 <trans_anim_cb+0xfc>)
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 <trans_anim_cb+0x100>)
}
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 <trans_anim_cb+0x24>
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 <trans_anim_cb+0x24>
else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/
2fd8: 2b0b cmp r3, #11
2fda: d838 bhi.n 304e <trans_anim_cb+0xc2>
if(v <= 0) x = tr->start_value._color;
2fdc: 2d00 cmp r5, #0
2fde: dc03 bgt.n 2fe8 <trans_anim_cb+0x5c>
2fe0: 8922 ldrh r2, [r4, #8]
_lv_style_set_color(style, tr->prop, x);
2fe2: 4b2b ldr r3, [pc, #172] ; (3090 <trans_anim_cb+0x104>)
2fe4: 4798 blx r3
2fe6: e7e5 b.n 2fb4 <trans_anim_cb+0x28>
else if(v >= 255) x = tr->end_value._color;
2fe8: 2dfe cmp r5, #254 ; 0xfe
2fea: dd01 ble.n 2ff0 <trans_anim_cb+0x64>
2fec: 89a2 ldrh r2, [r4, #12]
2fee: e7f8 b.n 2fe2 <trans_anim_cb+0x56>
{
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 <trans_anim_cb+0x56>
else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
304e: 2b0d cmp r3, #13
3050: d80f bhi.n 3072 <trans_anim_cb+0xe6>
if(v <= 0) x = tr->start_value._opa;
3052: 2d00 cmp r5, #0
3054: dc03 bgt.n 305e <trans_anim_cb+0xd2>
3056: 7a22 ldrb r2, [r4, #8]
_lv_style_set_opa(style, tr->prop, x);
3058: 4b0e ldr r3, [pc, #56] ; (3094 <trans_anim_cb+0x108>)
305a: 4798 blx r3
305c: e7aa b.n 2fb4 <trans_anim_cb+0x28>
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 <trans_anim_cb+0xcc>
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 <trans_anim_cb+0xcc>
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 <trans_anim_cb+0x10c>)
307c: 4798 blx r3
307e: e799 b.n 2fb4 <trans_anim_cb+0x28>
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 <lv_obj_get_base_dir>:
{
309c: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
309e: 4b0b ldr r3, [pc, #44] ; (30cc <lv_obj_get_base_dir+0x30>)
{
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 <lv_obj_get_base_dir+0x28>
30a8: 4b09 ldr r3, [pc, #36] ; (30d0 <lv_obj_get_base_dir+0x34>)
30aa: 490a ldr r1, [pc, #40] ; (30d4 <lv_obj_get_base_dir+0x38>)
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 <lv_obj_get_base_dir+0x3c>)
30b6: 47b0 blx r6
30b8: 4808 ldr r0, [pc, #32] ; (30dc <lv_obj_get_base_dir+0x40>)
30ba: 4909 ldr r1, [pc, #36] ; (30e0 <lv_obj_get_base_dir+0x44>)
30bc: 462a mov r2, r5
30be: 4623 mov r3, r4
30c0: 4788 blx r1
30c2: e7fe b.n 30c2 <lv_obj_get_base_dir+0x26>
}
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 <lv_obj_create>:
{
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_obj_create+0xfc>
lv_disp_t * disp = lv_disp_get_default();
30f0: 4b89 ldr r3, [pc, #548] ; (3318 <lv_obj_create+0x234>)
30f2: 4798 blx r3
if(!disp) {
30f4: 4604 mov r4, r0
30f6: b940 cbnz r0, 310a <lv_obj_create+0x26>
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 <lv_obj_create+0x238>)
30fa: 9300 str r3, [sp, #0]
30fc: 4988 ldr r1, [pc, #544] ; (3320 <lv_obj_create+0x23c>)
30fe: 4b89 ldr r3, [pc, #548] ; (3324 <lv_obj_create+0x240>)
3100: 22cf movs r2, #207 ; 0xcf
3102: 2002 movs r0, #2
LV_LOG_INFO("Object create ready");
3104: 4d88 ldr r5, [pc, #544] ; (3328 <lv_obj_create+0x244>)
3106: 47a8 blx r5
return new_obj;
3108: e016 b.n 3138 <lv_obj_create+0x54>
new_obj = _lv_ll_ins_head(&disp->scr_ll);
310a: 4b88 ldr r3, [pc, #544] ; (332c <lv_obj_create+0x248>)
310c: 3030 adds r0, #48 ; 0x30
310e: 4798 blx r3
LV_ASSERT_MEM(new_obj);
3110: 4b87 ldr r3, [pc, #540] ; (3330 <lv_obj_create+0x24c>)
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 <lv_obj_create+0x50>
311a: 4b82 ldr r3, [pc, #520] ; (3324 <lv_obj_create+0x240>)
311c: 4980 ldr r1, [pc, #512] ; (3320 <lv_obj_create+0x23c>)
311e: 9300 str r3, [sp, #0]
3120: 22d4 movs r2, #212 ; 0xd4
3122: 2003 movs r0, #3
3124: 4d80 ldr r5, [pc, #512] ; (3328 <lv_obj_create+0x244>)
3126: 47a8 blx r5
3128: 4882 ldr r0, [pc, #520] ; (3334 <lv_obj_create+0x250>)
312a: 4983 ldr r1, [pc, #524] ; (3338 <lv_obj_create+0x254>)
312c: 4622 mov r2, r4
312e: 463b mov r3, r7
3130: 4788 blx r1
3132: e7fe b.n 3132 <lv_obj_create+0x4e>
if(new_obj == NULL) return NULL;
3134: b924 cbnz r4, 3140 <lv_obj_create+0x5c>
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 <lv_obj_create+0x258>)
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 <lv_obj_create+0x25c>)
3158: 61e3 str r3, [r4, #28]
new_obj->design_cb = lv_obj_design;
315a: 4b7a ldr r3, [pc, #488] ; (3344 <lv_obj_create+0x260>)
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 <lv_obj_create+0x264>)
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 <lv_obj_create+0x268>)
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 <lv_obj_create+0x26c>)
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 <lv_obj_create+0x270>)
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 <lv_obj_create+0x28c>
if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ);
31c0: 4b65 ldr r3, [pc, #404] ; (3358 <lv_obj_create+0x274>)
31c2: 2e00 cmp r6, #0
31c4: f000 809d beq.w 3302 <lv_obj_create+0x21e>
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 <lv_obj_create+0x278>)
31da: 4620 mov r0, r4
31dc: 4798 blx r3
31de: e093 b.n 3308 <lv_obj_create+0x224>
LV_ASSERT_OBJ(parent, LV_OBJX_NAME);
31e0: 4f53 ldr r7, [pc, #332] ; (3330 <lv_obj_create+0x24c>)
31e2: 47b8 blx r7
31e4: 4604 mov r4, r0
31e6: b960 cbnz r0, 3202 <lv_obj_create+0x11e>
31e8: 4b4e ldr r3, [pc, #312] ; (3324 <lv_obj_create+0x240>)
31ea: 494d ldr r1, [pc, #308] ; (3320 <lv_obj_create+0x23c>)
31ec: 9300 str r3, [sp, #0]
31ee: 22ed movs r2, #237 ; 0xed
31f0: 2003 movs r0, #3
31f2: 4d4d ldr r5, [pc, #308] ; (3328 <lv_obj_create+0x244>)
31f4: 47a8 blx r5
31f6: 485a ldr r0, [pc, #360] ; (3360 <lv_obj_create+0x27c>)
31f8: 494f ldr r1, [pc, #316] ; (3338 <lv_obj_create+0x254>)
31fa: 4632 mov r2, r6
31fc: 4623 mov r3, r4
31fe: 4788 blx r1
3200: e7fe b.n 3200 <lv_obj_create+0x11c>
new_obj = _lv_ll_ins_head(&parent->child_ll);
3202: 4b4a ldr r3, [pc, #296] ; (332c <lv_obj_create+0x248>)
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 <lv_obj_create+0x146>
3210: 4b44 ldr r3, [pc, #272] ; (3324 <lv_obj_create+0x240>)
3212: 4943 ldr r1, [pc, #268] ; (3320 <lv_obj_create+0x23c>)
3214: 9300 str r3, [sp, #0]
3216: 22f0 movs r2, #240 ; 0xf0
3218: 2003 movs r0, #3
321a: 4d43 ldr r5, [pc, #268] ; (3328 <lv_obj_create+0x244>)
321c: 47a8 blx r5
321e: 4845 ldr r0, [pc, #276] ; (3334 <lv_obj_create+0x250>)
3220: 4945 ldr r1, [pc, #276] ; (3338 <lv_obj_create+0x254>)
3222: 4622 mov r2, r4
3224: 463b mov r3, r7
3226: 4788 blx r1
3228: e7fe b.n 3228 <lv_obj_create+0x144>
if(new_obj == NULL) return NULL;
322a: 2c00 cmp r4, #0
322c: d083 beq.n 3136 <lv_obj_create+0x52>
_lv_memset_00(new_obj, sizeof(lv_obj_t));
322e: 4b43 ldr r3, [pc, #268] ; (333c <lv_obj_create+0x258>)
new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT;
3230: f8df 9138 ldr.w r9, [pc, #312] ; 336c <lv_obj_create+0x288>
_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 <lv_obj_create+0x25c>)
324a: 61e3 str r3, [r4, #28]
new_obj->design_cb = lv_obj_design;
324c: 4b3d ldr r3, [pc, #244] ; (3344 <lv_obj_create+0x260>)
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 <lv_obj_create+0x1e6>
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 <lv_obj_create+0x280>)
3288: 4620 mov r0, r4
328a: 4798 blx r3
328c: 2801 cmp r0, #1
328e: 4607 mov r7, r0
3290: d11d bne.n 32ce <lv_obj_create+0x1ea>
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 <lv_obj_create+0x1dc>
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 <lv_obj_create+0x90>
new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT;
32ca: 2001 movs r0, #1
32cc: e7d9 b.n 3282 <lv_obj_create+0x19e>
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 <lv_obj_create+0x21a>
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 <lv_obj_create+0x90>
32fe: 2001 movs r0, #1
3300: e7fa b.n 32f8 <lv_obj_create+0x214>
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 <lv_obj_create+0x284>)
330a: 9300 str r3, [sp, #0]
330c: 4904 ldr r1, [pc, #16] ; (3320 <lv_obj_create+0x23c>)
330e: 4b05 ldr r3, [pc, #20] ; (3324 <lv_obj_create+0x240>)
3310: f240 1287 movw r2, #391 ; 0x187
3314: 2001 movs r0, #1
3316: e6f5 b.n 3104 <lv_obj_create+0x20>
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, &copy->style_list);
3370: 4b54 ldr r3, [pc, #336] ; (34c4 <lv_obj_create+0x3e0>)
3372: f105 0128 add.w r1, r5, #40 ; 0x28
3376: 4798 blx r3
lv_area_copy(&new_obj->coords, &copy->coords);
3378: 4b53 ldr r3, [pc, #332] ; (34c8 <lv_obj_create+0x3e4>)
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_obj_create+0x3ae>
lv_group_add_obj(copy->group_p, new_obj);
348c: 4b0f ldr r3, [pc, #60] ; (34cc <lv_obj_create+0x3e8>)
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 <lv_obj_create+0x3ec>)
3494: 4628 mov r0, r5
3496: 4798 blx r3
3498: b178 cbz r0, 34ba <lv_obj_create+0x3d6>
349a: 2e00 cmp r6, #0
349c: f43f af34 beq.w 3308 <lv_obj_create+0x224>
lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy));
34a0: 4b0c ldr r3, [pc, #48] ; (34d4 <lv_obj_create+0x3f0>)
34a2: 4628 mov r0, r5
34a4: 4798 blx r3
34a6: 4b0c ldr r3, [pc, #48] ; (34d8 <lv_obj_create+0x3f4>)
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 <lv_obj_create+0x3f8>)
34b2: 4602 mov r2, r0
34b4: 4620 mov r0, r4
34b6: 4798 blx r3
if(parent != NULL) {
34b8: e689 b.n 31ce <lv_obj_create+0xea>
34ba: 2e00 cmp r6, #0
34bc: f47f ae87 bne.w 31ce <lv_obj_create+0xea>
34c0: e722 b.n 3308 <lv_obj_create+0x224>
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 <lv_obj_set_size>:
{
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 <lv_obj_set_size+0xd4>)
{
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 <lv_obj_set_size+0x2e>
34f2: 4b31 ldr r3, [pc, #196] ; (35b8 <lv_obj_set_size+0xd8>)
34f4: 4931 ldr r1, [pc, #196] ; (35bc <lv_obj_set_size+0xdc>)
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 <lv_obj_set_size+0xe0>)
3500: 47a8 blx r5
3502: 4830 ldr r0, [pc, #192] ; (35c4 <lv_obj_set_size+0xe4>)
3504: 4930 ldr r1, [pc, #192] ; (35c8 <lv_obj_set_size+0xe8>)
3506: 4622 mov r2, r4
3508: 4633 mov r3, r6
350a: 4788 blx r1
350c: e7fe b.n 350c <lv_obj_set_size+0x2c>
if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) {
350e: 4b2f ldr r3, [pc, #188] ; (35cc <lv_obj_set_size+0xec>)
3510: 4620 mov r0, r4
3512: 4798 blx r3
3514: 4285 cmp r5, r0
3516: d104 bne.n 3522 <lv_obj_set_size+0x42>
3518: 4b2d ldr r3, [pc, #180] ; (35d0 <lv_obj_set_size+0xf0>)
351a: 4620 mov r0, r4
351c: 4798 blx r3
351e: 4287 cmp r7, r0
3520: d03a beq.n 3598 <lv_obj_set_size+0xb8>
lv_obj_invalidate(obj);
3522: 4620 mov r0, r4
3524: 4e2b ldr r6, [pc, #172] ; (35d4 <lv_obj_set_size+0xf4>)
3526: 47b0 blx r6
lv_obj_get_coords(obj, &ori);
3528: a902 add r1, sp, #8
352a: 4b2b ldr r3, [pc, #172] ; (35d8 <lv_obj_set_size+0xf8>)
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 <lv_obj_set_size+0xfc>)
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 <lv_obj_set_size+0x100>)
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 <lv_obj_set_size+0x96>
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 <lv_obj_set_size+0x104>)
357a: f8df 8070 ldr.w r8, [pc, #112] ; 35ec <lv_obj_set_size+0x10c>
357e: 4638 mov r0, r7
3580: 4798 blx r3
3582: 4605 mov r5, r0
3584: b95d cbnz r5, 359e <lv_obj_set_size+0xbe>
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 <lv_obj_set_size+0xb8>
3592: 4b15 ldr r3, [pc, #84] ; (35e8 <lv_obj_set_size+0x108>)
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 <lv_obj_set_size+0xa4>
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 <lv_obj_set_height>:
{
35f0: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
35f2: 4b0f ldr r3, [pc, #60] ; (3630 <lv_obj_set_height+0x40>)
{
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 <lv_obj_set_height+0x2a>
35fe: 4b0d ldr r3, [pc, #52] ; (3634 <lv_obj_set_height+0x44>)
3600: 490d ldr r1, [pc, #52] ; (3638 <lv_obj_set_height+0x48>)
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 <lv_obj_set_height+0x4c>)
360c: 47b0 blx r6
360e: 480c ldr r0, [pc, #48] ; (3640 <lv_obj_set_height+0x50>)
3610: 490c ldr r1, [pc, #48] ; (3644 <lv_obj_set_height+0x54>)
3612: 4622 mov r2, r4
3614: 462b mov r3, r5
3616: 4788 blx r1
3618: e7fe b.n 3618 <lv_obj_set_height+0x28>
lv_obj_set_size(obj, lv_obj_get_width(obj), h);
361a: 4b0b ldr r3, [pc, #44] ; (3648 <lv_obj_set_height+0x58>)
361c: 4620 mov r0, r4
361e: 4798 blx r3
3620: 4b0a ldr r3, [pc, #40] ; (364c <lv_obj_set_height+0x5c>)
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 <lv_obj_is_protected>:
{
3650: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3652: 4b0e ldr r3, [pc, #56] ; (368c <lv_obj_is_protected+0x3c>)
{
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 <lv_obj_is_protected+0x2a>
365e: 4b0c ldr r3, [pc, #48] ; (3690 <lv_obj_is_protected+0x40>)
3660: 490c ldr r1, [pc, #48] ; (3694 <lv_obj_is_protected+0x44>)
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 <lv_obj_is_protected+0x48>)
366c: 47b0 blx r6
366e: 480b ldr r0, [pc, #44] ; (369c <lv_obj_is_protected+0x4c>)
3670: 490b ldr r1, [pc, #44] ; (36a0 <lv_obj_is_protected+0x50>)
3672: 4622 mov r2, r4
3674: 462b mov r3, r5
3676: 4788 blx r1
3678: e7fe b.n 3678 <lv_obj_is_protected+0x28>
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 <lv_obj_get_state>:
{
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 <lv_obj_get_state+0x50>)
{
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 <lv_obj_get_state+0x2a>
36b2: 4b11 ldr r3, [pc, #68] ; (36f8 <lv_obj_get_state+0x54>)
36b4: 4911 ldr r1, [pc, #68] ; (36fc <lv_obj_get_state+0x58>)
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 <lv_obj_get_state+0x5c>)
36c0: 47a8 blx r5
36c2: 4810 ldr r0, [pc, #64] ; (3704 <lv_obj_get_state+0x60>)
36c4: 4910 ldr r1, [pc, #64] ; (3708 <lv_obj_get_state+0x64>)
36c6: 4622 mov r2, r4
36c8: 4633 mov r3, r6
36ca: 4788 blx r1
36cc: e7fe b.n 36cc <lv_obj_get_state+0x28>
if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state;
36ce: 2d3f cmp r5, #63 ; 0x3f
36d0: d803 bhi.n 36da <lv_obj_get_state+0x36>
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 <lv_obj_get_state+0x68>)
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 <lv_obj_get_state+0x32>
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 <trans_anim_start_cb>:
{
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 <trans_anim_start_cb+0x2e>
tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp);
3970: 4b0d ldr r3, [pc, #52] ; (39a8 <trans_anim_start_cb+0x4c>)
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 <trans_anim_start_cb+0x50>)
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 <trans_anim_start_cb+0x38>
tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp);
398e: 4b08 ldr r3, [pc, #32] ; (39b0 <trans_anim_start_cb+0x54>)
3990: 4798 blx r3
3992: e7ef b.n 3974 <trans_anim_start_cb+0x18>
else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
3994: 2b0d cmp r3, #13
3996: d803 bhi.n 39a0 <trans_anim_start_cb+0x44>
tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp);
3998: 4b06 ldr r3, [pc, #24] ; (39b4 <trans_anim_start_cb+0x58>)
399a: 4798 blx r3
399c: 7220 strb r0, [r4, #8]
399e: e7ea b.n 3976 <trans_anim_start_cb+0x1a>
tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp);
39a0: 4b05 ldr r3, [pc, #20] ; (39b8 <trans_anim_start_cb+0x5c>)
39a2: 4798 blx r3
39a4: 60a0 str r0, [r4, #8]
39a6: e7e6 b.n 3976 <trans_anim_start_cb+0x1a>
39a8: 00003711 .word 0x00003711
39ac: 000024b5 .word 0x000024b5
39b0: 000037b5 .word 0x000037b5
39b4: 00003839 .word 0x00003839
39b8: 000038c9 .word 0x000038c9
000039bc <lv_obj_set_state>:
{
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_obj_set_state+0x498>
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
39d0: 4b95 ldr r3, [pc, #596] ; (3c28 <lv_obj_set_state+0x26c>)
39d2: 4798 blx r3
39d4: 4605 mov r5, r0
39d6: b968 cbnz r0, 39f4 <lv_obj_set_state+0x38>
39d8: 4b94 ldr r3, [pc, #592] ; (3c2c <lv_obj_set_state+0x270>)
39da: 4995 ldr r1, [pc, #596] ; (3c30 <lv_obj_set_state+0x274>)
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 <lv_obj_set_state+0x278>)
39e6: 47b0 blx r6
39e8: 4893 ldr r0, [pc, #588] ; (3c38 <lv_obj_set_state+0x27c>)
39ea: 4994 ldr r1, [pc, #592] ; (3c3c <lv_obj_set_state+0x280>)
39ec: 4622 mov r2, r4
39ee: 462b mov r3, r5
39f0: 4788 blx r1
39f2: e7fe b.n 39f2 <lv_obj_set_state+0x36>
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 <lv_obj_set_state+0x284>)
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 <lv_obj_set_state+0x68>
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 <lv_obj_set_state+0x76>
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_set_state+0x46>
lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL);
3a24: 4b87 ldr r3, [pc, #540] ; (3c44 <lv_obj_set_state+0x288>)
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 <lv_obj_set_state+0x28c>)
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_set_state+0x290>)
_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_obj_set_state+0x25c>
_lv_style_list_add_trans_style(style_list);
3aac: 4b68 ldr r3, [pc, #416] ; (3c50 <lv_obj_set_state+0x294>)
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 <lv_obj_set_state+0x284>)
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_obj_set_state+0x298>)
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 <lv_obj_set_state+0x2c8>
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 <lv_obj_set_state+0x28c>
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 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x29c>)
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 <lv_obj_set_state+0x1b2>
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 <lv_obj_set_state+0x178>
3b30: 4599 cmp r9, r3
3b32: d11c bne.n 3b6e <lv_obj_set_state+0x1b2>
lv_coord_t whalf = lv_obj_get_width(obj) / 2;
3b34: f8df a148 ldr.w sl, [pc, #328] ; 3c80 <lv_obj_set_state+0x2c4>
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 <lv_obj_set_state+0x1f2>
3b58: 4285 cmp r5, r0
3b5a: da1e bge.n 3b9a <lv_obj_set_state+0x1de>
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 <lv_obj_set_state+0x1b2>
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 <lv_obj_set_state+0x2a0>)
3b70: 483b ldr r0, [pc, #236] ; (3c60 <lv_obj_set_state+0x2a4>)
3b72: 4798 blx r3
LV_ASSERT_MEM(tr);
3b74: 4b2c ldr r3, [pc, #176] ; (3c28 <lv_obj_set_state+0x26c>)
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 <lv_obj_set_state+0x1fc>
3b7e: 4b39 ldr r3, [pc, #228] ; (3c64 <lv_obj_set_state+0x2a8>)
3b80: 492b ldr r1, [pc, #172] ; (3c30 <lv_obj_set_state+0x274>)
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 <lv_obj_set_state+0x278>)
3b8c: 47a0 blx r4
3b8e: 4836 ldr r0, [pc, #216] ; (3c68 <lv_obj_set_state+0x2ac>)
3b90: 492a ldr r1, [pc, #168] ; (3c3c <lv_obj_set_state+0x280>)
3b92: 462a mov r2, r5
3b94: 4653 mov r3, sl
3b96: 4788 blx r1
3b98: e7fe b.n 3b98 <lv_obj_set_state+0x1dc>
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 <lv_obj_set_state+0x1b2>
3ba6: 3001 adds r0, #1
3ba8: fa0f f980 sxth.w r9, r0
3bac: e7df b.n 3b6e <lv_obj_set_state+0x1b2>
3bae: 4599 cmp r9, r3
3bb0: d1dd bne.n 3b6e <lv_obj_set_state+0x1b2>
3bb2: 4285 cmp r5, r0
3bb4: daf7 bge.n 3ba6 <lv_obj_set_state+0x1ea>
3bb6: e7d7 b.n 3b68 <lv_obj_set_state+0x1ac>
if(tr == NULL) return NULL;
3bb8: 2d00 cmp r5, #0
3bba: d02d beq.n 3c18 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x2b0>)
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 <lv_obj_set_state+0x2b4>)
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 <lv_obj_set_state+0x2b8>)
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 <lv_obj_set_state+0x2bc>)
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 <lv_obj_set_state+0x23e>
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 <lv_obj_set_state+0x2c0>)
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 <lv_obj_set_state+0xe2>
3c24: e6f9 b.n 3a1a <lv_obj_set_state+0x5e>
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 <lv_obj_set_state+0x364>
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 <lv_obj_set_state+0x4d0>
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 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x4a0>)
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 <lv_obj_set_state+0x4a4>)
3ce6: 485f ldr r0, [pc, #380] ; (3e64 <lv_obj_set_state+0x4a8>)
3ce8: 4798 blx r3
LV_ASSERT_MEM(tr);
3cea: 4b5f ldr r3, [pc, #380] ; (3e68 <lv_obj_set_state+0x4ac>)
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 <lv_obj_set_state+0x354>
3cf4: 4b5d ldr r3, [pc, #372] ; (3e6c <lv_obj_set_state+0x4b0>)
3cf6: 495e ldr r1, [pc, #376] ; (3e70 <lv_obj_set_state+0x4b4>)
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 <lv_obj_set_state+0x4b8>)
3d02: 47a0 blx r4
3d04: 485c ldr r0, [pc, #368] ; (3e78 <lv_obj_set_state+0x4bc>)
3d06: 495d ldr r1, [pc, #372] ; (3e7c <lv_obj_set_state+0x4c0>)
3d08: 462a mov r2, r5
3d0a: 4653 mov r3, sl
3d0c: 4788 blx r1
3d0e: e7fe b.n 3d0e <lv_obj_set_state+0x352>
if(tr == NULL) return NULL;
3d10: 2d00 cmp r5, #0
3d12: d081 beq.n 3c18 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x208>
else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
3d20: 2b0d cmp r3, #13
3d22: d849 bhi.n 3db8 <lv_obj_set_state+0x3fc>
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 <lv_obj_set_state+0x4d4>
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 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x4c4>)
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 <lv_obj_set_state+0x4a4>)
3d7e: 4839 ldr r0, [pc, #228] ; (3e64 <lv_obj_set_state+0x4a8>)
3d80: 4798 blx r3
LV_ASSERT_MEM(tr);
3d82: 4b39 ldr r3, [pc, #228] ; (3e68 <lv_obj_set_state+0x4ac>)
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 <lv_obj_set_state+0x3ec>
3d8c: 4b37 ldr r3, [pc, #220] ; (3e6c <lv_obj_set_state+0x4b0>)
3d8e: 4938 ldr r1, [pc, #224] ; (3e70 <lv_obj_set_state+0x4b4>)
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 <lv_obj_set_state+0x4b8>)
3d9a: 47a0 blx r4
3d9c: 4836 ldr r0, [pc, #216] ; (3e78 <lv_obj_set_state+0x4bc>)
3d9e: 4937 ldr r1, [pc, #220] ; (3e7c <lv_obj_set_state+0x4c0>)
3da0: 462a mov r2, r5
3da2: 4653 mov r3, sl
3da4: 4788 blx r1
3da6: e7fe b.n 3da6 <lv_obj_set_state+0x3ea>
if(tr == NULL) return NULL;
3da8: 2d00 cmp r5, #0
3daa: f43f af35 beq.w 3c18 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x208>
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 <lv_obj_set_state+0x4d8>
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 <lv_obj_set_state+0x4c8>)
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 <lv_obj_set_state+0x25c>
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 <lv_obj_set_state+0x4cc>)
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 <lv_obj_set_state+0x4a4>)
3e1e: 4811 ldr r0, [pc, #68] ; (3e64 <lv_obj_set_state+0x4a8>)
3e20: 4798 blx r3
LV_ASSERT_MEM(tr);
3e22: 4b11 ldr r3, [pc, #68] ; (3e68 <lv_obj_set_state+0x4ac>)
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 <lv_obj_set_state+0x48c>
3e2c: 4b0f ldr r3, [pc, #60] ; (3e6c <lv_obj_set_state+0x4b0>)
3e2e: 4910 ldr r1, [pc, #64] ; (3e70 <lv_obj_set_state+0x4b4>)
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 <lv_obj_set_state+0x4b8>)
3e3a: 47a0 blx r4
3e3c: 480e ldr r0, [pc, #56] ; (3e78 <lv_obj_set_state+0x4bc>)
3e3e: 490f ldr r1, [pc, #60] ; (3e7c <lv_obj_set_state+0x4c0>)
3e40: 462a mov r2, r5
3e42: 4653 mov r3, sl
3e44: 4788 blx r1
3e46: e7fe b.n 3e46 <lv_obj_set_state+0x48a>
if(tr == NULL) return NULL;
3e48: 2d00 cmp r5, #0
3e4a: f43f aee5 beq.w 3c18 <lv_obj_set_state+0x25c>
tr->end_value._ptr = p2;
3e4e: e9c5 b902 strd fp, r9, [r5, #8]
3e52: e6b7 b.n 3bc4 <lv_obj_set_state+0x208>
}
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 <lv_obj_add_state>:
{
3e98: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3e9a: 4b11 ldr r3, [pc, #68] ; (3ee0 <lv_obj_add_state+0x48>)
{
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 <lv_obj_add_state+0x2a>
3ea6: 4b0f ldr r3, [pc, #60] ; (3ee4 <lv_obj_add_state+0x4c>)
3ea8: 490f ldr r1, [pc, #60] ; (3ee8 <lv_obj_add_state+0x50>)
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 <lv_obj_add_state+0x54>)
3eb4: 47a8 blx r5
3eb6: 480e ldr r0, [pc, #56] ; (3ef0 <lv_obj_add_state+0x58>)
3eb8: 490e ldr r1, [pc, #56] ; (3ef4 <lv_obj_add_state+0x5c>)
3eba: 4622 mov r2, r4
3ebc: 4633 mov r3, r6
3ebe: 4788 blx r1
3ec0: e7fe b.n 3ec0 <lv_obj_add_state+0x28>
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_add_state+0x42>
lv_obj_set_state(obj, new_state);
3ece: 4b0a ldr r3, [pc, #40] ; (3ef8 <lv_obj_add_state+0x60>)
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 <lv_obj_clear_state>:
{
3efc: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3efe: 4b11 ldr r3, [pc, #68] ; (3f44 <lv_obj_clear_state+0x48>)
{
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 <lv_obj_clear_state+0x2a>
3f0a: 4b0f ldr r3, [pc, #60] ; (3f48 <lv_obj_clear_state+0x4c>)
3f0c: 490f ldr r1, [pc, #60] ; (3f4c <lv_obj_clear_state+0x50>)
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 <lv_obj_clear_state+0x54>)
3f18: 47a8 blx r5
3f1a: 480e ldr r0, [pc, #56] ; (3f54 <lv_obj_clear_state+0x58>)
3f1c: 490e ldr r1, [pc, #56] ; (3f58 <lv_obj_clear_state+0x5c>)
3f1e: 4622 mov r2, r4
3f20: 4633 mov r3, r6
3f22: 4788 blx r1
3f24: e7fe b.n 3f24 <lv_obj_clear_state+0x28>
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_clear_state+0x42>
lv_obj_set_state(obj, new_state);
3f32: 4b0a ldr r3, [pc, #40] ; (3f5c <lv_obj_clear_state+0x60>)
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 <lv_obj_get_signal_cb>:
{
3f60: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3f62: 4b0b ldr r3, [pc, #44] ; (3f90 <lv_obj_get_signal_cb+0x30>)
{
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 <lv_obj_get_signal_cb+0x28>
3f6c: 4b09 ldr r3, [pc, #36] ; (3f94 <lv_obj_get_signal_cb+0x34>)
3f6e: 490a ldr r1, [pc, #40] ; (3f98 <lv_obj_get_signal_cb+0x38>)
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 <lv_obj_get_signal_cb+0x3c>)
3f7a: 47b0 blx r6
3f7c: 4808 ldr r0, [pc, #32] ; (3fa0 <lv_obj_get_signal_cb+0x40>)
3f7e: 4909 ldr r1, [pc, #36] ; (3fa4 <lv_obj_get_signal_cb+0x44>)
3f80: 4622 mov r2, r4
3f82: 462b mov r3, r5
3f84: 4788 blx r1
3f86: e7fe b.n 3f86 <lv_obj_get_signal_cb+0x26>
}
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 <lv_obj_get_ext_attr>:
{
3fa8: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3faa: 4b0b ldr r3, [pc, #44] ; (3fd8 <lv_obj_get_ext_attr+0x30>)
{
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 <lv_obj_get_ext_attr+0x28>
3fb4: 4b09 ldr r3, [pc, #36] ; (3fdc <lv_obj_get_ext_attr+0x34>)
3fb6: 490a ldr r1, [pc, #40] ; (3fe0 <lv_obj_get_ext_attr+0x38>)
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 <lv_obj_get_ext_attr+0x3c>)
3fc2: 47b0 blx r6
3fc4: 4808 ldr r0, [pc, #32] ; (3fe8 <lv_obj_get_ext_attr+0x40>)
3fc6: 4909 ldr r1, [pc, #36] ; (3fec <lv_obj_get_ext_attr+0x44>)
3fc8: 4622 mov r2, r4
3fca: 462b mov r3, r5
3fcc: 4788 blx r1
3fce: e7fe b.n 3fce <lv_obj_get_ext_attr+0x26>
}
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 <lv_obj_get_group>:
{
3ff0: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
3ff2: 4b0b ldr r3, [pc, #44] ; (4020 <lv_obj_get_group+0x30>)
{
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 <lv_obj_get_group+0x28>
3ffc: 4b09 ldr r3, [pc, #36] ; (4024 <lv_obj_get_group+0x34>)
3ffe: 490a ldr r1, [pc, #40] ; (4028 <lv_obj_get_group+0x38>)
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 <lv_obj_get_group+0x3c>)
400a: 47b0 blx r6
400c: 4808 ldr r0, [pc, #32] ; (4030 <lv_obj_get_group+0x40>)
400e: 4909 ldr r1, [pc, #36] ; (4034 <lv_obj_get_group+0x44>)
4010: 4622 mov r2, r4
4012: 462b mov r3, r5
4014: 4788 blx r1
4016: e7fe b.n 4016 <lv_obj_get_group+0x26>
}
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 <obj_del_core>:
{
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 <obj_del_core+0xec>)
{
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 <obj_del_core+0xf0>)
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 <obj_del_core+0x1e>
4050: 4b36 ldr r3, [pc, #216] ; (412c <obj_del_core+0xf4>)
4052: 4620 mov r0, r4
4054: 4798 blx r3
lv_anim_del(obj, NULL);
4056: 4b36 ldr r3, [pc, #216] ; (4130 <obj_del_core+0xf8>)
trans_del(obj, 0xFF, 0xFF, NULL);
4058: 4d36 ldr r5, [pc, #216] ; (4134 <obj_del_core+0xfc>)
i_next = _lv_ll_get_next(&(obj->child_ll), i);
405a: f8df 90f4 ldr.w r9, [pc, #244] ; 4150 <obj_del_core+0x118>
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 <obj_del_core+0x100>)
4074: 4640 mov r0, r8
4076: 4798 blx r3
4078: 4605 mov r5, r0
while(i != NULL) {
407a: bb3d cbnz r5, 40cc <obj_del_core+0x94>
#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 <obj_del_core+0x104>)
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 <obj_del_core+0xa6>
lv_indev_t * indev = lv_indev_get_next(NULL);
4084: f8df 80cc ldr.w r8, [pc, #204] ; 4154 <obj_del_core+0x11c>
lv_indev_reset(indev, obj);
4088: f8df 90cc ldr.w r9, [pc, #204] ; 4158 <obj_del_core+0x120>
if(indev->group == group && obj == lv_indev_get_obj_act()) {
408c: f8df a0cc ldr.w sl, [pc, #204] ; 415c <obj_del_core+0x124>
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_del_core+0xb2>
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 <obj_del_core+0x108>)
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 <obj_del_core+0x10c>)
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 <obj_del_core+0xe6>
lv_disp_t * d = lv_obj_get_disp(obj);
40ae: 4b26 ldr r3, [pc, #152] ; (4148 <obj_del_core+0x110>)
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 <obj_del_core+0x114>)
40be: b100 cbz r0, 40c2 <obj_del_core+0x8a>
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 <obj_del_core>
i = i_next;
40da: 4635 mov r5, r6
40dc: e7cd b.n 407a <obj_del_core+0x42>
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 <obj_del_core+0x4a>
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 <obj_del_core+0xbe>
40f0: 6bab ldr r3, [r5, #56] ; 0x38
40f2: 42a3 cmp r3, r4
40f4: d102 bne.n 40fc <obj_del_core+0xc4>
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 <obj_del_core+0xde>
410a: 47d0 blx sl
410c: 4284 cmp r4, r0
410e: d102 bne.n 4116 <obj_del_core+0xde>
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 <obj_del_core+0x5e>
_lv_ll_remove(&(par->child_ll), obj);
411e: 4621 mov r1, r4
4120: 3004 adds r0, #4
4122: e7c9 b.n 40b8 <obj_del_core+0x80>
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 <lv_obj_del>:
{
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 <lv_obj_del+0x70>)
{
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 <lv_obj_del+0x28>
416c: 4b19 ldr r3, [pc, #100] ; (41d4 <lv_obj_del+0x74>)
416e: 491a ldr r1, [pc, #104] ; (41d8 <lv_obj_del+0x78>)
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 <lv_obj_del+0x7c>)
417a: 47b0 blx r6
417c: 4818 ldr r0, [pc, #96] ; (41e0 <lv_obj_del+0x80>)
417e: 4919 ldr r1, [pc, #100] ; (41e4 <lv_obj_del+0x84>)
4180: 4622 mov r2, r4
4182: 462b mov r3, r5
4184: 4788 blx r1
4186: e7fe b.n 4186 <lv_obj_del+0x26>
lv_obj_invalidate(obj);
4188: 4b17 ldr r3, [pc, #92] ; (41e8 <lv_obj_del+0x88>)
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 <lv_obj_del+0x8c>)
4190: 4620 mov r0, r4
4192: 4798 blx r3
if(par == NULL) {
4194: 4606 mov r6, r0
4196: b9b8 cbnz r0, 41c8 <lv_obj_del+0x68>
disp = lv_obj_get_disp(obj);
4198: 4b15 ldr r3, [pc, #84] ; (41f0 <lv_obj_del+0x90>)
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 <lv_obj_del+0x62>
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 <lv_obj_del+0x94>)
41ac: 4620 mov r0, r4
41ae: 4798 blx r3
if(par) {
41b0: b126 cbz r6, 41bc <lv_obj_del+0x5c>
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 <lv_obj_del+0x62>
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 <lv_obj_del+0x4a>
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 <lv_obj_is_focused>:
{
41f8: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
41fa: 4b0e ldr r3, [pc, #56] ; (4234 <lv_obj_is_focused+0x3c>)
{
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 <lv_obj_is_focused+0x28>
4204: 4b0c ldr r3, [pc, #48] ; (4238 <lv_obj_is_focused+0x40>)
4206: 490d ldr r1, [pc, #52] ; (423c <lv_obj_is_focused+0x44>)
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 <lv_obj_is_focused+0x48>)
4212: 47b0 blx r6
4214: 480b ldr r0, [pc, #44] ; (4244 <lv_obj_is_focused+0x4c>)
4216: 490c ldr r1, [pc, #48] ; (4248 <lv_obj_is_focused+0x50>)
4218: 4622 mov r2, r4
421a: 462b mov r3, r5
421c: 4788 blx r1
421e: e7fe b.n 421e <lv_obj_is_focused+0x26>
if(obj->group_p) {
4220: 6ba0 ldr r0, [r4, #56] ; 0x38
4222: b120 cbz r0, 422e <lv_obj_is_focused+0x36>
if(lv_group_get_focused(obj->group_p) == obj) return true;
4224: 4b09 ldr r3, [pc, #36] ; (424c <lv_obj_is_focused+0x54>)
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 <lv_obj_is_point_on_coords>:
{
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 <lv_obj_is_point_on_coords+0x38>)
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 <lv_obj_handle_get_type_signal>:
{
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 <lv_obj_handle_get_type_signal+0x14>
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 <lv_obj_handle_get_type_signal+0x4>
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 <lv_obj_init_draw_rect_dsc>:
{
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_init_draw_rect_dsc+0x2e0>)
_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_init_draw_rect_dsc+0x2ec>
_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 <lv_obj_init_draw_rect_dsc+0x3c>
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_init_draw_rect_dsc+0x92>
_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_init_draw_rect_dsc+0x92>
_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 <lv_obj_init_draw_rect_dsc+0x2e4>
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_init_draw_rect_dsc+0x88>
_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_init_draw_rect_dsc+0xd2>
_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_init_draw_rect_dsc+0xd2>
_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_init_draw_rect_dsc+0xc8>
_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 <lv_obj_init_draw_rect_dsc+0x2e4>)
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_init_draw_rect_dsc+0x110>
_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_init_draw_rect_dsc+0x110>
_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_init_draw_rect_dsc+0x106>
_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 <lv_obj_init_draw_rect_dsc+0x2e4>)
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_init_draw_rect_dsc+0x190>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar)
43c0: f8df a1d4 ldr.w sl, [pc, #468] ; 4598 <lv_obj_init_draw_rect_dsc+0x2f0>
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_init_draw_rect_dsc+0x190>
_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_init_draw_rect_dsc+0x190>
_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 <lv_obj_init_draw_rect_dsc+0x2e8>)
440c: 4798 blx r3
440e: 2802 cmp r0, #2
4410: f040 80ad bne.w 456e <lv_obj_init_draw_rect_dsc+0x2c6>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
4414: 4b5d ldr r3, [pc, #372] ; (458c <lv_obj_init_draw_rect_dsc+0x2e4>)
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_init_draw_rect_dsc+0x1ea>
_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_init_draw_rect_dsc+0x1ea>
_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_init_draw_rect_dsc+0x1ea>
_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 <lv_obj_init_draw_rect_dsc+0x2e4>)
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_init_draw_rect_dsc+0x274>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar)
449a: f8df a0fc ldr.w sl, [pc, #252] ; 4598 <lv_obj_init_draw_rect_dsc+0x2f0>
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_init_draw_rect_dsc+0x274>
_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_init_draw_rect_dsc+0x274>
_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 <lv_obj_init_draw_rect_dsc+0x2e4>)
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 <lv_obj_init_draw_rect_dsc+0x38>
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 <lv_obj_init_draw_rect_dsc+0x34>
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_init_draw_rect_dsc+0x184>
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
4578: 4b04 ldr r3, [pc, #16] ; (458c <lv_obj_init_draw_rect_dsc+0x2e4>)
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 <lv_obj_init_draw_rect_dsc+0x184>
4586: bf00 nop
4588: 00003711 .word 0x00003711
458c: 000037b5 .word 0x000037b5
4590: 00007805 .word 0x00007805
4594: 00003839 .word 0x00003839
4598: 000038c9 .word 0x000038c9
0000459c <lv_obj_design>:
{
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_design+0xc4>
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
45ac: f8df 9230 ldr.w r9, [pc, #560] ; 47e0 <lv_obj_design+0x244>
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_design+0xc0>
_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 <lv_obj_design+0x218>)
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 <lv_obj_design+0x21c>)
4616: a903 add r1, sp, #12
4618: 4638 mov r0, r7
461a: 4798 blx r3
461c: b1d0 cbz r0, 4654 <lv_obj_design+0xb8>
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
461e: 4f67 ldr r7, [pc, #412] ; (47bc <lv_obj_design+0x220>)
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_design+0xb8>
_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_design+0xb8>
_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_design+0xb8>
_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 <lv_obj_design+0xb8>
else if(mode == LV_DESIGN_DRAW_MAIN) {
4660: 2a00 cmp r2, #0
4662: d156 bne.n 4712 <lv_obj_design+0x176>
lv_draw_rect_dsc_init(&draw_dsc);
4664: a803 add r0, sp, #12
4666: 4b56 ldr r3, [pc, #344] ; (47c0 <lv_obj_design+0x224>)
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
4668: f8df 8174 ldr.w r8, [pc, #372] ; 47e0 <lv_obj_design+0x244>
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 <lv_obj_design+0xe0>
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 <lv_obj_design+0x228>)
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 <lv_obj_design+0x218>)
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 <lv_obj_design+0x22c>)
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_obj_design+0xb8>
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_obj_design+0x230>)
lv_draw_mask_radius_init(mp, &obj->coords, r, false);
46ec: 4f38 ldr r7, [pc, #224] ; (47d0 <lv_obj_design+0x234>)
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 <lv_obj_design+0x238>)
4708: f504 7118 add.w r1, r4, #608 ; 0x260
470c: 4630 mov r0, r6
470e: 4798 blx r3
4710: e7a0 b.n 4654 <lv_obj_design+0xb8>
else if(mode == LV_DESIGN_DRAW_POST) {
4712: 2a01 cmp r2, #1
4714: d001 beq.n 471a <lv_obj_design+0x17e>
return LV_DESIGN_RES_OK;
4716: 2500 movs r5, #0
4718: e79c b.n 4654 <lv_obj_design+0xb8>
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
471a: f8df 80c4 ldr.w r8, [pc, #196] ; 47e0 <lv_obj_design+0x244>
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_obj_design+0x196>
lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8);
4726: 4b2c ldr r3, [pc, #176] ; (47d8 <lv_obj_design+0x23c>)
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 <lv_obj_design+0x240>)
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 <lv_obj_design+0x17a>
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 <lv_obj_design+0x224>)
4744: 4798 blx r3
lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc);
4746: 4b1f ldr r3, [pc, #124] ; (47c4 <lv_obj_design+0x228>)
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 <lv_obj_design+0x218>)
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 <lv_obj_design+0x22c>)
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 <lv_obj_design+0xb8>
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 <lv_obj_init_draw_label_dsc>:
{
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 <lv_obj_init_draw_label_dsc+0xa8>)
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_init_draw_label_dsc+0xa4>
_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_init_draw_label_dsc+0xa4>
_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_init_draw_label_dsc+0xb4>
_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_init_draw_label_dsc+0xac>)
_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_init_draw_label_dsc+0xb0>)
_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 <lv_obj_init_draw_label_dsc+0xa4>
4876: 8a22 ldrh r2, [r4, #16]
4878: 429a cmp r2, r3
487a: d005 beq.n 4888 <lv_obj_init_draw_label_dsc+0xa4>
_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 <lv_obj_init_draw_img_dsc>:
{
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 <lv_obj_init_draw_img_dsc+0x94>)
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_init_draw_img_dsc+0x90>
_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 <lv_obj_init_draw_img_dsc+0x90>
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 <lv_obj_init_draw_img_dsc+0x98>)
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 <lv_obj_init_draw_img_dsc+0x9c>)
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 <lv_obj_get_draw_rect_ext_pad_size>:
{
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 <lv_obj_get_draw_rect_ext_pad_size+0x1dc>)
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_obj_get_draw_rect_ext_pad_size+0x180>
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 <lv_obj_get_draw_rect_ext_pad_size+0x1e4>
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_get_draw_rect_ext_pad_size+0x12a>
_LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar)
4968: 4b6c ldr r3, [pc, #432] ; (4b1c <lv_obj_get_draw_rect_ext_pad_size+0x1e0>)
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_get_draw_rect_ext_pad_size+0x12a>
_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 <lv_obj_get_draw_rect_ext_pad_size+0x1e8>
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 <lv_obj_get_draw_rect_ext_pad_size+0x1ec>
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_get_draw_rect_ext_pad_size+0x156>
_LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar)
4a72: 4b2a ldr r3, [pc, #168] ; (4b1c <lv_obj_get_draw_rect_ext_pad_size+0x1e0>)
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_get_draw_rect_ext_pad_size+0x156>
_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 <lv_obj_get_draw_rect_ext_pad_size+0x1e0>)
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_get_draw_rect_ext_pad_size+0x18>
_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 <lv_obj_get_draw_rect_ext_pad_size+0x1a>
4b18: 00003711 .word 0x00003711
4b1c: 00003839 .word 0x00003839
4b20: 000038c9 .word 0x000038c9
4b24: 0001019d .word 0x0001019d
4b28: 0000e131 .word 0x0000e131
00004b2c <lv_obj_signal>:
{
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 <lv_obj_signal+0x2e>
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 <lv_obj_signal+0x32>
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 <lv_obj_signal+0x50>
else info->result = NULL;
4b5e: 2300 movs r3, #0
4b60: 6053 str r3, [r2, #4]
4b62: e7fa b.n 4b5a <lv_obj_signal+0x2e>
}
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 <lv_obj_signal+0xc0>)
4b6a: 4b21 ldr r3, [pc, #132] ; (4bf0 <lv_obj_signal+0xc4>)
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 <lv_obj_signal+0xc8>)
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 <lv_obj_signal+0xcc>)
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 <lv_obj_signal+0x2e>
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_signal+0x2e>
lv_obj_realign(obj);
4ba0: 4b16 ldr r3, [pc, #88] ; (4bfc <lv_obj_signal+0xd0>)
4ba2: 4628 mov r0, r5
4ba4: 4798 blx r3
4ba6: e7e9 b.n 4b7c <lv_obj_signal+0x50>
lv_obj_refresh_ext_draw_pad(obj);
4ba8: 4b15 ldr r3, [pc, #84] ; (4c00 <lv_obj_signal+0xd4>)
4baa: 4628 mov r0, r5
4bac: 4798 blx r3
4bae: e7d4 b.n 4b5a <lv_obj_signal+0x2e>
lv_obj_add_state(obj, LV_STATE_PRESSED);
4bb0: 4b14 ldr r3, [pc, #80] ; (4c04 <lv_obj_signal+0xd8>)
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_signal+0x2e>
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 <lv_obj_signal+0xdc>)
4bbe: 4628 mov r0, r5
4bc0: e7f9 b.n 4bb6 <lv_obj_signal+0x8a>
if(lv_group_get_editing(lv_obj_get_group(obj))) {
4bc2: 4b12 ldr r3, [pc, #72] ; (4c0c <lv_obj_signal+0xe0>)
4bc4: 4628 mov r0, r5
4bc6: 4798 blx r3
4bc8: 4b11 ldr r3, [pc, #68] ; (4c10 <lv_obj_signal+0xe4>)
4bca: 4798 blx r3
4bcc: 4b0d ldr r3, [pc, #52] ; (4c04 <lv_obj_signal+0xd8>)
4bce: b110 cbz r0, 4bd6 <lv_obj_signal+0xaa>
lv_obj_add_state(obj, state);
4bd0: 2106 movs r1, #6
4bd2: 4628 mov r0, r5
4bd4: e7ef b.n 4bb6 <lv_obj_signal+0x8a>
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_signal+0x90>
lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED);
4be0: 2106 movs r1, #6
4be2: e7eb b.n 4bbc <lv_obj_signal+0x90>
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
4be4: 4b0b ldr r3, [pc, #44] ; (4c14 <lv_obj_signal+0xe8>)
4be6: 2100 movs r1, #0
4be8: 4628 mov r0, r5
4bea: e7e4 b.n 4bb6 <lv_obj_signal+0x8a>
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 <lv_refr_vdb_flush>:
/**
* 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 <lv_refr_vdb_flush+0x60>)
4c1c: 4b17 ldr r3, [pc, #92] ; (4c7c <lv_refr_vdb_flush+0x64>)
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_refr_vdb_flush+0x68>)
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 <lv_refr_vdb_flush+0x2c>
}
}
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 <lv_refr_vdb_flush+0x36>
else vdb->flushing_last = 0;
4c3a: 2300 movs r3, #0
4c3c: e00a b.n 4c54 <lv_refr_vdb_flush+0x3c>
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 <lv_refr_vdb_flush+0x2e>
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 <lv_refr_vdb_flush+0x26>
4c4c: e7ee b.n 4c2c <lv_refr_vdb_flush+0x14>
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 <lv_refr_vdb_flush+0x22>
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 <lv_refr_vdb_flush+0x4a>
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 <lv_refr_vdb_flush+0x5c>
4c66: 6863 ldr r3, [r4, #4]
4c68: b123 cbz r3, 4c74 <lv_refr_vdb_flush+0x5c>
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 <lv_refr_get_top_obj>:
{
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 <lv_refr_get_top_obj+0x68>)
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_refr_get_top_obj+0x18>
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_refr_get_top_obj+0x12>
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 <lv_refr_get_top_obj+0x4c>
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_refr_get_top_obj+0x12>
_LV_LL_READ(obj->child_ll, i) {
4cb6: f104 0804 add.w r8, r4, #4
4cba: 4b0d ldr r3, [pc, #52] ; (4cf0 <lv_refr_get_top_obj+0x6c>)
4cbc: f8df 9034 ldr.w r9, [pc, #52] ; 4cf4 <lv_refr_get_top_obj+0x70>
4cc0: 4640 mov r0, r8
4cc2: 4798 blx r3
4cc4: 4605 mov r5, r0
4cc6: b92d cbnz r5, 4cd4 <lv_refr_get_top_obj+0x50>
if(design_res == LV_DESIGN_RES_COVER) {
4cc8: 2e01 cmp r6, #1
4cca: d1e4 bne.n 4c96 <lv_refr_get_top_obj+0x12>
4ccc: 4620 mov r0, r4
4cce: e7e3 b.n 4c98 <lv_refr_get_top_obj+0x14>
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 <lv_refr_get_top_obj+0x32>
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 <lv_refr_get_top_obj>
if(found_p != NULL) {
4cdc: 2800 cmp r0, #0
4cde: d1db bne.n 4c98 <lv_refr_get_top_obj+0x14>
_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 <lv_refr_get_top_obj+0x42>
4cea: bf00 nop
4cec: 0000e091 .word 0x0000e091
4cf0: 0000e6a9 .word 0x0000e6a9
4cf4: 0000e6b5 .word 0x0000e6b5
00004cf8 <lv_refr_obj>:
{
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_refr_obj+0x8e>
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 <lv_refr_obj+0xe0>)
union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area);
4d12: f8df 90cc ldr.w r9, [pc, #204] ; 4de0 <lv_refr_obj+0xe8>
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 <lv_refr_obj+0x8e>
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 <lv_refr_obj+0x62>
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_refr_obj+0x82>
_LV_LL_READ_BACK(obj->child_ll, child_p) {
4d6a: 1d27 adds r7, r4, #4
4d6c: 4b1b ldr r3, [pc, #108] ; (4ddc <lv_refr_obj+0xe4>)
4d6e: f8df 8074 ldr.w r8, [pc, #116] ; 4de4 <lv_refr_obj+0xec>
4d72: 4638 mov r0, r7
4d74: 4798 blx r3
4d76: 4605 mov r5, r0
4d78: b945 cbnz r5, 4d8c <lv_refr_obj+0x94>
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 <lv_refr_obj+0x8e>
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+0xd6>
lv_refr_obj(child_p, &mask_child);
4dc6: a906 add r1, sp, #24
4dc8: 4628 mov r0, r5
4dca: f7ff ff95 bl 4cf8 <lv_refr_obj>
_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 <lv_refr_obj+0x80>
4dd8: 000022d5 .word 0x000022d5
4ddc: 0000e6af .word 0x0000e6af
4de0: 0000de8d .word 0x0000de8d
4de4: 0000e6d5 .word 0x0000e6d5
00004de8 <lv_refr_obj_and_children>:
{
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 <lv_refr_obj_and_children+0x16>
4df2: 4b15 ldr r3, [pc, #84] ; (4e48 <lv_refr_obj_and_children+0x60>)
4df4: 6818 ldr r0, [r3, #0]
4df6: 4b15 ldr r3, [pc, #84] ; (4e4c <lv_refr_obj_and_children+0x64>)
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_and_children+0x2e>
lv_refr_obj(top_p, mask_p);
4dfe: 4631 mov r1, r6
4e00: 4620 mov r0, r4
4e02: 4f13 ldr r7, [pc, #76] ; (4e50 <lv_refr_obj_and_children+0x68>)
par = lv_obj_get_parent(top_p);
4e04: f8df 804c ldr.w r8, [pc, #76] ; 4e54 <lv_refr_obj_and_children+0x6c>
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_and_children+0x70>
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 <lv_refr_obj_and_children+0x32>
}
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 <lv_refr_obj_and_children+0x56>
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 <lv_refr_obj_and_children+0x4c>
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_and_children+0x2c>
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 <lv_refr_obj_and_children+0x36>
4e46: bf00 nop
4e48: 20008100 .word 0x20008100
4e4c: 00001871 .word 0x00001871
4e50: 00004cf9 .word 0x00004cf9
4e54: 00002125 .word 0x00002125
4e58: 0000e6d5 .word 0x0000e6d5
00004e5c <lv_refr_area_part>:
{
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 <lv_refr_area_part+0x6c>)
4e60: 4b1a ldr r3, [pc, #104] ; (4ecc <lv_refr_area_part+0x70>)
{
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_refr_area_part+0x74>)
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_refr_area_part+0x60>
_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_area_part+0x78>)
lv_refr_obj_and_children(top_p, &start_mask);
4e7a: 4d17 ldr r5, [pc, #92] ; (4ed8 <lv_refr_area_part+0x7c>)
_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 <lv_refr_area_part+0x80>)
4e82: 6820 ldr r0, [r4, #0]
4e84: 4798 blx r3
4e86: 4b16 ldr r3, [pc, #88] ; (4ee0 <lv_refr_area_part+0x84>)
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 <lv_refr_area_part+0x88>)
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 <lv_refr_area_part+0x8c>)
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 <lv_refr_area_part+0x90>)
4eaa: 4798 blx r3
4eac: b908 cbnz r0, 4eb2 <lv_refr_area_part+0x56>
lv_refr_vdb_flush();
4eae: 4b10 ldr r3, [pc, #64] ; (4ef0 <lv_refr_area_part+0x94>)
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 <lv_refr_area_part+0x62>
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 <lv_refr_area_part+0x5a>
4ec4: e7d5 b.n 4e72 <lv_refr_area_part+0x16>
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 <lv_area_copy>:
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 <lv_area_copy+0x6>
}
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 <lv_style_list_get_style>:
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 <get_property_index.isra.0>:
* @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 <get_property_index.isra.0+0x64>
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 <get_property_index.isra.0+0x20>
else i += sizeof(const void *);
i += sizeof(lv_style_property_t);
}
return id_guess;
54d0: 4628 mov r0, r5
54d2: e009 b.n 54e8 <get_property_index.isra.0+0x34>
if(style->map[i] == id_to_find) {
54d4: 4297 cmp r7, r2
54d6: d111 bne.n 54fc <get_property_index.isra.0+0x48>
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 <get_property_index.isra.0+0x36>
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 <get_property_index.isra.0+0x48>
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 <get_property_index.isra.0+0x56>
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 <get_property_index.isra.0+0x16>
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 <get_property_index.isra.0+0x50>
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 <get_property_index.isra.0+0x52>
if(style->map == NULL) return -1;
5518: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff
551c: e7e4 b.n 54e8 <get_property_index.isra.0+0x34>
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_style_init>:
_lv_memset_00(style, sizeof(lv_style_t));
5530: 4b01 ldr r3, [pc, #4] ; (5538 <lv_style_init+0x8>)
5532: 2104 movs r1, #4
5534: 4718 bx r3
5536: bf00 nop
5538: 0000f019 .word 0x0000f019
0000553c <lv_style_list_init>:
_lv_memset_00(list, sizeof(lv_style_list_t));
553c: 4b01 ldr r3, [pc, #4] ; (5544 <lv_style_list_init+0x8>)
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 <get_alloc_local_style>:
*/
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 <get_alloc_local_style+0x16>
56fe: 4b1a ldr r3, [pc, #104] ; (5768 <get_alloc_local_style+0x74>)
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 <get_alloc_local_style+0x78>)
570c: 2004 movs r0, #4
570e: 4798 blx r3
LV_ASSERT_MEM(local_style);
5710: 4b17 ldr r3, [pc, #92] ; (5770 <get_alloc_local_style+0x7c>)
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 <get_alloc_local_style+0x42>
571a: 4b16 ldr r3, [pc, #88] ; (5774 <get_alloc_local_style+0x80>)
571c: 4916 ldr r1, [pc, #88] ; (5778 <get_alloc_local_style+0x84>)
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 <get_alloc_local_style+0x88>)
5728: 47a8 blx r5
572a: 4815 ldr r0, [pc, #84] ; (5780 <get_alloc_local_style+0x8c>)
572c: 4915 ldr r1, [pc, #84] ; (5784 <get_alloc_local_style+0x90>)
572e: 4622 mov r2, r4
5730: 4633 mov r3, r6
5732: 4788 blx r1
5734: e7fe b.n 5734 <get_alloc_local_style+0x40>
if(local_style == NULL) {
5736: b95c cbnz r4, 5750 <get_alloc_local_style+0x5c>
LV_LOG_WARN("get_local_style: couldn't create local style");
5738: 4b13 ldr r3, [pc, #76] ; (5788 <get_alloc_local_style+0x94>)
573a: 9300 str r3, [sp, #0]
573c: 490e ldr r1, [pc, #56] ; (5778 <get_alloc_local_style+0x84>)
573e: 4b0d ldr r3, [pc, #52] ; (5774 <get_alloc_local_style+0x80>)
5740: 4d0e ldr r5, [pc, #56] ; (577c <get_alloc_local_style+0x88>)
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 <get_alloc_local_style+0x98>)
5752: 4620 mov r0, r4
5754: 4798 blx r3
_lv_style_list_add_style(list, local_style);
5756: 4b0e ldr r3, [pc, #56] ; (5790 <get_alloc_local_style+0x9c>)
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 <get_alloc_local_style+0x56>
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 <lv_style_reset>:
{
5794: b510 push {r4, lr}
lv_mem_free(style->map);
5796: 4b03 ldr r3, [pc, #12] ; (57a4 <lv_style_reset+0x10>)
{
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 <lv_style_copy>:
{
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 <lv_style_copy+0x28>
if(style_src->map == NULL) return;
57e0: 680b ldr r3, [r1, #0]
57e2: b16b cbz r3, 5800 <lv_style_copy+0x28>
uint16_t size = _lv_style_get_mem_size(style_src);
57e4: 4608 mov r0, r1
57e6: 4b07 ldr r3, [pc, #28] ; (5804 <lv_style_copy+0x2c>)
57e8: 4798 blx r3
style_dest->map = lv_mem_alloc(size);
57ea: 4b07 ldr r3, [pc, #28] ; (5808 <lv_style_copy+0x30>)
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 <lv_style_copy+0x34>)
}
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 <lv_style_remove_prop>:
{
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 <lv_style_remove_prop+0x56>
int32_t id = get_property_index(style, prop);
5818: 6806 ldr r6, [r0, #0]
581a: 4b14 ldr r3, [pc, #80] ; (586c <lv_style_remove_prop+0x5c>)
581c: 4630 mov r0, r6
581e: 4798 blx r3
if(id >= 0) {
5820: 1e05 subs r5, r0, #0
5822: db20 blt.n 5866 <lv_style_remove_prop+0x56>
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 <lv_style_remove_prop+0x56>
uint32_t map_size = _lv_style_get_mem_size(style);
5830: 4b0f ldr r3, [pc, #60] ; (5870 <lv_style_remove_prop+0x60>)
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 <lv_style_remove_prop+0x48>
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 <lv_style_remove_prop+0x4c>
style->map = lv_mem_realloc(style->map, map_size - prop_size);
584e: 4b09 ldr r3, [pc, #36] ; (5874 <lv_style_remove_prop+0x64>)
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 <lv_style_remove_prop+0x36>
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 <lv_style_remove_prop+0x38>
if(style == NULL) return false;
5866: 2000 movs r0, #0
5868: e7f5 b.n 5856 <lv_style_remove_prop+0x46>
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 <lv_style_list_get_local_style>:
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 <lv_style_list_get_local_style+0x14>
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 <lv_style_list_copy>:
{
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 <lv_style_list_copy+0xa0>)
{
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 <lv_style_list_copy+0x3c>
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 <lv_style_list_copy+0xa4>)
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 <lv_style_list_copy+0xa8>)
if(list_src->has_local == 0) {
5d4a: d117 bne.n 5d7c <lv_style_list_copy+0x50>
if(list_src->has_trans) {
5d4c: b16a cbz r2, 5d6a <lv_style_list_copy+0x3e>
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 <lv_style_list_copy+0x3a>
if(list_src->has_trans) {
5d7c: b1ca cbz r2, 5db2 <lv_style_list_copy+0x86>
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 <lv_style_list_copy+0xac>)
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 <lv_style_list_copy+0xb0>)
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 <lv_style_list_copy+0x6a>
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 <lv_color_mix>:
* @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 <color_blend_true_color_additive>:
}
}
}
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 <color_blend_true_color_additive+0x28>
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 <color_blend_true_color_additive+0x68>
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 <color_blend_true_color_additive+0x24>
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 <color_blend_true_color_additive+0x7c>)
616e: 4718 bx r3
6170: 000060a5 .word 0x000060a5
00006174 <color_blend_true_color_subtractive>:
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 <color_blend_true_color_subtractive+0x28>
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 <color_blend_true_color_subtractive+0x62>
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 <color_blend_true_color_subtractive+0x24>
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 <color_blend_true_color_subtractive+0x78>)
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 <show_error>:
}
}
}
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 <show_error+0x3c>)
{
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 <show_error+0x40>)
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 <show_error+0x44>)
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 <show_error+0x48>)
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 <show_error+0x4c>)
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_area_copy>:
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 <lv_area_copy+0x6>
}
6dfa: 4770 bx lr
00006dfc <lv_draw_map>:
{
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 <lv_draw_map+0x28c>)
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 <lv_draw_map+0x290>)
6e22: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
6e24: 4b9a ldr r3, [pc, #616] ; (7090 <lv_draw_map+0x294>)
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 <lv_draw_map+0x298>)
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 <lv_draw_map+0xa2>
6e5e: 8863 ldrh r3, [r4, #2]
6e60: b9eb cbnz r3, 6e9e <lv_draw_map+0xa2>
6e62: 8923 ldrh r3, [r4, #8]
6e64: f5b3 7f80 cmp.w r3, #256 ; 0x100
6e68: d119 bne.n 6e9e <lv_draw_map+0xa2>
6e6a: 9b0c ldr r3, [sp, #48] ; 0x30
6e6c: b9bb cbnz r3, 6e9e <lv_draw_map+0xa2>
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 <lv_draw_map+0x1ac>
6e76: 7aa3 ldrb r3, [r4, #10]
6e78: 2b00 cmp r3, #0
6e7a: f040 8097 bne.w 6fac <lv_draw_map+0x1b0>
_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 <lv_draw_map+0x29c>)
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 <lv_draw_map+0x5f2>
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 <lv_draw_map+0x5f6>
6f3a: f5b3 7f80 cmp.w r3, #256 ; 0x100
6f3e: f040 8258 bne.w 73f2 <lv_draw_map+0x5f6>
6f42: 9b0c ldr r3, [sp, #48] ; 0x30
6f44: 2b00 cmp r3, #0
6f46: f040 8254 bne.w 73f2 <lv_draw_map+0x5f6>
6f4a: 7aa3 ldrb r3, [r4, #10]
6f4c: 2b00 cmp r3, #0
6f4e: f040 8250 bne.w 73f2 <lv_draw_map+0x5f6>
6f52: 9b07 ldr r3, [sp, #28]
6f54: 2b00 cmp r3, #0
6f56: f000 824c beq.w 73f2 <lv_draw_map+0x5f6>
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 <lv_draw_map+0x2a0>)
6f5c: a822 add r0, sp, #136 ; 0x88
6f5e: 47a8 blx r5
6f60: f5b0 7ff0 cmp.w r0, #480 ; 0x1e0
6f64: d824 bhi.n 6fb0 <lv_draw_map+0x1b4>
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 <lv_draw_map+0x2a4>)
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 <lv_draw_map+0x236>
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 <lv_draw_map+0x1d6>
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 <lv_draw_map+0xa8>
6fac: 2302 movs r3, #2
6fae: e779 b.n 6ea4 <lv_draw_map+0xa8>
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_draw_map+0x170>
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 <lv_draw_map+0x1d0>
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 <lv_draw_map+0x1ba>
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 <lv_draw_map+0x20c>
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_draw_map+0x194>
_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 <lv_draw_map+0x29c>)
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 <lv_draw_map+0x202>
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 <lv_draw_map+0x262>
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 <lv_draw_map+0x29c>)
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 <lv_draw_map+0x2a8>)
7062: 47a0 blx r4
_lv_mem_buf_release(map2);
7064: ee18 0a10 vmov r0, s16
7068: 47a0 blx r4
}
706a: e713 b.n 6e94 <lv_draw_map+0x98>
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 <lv_draw_map+0x60a>
if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA;
7074: 2205 movs r2, #5
7076: e1de b.n 7436 <lv_draw_map+0x63a>
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 <lv_draw_map+0x6ac>
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
7080: f04f 0b02 mov.w fp, #2
7084: e224 b.n 74d0 <lv_draw_map+0x6d4>
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 <lv_draw_map+0x376>
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 <lv_draw_map+0x344>
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 <lv_draw_map+0x57c>)
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 <lv_draw_map+0x570>
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 <lv_draw_map+0x580>)
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 <lv_draw_map+0x590>
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 <lv_draw_map+0x70a>
if(transform) {
7172: 9b15 ldr r3, [sp, #84] ; 0x54
7174: 2b00 cmp r3, #0
7176: f000 80d7 beq.w 7328 <lv_draw_map+0x52c>
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 <lv_draw_map+0x3d8>
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 <lv_draw_map+0x408>
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 <lv_draw_map+0x53a>
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 <lv_draw_map+0x3ec>
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 <lv_draw_map+0x3be>
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 <lv_draw_map+0x3be>
else if(xs_int < 0) return false;
7204: 1233 asrs r3, r6, #8
7206: 2b00 cmp r3, #0
7208: dbe0 blt.n 71cc <lv_draw_map+0x3d0>
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 <lv_draw_map+0x3d0>
else if(ys_int < 0) return false;
721c: 9b12 ldr r3, [sp, #72] ; 0x48
721e: 2b00 cmp r3, #0
7220: dbd4 blt.n 71cc <lv_draw_map+0x3d0>
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 <lv_draw_map+0x500>
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 <lv_draw_map+0x4e6>
*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_draw_map+0x468>
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 <lv_draw_map+0x3d0>
}
if(dsc->cfg.antialias == false) return true;
7264: f89d 20ab ldrb.w r2, [sp, #171] ; 0xab
7268: b19a cbz r2, 7292 <lv_draw_map+0x496>
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 <lv_draw_map+0x584>)
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 <lv_draw_map+0x3d0>
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_draw_map+0x4dc>
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 <lv_draw_map+0x53a>
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 <lv_draw_map+0x454>
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 <lv_draw_map+0x588>)
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 <lv_draw_map+0x58c>)
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 <lv_draw_map+0x456>
if(alpha_byte) {
7328: 9b07 ldr r3, [sp, #28]
732a: b17b cbz r3, 734c <lv_draw_map+0x550>
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 <lv_draw_map+0x556>
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 <lv_draw_map+0x2e6>
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 <lv_draw_map+0x4a2>
if(c.full == chroma_keyed_color.full) {
7364: f5b3 6ffc cmp.w r3, #2016 ; 0x7e0
7368: d199 bne.n 729e <lv_draw_map+0x4a2>
736a: e72f b.n 71cc <lv_draw_map+0x3d0>
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 <lv_draw_map+0x344>
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 <lv_draw_map+0x744>)
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 <lv_draw_map+0x5e6>
73b8: 9b0c ldr r3, [sp, #48] ; 0x30
73ba: b993 cbnz r3, 73e2 <lv_draw_map+0x5e6>
73bc: 8863 ldrh r3, [r4, #2]
73be: b983 cbnz r3, 73e2 <lv_draw_map+0x5e6>
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_draw_map+0x5ec>
_lv_memset_ff(mask_buf, mask_buf_size);
73d4: 990a ldr r1, [sp, #40] ; 0x28
73d6: 4b5b ldr r3, [pc, #364] ; (7544 <lv_draw_map+0x748>)
73d8: 4638 mov r0, r7
73da: 4798 blx r3
px_i = 0;
73dc: f04f 0800 mov.w r8, #0
73e0: e6c3 b.n 716a <lv_draw_map+0x36e>
mask_res = (alpha_byte || chroma_key || draw_dsc->angle ||
73e2: f04f 0b02 mov.w fp, #2
73e6: e7f3 b.n 73d0 <lv_draw_map+0x5d4>
px_i = 0;
73e8: f8dd 802c ldr.w r8, [sp, #44] ; 0x2c
73ec: e6bd b.n 716a <lv_draw_map+0x36e>
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 <lv_draw_map+0x74c>)
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 <lv_draw_map+0x270>
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 <lv_draw_map+0x750>)
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_draw_map+0x754>)
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 <lv_draw_map+0x682>
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 <lv_draw_map+0x278>
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 <lv_draw_map+0x758>)
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 <lv_draw_map+0x27c>
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 <lv_draw_map+0x284>
74b0: 9b0c ldr r3, [sp, #48] ; 0x30
74b2: 2b00 cmp r3, #0
74b4: f47f ade4 bne.w 7080 <lv_draw_map+0x284>
74b8: 8863 ldrh r3, [r4, #2]
74ba: 2b00 cmp r3, #0
74bc: f47f ade0 bne.w 7080 <lv_draw_map+0x284>
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_draw_map+0x6e0>
_lv_memset_ff(mask_buf, mask_buf_size);
74d4: 990a ldr r1, [sp, #40] ; 0x28
74d6: 4b1b ldr r3, [pc, #108] ; (7544 <lv_draw_map+0x748>)
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 <lv_draw_map+0x2ac>
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 <lv_draw_map+0x73e>
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 <lv_draw_map+0x744>)
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 <lv_draw_map+0x264>
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 <lv_draw_img_dsc_init>:
{
7558: b510 push {r4, lr}
_lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t));
755a: 4b08 ldr r3, [pc, #32] ; (757c <lv_draw_img_dsc_init+0x24>)
{
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 <lv_img_cf_get_px_size>:
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 <lv_img_cf_get_px_size+0x14>)
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 <lv_img_cf_is_chroma_keyed>:
switch(cf) {
7598: 2803 cmp r0, #3
759a: d005 beq.n 75a8 <lv_img_cf_is_chroma_keyed+0x10>
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 <lv_img_cf_has_alpha>:
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 <lv_draw_img>:
{
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_draw_img+0x28>
LV_LOG_WARN("Image draw: src is NULL");
75d4: 4b76 ldr r3, [pc, #472] ; (77b0 <lv_draw_img+0x1f0>)
75d6: 9300 str r3, [sp, #0]
75d8: 4b76 ldr r3, [pc, #472] ; (77b4 <lv_draw_img+0x1f4>)
75da: 224d movs r2, #77 ; 0x4d
LV_LOG_WARN("Image draw error");
75dc: 4976 ldr r1, [pc, #472] ; (77b8 <lv_draw_img+0x1f8>)
75de: 4d77 ldr r5, [pc, #476] ; (77bc <lv_draw_img+0x1fc>)
75e0: 2002 movs r0, #2
75e2: 47a8 blx r5
show_error(coords, mask, "No\ndata");
75e4: 4a76 ldr r2, [pc, #472] ; (77c0 <lv_draw_img+0x200>)
75e6: e017 b.n 7618 <lv_draw_img+0x58>
if(dsc->opa <= LV_OPA_MIN) return;
75e8: 781b ldrb r3, [r3, #0]
75ea: 2b05 cmp r3, #5
75ec: d969 bls.n 76c2 <lv_draw_img+0x102>
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 <lv_draw_img+0x204>)
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 <lv_draw_img+0x1b4>
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_draw_img+0x6a>
LV_LOG_WARN("Image draw error");
7606: 4b70 ldr r3, [pc, #448] ; (77c8 <lv_draw_img+0x208>)
7608: 9300 str r3, [sp, #0]
760a: 22f7 movs r2, #247 ; 0xf7
760c: 4b6f ldr r3, [pc, #444] ; (77cc <lv_draw_img+0x20c>)
760e: 496a ldr r1, [pc, #424] ; (77b8 <lv_draw_img+0x1f8>)
7610: 4e6a ldr r6, [pc, #424] ; (77bc <lv_draw_img+0x1fc>)
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 <lv_draw_img+0x210>)
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 <lv_draw_img+0x214>)
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 <lv_draw_img+0x218>)
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_draw_img+0x10c>
lv_area_copy(&map_area_rot, coords);
7640: 4b66 ldr r3, [pc, #408] ; (77dc <lv_draw_img+0x21c>)
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 <lv_draw_img+0x94>
764e: f5b0 7f80 cmp.w r0, #256 ; 0x100
7652: d026 beq.n 76a2 <lv_draw_img+0xe2>
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 <lv_draw_img+0x220>)
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 <lv_draw_img+0x224>)
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_img+0x102>
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 <lv_draw_img+0x228>)
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 <lv_draw_img+0x224>)
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 <lv_draw_img+0x102>
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 <lv_draw_img+0x22c>)
76f0: 4798 blx r3
lv_area_copy(&line, &mask_com);
76f2: 4b3a ldr r3, [pc, #232] ; (77dc <lv_draw_img+0x21c>)
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 <lv_draw_img+0x230>)
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_draw_img+0x170>
_lv_mem_buf_release(buf);
7728: 4b32 ldr r3, [pc, #200] ; (77f4 <lv_draw_img+0x234>)
772a: 4648 mov r0, r9
772c: 4798 blx r3
if(res == LV_RES_INV) {
772e: e7c8 b.n 76c2 <lv_draw_img+0x102>
union_ok = _lv_area_intersect(&mask_line, clip_area, &line);
7730: 4b2c ldr r3, [pc, #176] ; (77e4 <lv_draw_img+0x224>)
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 <lv_draw_img+0x1ea>
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 <lv_draw_img+0x238>)
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_draw_img+0x1be>
lv_img_decoder_close(&cdsc->dec_dsc);
7756: 4628 mov r0, r5
7758: 4b28 ldr r3, [pc, #160] ; (77fc <lv_draw_img+0x23c>)
LV_LOG_WARN("Image draw can't read the line");
775a: 4d18 ldr r5, [pc, #96] ; (77bc <lv_draw_img+0x1fc>)
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 <lv_draw_img+0x240>)
7760: 9300 str r3, [sp, #0]
7762: 2002 movs r0, #2
7764: 4b19 ldr r3, [pc, #100] ; (77cc <lv_draw_img+0x20c>)
7766: 4914 ldr r1, [pc, #80] ; (77b8 <lv_draw_img+0x1f8>)
7768: f44f 729a mov.w r2, #308 ; 0x134
776c: 47a8 blx r5
_lv_mem_buf_release(buf);
776e: 4b21 ldr r3, [pc, #132] ; (77f4 <lv_draw_img+0x234>)
7770: 4648 mov r0, r9
7772: 4798 blx r3
LV_LOG_WARN("Image draw error");
7774: 4b14 ldr r3, [pc, #80] ; (77c8 <lv_draw_img+0x208>)
7776: 9300 str r3, [sp, #0]
7778: 2258 movs r2, #88 ; 0x58
777a: 4b0e ldr r3, [pc, #56] ; (77b4 <lv_draw_img+0x1f4>)
777c: e72e b.n 75dc <lv_draw_img+0x1c>
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 <lv_draw_img+0x228>)
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 <lv_draw_img+0x160>
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 <lv_img_src_get_type>:
if(src == NULL) return img_src_type;
7804: b138 cbz r0, 7816 <lv_img_src_get_type+0x12>
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 <lv_img_src_get_type+0x16>
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 <hex_char_to_num>:
*/
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 <hex_char_to_num+0x20>
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 <lv_draw_label_dsc_init>:
{
7844: b510 push {r4, lr}
_lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t));
7846: 4b09 ldr r3, [pc, #36] ; (786c <lv_draw_label_dsc_init+0x28>)
{
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 <lv_draw_label_dsc_init+0x2c>)
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 <lv_draw_label>:
{
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 <lv_draw_label+0x1d6>
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 <lv_draw_label+0x1d6>
bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask);
78a4: 460a mov r2, r1
78a6: 4b9c ldr r3, [pc, #624] ; (7b18 <lv_draw_label+0x2a4>)
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 <lv_draw_label+0x1d6>
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 <lv_draw_label+0x1e0>
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 <lv_draw_label+0x204>
7900: 2a00 cmp r2, #0
7902: f040 80bb bne.w 7a7c <lv_draw_label+0x208>
7906: 2800 cmp r0, #0
7908: f280 80b9 bge.w 7a7e <lv_draw_label+0x20a>
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 <lv_draw_label+0x208>
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 <lv_draw_label+0x2a8>)
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 <lv_draw_label+0x20e>
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 <lv_draw_label+0x262>
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 <lv_draw_label+0x2ac>)
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_label+0x19e>
lv_draw_line_dsc_init(&line_dsc);
79d8: 4b52 ldr r3, [pc, #328] ; (7b24 <lv_draw_label+0x2b0>)
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 <lv_draw_label+0x2b4>)
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 <lv_draw_label+0x294>
}
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 <lv_draw_label+0x2b8>)
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 <lv_draw_label+0x58>
uint32_t line_start = 0;
7a78: 9404 str r4, [sp, #16]
7a7a: e75d b.n 7938 <lv_draw_label+0xc4>
7a7c: 2200 movs r2, #0
7a7e: 9204 str r2, [sp, #16]
7a80: e75a b.n 7938 <lv_draw_label+0xc4>
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 <lv_draw_label+0x252>
7aa8: f513 6f80 cmn.w r3, #1024 ; 0x400
7aac: db0b blt.n 7ac6 <lv_draw_label+0x252>
7aae: 6823 ldr r3, [r4, #0]
7ab0: 2b00 cmp r3, #0
7ab2: da08 bge.n 7ac6 <lv_draw_label+0x252>
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 <lv_draw_label+0x1d6>
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 <lv_draw_label+0xec>
else if(dsc->flag & LV_TXT_FLAG_RIGHT) {
7ad6: 071c lsls r4, r3, #28
7ad8: f57f af6b bpl.w 79b2 <lv_draw_label+0x13e>
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 <lv_draw_label+0x2ac>)
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 <lv_draw_label+0x13a>
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 <lv_draw_label+0x42a>
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 <lv_draw_label+0x310>
7b3a: 9a11 ldr r2, [sp, #68] ; 0x44
7b3c: 429a cmp r2, r3
7b3e: d021 beq.n 7b84 <lv_draw_label+0x310>
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 <lv_draw_label+0x55c>)
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 <lv_draw_label+0x560>)
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 <lv_draw_label+0x54a>
if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) {
7b74: 2d23 cmp r5, #35 ; 0x23
7b76: d10f bne.n 7b98 <lv_draw_label+0x324>
if(cmd_state == CMD_STATE_WAIT) { /*Start char*/
7b78: 9908 ldr r1, [sp, #32]
7b7a: b929 cbnz r1, 7b88 <lv_draw_label+0x314>
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 <lv_draw_label+0x2a0>
uint16_t logical_char_pos = 0;
7b84: 2600 movs r6, #0
7b86: e7e2 b.n 7b4e <lv_draw_label+0x2da>
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 <lv_draw_label+0x3a6>
else if(cmd_state == CMD_STATE_IN) { /*Command end */
7b8e: 2b02 cmp r3, #2
7b90: f040 8118 bne.w 7dc4 <lv_draw_label+0x550>
cmd_state = CMD_STATE_WAIT;
7b94: 2300 movs r3, #0
7b96: e7bd b.n 7b14 <lv_draw_label+0x2a0>
if(cmd_state == CMD_STATE_PAR) {
7b98: 9b08 ldr r3, [sp, #32]
7b9a: 2b01 cmp r3, #1
7b9c: f040 810f bne.w 7dbe <lv_draw_label+0x54a>
if(letter == ' ') {
7ba0: 2d20 cmp r5, #32
7ba2: d17c bne.n 7c9e <lv_draw_label+0x42a>
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_draw_label+0x3a0>
_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 <lv_draw_label+0x564>)
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 <lv_draw_label+0x2a0>
recolor.full = dsc->color.full;
7c14: f8bb 3000 ldrh.w r3, [fp]
7c18: e7f9 b.n 7c0e <lv_draw_label+0x39a>
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 <lv_draw_label+0x568>)
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 <lv_draw_label+0x406>
7c38: 9a11 ldr r2, [sp, #68] ; 0x44
7c3a: 429a cmp r2, r3
7c3c: d01d beq.n 7c7a <lv_draw_label+0x406>
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 <lv_draw_label+0x406>
7c44: 42b2 cmp r2, r6
7c46: d918 bls.n 7c7a <lv_draw_label+0x406>
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 <lv_draw_label+0x56c>)
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 <lv_draw_label+0xd1e>
if(letter_w > 0) {
7c88: 9b1f ldr r3, [sp, #124] ; 0x7c
7c8a: b143 cbz r3, 7c9e <lv_draw_label+0x42a>
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 <lv_draw_label+0x2bc>
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 <lv_draw_label+0x480>
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 <lv_draw_label+0x570>)
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 <lv_draw_label+0x4c6>
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 <lv_draw_label+0x570>)
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 <lv_draw_label+0x574>)
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_draw_label+0xcf4>
_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 <lv_draw_label+0x578>)
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 <lv_draw_label+0x1d6>
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 <lv_draw_label+0x1c6>
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_draw_label+0x556>
lv_color_t color = dsc->color;
7dc4: f8bb 4000 ldrh.w r4, [fp]
7dc8: e72b b.n 7c22 <lv_draw_label+0x3ae>
7dca: 9c21 ldr r4, [sp, #132] ; 0x84
7dcc: e729 b.n 7c22 <lv_draw_label+0x3ae>
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 <lv_draw_label+0x414>
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 <lv_draw_label+0x414>
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 <lv_draw_label+0x414>
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 <lv_draw_label+0x414>
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 <lv_draw_label+0x414>
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 <lv_draw_label+0x894>)
7e62: 4629 mov r1, r5
7e64: 4798 blx r3
if(map_p == NULL) {
7e66: 4607 mov r7, r0
7e68: b928 cbnz r0, 7e76 <lv_draw_label+0x602>
LV_LOG_WARN("lv_draw_letter: character's bitmap not found");
7e6a: 4ba8 ldr r3, [pc, #672] ; (810c <lv_draw_label+0x898>)
7e6c: 9300 str r3, [sp, #0]
7e6e: f240 12b7 movw r2, #439 ; 0x1b7
7e72: 4ba7 ldr r3, [pc, #668] ; (8110 <lv_draw_label+0x89c>)
7e74: e39f b.n 85b6 <lv_draw_label+0xd42>
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 <lv_draw_label+0xa0e>
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 <lv_draw_label+0x7fe>
switch(bpp) {
7ea6: 3b01 subs r3, #1
7ea8: 2b07 cmp r3, #7
7eaa: f200 80d7 bhi.w 805c <lv_draw_label+0x7e8>
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 <lv_draw_label+0x8a0>)
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 <lv_draw_label+0x8a4>)
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_draw_label+0x8a8>)
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 <lv_draw_label+0x8ac>)
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 <lv_draw_label+0x8b0>)
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 <lv_draw_label+0x808>
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 <lv_draw_label+0x7d0>
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 <lv_draw_label+0x8b4>)
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 <lv_draw_label+0x8b8>)
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 <lv_draw_label+0x414>
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 <lv_draw_label+0x8bc>)
805a: e736 b.n 7eca <lv_draw_label+0x656>
LV_LOG_WARN("lv_draw_letter: invalid bpp not found");
805c: 4b35 ldr r3, [pc, #212] ; (8134 <lv_draw_label+0x8c0>)
805e: 9300 str r3, [sp, #0]
8060: f240 227a movw r2, #634 ; 0x27a
8064: 4b34 ldr r3, [pc, #208] ; (8138 <lv_draw_label+0x8c4>)
8066: e2a6 b.n 85b6 <lv_draw_label+0xd42>
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 <lv_draw_label+0x8c8>)
8070: e72b b.n 7eca <lv_draw_label+0x656>
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 <lv_draw_label+0x8cc>)
807a: e726 b.n 7eca <lv_draw_label+0x656>
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 <lv_draw_label+0x8d8>
if(other_mask_cnt) {
8092: 9b27 ldr r3, [sp, #156] ; 0x9c
8094: b1cb cbz r3, 80ca <lv_draw_label+0x856>
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 <lv_draw_label+0x8d0>)
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 <lv_draw_label+0x856>
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 <lv_draw_label+0x8d4>)
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 <lv_draw_label+0x9e4>
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 <lv_draw_label+0x79c>
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 <lv_draw_label+0x900>
if(opa == LV_OPA_COVER) {
8164: 9909 ldr r1, [sp, #36] ; 0x24
8166: 29ff cmp r1, #255 ; 0xff
8168: d160 bne.n 822c <lv_draw_label+0x9b8>
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 <lv_draw_label+0x9a2>
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 <lv_draw_label+0x9d4>
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 <lv_draw_label+0x818>
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 <lv_draw_label+0x900>
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_draw_label+0x9b2>
_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 <lv_draw_label+0xc8c>)
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 <lv_draw_label+0x86a>
if(bpp == 3) bpp = 4;
8282: 2b03 cmp r3, #3
8284: ee09 4a90 vmov s19, r4
8288: f000 80c0 beq.w 840c <lv_draw_label+0xb98>
switch(bpp) {
828c: 3b01 subs r3, #1
828e: 2b07 cmp r3, #7
8290: f200 80b0 bhi.w 83f4 <lv_draw_label+0xb80>
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 <lv_draw_label+0xc90>)
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 <lv_draw_label+0xa64>
if(prev_opa != opa || prev_bpp != bpp) {
82b2: 4a95 ldr r2, [pc, #596] ; (8508 <lv_draw_label+0xc94>)
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 <lv_draw_label+0xba4>
82c0: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104
82c4: 42aa cmp r2, r5
82c6: f040 80a7 bne.w 8418 <lv_draw_label+0xba4>
prev_opa = opa;
82ca: 4b8f ldr r3, [pc, #572] ; (8508 <lv_draw_label+0xc94>)
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 <lv_draw_label+0xc98>)
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_draw_label+0xc9c>)
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 <lv_draw_label+0xbc6>
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 <lv_draw_label+0xb68>
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 <lv_draw_label+0xca0>)
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 <lv_draw_label+0xca4>)
83e2: 4798 blx r3
83e4: e450 b.n 7c88 <lv_draw_label+0x414>
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 <lv_draw_label+0xca8>)
shades = 256;
83ee: f44f 7380 mov.w r3, #256 ; 0x100
83f2: e75a b.n 82aa <lv_draw_label+0xa36>
LV_LOG_WARN("lv_draw_letter: invalid bpp");
83f4: 4b4a ldr r3, [pc, #296] ; (8520 <lv_draw_label+0xcac>)
83f6: 9300 str r3, [sp, #0]
83f8: f240 12e5 movw r2, #485 ; 0x1e5
83fc: 4b49 ldr r3, [pc, #292] ; (8524 <lv_draw_label+0xcb0>)
83fe: e0da b.n 85b6 <lv_draw_label+0xd42>
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 <lv_draw_label+0xcb4>)
shades = 2;
8408: 2302 movs r3, #2
840a: e74e b.n 82aa <lv_draw_label+0xa36>
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 <lv_draw_label+0xcb8>)
shades = 16;
8414: 2310 movs r3, #16
8416: e748 b.n 82aa <lv_draw_label+0xa36>
8418: 990e ldr r1, [sp, #56] ; 0x38
841a: 483b ldr r0, [pc, #236] ; (8508 <lv_draw_label+0xc94>)
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 <lv_draw_label+0xbaa>
8438: e747 b.n 82ca <lv_draw_label+0xa56>
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 <lv_draw_label+0xc58>
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 <lv_draw_label+0xc26>
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 <lv_draw_label+0xcbc>)
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 <lv_draw_label+0xc26>
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 <lv_draw_label+0xcc0>)
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 <lv_draw_label+0xcc4>
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 <lv_draw_label+0xb34>
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 <lv_draw_label+0xbdc>
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 <lv_draw_label+0xd68>
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 <lv_draw_label+0xc40>
else if(dsc->flag & LV_TXT_FLAG_RIGHT) {
8568: 071a lsls r2, r3, #28
856a: f57f ac15 bpl.w 7d98 <lv_draw_label+0x524>
_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 <lv_draw_label+0xd50>)
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 <lv_draw_label+0x522>
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 <lv_draw_label+0xd54>)
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 <lv_draw_label+0x57c>
if(letter >= 0x20) {
85a6: 2d1f cmp r5, #31
85a8: f67f ab6e bls.w 7c88 <lv_draw_label+0x414>
LV_LOG_WARN("lv_draw_letter: glyph dsc. not found");
85ac: 4b07 ldr r3, [pc, #28] ; (85cc <lv_draw_label+0xd58>)
85ae: 9300 str r3, [sp, #0]
85b0: 4b07 ldr r3, [pc, #28] ; (85d0 <lv_draw_label+0xd5c>)
85b2: f240 12a1 movw r2, #417 ; 0x1a1
LV_LOG_WARN("lv_draw_letter: invalid bpp");
85b6: 4907 ldr r1, [pc, #28] ; (85d4 <lv_draw_label+0xd60>)
85b8: 4c07 ldr r4, [pc, #28] ; (85d8 <lv_draw_label+0xd64>)
85ba: 2002 movs r0, #2
85bc: 47a0 blx r4
return; /*Invalid bpp. Can't render the letter*/
85be: f7ff bb63 b.w 7c88 <lv_draw_label+0x414>
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 <lv_draw_line_dsc_init>:
/**********************
* 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 <lv_draw_line_dsc_init+0x18>)
{
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 <lv_draw_line>:
* @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 <lv_draw_line+0x1e6>
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 <lv_draw_line+0x1e6>
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 <lv_draw_line+0x46>
863c: 4291 cmp r1, r2
863e: f000 80d0 beq.w 87e2 <lv_draw_line+0x1e6>
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 <lv_draw_line+0x330>)
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 <lv_draw_line+0x1e6>
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 <lv_draw_line+0x35c>
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_draw_line+0x334>)
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 <lv_draw_line+0x338>)
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 <lv_draw_line+0xd8>
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 <lv_draw_line+0x33c>)
86d6: 4798 blx r3
86d8: 2800 cmp r0, #0
86da: f040 8087 bne.w 87ec <lv_draw_line+0x1f0>
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_draw_line+0x1f4>
_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 <lv_draw_line+0x340>)
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_line+0x1e6>
lv_draw_rect_dsc_init(&cir_dsc);
8742: 4b7f ldr r3, [pc, #508] ; (8940 <lv_draw_line+0x344>)
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 <lv_draw_line+0x1ac>
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 <lv_draw_line+0x348>)
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 <lv_draw_line+0x1e6>
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 <lv_draw_line+0x348>)
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 <lv_draw_line+0xe6>
is_common = _lv_area_intersect(&draw_area, clip, &draw_area);
87f0: aa26 add r2, sp, #152 ; 0x98
87f2: 4b4e ldr r3, [pc, #312] ; (892c <lv_draw_line+0x330>)
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 <lv_draw_line+0x13c>
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 <lv_draw_line+0x294>
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_draw_line+0x34c>)
_lv_blend_fill(clip, &fill_area,
8872: f8df a0c8 ldr.w sl, [pc, #200] ; 893c <lv_draw_line+0x340>
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_draw_line+0x298>
_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 <lv_draw_line+0x350>)
888c: 4798 blx r3
888e: e753 b.n 8738 <lv_draw_line+0x13c>
lv_style_int_t dash_start = 0;
8890: 9507 str r5, [sp, #28]
8892: e7ed b.n 8870 <lv_draw_line+0x274>
_lv_memset_ff(mask_buf, draw_area_w);
8894: 4b2e ldr r3, [pc, #184] ; (8950 <lv_draw_line+0x354>)
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_draw_line+0x358>)
_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 <lv_draw_line+0x2e6>
if(mask_res != LV_DRAW_MASK_RES_TRANSP) {
88bc: b188 cbz r0, 88e2 <lv_draw_line+0x2e6>
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 <lv_draw_line+0x2e0>
if(dash_cnt <= dsc->dash_width) {
88c6: f9bb 2004 ldrsh.w r2, [fp, #4]
88ca: 428a cmp r2, r1
88cc: db25 blt.n 891a <lv_draw_line+0x31e>
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 <lv_draw_line+0x2ca>
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 <lv_draw_line+0x284>
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 <lv_draw_line+0x2d8>
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_draw_line+0x524>
lv_disp_t * disp = _lv_refr_get_disp_refreshing();
896a: 4b66 ldr r3, [pc, #408] ; (8b04 <lv_draw_line+0x508>)
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 <lv_draw_line+0x50c>)
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 <lv_draw_line+0x39e>
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 <lv_draw_line+0x510>)
899c: 4798 blx r3
899e: bb20 cbnz r0, 89ea <lv_draw_line+0x3ee>
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 <lv_draw_line+0x3f2>
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 <lv_draw_line+0x12a>
if(lv_draw_mask_get_cnt()) simple_mode = false;
89ea: 2200 movs r2, #0
89ec: e7da b.n 89a4 <lv_draw_line+0x3a8>
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 <lv_draw_line+0x13c>
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 <lv_draw_line+0x514>)
8a54: 4798 blx r3
8a56: 4680 mov r8, r0
if(dashed) {
8a58: b1c5 cbz r5, 8a8c <lv_draw_line+0x490>
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 <lv_draw_line+0x520>
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_draw_line+0x494>
_lv_mem_buf_release(mask_buf);
8a88: 4640 mov r0, r8
8a8a: e6fe b.n 888a <lv_draw_line+0x28e>
lv_style_int_t dash_start = 0;
8a8c: 462c mov r4, r5
8a8e: e7f3 b.n 8a78 <lv_draw_line+0x47c>
_lv_memset_ff(mask_buf, draw_area_w);
8a90: ee18 1a10 vmov r1, s16
8a94: 4b1f ldr r3, [pc, #124] ; (8b14 <lv_draw_line+0x518>)
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_draw_line+0x51c>)
_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 <lv_draw_line+0x4d6>
if(mask_res != LV_DRAW_MASK_RES_TRANSP) {
8ab6: b150 cbz r0, 8ace <lv_draw_line+0x4d2>
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 <lv_draw_line+0x484>
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 <lv_draw_line+0x534>
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 <lv_draw_line+0x83c>)
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 <lv_draw_line+0x840>)
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_line+0x13c>
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_line+0x7ba>
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_line+0x798>
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 <lv_draw_line+0x844>)
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 <lv_draw_line+0x870>
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_line+0x7ee>
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 <lv_draw_line+0x844>)
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 <lv_draw_line+0x848>)
* 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_draw_line+0x84c>)
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 <lv_draw_line+0x850>)
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 <lv_draw_line+0x7f8>
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 <lv_draw_line+0x854>)
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_draw_line+0x858>)
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_draw_line+0x7fe>
_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 <lv_draw_line+0x77a>
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 <lv_draw_line+0x85c>)
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_line+0x860>)
lv_draw_mask_remove_id(mask_left_id);
8d78: 4c39 ldr r4, [pc, #228] ; (8e60 <lv_draw_line+0x864>)
_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_line+0x13c>
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 <lv_draw_line+0x844>)
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_line+0x62c>
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 <lv_draw_line+0x844>)
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 <lv_draw_line+0x7b4>
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 <lv_draw_line+0x69e>
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_line+0x6f0>
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 <lv_draw_line+0x868>)
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_draw_line+0x822>
_lv_memset_00(&mask_buf[mask_p], draw_area_w);
8e14: 9907 ldr r1, [sp, #28]
8e16: 4b14 ldr r3, [pc, #80] ; (8e68 <lv_draw_line+0x86c>)
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 <lv_draw_line+0x874>
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 <lv_draw_line+0x738>
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 <lv_draw_line+0x8b4>)
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 <lv_draw_line+0x8b8>)
8ea6: 4630 mov r0, r6
8ea8: 4798 blx r3
mask_p = 0;
8eaa: f04f 0900 mov.w r9, #0
8eae: e7c0 b.n 8e32 <lv_draw_line+0x836>
8eb0: 000061f1 .word 0x000061f1
8eb4: 0000f075 .word 0x0000f075
00008eb8 <mask_mix>:
}
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 <mask_mix+0x1a>
if(mask_new <= LV_OPA_MIN) return 0;
8ebc: 2905 cmp r1, #5
8ebe: d907 bls.n 8ed0 <mask_mix+0x18>
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 <lv_draw_mask_line>:
{
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 <lv_draw_mask_line+0x8a>
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 <lv_draw_mask_line+0x4c>
if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT ||
8efe: b13e cbz r6, 8f10 <lv_draw_mask_line+0x3c>
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 <lv_draw_mask_line+0x40>
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 <lv_draw_mask_line+0x48>
8f18: 2a00 cmp r2, #0
8f1a: dcf9 bgt.n 8f10 <lv_draw_mask_line+0x3c>
return LV_DRAW_MASK_RES_TRANSP;
8f1c: 2000 movs r0, #0
8f1e: e7f7 b.n 8f10 <lv_draw_mask_line+0x3c>
if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP ||
8f20: 2e00 cmp r6, #0
8f22: f040 8187 bne.w 9234 <lv_draw_mask_line+0x360>
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 <lv_draw_mask_line+0x70>
8f2e: 2f00 cmp r7, #0
8f30: dcee bgt.n 8f10 <lv_draw_mask_line+0x3c>
if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP;
8f32: 42e7 cmn r7, r4
8f34: d4f2 bmi.n 8f1c <lv_draw_mask_line+0x48>
if(k < 0) k = 0;
8f36: 2f00 cmp r7, #0
8f38: f300 817e bgt.w 9238 <lv_draw_mask_line+0x364>
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 <lv_draw_mask_line+0x48>
8f42: e09b b.n 907c <lv_draw_mask_line+0x1a8>
else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) {
8f44: 2800 cmp r0, #0
8f46: d1f4 bne.n 8f32 <lv_draw_mask_line+0x5e>
if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER;
8f48: 1939 adds r1, r7, r4
8f4a: f100 8173 bmi.w 9234 <lv_draw_mask_line+0x360>
if(k < 0) return LV_DRAW_MASK_RES_TRANSP;
8f4e: 2f00 cmp r7, #0
8f50: dce4 bgt.n 8f1c <lv_draw_mask_line+0x48>
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 <lv_draw_mask_line+0x1be>
return LV_DRAW_MASK_RES_CHANGED;
8f5a: 2002 movs r0, #2
8f5c: e7d8 b.n 8f10 <lv_draw_mask_line+0x3c>
if(p->flat) {
8f5e: f003 0c02 and.w ip, r3, #2
8f62: 2800 cmp r0, #0
8f64: f000 8097 beq.w 9096 <lv_draw_mask_line+0x1c2>
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 <lv_draw_mask_line+0xb2>
if(y_at_x > abs_y) {
8f7a: 429a cmp r2, r3
8f7c: da05 bge.n 8f8a <lv_draw_mask_line+0xb6>
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 <lv_draw_mask_line+0x3c>
if(y_at_x < abs_y) {
8f86: 429a cmp r2, r3
8f88: dcf9 bgt.n 8f7e <lv_draw_mask_line+0xaa>
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 <lv_draw_mask_line+0xce>
if(y_at_x < abs_y) {
8f96: 429a cmp r2, r3
8f98: dd06 ble.n 8fa8 <lv_draw_mask_line+0xd4>
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 <lv_draw_mask_line+0x3c>
if(y_at_x > abs_y) {
8fa2: 429a cmp r2, r3
8fa4: dbf9 blt.n 8f9a <lv_draw_mask_line+0xc6>
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 <lv_draw_mask_line+0x1ac>
if(k >= 0 && k < len) {
8fd6: 2f00 cmp r7, #0
8fd8: db0f blt.n 8ffa <lv_draw_mask_line+0x126>
8fda: 42bc cmp r4, r7
8fdc: dd0d ble.n 8ffa <lv_draw_mask_line+0x126>
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 <lv_draw_mask_line+0x11e>
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 <lv_draw_mask_line+0x3b0>)
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 <lv_draw_mask_line+0x3b0>
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 <lv_draw_mask_line+0x16c>
if(k < len && k >= 0) {
900e: 4294 cmp r4, r2
9010: dd29 ble.n 9066 <lv_draw_mask_line+0x192>
9012: 2a00 cmp r2, #0
9014: db27 blt.n 9066 <lv_draw_mask_line+0x192>
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 <lv_draw_mask_line+0x162>
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 <lv_draw_mask_line+0x3b0>)
903a: 4798 blx r3
903c: 54a8 strb r0, [r5, r2]
903e: e012 b.n 9066 <lv_draw_mask_line+0x192>
if(k >= 0 && k < len) {
9040: 2a00 cmp r2, #0
9042: db0a blt.n 905a <lv_draw_mask_line+0x186>
9044: 4294 cmp r4, r2
9046: dd08 ble.n 905a <lv_draw_mask_line+0x186>
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 <lv_draw_mask_line+0x180>
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 <lv_draw_mask_line+0x12c>
if(p->inv) {
9066: f896 3028 ldrb.w r3, [r6, #40] ; 0x28
906a: 0799 lsls r1, r3, #30
906c: d50a bpl.n 9084 <lv_draw_mask_line+0x1b0>
if(k > len) {
906e: 42bc cmp r4, r7
9070: f6ff af54 blt.w 8f1c <lv_draw_mask_line+0x48>
if(k >= 0) {
9074: 2f00 cmp r7, #0
9076: f6ff af70 blt.w 8f5a <lv_draw_mask_line+0x86>
_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 <lv_draw_mask_line+0x2b4>
int32_t k = xei - abs_x;
9080: 463a mov r2, r7
9082: e7bb b.n 8ffc <lv_draw_mask_line+0x128>
if(k < 0) {
9084: 1c50 adds r0, r2, #1
9086: f53f af49 bmi.w 8f1c <lv_draw_mask_line+0x48>
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 <lv_draw_mask_line+0x86>
9090: 1a21 subs r1, r4, r0
9092: 4428 add r0, r5
9094: e078 b.n 9188 <lv_draw_mask_line+0x2b4>
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 <lv_draw_mask_line+0xaa>
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 <lv_draw_mask_line+0xc6>
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 <lv_draw_mask_line+0x368>
90e0: 2900 cmp r1, #0
90e2: da5a bge.n 919a <lv_draw_mask_line+0x2c6>
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 <lv_draw_mask_line+0x3ac>
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 <lv_draw_mask_line+0x246>
90fe: 4554 cmp r4, sl
9100: dd0b ble.n 911a <lv_draw_mask_line+0x246>
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 <lv_draw_mask_line+0x23a>
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 <lv_draw_mask_line+0x3b0>)
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 <lv_draw_mask_line+0x27c>
9120: 4544 cmp r4, r8
9122: dd15 ble.n 9150 <lv_draw_mask_line+0x27c>
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 <lv_draw_mask_line+0x3b0>)
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 <lv_draw_mask_line+0x2ba>
if(k > len) k = len;
9158: 4544 cmp r4, r8
915a: f6ff aefe blt.w 8f5a <lv_draw_mask_line+0x86>
else if(k > 0) _lv_memset_00(&mask_buf[0], k);
915e: f1b8 0f00 cmp.w r8, #0
9162: f77f aefa ble.w 8f5a <lv_draw_mask_line+0x86>
9166: 4641 mov r1, r8
9168: e788 b.n 907c <lv_draw_mask_line+0x1a8>
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 <lv_draw_mask_line+0x48>
else if(k > 0) _lv_memset_00(&mask_buf[k], len - k);
917c: f77f aeed ble.w 8f5a <lv_draw_mask_line+0x86>
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 <lv_draw_mask_line+0x3b4>)
918a: 4798 blx r3
918c: e6e5 b.n 8f5a <lv_draw_mask_line+0x86>
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 <lv_draw_mask_line+0x360>
if(k >= 0) _lv_memset_00(&mask_buf[k], len - k);
9196: 2800 cmp r0, #0
9198: e778 b.n 908c <lv_draw_mask_line+0x1b8>
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 <lv_draw_mask_line+0x2f4>
91ac: 4554 cmp r4, sl
91ae: dd0b ble.n 91c8 <lv_draw_mask_line+0x2f4>
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 <lv_draw_mask_line+0x2e8>
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 <lv_draw_mask_line+0x3b0>)
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 <lv_draw_mask_line+0x326>
91ce: 4294 cmp r4, r2
91d0: dd13 ble.n 91fa <lv_draw_mask_line+0x326>
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 <lv_draw_mask_line+0x3b0>)
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 <lv_draw_mask_line+0x340>
if(k > len) return LV_DRAW_MASK_RES_TRANSP;
9202: 4554 cmp r4, sl
9204: f6ff ae8a blt.w 8f1c <lv_draw_mask_line+0x48>
if(k >= 0) _lv_memset_00(&mask_buf[0], k);
9208: f1ba 0f00 cmp.w sl, #0
920c: f6ff aea5 blt.w 8f5a <lv_draw_mask_line+0x86>
9210: 4651 mov r1, sl
9212: e733 b.n 907c <lv_draw_mask_line+0x1a8>
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 <lv_draw_mask_line+0x48>
else if(k > 0) _lv_memset_00(&mask_buf[k], len - k);
9226: f77f ae98 ble.w 8f5a <lv_draw_mask_line+0x86>
922a: eba4 010a sub.w r1, r4, sl
922e: eb05 000a add.w r0, r5, sl
9232: e7a9 b.n 9188 <lv_draw_mask_line+0x2b4>
if(k > len) return LV_DRAW_MASK_RES_FULL_COVER;
9234: 2001 movs r0, #1
9236: e66b b.n 8f10 <lv_draw_mask_line+0x3c>
if(k >= len) return LV_DRAW_MASK_RES_TRANSP;
9238: 2c00 cmp r4, #0
923a: e681 b.n 8f40 <lv_draw_mask_line+0x6c>
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 <lv_draw_mask_line+0x390>
9244: 4544 cmp r4, r8
9246: dd0d ble.n 9264 <lv_draw_mask_line+0x390>
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 <lv_draw_mask_line+0x384>
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 <lv_draw_mask_line+0x3b0>)
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 <lv_draw_mask_line+0x296>
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 <lv_draw_mask_line+0x48>
if(k >= 0) _lv_memset_00(&mask_buf[0], k);
9278: 2900 cmp r1, #0
927a: f6ff ae6e blt.w 8f5a <lv_draw_mask_line+0x86>
927e: e6fd b.n 907c <lv_draw_mask_line+0x1a8>
xsf = 0xFF;
9280: 23ff movs r3, #255 ; 0xff
9282: e7dc b.n 923e <lv_draw_mask_line+0x36a>
9284: 00008eb9 .word 0x00008eb9
9288: 0000f019 .word 0x0000f019
0000928c <lv_area_copy>:
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 <lv_area_copy+0x6>
}
929e: 4770 bx lr
000092a0 <lv_draw_mask_radius>:
{
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 <lv_draw_mask_radius+0x24c>)
{
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 <lv_draw_mask_radius+0xae>
if(abs_y < rect.y1 || abs_y > rect.y2) {
92d8: 42bb cmp r3, r7
92da: dd01 ble.n 92e0 <lv_draw_mask_radius+0x40>
return LV_DRAW_MASK_RES_TRANSP;
92dc: 2000 movs r0, #0
92de: e039 b.n 9354 <lv_draw_mask_radius+0xb4>
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 <lv_draw_mask_radius+0x3c>
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 <lv_draw_mask_radius+0x68>
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 <lv_draw_mask_radius+0x7c>
(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 <lv_draw_mask_radius+0xf0>
(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 <lv_draw_mask_radius+0xf0>
if(outer == false) {
931c: f1b9 0f00 cmp.w r9, #0
9320: d125 bne.n 936e <lv_draw_mask_radius+0xce>
if(last > len) return LV_DRAW_MASK_RES_TRANSP;
9322: 42a5 cmp r5, r4
9324: dbda blt.n 92dc <lv_draw_mask_radius+0x3c>
if(last >= 0) {
9326: 2c00 cmp r4, #0
9328: db03 blt.n 9332 <lv_draw_mask_radius+0x92>
_lv_memset_00(&mask_buf[0], last);
932a: 4b71 ldr r3, [pc, #452] ; (94f0 <lv_draw_mask_radius+0x250>)
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 <lv_draw_mask_radius+0x3c>
else if(first < len) {
9340: 42a8 cmp r0, r5
9342: da0f bge.n 9364 <lv_draw_mask_radius+0xc4>
_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 <lv_draw_mask_radius+0x250>)
934a: 4798 blx r3
934c: e00d b.n 936a <lv_draw_mask_radius+0xca>
if(abs_y < rect.y1 || abs_y > rect.y2) {
934e: 42bb cmp r3, r7
9350: dd03 ble.n 935a <lv_draw_mask_radius+0xba>
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 <lv_draw_mask_radius+0x48>
9362: e7f6 b.n 9352 <lv_draw_mask_radius+0xb2>
if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER;
9364: b90c cbnz r4, 936a <lv_draw_mask_radius+0xca>
9366: 42a8 cmp r0, r5
9368: d0f3 beq.n 9352 <lv_draw_mask_radius+0xb2>
return LV_DRAW_MASK_RES_CHANGED;
936a: 2002 movs r0, #2
936c: e7f2 b.n 9354 <lv_draw_mask_radius+0xb4>
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 <lv_draw_mask_radius+0xca>
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 <lv_draw_mask_radius+0xea>
9388: 1a29 subs r1, r5, r0
if(first < len && len_tmp >= 0) {
938a: 2900 cmp r1, #0
938c: dbed blt.n 936a <lv_draw_mask_radius+0xca>
938e: e7da b.n 9346 <lv_draw_mask_radius+0xa6>
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 <lv_draw_mask_radius+0x436>
93b6: eba0 030a sub.w r3, r0, sl
93ba: 429f cmp r7, r3
93bc: dbd5 blt.n 936a <lv_draw_mask_radius+0xca>
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_draw_mask_radius+0x20e>
_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 <lv_draw_mask_radius+0x254>)
93ea: 4798 blx r3
93ec: 9a05 ldr r2, [sp, #20]
93ee: e061 b.n 94b4 <lv_draw_mask_radius+0x214>
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 <lv_draw_mask_radius+0x254>)
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 <lv_draw_mask_radius+0x19c>
942c: f8bd 101e ldrh.w r1, [sp, #30]
9430: b921 cbnz r1, 943c <lv_draw_mask_radius+0x19c>
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_draw_mask_radius+0x25c>
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 <lv_draw_mask_radius+0x1bc>
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 <lv_draw_mask_radius+0x1d2>
9466: 42af cmp r7, r5
9468: da03 bge.n 9472 <lv_draw_mask_radius+0x1d2>
mask_buf[kl] = mask_mix(mask_buf[kl], m);
946a: 5df0 ldrb r0, [r6, r7]
946c: 4b22 ldr r3, [pc, #136] ; (94f8 <lv_draw_mask_radius+0x258>)
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 <lv_draw_mask_radius+0x1e8>
947c: 42ac cmp r4, r5
947e: da03 bge.n 9488 <lv_draw_mask_radius+0x1e8>
mask_buf[kr] = mask_mix(mask_buf[kr], m);
9480: 5d30 ldrb r0, [r6, r4]
9482: 4b1d ldr r3, [pc, #116] ; (94f8 <lv_draw_mask_radius+0x258>)
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 <lv_draw_mask_radius+0x234>
if(kl > len) {
948e: 42af cmp r7, r5
9490: f73f af24 bgt.w 92dc <lv_draw_mask_radius+0x3c>
if(kl >= 0) {
9494: 2f00 cmp r7, #0
9496: db03 blt.n 94a0 <lv_draw_mask_radius+0x200>
_lv_memset_00(&mask_buf[0], kl);
9498: 4b15 ldr r3, [pc, #84] ; (94f0 <lv_draw_mask_radius+0x250>)
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 <lv_draw_mask_radius+0x3c>
if(kr <= len) {
94a6: 42a8 cmp r0, r5
94a8: f73f af5f bgt.w 936a <lv_draw_mask_radius+0xca>
94ac: e74a b.n 9344 <lv_draw_mask_radius+0xa4>
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 <lv_draw_mask_radius+0x254>)
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 <lv_draw_mask_radius+0x178>
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 <lv_draw_mask_radius+0xca>
94e8: e74f b.n 938a <lv_draw_mask_radius+0xea>
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 <lv_draw_mask_radius+0x296>
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 <lv_draw_mask_radius+0x296>
9528: 2900 cmp r1, #0
952a: db04 blt.n 9536 <lv_draw_mask_radius+0x296>
_lv_memset_00(&mask_buf[first], len_tmp);
952c: 4b75 ldr r3, [pc, #468] ; (9704 <lv_draw_mask_radius+0x464>)
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 <lv_draw_mask_radius+0x468>)
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 <lv_draw_mask_radius+0x468>)
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 <lv_draw_mask_radius+0x2c6>
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_draw_mask_radius+0x32c>
_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 <lv_draw_mask_radius+0x2f8>
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 <lv_draw_mask_radius+0x30e>
959e: 4545 cmp r5, r8
95a0: dd05 ble.n 95ae <lv_draw_mask_radius+0x30e>
95a2: f816 0008 ldrb.w r0, [r6, r8]
95a6: 4b59 ldr r3, [pc, #356] ; (970c <lv_draw_mask_radius+0x46c>)
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 <lv_draw_mask_radius+0x31e>
95b2: 42a5 cmp r5, r4
95b4: dd03 ble.n 95be <lv_draw_mask_radius+0x31e>
95b6: 5d30 ldrb r0, [r6, r4]
95b8: 4b54 ldr r3, [pc, #336] ; (970c <lv_draw_mask_radius+0x46c>)
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 <lv_draw_mask_radius+0x46c>)
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 <lv_draw_mask_radius+0x3c8>
95e2: b13b cbz r3, 95f4 <lv_draw_mask_radius+0x354>
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 <lv_draw_mask_radius+0x39a>
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 <lv_draw_mask_radius+0x36e>
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 <lv_draw_mask_radius+0x384>
9614: 4545 cmp r5, r8
9616: dd05 ble.n 9624 <lv_draw_mask_radius+0x384>
9618: f816 0008 ldrb.w r0, [r6, r8]
961c: 4b3b ldr r3, [pc, #236] ; (970c <lv_draw_mask_radius+0x46c>)
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 <lv_draw_mask_radius+0x394>
9628: 42a5 cmp r5, r4
962a: dd03 ble.n 9634 <lv_draw_mask_radius+0x394>
962c: 5d30 ldrb r0, [r6, r4]
962e: 4b37 ldr r3, [pc, #220] ; (970c <lv_draw_mask_radius+0x46c>)
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 <lv_draw_mask_radius+0xca>
kl++;
9642: f108 0101 add.w r1, r8, #1
if(kl > len) {
9646: 428d cmp r5, r1
9648: f6ff ae48 blt.w 92dc <lv_draw_mask_radius+0x3c>
if(kl >= 0) _lv_memset_00(&mask_buf[0], kl);
964c: 2900 cmp r1, #0
964e: db02 blt.n 9656 <lv_draw_mask_radius+0x3b6>
9650: 4b2c ldr r3, [pc, #176] ; (9704 <lv_draw_mask_radius+0x464>)
9652: 4630 mov r0, r6
9654: 4798 blx r3
if(kr < 0) {
9656: 2c00 cmp r4, #0
9658: f6ff ae40 blt.w 92dc <lv_draw_mask_radius+0x3c>
if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr);
965c: 42a5 cmp r5, r4
965e: f77f ae84 ble.w 936a <lv_draw_mask_radius+0xca>
9662: 1b29 subs r1, r5, r4
9664: 1930 adds r0, r6, r4
9666: e66f b.n 9348 <lv_draw_mask_radius+0xa8>
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 <lv_draw_mask_radius+0x404>
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 <lv_draw_mask_radius+0x418>
96aa: 4545 cmp r5, r8
96ac: dd04 ble.n 96b8 <lv_draw_mask_radius+0x418>
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 <lv_draw_mask_radius+0x426>
96bc: 42a5 cmp r5, r4
96be: dd02 ble.n 96c6 <lv_draw_mask_radius+0x426>
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 <lv_draw_mask_radius+0x33e>
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_draw_mask_radius+0x150>
_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 <lv_draw_mask_radius+0x468>)
96fe: 4798 blx r3
9700: 9a05 ldr r2, [sp, #20]
9702: e678 b.n 93f6 <lv_draw_mask_radius+0x156>
9704: 0000f019 .word 0x0000f019
9708: 0000e995 .word 0x0000e995
970c: 00008eb9 .word 0x00008eb9
00009710 <lv_draw_mask_add>:
{
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 <lv_draw_mask_add+0x3c>)
{
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 <lv_draw_mask_add+0x30>
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_draw_mask_add+0x6>
LV_LOG_WARN("lv_mask_add: no place to add the mask");
9728: 4b09 ldr r3, [pc, #36] ; (9750 <lv_draw_mask_add+0x40>)
972a: 9300 str r3, [sp, #0]
972c: 2002 movs r0, #2
972e: 4b09 ldr r3, [pc, #36] ; (9754 <lv_draw_mask_add+0x44>)
9730: 4909 ldr r1, [pc, #36] ; (9758 <lv_draw_mask_add+0x48>)
9732: 4c0a ldr r4, [pc, #40] ; (975c <lv_draw_mask_add+0x4c>)
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 <lv_draw_mask_add+0x2c>
974a: bf00 nop
974c: 200086f4 .word 0x200086f4
9750: 0001fd38 .word 0x0001fd38
9754: 0001fd5e .word 0x0001fd5e
9758: 0001fd03 .word 0x0001fd03
975c: 0000e8e9 .word 0x0000e8e9
00009760 <lv_draw_mask_apply>:
{
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 <lv_draw_mask_apply+0x3c>)
{
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 <lv_draw_mask_apply+0x1e>
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 <lv_draw_mask_apply+0x18>
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 <lv_draw_mask_apply+0x10>
979a: bf00 nop
979c: 200086f4 .word 0x200086f4
000097a0 <lv_draw_mask_remove_id>:
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 <lv_draw_mask_remove_id+0x24>)
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 <lv_draw_mask_remove_custom>:
{
97c8: 2200 movs r2, #0
97ca: 4b08 ldr r3, [pc, #32] ; (97ec <lv_draw_mask_remove_custom+0x24>)
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 <lv_draw_mask_remove_custom+0xa>
}
97e8: 4608 mov r0, r1
97ea: bd30 pop {r4, r5, pc}
97ec: 200086f4 .word 0x200086f4
000097f0 <lv_draw_mask_get_cnt>:
{
97f0: 2300 movs r3, #0
if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++;
97f2: 4a05 ldr r2, [pc, #20] ; (9808 <lv_draw_mask_get_cnt+0x18>)
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 <lv_draw_mask_get_cnt+0x10>
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 <lv_draw_mask_get_cnt+0x6>
}
9806: 4770 bx lr
9808: 200086f4 .word 0x200086f4
0000980c <lv_draw_mask_line_points_init>:
{
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 <lv_draw_mask_line_points_init+0x100>)
{
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 <lv_draw_mask_line_points_init+0x26>
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 <lv_draw_mask_line_points_init+0x104>)
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 <lv_draw_mask_line_points_init+0xd2>
if(dx) {
9886: b133 cbz r3, 9896 <lv_draw_mask_line_points_init+0x8a>
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 <lv_draw_mask_line_points_init+0x9a>
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 <lv_draw_mask_line_points_init+0xb6>
else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1;
98b2: 2b01 cmp r3, #1
98b4: d005 beq.n 98c2 <lv_draw_mask_line_points_init+0xb6>
else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) {
98b6: 2b02 cmp r3, #2
98b8: d123 bne.n 9902 <lv_draw_mask_line_points_init+0xf6>
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 <lv_draw_mask_line_points_init+0xe2>
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 <lv_draw_mask_line_points_init+0xf2>
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 <lv_draw_mask_line_points_init+0x9c>
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 <lv_draw_mask_line_points_init+0xb6>
990c: 0000f019 .word 0x0000f019
9910: 00008ed5 .word 0x00008ed5
00009914 <lv_draw_mask_radius_init>:
{
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(&param->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(&param->cfg.rect, rect);
9946: 4b08 ldr r3, [pc, #32] ; (9968 <lv_draw_mask_radius_init+0x54>)
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 <lv_draw_mask_radius_init+0x58>)
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 <grad_get>:
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 <grad_get+0x18>
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 <grad_get+0x2a>
9996: 8880 ldrh r0, [r0, #4]
9998: e7f5 b.n 9986 <grad_get+0x16>
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 <grad_get+0x16>
...
00009a04 <shadow_blur_corner>:
#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 <shadow_blur_corner+0x17c>)
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 <shadow_blur_corner+0x88>
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 <shadow_blur_corner+0xde>
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 <shadow_blur_corner+0xfa>
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 <shadow_blur_corner+0x180>)
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 <shadow_blur_corner+0x9c>
_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 <shadow_blur_corner+0x184>)
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 <shadow_blur_corner+0x3e>
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 <shadow_blur_corner+0x56>
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 <shadow_blur_corner+0x114>
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 <shadow_blur_corner+0x162>
for(x = 0; x < size; x++) {
9b76: f10c 0c01 add.w ip, ip, #1
9b7a: 3202 adds r2, #2
9b7c: e77e b.n 9a7c <shadow_blur_corner+0x78>
9b7e: bf00 nop
9b80: 0000eeb5 .word 0x0000eeb5
9b84: 0000eb69 .word 0x0000eb69
9b88: 0000ec31 .word 0x0000ec31
00009b8c <lv_area_copy>:
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 <lv_area_copy+0x6>
* @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 <lv_draw_rect_dsc_init>:
{
9ba0: b510 push {r4, lr}
_lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t));
9ba2: 4b0f ldr r3, [pc, #60] ; (9be0 <lv_draw_rect_dsc_init+0x40>)
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 <lv_draw_rect_dsc_init+0x44>)
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 <lv_draw_rect_dsc_init+0x48>)
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 <lv_draw_rect>:
{
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 <lv_draw_rect+0x12fc>
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 <lv_draw_rect+0x12fc>
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 <lv_draw_rect+0xabe>
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 <lv_draw_rect+0xabe>
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 <lv_draw_rect+0x5e>
9c42: b916 cbnz r6, 9c4a <lv_draw_rect+0x5e>
dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) {
9c44: 2b00 cmp r3, #0
9c46: f340 8530 ble.w a6aa <lv_draw_rect+0xabe>
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 <lv_draw_rect+0x378>)
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 <lv_draw_rect+0x37c>)
9cba: 4798 blx r3
is_common = _lv_area_intersect(&draw_area, &sh_area, clip);
9cbc: 4bab ldr r3, [pc, #684] ; (9f6c <lv_draw_rect+0x380>)
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 <lv_draw_rect+0xabe>
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 <lv_draw_rect+0x384>)
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 <lv_draw_rect+0x388>)
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 <lv_draw_rect+0x384>)
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 <lv_draw_rect+0x38c>)
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_draw_rect+0x232>
_lv_mem_buf_release(mask_line);
9e0c: 4b5b ldr r3, [pc, #364] ; (9f7c <lv_draw_rect+0x390>)
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 <lv_draw_rect+0x318>
for(i = 0; i < size * size; i++) {
9e1a: 2300 movs r3, #0
9e1c: e03e b.n 9e9c <lv_draw_rect+0x2b0>
_lv_memset_ff(mask_line, size);
9e1e: 4b58 ldr r3, [pc, #352] ; (9f80 <lv_draw_rect+0x394>)
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_draw_rect+0x268>
_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 <lv_draw_rect+0x398>)
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 <lv_draw_rect+0x21a>
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 <lv_draw_rect+0x258>
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 <lv_draw_rect+0x27e>
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 <lv_draw_rect+0x2a2>
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_draw_rect+0x39c>)
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 <lv_draw_rect+0x374>
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 <lv_draw_rect+0x3a4>
9ef0: f9ba 2024 ldrsh.w r2, [sl, #36] ; 0x24
9ef4: b922 cbnz r2, 9f00 <lv_draw_rect+0x314>
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 <lv_draw_rect+0x3a6>
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 <lv_draw_rect+0x3a0>)
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 <lv_draw_rect+0x346>
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 <lv_draw_rect+0x34a>
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 <lv_draw_rect+0x36e>
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 <lv_draw_rect+0x33e>
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 <lv_draw_rect+0x362>
9f5e: e79f b.n 9ea0 <lv_draw_rect+0x2b4>
if(lv_draw_mask_get_cnt() > 0) simple_mode = false;
9f60: 2300 movs r3, #0
9f62: e7cd b.n 9f00 <lv_draw_rect+0x314>
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 <lv_draw_rect+0x678>)
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 <lv_draw_rect+0x67c>)
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 <lv_draw_rect+0x680>)
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 <lv_draw_rect+0x684>)
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 <lv_draw_rect+0x47e>
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 <lv_draw_rect+0x47e>
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 <lv_draw_rect+0x688>)
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 <lv_draw_rect+0x5c4>
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 <lv_draw_rect+0x684>)
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 <lv_draw_rect+0x526>
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 <lv_draw_rect+0x526>
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 <lv_draw_rect+0x688>)
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 <lv_draw_rect+0x61c>
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 <lv_draw_rect+0x684>)
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 <lv_draw_rect+0x5ba>
if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2);
a144: 9b07 ldr r3, [sp, #28]
a146: b143 cbz r3, a15a <lv_draw_rect+0x56e>
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 <lv_draw_rect+0x5ba>
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 <lv_draw_rect+0x688>)
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 <lv_draw_rect+0x698>
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_draw_rect+0x70c>
_lv_memcpy(mask_buf, sh_buf_tmp, w);
a1b0: 4629 mov r1, r5
a1b2: 4b31 ldr r3, [pc, #196] ; (a278 <lv_draw_rect+0x68c>)
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
a1b4: 4c31 ldr r4, [pc, #196] ; (a27c <lv_draw_rect+0x690>)
_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 <lv_draw_rect+0x694>)
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_draw_rect+0x472>
_lv_memcpy(mask_buf, sh_buf_tmp, w);
a208: 4629 mov r1, r5
a20a: 4b1b ldr r3, [pc, #108] ; (a278 <lv_draw_rect+0x68c>)
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
a20c: 4c1b ldr r4, [pc, #108] ; (a27c <lv_draw_rect+0x690>)
_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 <lv_draw_rect+0x694>)
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 <lv_draw_rect+0x520>
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 <lv_draw_rect+0x71c>)
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 <lv_draw_rect+0x6be>
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 <lv_draw_rect+0x720>)
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 <lv_draw_rect+0x6c0>
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 <lv_draw_rect+0x724>)
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_draw_rect+0x5b0>
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 <lv_draw_rect+0x6f4>
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 <lv_draw_rect+0x728>
a2fc: eb09 0502 add.w r5, r9, r2
a300: 1e51 subs r1, r2, #1
a302: 462b mov r3, r5
a304: e7f3 b.n a2ee <lv_draw_rect+0x702>
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 <lv_draw_rect+0xa30>)
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 <lv_draw_rect+0x7c8>
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 <lv_draw_rect+0x7c8>
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 <lv_draw_rect+0xa34>)
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 <lv_draw_rect+0x1306>
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 <lv_draw_rect+0xa30>)
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 <lv_draw_rect+0x86e>
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 <lv_draw_rect+0x86e>
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 <lv_draw_rect+0xa34>)
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 <lv_draw_rect+0x1360>
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 <lv_draw_rect+0xa30>)
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 <lv_draw_rect+0x904>
if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2);
a48c: 9b07 ldr r3, [sp, #28]
a48e: b143 cbz r3, a4a2 <lv_draw_rect+0x8b6>
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 <lv_draw_rect+0x904>
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 <lv_draw_rect+0xa34>)
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 <lv_draw_rect+0x13bc>
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 <lv_draw_rect+0xa30>)
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 <lv_draw_rect+0x996>
if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1);
a522: 9b07 ldr r3, [sp, #28]
a524: b143 cbz r3, a538 <lv_draw_rect+0x94c>
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 <lv_draw_rect+0xa34>)
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 <lv_draw_rect+0x141a>
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 <lv_draw_rect+0xa30>)
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 <lv_draw_rect+0xa38>
if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2);
a5b8: 9b07 ldr r3, [sp, #28]
a5ba: b143 cbz r3, a5ce <lv_draw_rect+0x9e2>
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 <lv_draw_rect+0xa34>)
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 <lv_draw_rect+0x14b0>
a618: e004 b.n a624 <lv_draw_rect+0xa38>
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 <lv_draw_rect+0xd4c>)
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 <lv_draw_rect+0xaaa>
a65a: 9b07 ldr r3, [sp, #28]
a65c: b9db cbnz r3, a696 <lv_draw_rect+0xaaa>
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 <lv_draw_rect+0xd90>
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 <lv_draw_rect+0xd50>)
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_rect+0x1522>
lv_draw_mask_remove_id(mask_rout_id);
a696: 4baa ldr r3, [pc, #680] ; (a940 <lv_draw_rect+0xd54>)
_lv_mem_buf_release(mask_buf);
a698: 4caa ldr r4, [pc, #680] ; (a944 <lv_draw_rect+0xd58>)
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_draw_rect+0xc18>
lv_area_copy(&coords_bg, coords);
a6b4: 4ba1 ldr r3, [pc, #644] ; (a93c <lv_draw_rect+0xd50>)
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 <lv_draw_rect+0xb22>
a6c4: f89a 3014 ldrb.w r3, [sl, #20]
a6c8: 2bf9 cmp r3, #249 ; 0xf9
a6ca: d920 bls.n a70e <lv_draw_rect+0xb22>
a6cc: f9ba 3000 ldrsh.w r3, [sl]
a6d0: b1eb cbz r3, a70e <lv_draw_rect+0xb22>
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 <lv_draw_rect+0xd5c>)
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 <lv_draw_rect+0xd60>)
a722: 4798 blx r3
is_common = _lv_area_intersect(&draw_area, &coords_bg, clip);
a724: 4b84 ldr r3, [pc, #528] ; (a938 <lv_draw_rect+0xd4c>)
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 <lv_draw_rect+0xc18>
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 <lv_draw_rect+0xd64>)
a772: 4798 blx r3
uint16_t other_mask_cnt = lv_draw_mask_get_cnt();
a774: 4b77 ldr r3, [pc, #476] ; (a954 <lv_draw_rect+0xd68>)
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 <lv_draw_rect+0x157a>
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 <lv_draw_rect+0x1580>
a7ca: 2c00 cmp r4, #0
a7cc: f040 84ce bne.w b16c <lv_draw_rect+0x1580>
a7d0: f89a 3006 ldrb.w r3, [sl, #6]
a7d4: 2b00 cmp r3, #0
a7d6: f040 857c bne.w b2d2 <lv_draw_rect+0x16e6>
_lv_blend_fill(clip, &coords_bg,
a7da: f89a 200d ldrb.w r2, [sl, #13]
a7de: 4c5e ldr r4, [pc, #376] ; (a958 <lv_draw_rect+0xd6c>)
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 <lv_draw_rect+0xd54>)
a7fa: 980b ldr r0, [sp, #44] ; 0x2c
a7fc: 4798 blx r3
_lv_mem_buf_release(mask_buf);
a7fe: 4b51 ldr r3, [pc, #324] ; (a944 <lv_draw_rect+0xd58>)
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 <lv_draw_rect+0xc54>
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_draw_rect+0xc54>
lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image);
a812: 4b52 ldr r3, [pc, #328] ; (a95c <lv_draw_rect+0xd70>)
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_draw_rect+0x19aa>
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 <lv_draw_rect+0xd74>)
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_draw_rect+0x18ee>
LV_LOG_WARN("draw_img: can't get image info");
a82e: 4b4d ldr r3, [pc, #308] ; (a964 <lv_draw_rect+0xd78>)
a830: 9300 str r3, [sp, #0]
a832: 494d ldr r1, [pc, #308] ; (a968 <lv_draw_rect+0xd7c>)
a834: 4b4d ldr r3, [pc, #308] ; (a96c <lv_draw_rect+0xd80>)
a836: 4c4e ldr r4, [pc, #312] ; (a970 <lv_draw_rect+0xd84>)
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 <lv_draw_rect+0xf48>
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 <lv_draw_rect+0xf48>
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 <lv_draw_rect+0xf48>
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 <lv_draw_rect+0xd5c>)
a86c: 4798 blx r3
lv_disp_buf_t * vdb = lv_disp_get_buf(disp);
a86e: 4b37 ldr r3, [pc, #220] ; (a94c <lv_draw_rect+0xd60>)
a870: 4798 blx r3
is_common = _lv_area_intersect(&draw_area, coords, clip);
a872: 4b31 ldr r3, [pc, #196] ; (a938 <lv_draw_rect+0xd4c>)
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 <lv_draw_rect+0xf48>
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 <lv_draw_rect+0xd64>)
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_draw_rect+0xd68>)
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 <lv_draw_rect+0x1b74>
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_rect+0x1b7a>
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 <lv_draw_rect+0xd88>)
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 <lv_draw_rect+0xd8c>)
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 <lv_draw_rect+0xd50>)
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 <lv_draw_rect+0xd94>
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 <lv_draw_rect+0x10e4>)
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 <lv_draw_rect+0x10e8>)
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 <lv_draw_rect+0x1d94>
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 <lv_draw_rect+0x1b84>
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 <lv_draw_rect+0x1c7c>
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 <lv_draw_rect+0x10ec>)
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 <lv_draw_rect+0x10f0>)
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 <lv_draw_rect+0x10f4>)
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 <lv_draw_rect+0x101a>
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_draw_rect+0x101a>
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 <lv_draw_rect+0x10f8>)
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 <lv_draw_rect+0x10fc>)
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 <lv_draw_rect+0x1100>)
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 <lv_draw_rect+0x1104>)
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 <lv_draw_rect+0x12fc>
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 <lv_draw_rect+0x12fc>
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 <lv_draw_rect+0x1108>)
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 <lv_draw_rect+0x110c>)
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 <lv_draw_rect+0x1110>)
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 <lv_draw_rect+0x1114>)
acb8: 4798 blx r3
is_common = _lv_area_intersect(&draw_area, &area_outer, clip);
acba: 4b12 ldr r3, [pc, #72] ; (ad04 <lv_draw_rect+0x1118>)
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 <lv_draw_rect+0x12fc>
accc: e01c b.n ad08 <lv_draw_rect+0x111c>
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 <lv_draw_rect+0x148c>)
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 <lv_draw_rect+0x1490>)
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 <lv_draw_rect+0x1494>)
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 <lv_draw_rect+0x20a0>
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 <lv_draw_rect+0x1e90>
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 <lv_draw_rect+0x1f92>
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 <lv_draw_rect+0x1498>)
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 <lv_draw_rect+0x149c>)
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 <lv_draw_rect+0x14a0>)
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 <lv_draw_rect+0x14a4>)
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
aef6: 4c67 ldr r4, [pc, #412] ; (b094 <lv_draw_rect+0x14a8>)
_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 <lv_draw_rect+0x1498>)
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_draw_rect+0x7bc>
_lv_memcpy(mask_buf, sh_buf_tmp, w);
af4c: 4629 mov r1, r5
af4e: 4b50 ldr r3, [pc, #320] ; (b090 <lv_draw_rect+0x14a4>)
mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w);
af50: 4c50 ldr r4, [pc, #320] ; (b094 <lv_draw_rect+0x14a8>)
_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 <lv_draw_rect+0x1498>)
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_draw_rect+0x866>
_lv_memcpy(mask_buf, sh_buf_tmp, w);
afa8: 4b39 ldr r3, [pc, #228] ; (b090 <lv_draw_rect+0x14a4>)
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 <lv_draw_rect+0x13e2>
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 <lv_draw_rect+0x14a8>)
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 <lv_draw_rect+0x13e4>
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 <lv_draw_rect+0x1498>)
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_draw_rect+0x8f8>
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 <lv_draw_rect+0x14ac>)
b020: 462a mov r2, r5
b022: 4798 blx r3
if(simple_mode) {
b024: 9b07 ldr r3, [sp, #28]
b026: b953 cbnz r3, b03e <lv_draw_rect+0x1452>
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 <lv_draw_rect+0x14a8>)
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 <lv_draw_rect+0x1454>
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 <lv_draw_rect+0x1498>)
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 <lv_draw_rect+0x98a>
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 <lv_draw_rect+0x17a0>)
b0b6: 462a mov r2, r5
b0b8: 4798 blx r3
if(simple_mode) {
b0ba: 9b07 ldr r3, [sp, #28]
b0bc: b953 cbnz r3, b0d4 <lv_draw_rect+0x14e8>
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 <lv_draw_rect+0x17a4>)
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 <lv_draw_rect+0x14ea>
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 <lv_draw_rect+0x17a8>)
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_draw_rect+0xa24>
_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_draw_rect+0x17a4>)
_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 <lv_draw_rect+0x17a8>)
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 <lv_draw_rect+0xaa0>
if(other_mask_cnt) simple_mode = false;
b166: 2300 movs r3, #0
b168: f7ff bb13 b.w a792 <lv_draw_rect+0xba6>
if(rout > 0) {
b16c: 2c00 cmp r4, #0
b16e: f340 80b0 ble.w b2d2 <lv_draw_rect+0x16e6>
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 <lv_draw_rect+0x17ac>)
b17c: 47b8 blx r7
mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL);
b17e: 4b87 ldr r3, [pc, #540] ; (b39c <lv_draw_rect+0x17b0>)
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 <lv_draw_rect+0x1700>
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 <lv_draw_rect+0x1700>
grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t));
b1a8: 4b7d ldr r3, [pc, #500] ; (b3a0 <lv_draw_rect+0x17b4>)
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 <lv_draw_rect+0x17b8>)
b1b6: f300 8090 bgt.w b2da <lv_draw_rect+0x16ee>
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 <lv_draw_rect+0x1706>
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 <lv_draw_rect+0x16d4>
b204: 9a0a ldr r2, [sp, #40] ; 0x28
b206: 2a32 cmp r2, #50 ; 0x32
b208: dd5a ble.n b2c0 <lv_draw_rect+0x16d4>
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 <lv_draw_rect+0x17a8>)
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 <lv_draw_rect+0x17a8>)
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 <lv_draw_rect+0xc0c>
b2c8: 4618 mov r0, r3
b2ca: 4b37 ldr r3, [pc, #220] ; (b3a8 <lv_draw_rect+0x17bc>)
b2cc: 4798 blx r3
b2ce: f7ff ba93 b.w a7f8 <lv_draw_rect+0xc0c>
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 <lv_draw_rect+0x159c>
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_draw_rect+0x15c6>
lv_color_t * grad_map = NULL;
b2ec: 2300 movs r3, #0
b2ee: 9306 str r3, [sp, #24]
b2f0: e763 b.n b1ba <lv_draw_rect+0x15ce>
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 <lv_draw_rect+0x172e>
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 <lv_draw_rect+0x172e>
if(simple_mode == false) {
b314: 9b08 ldr r3, [sp, #32]
b316: 2b00 cmp r3, #0
b318: d136 bne.n b388 <lv_draw_rect+0x179c>
_lv_memset_ff(mask_buf, draw_area_w);
b31a: ee18 1a90 vmov r1, s17
b31e: 4b23 ldr r3, [pc, #140] ; (b3ac <lv_draw_rect+0x17c0>)
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_draw_rect+0x17a4>)
_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 <lv_draw_rect+0x17c4>
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 <lv_draw_rect+0x178c>
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 <lv_draw_rect+0x17b8>)
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 <lv_draw_rect+0x18da>
b380: 9b0a ldr r3, [sp, #40] ; 0x28
b382: 2b32 cmp r3, #50 ; 0x32
b384: dc1c bgt.n b3c0 <lv_draw_rect+0x17d4>
b386: e09e b.n b4c6 <lv_draw_rect+0x18da>
mask_res = LV_DRAW_MASK_RES_FULL_COVER;
b388: 2601 movs r6, #1
b38a: e7dc b.n b346 <lv_draw_rect+0x175a>
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 <lv_draw_rect+0x2110>
b3b8: 9b0a ldr r3, [sp, #40] ; 0x28
b3ba: 2b32 cmp r3, #50 ; 0x32
b3bc: f340 849e ble.w bcfc <lv_draw_rect+0x2110>
(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 <lv_draw_rect+0x17e8>
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 <lv_draw_rect+0x189e>
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 <lv_draw_rect+0x1a88>)
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 <lv_draw_rect+0x185a>
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 <lv_draw_rect+0x1a88>)
b484: 4640 mov r0, r8
b486: 47b0 blx r6
b488: e00d b.n b4a6 <lv_draw_rect+0x18ba>
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_draw_rect+0x18d2>
_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 <lv_draw_rect+0x1a8c>)
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 <lv_draw_rect+0x15fa>
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_draw_rect+0x2118>
_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 <lv_draw_rect+0x1896>
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 <lv_draw_rect+0x1a90>)
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_rect+0x1ac0>
lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false);
b520: 4c57 ldr r4, [pc, #348] ; (b680 <lv_draw_rect+0x1a94>)
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 <lv_draw_rect+0x1a98>)
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_rect+0x1a14>
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 <lv_draw_rect+0x1a9c>)
b590: 4798 blx r3
b592: f7ff b955 b.w a840 <lv_draw_rect+0xc54>
else if(src_type == LV_IMG_SRC_SYMBOL) {
b596: 2802 cmp r0, #2
b598: d121 bne.n b5de <lv_draw_rect+0x19f2>
lv_draw_label_dsc_init(&label_dsc);
b59a: 4b3c ldr r3, [pc, #240] ; (b68c <lv_draw_rect+0x1aa0>)
_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_rect+0x1aa4>)
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_draw_rect+0x191a>
LV_LOG_WARN("lv_img_design: image source type is unknown");
b5de: 4b2d ldr r3, [pc, #180] ; (b694 <lv_draw_rect+0x1aa8>)
b5e0: 9300 str r3, [sp, #0]
b5e2: 492d ldr r1, [pc, #180] ; (b698 <lv_draw_rect+0x1aac>)
b5e4: 4b2d ldr r3, [pc, #180] ; (b69c <lv_draw_rect+0x1ab0>)
b5e6: 4c2e ldr r4, [pc, #184] ; (b6a0 <lv_draw_rect+0x1ab4>)
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 <lv_draw_rect+0x1ab8>)
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 <lv_draw_rect+0xc54>
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 <lv_draw_rect+0x1a50>
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 <lv_draw_rect+0x198c>
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 <lv_draw_rect+0x1a7a>
b644: 2300 movs r3, #0
b646: 9300 str r3, [sp, #0]
b648: 4f17 ldr r7, [pc, #92] ; (b6a8 <lv_draw_rect+0x1abc>)
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 <lv_draw_rect+0x1a2a>
else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc);
b666: 4f0f ldr r7, [pc, #60] ; (b6a4 <lv_draw_rect+0x1ab8>)
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 <lv_draw_rect+0x1a68>
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 <lv_draw_rect+0x1b22>
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 <lv_draw_rect+0x1d74>)
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_rect+0x1b62>
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 <lv_draw_rect+0x1d78>)
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 <lv_draw_rect+0x1d7c>)
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 <lv_draw_rect+0x1b68>
b73a: 2300 movs r3, #0
b73c: 9300 str r3, [sp, #0]
b73e: 4d8b ldr r5, [pc, #556] ; (b96c <lv_draw_rect+0x1d80>)
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 <lv_draw_rect+0x19a2>
int16_t radius_mask_id = LV_MASK_ID_INV;
b74e: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff
b752: e7ee b.n b732 <lv_draw_rect+0x1b46>
else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc);
b754: 4d86 ldr r5, [pc, #536] ; (b970 <lv_draw_rect+0x1d84>)
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 <lv_draw_rect+0x1b5e>
if(other_mask_cnt) simple_mode = false;
b760: 2300 movs r3, #0
b762: f7ff b8ba b.w a8da <lv_draw_rect+0xcee>
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_draw_rect+0xd3c>
_lv_memset_ff(mask_buf, draw_area_w);
b770: 4b80 ldr r3, [pc, #512] ; (b974 <lv_draw_rect+0x1d88>)
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_draw_rect+0x1d8c>)
_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 <lv_draw_rect+0x1d90>)
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 <lv_draw_rect+0x1c1e>
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 <lv_draw_rect+0x1d90>)
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_draw_rect+0xe80>
_lv_memset_ff(mask_buf, draw_area_w);
b868: 4b42 ldr r3, [pc, #264] ; (b974 <lv_draw_rect+0x1d88>)
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_draw_rect+0x1d8c>)
_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 <lv_draw_rect+0x1d90>)
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 <lv_draw_rect+0x1d16>
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 <lv_draw_rect+0x1d90>)
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 <lv_draw_rect+0xeb8>
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 <lv_draw_rect+0x1e6a>
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 <lv_draw_rect+0x1e78>
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 <lv_draw_rect+0x1e8c>
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 <lv_draw_rect+0x2094>)
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 <lv_draw_rect+0xf36>
if(normal ||
b9d8: f89d 3040 ldrb.w r3, [sp, #64] ; 0x40
b9dc: b99b cbnz r3, ba06 <lv_draw_rect+0x1e1a>
(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 <lv_draw_rect+0x1e08>
(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 <lv_draw_rect+0x1e1a>
(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 <lv_draw_rect+0x1e52>
(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_draw_rect+0x1e52>
_lv_memset_ff(mask_buf, draw_area_w);
ba06: 4b9f ldr r3, [pc, #636] ; (bc84 <lv_draw_rect+0x2098>)
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_draw_rect+0x209c>)
_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 <lv_draw_rect+0x1de2>
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 <lv_draw_rect+0x1db4>
if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true;
ba64: 2b01 cmp r3, #1
ba66: d004 beq.n ba72 <lv_draw_rect+0x1e86>
if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) {
ba68: 2b03 cmp r3, #3
ba6a: d1a3 bne.n b9b4 <lv_draw_rect+0x1dc8>
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 <lv_draw_rect+0x1dc8>
volatile bool normal = !top_only && !bottom_only ? true : false;
ba78: 2300 movs r3, #0
ba7a: e7a3 b.n b9c4 <lv_draw_rect+0x1dd8>
_lv_memset_ff(mask_buf, draw_area_w);
ba7c: ee18 1a10 vmov r1, s16
ba80: 4b80 ldr r3, [pc, #512] ; (bc84 <lv_draw_rect+0x2098>)
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_draw_rect+0x209c>)
_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 <lv_draw_rect+0x2094>)
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 <lv_draw_rect+0x1f34>
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 <lv_draw_rect+0x2094>)
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_draw_rect+0x1240>
_lv_memset_ff(mask_buf, draw_area_w);
bb7e: ee18 1a10 vmov r1, s16
bb82: 4b40 ldr r3, [pc, #256] ; (bc84 <lv_draw_rect+0x2098>)
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_draw_rect+0x209c>)
_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 <lv_draw_rect+0x2094>)
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 <lv_draw_rect+0x2036>
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 <lv_draw_rect+0x2094>)
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 <lv_draw_rect+0x126e>
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_draw_rect+0x2130>
_lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode);
bc90: f8df a08c ldr.w sl, [pc, #140] ; bd20 <lv_draw_rect+0x2134>
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_draw_rect+0x12e8>
_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 <lv_draw_rect+0x212c>)
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 <lv_draw_rect+0x20b4>
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 <lv_draw_rect+0x18a4>
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 <lv_draw_rect+0x18da>
bd0c: 9b0a ldr r3, [sp, #40] ; 0x28
bd0e: 2b32 cmp r3, #50 ; 0x32
bd10: f73f abc9 bgt.w b4a6 <lv_draw_rect+0x18ba>
bd14: f7ff bbd7 b.w b4c6 <lv_draw_rect+0x18da>
bd18: 00009761 .word 0x00009761
bd1c: 0000f075 .word 0x0000f075
bd20: 000061f1 .word 0x000061f1
0000bd24 <lv_color_mix>:
{
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 <lv_img_buf_get_px_color>:
* 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 <lv_img_buf_get_px_color+0x2e>
bda2: 3a05 subs r2, #5
bda4: 2a09 cmp r2, #9
bda6: d81a bhi.n bdde <lv_img_buf_get_px_color+0x56>
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 <lv_img_buf_get_px_color+0xe8>)
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 <lv_img_buf_get_px_color+0xec>)
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 <lv_img_buf_get_px_color+0x56>
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 <lv_img_buf_get_px_color+0x7c>
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 <lv_img_buf_get_px_color+0x82>
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 <lv_img_buf_get_px_color+0x82>
be6e: bf00 nop
be70: 00007581 .word 0x00007581
be74: 0000bd75 .word 0x0000bd75
0000be78 <lv_img_buf_get_px_alpha>:
* @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 <lv_img_buf_get_px_alpha+0x2a>
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 <lv_img_buf_get_px_alpha+0xde>
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 <lv_img_buf_get_px_alpha+0x26>
const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/
bede: 491f ldr r1, [pc, #124] ; (bf5c <lv_img_buf_get_px_alpha+0xe4>)
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 <lv_img_buf_get_px_alpha+0x26>
const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/
bf10: 4e13 ldr r6, [pc, #76] ; (bf60 <lv_img_buf_get_px_alpha+0xe8>)
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 <lv_img_buf_get_px_alpha+0xa0>
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 <lv_img_buf_get_px_alpha+0x88>
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 <lv_img_buf_get_px_alpha+0x26>
if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) {
bf56: 20ff movs r0, #255 ; 0xff
bf58: e7a1 b.n be9e <lv_img_buf_get_px_alpha+0x26>
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 <STACK_SIZE+0x5c>
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 <STACK_SIZE+0x54>)
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 <STACK_SIZE+0x58>)
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 <lv_img_cache_invalidate_src>:
* @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 <lv_img_cache_invalidate_src+0x54>)
{
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 <lv_img_cache_invalidate_src+0x58>)
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_cache_invalidate_src+0x5c>)
lv_img_decoder_close(&cache[i].dec_dsc);
c650: f8df 8050 ldr.w r8, [pc, #80] ; c6a4 <lv_img_cache_invalidate_src+0x60>
{
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_img_cache_invalidate_src+0x26>
_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 <lv_img_cache_invalidate_src+0x38>
c67a: b94c cbnz r4, c690 <lv_img_cache_invalidate_src+0x4c>
if(cache[i].dec_dsc.src != NULL) {
c67c: b113 cbz r3, c684 <lv_img_cache_invalidate_src+0x40>
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 <lv_img_cache_invalidate_src+0x16>
c696: bf00 nop
c698: 2000866c .word 0x2000866c
c69c: 200085d0 .word 0x200085d0
c6a0: 0000f019 .word 0x0000f019
c6a4: 0000d04d .word 0x0000d04d
0000c6a8 <lv_img_cache_set_size>:
{
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 <lv_img_cache_set_size+0x84>)
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_set_size+0x18>
lv_img_cache_invalidate_src(NULL);
c6b4: 4b1e ldr r3, [pc, #120] ; (c730 <lv_img_cache_set_size+0x88>)
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 <lv_img_cache_set_size+0x8c>)
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 <lv_img_cache_set_size+0x90>)
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_img_cache_set_size+0x94>)
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 <lv_img_cache_set_size+0x46>
c6d4: 4b1a ldr r3, [pc, #104] ; (c740 <lv_img_cache_set_size+0x98>)
c6d6: 491b ldr r1, [pc, #108] ; (c744 <lv_img_cache_set_size+0x9c>)
c6d8: 9300 str r3, [sp, #0]
c6da: 22a8 movs r2, #168 ; 0xa8
c6dc: 2003 movs r0, #3
c6de: 4d1a ldr r5, [pc, #104] ; (c748 <lv_img_cache_set_size+0xa0>)
c6e0: 47a8 blx r5
c6e2: 6822 ldr r2, [r4, #0]
c6e4: 4819 ldr r0, [pc, #100] ; (c74c <lv_img_cache_set_size+0xa4>)
c6e6: 491a ldr r1, [pc, #104] ; (c750 <lv_img_cache_set_size+0xa8>)
c6e8: 4633 mov r3, r6
c6ea: 4788 blx r1
c6ec: e7fe b.n c6ec <lv_img_cache_set_size+0x44>
if(LV_GC_ROOT(_lv_img_cache_array) == NULL) {
c6ee: 6823 ldr r3, [r4, #0]
c6f0: f8df 8060 ldr.w r8, [pc, #96] ; c754 <lv_img_cache_set_size+0xac>
c6f4: b923 cbnz r3, c700 <lv_img_cache_set_size+0x58>
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 <lv_img_cache_set_size+0xb0>
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_img_cache_set_size+0x52>
_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 <lv_img_cache_set_size+0x62>
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 <lv_img_decoder_built_in_info>:
* @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 <lv_img_decoder_built_in_info+0xb4>)
{
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_decoder_built_in_info+0x4a>
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 <lv_img_decoder_built_in_info+0x44>
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 <lv_img_decoder_built_in_info+0xb8>)
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 <lv_img_decoder_built_in_info+0x9a>
res = lv_fs_open(&file, src, LV_FS_MODE_RD);
c7aa: 4b1b ldr r3, [pc, #108] ; (c818 <lv_img_decoder_built_in_info+0xbc>)
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 <lv_img_decoder_built_in_info+0x8a>
res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn);
c7b6: 4e19 ldr r6, [pc, #100] ; (c81c <lv_img_decoder_built_in_info+0xc0>)
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 <lv_img_decoder_built_in_info+0xc4>)
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 <lv_img_decoder_built_in_info+0x76>
c7cc: 9b03 ldr r3, [sp, #12]
c7ce: 2b04 cmp r3, #4
c7d0: d009 beq.n c7e6 <lv_img_decoder_built_in_info+0x8a>
LV_LOG_WARN("Image get info get read file header");
c7d2: 4b14 ldr r3, [pc, #80] ; (c824 <lv_img_decoder_built_in_info+0xc8>)
c7d4: 9300 str r3, [sp, #0]
c7d6: 4b14 ldr r3, [pc, #80] ; (c828 <lv_img_decoder_built_in_info+0xcc>)
c7d8: f240 1221 movw r2, #289 ; 0x121
LV_LOG_WARN("Image get info found unknown src type");
c7dc: 4913 ldr r1, [pc, #76] ; (c82c <lv_img_decoder_built_in_info+0xd0>)
c7de: 4c14 ldr r4, [pc, #80] ; (c830 <lv_img_decoder_built_in_info+0xd4>)
c7e0: 2002 movs r0, #2
c7e2: 47a0 blx r4
c7e4: e005 b.n c7f2 <lv_img_decoder_built_in_info+0x96>
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 <lv_img_decoder_built_in_info+0x44>
return LV_RES_INV;
c7f2: 2400 movs r4, #0
c7f4: e7d4 b.n c7a0 <lv_img_decoder_built_in_info+0x44>
else if(src_type == LV_IMG_SRC_SYMBOL) {
c7f6: 2802 cmp r0, #2
c7f8: d104 bne.n c804 <lv_img_decoder_built_in_info+0xa8>
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 <lv_img_decoder_built_in_info+0xd8>)
c802: e7ca b.n c79a <lv_img_decoder_built_in_info+0x3e>
LV_LOG_WARN("Image get info found unknown src type");
c804: 4b0c ldr r3, [pc, #48] ; (c838 <lv_img_decoder_built_in_info+0xdc>)
c806: 9300 str r3, [sp, #0]
c808: f44f 729a mov.w r2, #308 ; 0x134
c80c: 4b06 ldr r3, [pc, #24] ; (c828 <lv_img_decoder_built_in_info+0xcc>)
c80e: e7e5 b.n c7dc <lv_img_decoder_built_in_info+0x80>
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 <lv_img_decoder_built_in_close>:
* 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 <lv_img_decoder_built_in_close+0x2a>
#if LV_USE_FILESYSTEM
if(user_data->f) {
c844: 6820 ldr r0, [r4, #0]
c846: 4e08 ldr r6, [pc, #32] ; (c868 <lv_img_decoder_built_in_close+0x2c>)
c848: b118 cbz r0, c852 <lv_img_decoder_built_in_close+0x16>
lv_fs_close(user_data->f);
c84a: 4b08 ldr r3, [pc, #32] ; (c86c <lv_img_decoder_built_in_close+0x30>)
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 <lv_img_decoder_built_in_close+0x1c>
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 <lv_img_decoder_built_in_close+0x22>
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 <lv_img_decoder_built_in_read_line>:
{
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 <lv_img_decoder_built_in_read_line+0x24>
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 <lv_img_decoder_built_in_read_line+0xa2>
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_img_decoder_built_in_read_line+0x9c>
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_read_line+0x2ec>)
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 <lv_img_decoder_built_in_read_line+0x2f0>)
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_img_decoder_built_in_read_line+0x6a>
LV_LOG_WARN("Built-in image decoder seek failed");
c8c6: 4ba7 ldr r3, [pc, #668] ; (cb64 <lv_img_decoder_built_in_read_line+0x2f4>)
c8c8: 9300 str r3, [sp, #0]
c8ca: 4ba7 ldr r3, [pc, #668] ; (cb68 <lv_img_decoder_built_in_read_line+0x2f8>)
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 <lv_img_decoder_built_in_read_line+0x2fc>)
c8d2: 4ca7 ldr r4, [pc, #668] ; (cb70 <lv_img_decoder_built_in_read_line+0x300>)
c8d4: 2002 movs r0, #2
c8d6: 47a0 blx r4
return LV_RES_INV;
c8d8: e018 b.n c90c <lv_img_decoder_built_in_read_line+0x9c>
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 <lv_img_decoder_built_in_read_line+0x304>)
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_img_decoder_built_in_read_line+0x240>
LV_LOG_WARN("Built-in image decoder read failed");
c8fa: 4b9f ldr r3, [pc, #636] ; (cb78 <lv_img_decoder_built_in_read_line+0x308>)
c8fc: 9300 str r3, [sp, #0]
c8fe: 499b ldr r1, [pc, #620] ; (cb6c <lv_img_decoder_built_in_read_line+0x2fc>)
c900: 4b99 ldr r3, [pc, #612] ; (cb68 <lv_img_decoder_built_in_read_line+0x2f8>)
c902: 4d9b ldr r5, [pc, #620] ; (cb70 <lv_img_decoder_built_in_read_line+0x300>)
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 <lv_img_decoder_built_in_read_line+0x240>
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 <lv_img_decoder_built_in_read_line+0x248>
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 <lv_img_decoder_built_in_read_line+0x30c>)
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 <lv_img_decoder_built_in_read_line+0xc8>
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 <lv_img_decoder_built_in_read_line+0x118>
#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 <lv_img_decoder_built_in_read_line+0x2ec>)
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 <lv_img_decoder_built_in_read_line+0x1d0>
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 <lv_img_decoder_built_in_read_line+0xe4>
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 <lv_img_decoder_built_in_read_line+0x310>)
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 <lv_img_decoder_built_in_read_line+0x1d8>
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 <lv_img_decoder_built_in_read_line+0x230>
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 <lv_img_decoder_built_in_read_line+0x148>
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 <lv_img_decoder_built_in_read_line+0x148>
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 <lv_img_decoder_built_in_read_line+0x148>
ca40: 2400 movs r4, #0
ca42: 4621 mov r1, r4
ca44: 46a3 mov fp, r4
ca46: e7f9 b.n ca3c <lv_img_decoder_built_in_read_line+0x1cc>
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 <lv_img_decoder_built_in_read_line+0x2f0>)
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 <lv_img_decoder_built_in_read_line+0x304>
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 <lv_img_decoder_built_in_read_line+0x164>
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 <lv_img_decoder_built_in_read_line+0x1f6>
pos = 8 - px_size;
data_tmp++;
}
}
#if LV_USE_FILESYSTEM
_lv_mem_buf_release(fs_buf);
caa6: 4b37 ldr r3, [pc, #220] ; (cb84 <lv_img_decoder_built_in_read_line+0x314>)
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 <lv_img_decoder_built_in_read_line+0x3b0>
uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf);
cac0: 4b26 ldr r3, [pc, #152] ; (cb5c <lv_img_decoder_built_in_read_line+0x2ec>)
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 <lv_img_decoder_built_in_read_line+0x352>
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 <lv_img_decoder_built_in_read_line+0x310>)
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 <lv_img_decoder_built_in_read_line+0x35a>
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 <lv_img_decoder_built_in_read_line+0x3a8>
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 <lv_img_decoder_built_in_read_line+0x29c>
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 <lv_img_decoder_built_in_read_line+0x29c>
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 <lv_img_decoder_built_in_read_line+0x29c>
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_img_decoder_built_in_read_line+0x29c>
lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/
cbca: 4b18 ldr r3, [pc, #96] ; (cc2c <lv_img_decoder_built_in_read_line+0x3bc>)
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_img_decoder_built_in_read_line+0x3c0>)
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 <lv_img_decoder_built_in_read_line+0x2b8>
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 <lv_img_decoder_built_in_read_line+0x376>
cc1e: e742 b.n caa6 <lv_img_decoder_built_in_read_line+0x236>
LV_LOG_WARN("Built-in image decoder read not supports the color format");
cc20: 4b04 ldr r3, [pc, #16] ; (cc34 <lv_img_decoder_built_in_read_line+0x3c4>)
cc22: 9300 str r3, [sp, #0]
cc24: f44f 72fe mov.w r2, #508 ; 0x1fc
cc28: 4b03 ldr r3, [pc, #12] ; (cc38 <lv_img_decoder_built_in_read_line+0x3c8>)
cc2a: e651 b.n c8d0 <lv_img_decoder_built_in_read_line+0x60>
cc2c: 0000e44f .word 0x0000e44f
cc30: 0000e419 .word 0x0000e419
cc34: 0001fffe .word 0x0001fffe
cc38: 00020131 .word 0x00020131
0000cc3c <lv_img_decoder_built_in_open>:
{
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 <lv_img_decoder_built_in_open+0x100>
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 <lv_img_decoder_built_in_open+0x240>)
cc4e: 4798 blx r3
cc50: 498b ldr r1, [pc, #556] ; (ce80 <lv_img_decoder_built_in_open+0x244>)
cc52: 4b8c ldr r3, [pc, #560] ; (ce84 <lv_img_decoder_built_in_open+0x248>)
cc54: 4798 blx r3
cc56: 2800 cmp r0, #0
cc58: f040 80a9 bne.w cdae <lv_img_decoder_built_in_open+0x172>
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 <lv_img_decoder_built_in_open+0x24c>)
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_img_decoder_built_in_open+0x3c>
LV_LOG_WARN("Built-in image decoder can't open the file");
cc68: 4b88 ldr r3, [pc, #544] ; (ce8c <lv_img_decoder_built_in_open+0x250>)
cc6a: 9300 str r3, [sp, #0]
cc6c: 4b88 ldr r3, [pc, #544] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
cc6e: f44f 72a6 mov.w r2, #332 ; 0x14c
LV_LOG_WARN("Image decoder open: unknown color format")
cc72: 4988 ldr r1, [pc, #544] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
cc74: 2002 movs r0, #2
cc76: e022 b.n ccbe <lv_img_decoder_built_in_open+0x82>
if(dsc->user_data == NULL) {
cc78: 69e3 ldr r3, [r4, #28]
cc7a: f8df 923c ldr.w r9, [pc, #572] ; ceb8 <lv_img_decoder_built_in_open+0x27c>
cc7e: f8df 823c ldr.w r8, [pc, #572] ; cebc <lv_img_decoder_built_in_open+0x280>
cc82: bb13 cbnz r3, ccca <lv_img_decoder_built_in_open+0x8e>
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 <lv_img_decoder_built_in_open+0x70>
cc90: 4b7f ldr r3, [pc, #508] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
cc92: 4980 ldr r1, [pc, #512] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
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 <lv_img_decoder_built_in_open+0x25c>)
cc9e: 47b0 blx r6
cca0: 69e2 ldr r2, [r4, #28]
cca2: 487e ldr r0, [pc, #504] ; (ce9c <lv_img_decoder_built_in_open+0x260>)
cca4: 497e ldr r1, [pc, #504] ; (cea0 <lv_img_decoder_built_in_open+0x264>)
cca6: 462b mov r3, r5
cca8: 4788 blx r1
ccaa: e7fe b.n ccaa <lv_img_decoder_built_in_open+0x6e>
if(dsc->user_data == NULL) {
ccac: 69e0 ldr r0, [r4, #28]
ccae: b948 cbnz r0, ccc4 <lv_img_decoder_built_in_open+0x88>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
ccb0: 4b7c ldr r3, [pc, #496] ; (cea4 <lv_img_decoder_built_in_open+0x268>)
ccb2: 9300 str r3, [sp, #0]
ccb4: 4977 ldr r1, [pc, #476] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
ccb6: 4b76 ldr r3, [pc, #472] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
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 <lv_img_decoder_built_in_open+0x25c>)
ccc0: 47a0 blx r4
ccc2: e074 b.n cdae <lv_img_decoder_built_in_open+0x172>
_lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t));
ccc4: 4b78 ldr r3, [pc, #480] ; (cea8 <lv_img_decoder_built_in_open+0x26c>)
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 <lv_img_decoder_built_in_open+0xb8>
ccd8: 4b6d ldr r3, [pc, #436] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
ccda: 496e ldr r1, [pc, #440] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
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 <lv_img_decoder_built_in_open+0x25c>)
cce6: 47a0 blx r4
cce8: 683a ldr r2, [r7, #0]
ccea: 486c ldr r0, [pc, #432] ; (ce9c <lv_img_decoder_built_in_open+0x260>)
ccec: 496c ldr r1, [pc, #432] ; (cea0 <lv_img_decoder_built_in_open+0x264>)
ccee: 462b mov r3, r5
ccf0: 4788 blx r1
ccf2: e7fe b.n ccf2 <lv_img_decoder_built_in_open+0xb6>
if(user_data->f == NULL) {
ccf4: 683b ldr r3, [r7, #0]
ccf6: b94b cbnz r3, cd0c <lv_img_decoder_built_in_open+0xd0>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
ccf8: 4b6a ldr r3, [pc, #424] ; (cea4 <lv_img_decoder_built_in_open+0x268>)
ccfa: 9300 str r3, [sp, #0]
ccfc: 4b64 ldr r3, [pc, #400] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
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 <lv_img_decoder_built_in_open+0x258>)
cd04: 4d64 ldr r5, [pc, #400] ; (ce98 <lv_img_decoder_built_in_open+0x25c>)
cd06: 2003 movs r0, #3
cd08: 47a8 blx r5
cd0a: e04c b.n cda6 <lv_img_decoder_built_in_open+0x16a>
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_decoder_built_in_open+0xd6>
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 <lv_img_decoder_built_in_open+0x112>
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 <lv_img_decoder_built_in_open+0x206>
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 <lv_img_decoder_built_in_open+0x10c>
else if(dsc->src_type == LV_IMG_SRC_VARIABLE) {
cd3c: 2800 cmp r0, #0
cd3e: d1ee bne.n cd1e <lv_img_decoder_built_in_open+0xe2>
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 <lv_img_decoder_built_in_open+0xe2>
}
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 <lv_img_decoder_built_in_open+0x2c2>
uint8_t px_size = lv_img_cf_get_px_size(cf);
cd56: 4b55 ldr r3, [pc, #340] ; (ceac <lv_img_decoder_built_in_open+0x270>)
cd58: f8df a15c ldr.w sl, [pc, #348] ; ceb8 <lv_img_decoder_built_in_open+0x27c>
cd5c: f8df 915c ldr.w r9, [pc, #348] ; cebc <lv_img_decoder_built_in_open+0x280>
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 <lv_img_decoder_built_in_open+0x17e>
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 <lv_img_decoder_built_in_open+0x154>
cd74: 4b46 ldr r3, [pc, #280] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
cd76: 4947 ldr r1, [pc, #284] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
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 <lv_img_decoder_built_in_open+0x25c>)
cd82: 47b0 blx r6
cd84: 69e2 ldr r2, [r4, #28]
cd86: 4845 ldr r0, [pc, #276] ; (ce9c <lv_img_decoder_built_in_open+0x260>)
cd88: 4945 ldr r1, [pc, #276] ; (cea0 <lv_img_decoder_built_in_open+0x264>)
cd8a: 462b mov r3, r5
cd8c: 4788 blx r1
cd8e: e7fe b.n cd8e <lv_img_decoder_built_in_open+0x152>
if(dsc->user_data == NULL) {
cd90: 69e5 ldr r5, [r4, #28]
cd92: b975 cbnz r5, cdb2 <lv_img_decoder_built_in_open+0x176>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
cd94: 4b43 ldr r3, [pc, #268] ; (cea4 <lv_img_decoder_built_in_open+0x268>)
cd96: 9300 str r3, [sp, #0]
cd98: 493e ldr r1, [pc, #248] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
cd9a: 4b3d ldr r3, [pc, #244] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
cd9c: 4f3e ldr r7, [pc, #248] ; (ce98 <lv_img_decoder_built_in_open+0x25c>)
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 <lv_img_decoder_built_in_open+0x274>)
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_img_decoder_built_in_open+0x10c>
_lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t));
cdb2: 4b3d ldr r3, [pc, #244] ; (cea8 <lv_img_decoder_built_in_open+0x26c>)
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 <lv_img_decoder_built_in_open+0x1ac>
cdcc: 4b30 ldr r3, [pc, #192] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
cdce: 4931 ldr r1, [pc, #196] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
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 <lv_img_decoder_built_in_open+0x25c>)
cdda: 47a0 blx r4
cddc: 686a ldr r2, [r5, #4]
cdde: 482f ldr r0, [pc, #188] ; (ce9c <lv_img_decoder_built_in_open+0x260>)
cde0: 492f ldr r1, [pc, #188] ; (cea0 <lv_img_decoder_built_in_open+0x264>)
cde2: 463b mov r3, r7
cde4: 4788 blx r1
cde6: e7fe b.n cde6 <lv_img_decoder_built_in_open+0x1aa>
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 <lv_img_decoder_built_in_open+0x1da>
cdfa: 4b25 ldr r3, [pc, #148] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
cdfc: 4925 ldr r1, [pc, #148] ; (ce94 <lv_img_decoder_built_in_open+0x258>)
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 <lv_img_decoder_built_in_open+0x25c>)
ce08: 47a0 blx r4
ce0a: 68aa ldr r2, [r5, #8]
ce0c: 4823 ldr r0, [pc, #140] ; (ce9c <lv_img_decoder_built_in_open+0x260>)
ce0e: 4924 ldr r1, [pc, #144] ; (cea0 <lv_img_decoder_built_in_open+0x264>)
ce10: 4643 mov r3, r8
ce12: 4788 blx r1
ce14: e7fe b.n ce14 <lv_img_decoder_built_in_open+0x1d8>
if(user_data->palette == NULL || user_data->opa == NULL) {
ce16: 686b ldr r3, [r5, #4]
ce18: b10b cbz r3, ce1e <lv_img_decoder_built_in_open+0x1e2>
ce1a: 68ab ldr r3, [r5, #8]
ce1c: b92b cbnz r3, ce2a <lv_img_decoder_built_in_open+0x1ee>
LV_LOG_ERROR("img_decoder_built_in_open: out of memory");
ce1e: 4b21 ldr r3, [pc, #132] ; (cea4 <lv_img_decoder_built_in_open+0x268>)
ce20: 9300 str r3, [sp, #0]
ce22: f240 129b movw r2, #411 ; 0x19b
ce26: 4b1a ldr r3, [pc, #104] ; (ce90 <lv_img_decoder_built_in_open+0x254>)
ce28: e76b b.n cd02 <lv_img_decoder_built_in_open+0xc6>
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_img_decoder_built_in_open+0x288>
lv_fs_seek(user_data->f, 4); /*Skip the header*/
ce30: 6828 ldr r0, [r5, #0]
ce32: 4b20 ldr r3, [pc, #128] ; (ceb4 <lv_img_decoder_built_in_open+0x278>)
lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL);
ce34: f8df 8088 ldr.w r8, [pc, #136] ; cec0 <lv_img_decoder_built_in_open+0x284>
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 <lv_img_decoder_built_in_open+0x20a>
dsc->img_data = NULL;
ce42: 2300 movs r3, #0
ce44: e777 b.n cd36 <lv_img_decoder_built_in_open+0xfa>
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 <lv_img_decoder_built_in_open+0x202>
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 <lv_img_decoder_built_in_open+0x206>
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 <lv_img_decoder_built_in_open+0x28e>
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_open+0x206>
lv_img_decoder_built_in_close(decoder, dsc);
cf06: 4b05 ldr r3, [pc, #20] ; (cf1c <lv_img_decoder_built_in_open+0x2e0>)
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 <lv_img_decoder_built_in_open+0x2e4>)
cf10: 9300 str r3, [sp, #0]
cf12: f240 12d3 movw r2, #467 ; 0x1d3
cf16: 4b03 ldr r3, [pc, #12] ; (cf24 <lv_img_decoder_built_in_open+0x2e8>)
cf18: e6ab b.n cc72 <lv_img_decoder_built_in_open+0x36>
cf1a: bf00 nop
cf1c: 0000c83d .word 0x0000c83d
cf20: 00020090 .word 0x00020090
cf24: 00020153 .word 0x00020153
0000cf28 <lv_img_decoder_get_info>:
{
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 <lv_img_decoder_get_info+0x4c>
cf32: f8df 9044 ldr.w r9, [pc, #68] ; cf78 <lv_img_decoder_get_info+0x50>
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 <lv_img_decoder_get_info+0x48>)
cf40: 480c ldr r0, [pc, #48] ; (cf74 <lv_img_decoder_get_info+0x4c>)
{
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 <lv_img_decoder_get_info+0x2a>
}
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 <lv_img_decoder_get_info+0x3c>
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_img_decoder_get_info+0x24>
_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 <lv_img_decoder_get_info+0x22>
cf6e: bf00 nop
cf70: 0000e6a9 .word 0x0000e6a9
cf74: 20008654 .word 0x20008654
cf78: 0000e6b5 .word 0x0000e6b5
0000cf7c <lv_img_decoder_open>:
{
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 <lv_img_decoder_open+0x90>)
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 <lv_img_decoder_open+0x56>
size_t fnlen = strlen(src);
cf96: 4b1e ldr r3, [pc, #120] ; (d010 <lv_img_decoder_open+0x94>)
cf98: 4638 mov r0, r7
cf9a: 4798 blx r3
dsc->src = lv_mem_alloc(fnlen + 1);
cf9c: 4b1d ldr r3, [pc, #116] ; (d014 <lv_img_decoder_open+0x98>)
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 <lv_img_decoder_open+0x9c>)
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 <lv_img_decoder_open+0xa0>)
cfac: 4b1c ldr r3, [pc, #112] ; (d020 <lv_img_decoder_open+0xa4>)
cfae: f8df 906c ldr.w r9, [pc, #108] ; d01c <lv_img_decoder_open+0xa0>
cfb2: f8df a074 ldr.w sl, [pc, #116] ; d028 <lv_img_decoder_open+0xac>
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 <lv_img_decoder_open+0x5a>
if(res == LV_RES_INV) {
cfc2: b91e cbnz r6, cfcc <lv_img_decoder_open+0x50>
_lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t));
cfc4: 4b17 ldr r3, [pc, #92] ; (d024 <lv_img_decoder_open+0xa8>)
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 <lv_img_decoder_open+0x2e>
if(d->info_cb == NULL || d->open_cb == NULL) continue;
cfd6: 682b ldr r3, [r5, #0]
cfd8: b19b cbz r3, d002 <lv_img_decoder_open+0x86>
cfda: 686a ldr r2, [r5, #4]
cfdc: b18a cbz r2, d002 <lv_img_decoder_open+0x86>
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 <lv_img_decoder_open+0x86>
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_img_decoder_open+0x50>
_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 <lv_img_decoder_open+0x44>
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 <lv_img_decoder_read_line>:
{
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 <lv_img_decoder_read_line+0x1c>
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 <lv_img_decoder_read_line+0x18>
0000d04c <lv_img_decoder_close>:
{
d04c: b510 push {r4, lr}
d04e: 4604 mov r4, r0
if(dsc->decoder) {
d050: 6800 ldr r0, [r0, #0]
d052: b158 cbz r0, d06c <lv_img_decoder_close+0x20>
if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc);
d054: 68c3 ldr r3, [r0, #12]
d056: b10b cbz r3, d05c <lv_img_decoder_close+0x10>
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_img_decoder_close+0x20>
lv_mem_free(dsc->src);
d062: 4b03 ldr r3, [pc, #12] ; (d070 <lv_img_decoder_close+0x24>)
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 <lv_img_decoder_create>:
{
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 <lv_img_decoder_create+0x3c>)
d078: 480e ldr r0, [pc, #56] ; (d0b4 <lv_img_decoder_create+0x40>)
d07a: 4798 blx r3
LV_ASSERT_MEM(decoder);
d07c: 4b0e ldr r3, [pc, #56] ; (d0b8 <lv_img_decoder_create+0x44>)
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 <lv_img_decoder_create+0x2c>
d086: 4b0d ldr r3, [pc, #52] ; (d0bc <lv_img_decoder_create+0x48>)
d088: 490d ldr r1, [pc, #52] ; (d0c0 <lv_img_decoder_create+0x4c>)
d08a: 9300 str r3, [sp, #0]
d08c: 22c9 movs r2, #201 ; 0xc9
d08e: 2003 movs r0, #3
d090: 4e0c ldr r6, [pc, #48] ; (d0c4 <lv_img_decoder_create+0x50>)
d092: 47b0 blx r6
d094: 480c ldr r0, [pc, #48] ; (d0c8 <lv_img_decoder_create+0x54>)
d096: 490d ldr r1, [pc, #52] ; (d0cc <lv_img_decoder_create+0x58>)
d098: 4622 mov r2, r4
d09a: 462b mov r3, r5
d09c: 4788 blx r1
d09e: e7fe b.n d09e <lv_img_decoder_create+0x2a>
if(decoder == NULL) return NULL;
d0a0: b11c cbz r4, d0aa <lv_img_decoder_create+0x36>
_lv_memset_00(decoder, sizeof(lv_img_decoder_t));
d0a2: 4b0b ldr r3, [pc, #44] ; (d0d0 <lv_img_decoder_create+0x5c>)
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 <lv_font_get_glyph_bitmap>:
* @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 <lv_font_get_glyph_dsc>:
* @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 <lv_font_get_glyph_width>:
* @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 <lv_font_get_glyph_width+0x18>)
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 <lv_font_get_glyph_width+0x12>
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 <kern_pair_8_compare>:
{
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 <kern_pair_16_compare>:
{
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 <get_bits>:
* @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 <get_bits+0x48>
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 <get_bits+0x56>
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 <get_bits+0x16>
bit_mask = 0xF;
d1f4: 230f movs r3, #15
break;
d1f6: e7e8 b.n d1ca <get_bits+0x16>
bit_mask = 0xFF;
d1f8: 23ff movs r3, #255 ; 0xff
break;
d1fa: e7e6 b.n d1ca <get_bits+0x16>
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 <get_bits+0x16>
switch(len) {
d206: 4613 mov r3, r2
d208: e7df b.n d1ca <get_bits+0x16>
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 <get_bits+0x3a>
...
0000d218 <bits_write>:
* @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 <bits_write+0x10>
len = 4;
switch(val) {
d21e: 2a07 cmp r2, #7
d220: bf9c itt ls
d222: 4b0b ldrls r3, [pc, #44] ; (d250 <bits_write+0x38>)
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 <decompress_line>:
{
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 <decompress_line+0xec>)
d25a: f8df a0e8 ldr.w sl, [pc, #232] ; d344 <decompress_line+0xf0>
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 <decompress_line+0x26>
}
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 <decompress_line+0x54>
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 <decompress_line+0x48>
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 <decompress_line+0x1a>
else if(rle_state == RLE_STATE_REPEATE) {
d2a8: 2b01 cmp r3, #1
d2aa: d131 bne.n d310 <decompress_line+0xbc>
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 <decompress_line+0xa4>
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 <decompress_line+0x4e>
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 <decompress_line+0x8c>
rle_state = RLE_STATE_COUNTER;
d2da: f884 b005 strb.w fp, [r4, #5]
d2de: e7e0 b.n d2a2 <decompress_line+0x4e>
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 <decompress_line+0x4e>
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 <decompress_line+0xa0>
else if(rle_state == RLE_STATE_COUNTER) {
d310: 2b02 cmp r3, #2
d312: d112 bne.n d33a <decompress_line+0xe6>
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 <decompress_line+0x4e>
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 <decompress_line+0x4e>
uint8_t ret = 0;
d33a: 2500 movs r5, #0
d33c: e7b1 b.n d2a2 <decompress_line+0x4e>
d33e: bf00 nop
d340: 200085d4 .word 0x200085d4
d344: 0000d1b5 .word 0x0000d1b5
0000d348 <unicode_list_compare>:
* @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 <get_glyph_dsc_id>:
{
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 <get_glyph_dsc_id+0x12>
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 <get_glyph_dsc_id+0x9e>
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 <get_glyph_dsc_id+0xa2>
if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) {
d380: 7c8b ldrb r3, [r1, #18]
d382: b913 cbnz r3, d38a <get_glyph_dsc_id+0x3a>
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 <get_glyph_dsc_id+0x5c>
else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) {
d38a: 2b01 cmp r3, #1
d38c: d103 bne.n d396 <get_glyph_dsc_id+0x46>
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 <get_glyph_dsc_id+0x36>
else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) {
d396: 2b02 cmp r3, #2
d398: d114 bne.n d3c4 <get_glyph_dsc_id+0x74>
uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length,
d39a: 481b ldr r0, [pc, #108] ; (d408 <get_glyph_dsc_id+0xb8>)
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 <get_glyph_dsc_id+0xbc>)
d3a4: a803 add r0, sp, #12
d3a6: 47b8 blx r7
if(p) {
d3a8: b920 cbnz r0, d3b4 <get_glyph_dsc_id+0x64>
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 <get_glyph_dsc_id+0x12>
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 <get_glyph_dsc_id+0x5c>
else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) {
d3c4: 2b03 cmp r3, #3
d3c6: d1f0 bne.n d3aa <get_glyph_dsc_id+0x5a>
uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length,
d3c8: 4b0f ldr r3, [pc, #60] ; (d408 <get_glyph_dsc_id+0xb8>)
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 <get_glyph_dsc_id+0xbc>)
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 <get_glyph_dsc_id+0x5a>
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 <get_glyph_dsc_id+0x36>
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 <get_glyph_dsc_id+0x18>
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 <get_glyph_dsc_id+0x12>
d406: bf00 nop
d408: 0000d349 .word 0x0000d349
d40c: 0001028d .word 0x0001028d
0000d410 <lv_font_get_bitmap_fmt_txt>:
{
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_get_bitmap_fmt_txt+0x1ac>)
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 <lv_font_get_bitmap_fmt_txt+0x26>
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 <lv_font_get_bitmap_fmt_txt+0x48>
if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index];
d444: f1b8 0f00 cmp.w r8, #0
d448: d0ef beq.n d42a <lv_font_get_bitmap_fmt_txt+0x1a>
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 <lv_font_get_bitmap_fmt_txt+0x1c>
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 <lv_font_get_bitmap_fmt_txt+0x1a>
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 <lv_font_get_bitmap_fmt_txt+0x70>
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 <lv_font_get_bitmap_fmt_txt+0x1b0>)
d482: 4b50 ldr r3, [pc, #320] ; (d5c4 <lv_font_get_bitmap_fmt_txt+0x1b4>)
d484: 6930 ldr r0, [r6, #16]
d486: 4798 blx r3
d488: 42a0 cmp r0, r4
d48a: d34b bcc.n d524 <lv_font_get_bitmap_fmt_txt+0x114>
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 <lv_font_get_bitmap_fmt_txt+0x1b8>)
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 <lv_font_get_bitmap_fmt_txt+0x1bc>)
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 <lv_font_get_bitmap_fmt_txt+0x148>
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_font_get_bitmap_fmt_txt+0x15e>
_lv_mem_buf_release(line_buf1);
d508: 4620 mov r0, r4
d50a: 4c31 ldr r4, [pc, #196] ; (d5d0 <lv_font_get_bitmap_fmt_txt+0x1c0>)
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 <lv_font_get_bitmap_fmt_txt+0x1b0>)
d514: 6918 ldr r0, [r3, #16]
d516: e789 b.n d42c <lv_font_get_bitmap_fmt_txt+0x1c>
buf_size = (gsize + 3) >> 2;
d518: 3403 adds r4, #3
d51a: 08a4 lsrs r4, r4, #2
break;
d51c: e7b0 b.n d480 <lv_font_get_bitmap_fmt_txt+0x70>
buf_size = (gsize + 1) >> 1;
d51e: 3401 adds r4, #1
d520: 0864 lsrs r4, r4, #1
break;
d522: e7ad b.n d480 <lv_font_get_bitmap_fmt_txt+0x70>
decompr_buf = lv_mem_realloc(decompr_buf, buf_size);
d524: 4621 mov r1, r4
d526: 4b2b ldr r3, [pc, #172] ; (d5d4 <lv_font_get_bitmap_fmt_txt+0x1c4>)
d528: 6930 ldr r0, [r6, #16]
d52a: 4798 blx r3
LV_ASSERT_MEM(decompr_buf);
d52c: 4b2a ldr r3, [pc, #168] ; (d5d8 <lv_font_get_bitmap_fmt_txt+0x1c8>)
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 <lv_font_get_bitmap_fmt_txt+0x140>
d536: 4b29 ldr r3, [pc, #164] ; (d5dc <lv_font_get_bitmap_fmt_txt+0x1cc>)
d538: 4929 ldr r1, [pc, #164] ; (d5e0 <lv_font_get_bitmap_fmt_txt+0x1d0>)
d53a: 9300 str r3, [sp, #0]
d53c: 2272 movs r2, #114 ; 0x72
d53e: 2003 movs r0, #3
d540: 4d28 ldr r5, [pc, #160] ; (d5e4 <lv_font_get_bitmap_fmt_txt+0x1d4>)
d542: 47a8 blx r5
d544: 6932 ldr r2, [r6, #16]
d546: 4828 ldr r0, [pc, #160] ; (d5e8 <lv_font_get_bitmap_fmt_txt+0x1d8>)
d548: 4928 ldr r1, [pc, #160] ; (d5ec <lv_font_get_bitmap_fmt_txt+0x1dc>)
d54a: 4623 mov r3, r4
d54c: 4788 blx r1
d54e: e7fe b.n d54e <lv_font_get_bitmap_fmt_txt+0x13e>
if(decompr_buf == NULL) return NULL;
d550: 6933 ldr r3, [r6, #16]
d552: 2b00 cmp r3, #0
d554: d19a bne.n d48c <lv_font_get_bitmap_fmt_txt+0x7c>
d556: e768 b.n d42a <lv_font_get_bitmap_fmt_txt+0x1a>
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 <lv_font_get_bitmap_fmt_txt+0x1e0>)
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 <lv_font_get_bitmap_fmt_txt+0xe0>
decompress_line(line_buf2, w);
d56e: 4b17 ldr r3, [pc, #92] ; (d5cc <lv_font_get_bitmap_fmt_txt+0x1bc>)
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 <lv_font_get_bitmap_fmt_txt+0x186>
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 <lv_font_get_bitmap_fmt_txt+0xf2>
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 <lv_font_get_bitmap_fmt_txt+0x1e0>)
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 <lv_font_get_bitmap_fmt_txt+0x172>
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 <lv_font_get_glyph_dsc_fmt_txt>:
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_get_glyph_dsc_fmt_txt+0x144>
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 <lv_font_get_glyph_dsc_fmt_txt+0x134>
if(fdsc->kern_dsc) {
d61c: 68fb ldr r3, [r7, #12]
d61e: bb3b cbnz r3, d670 <lv_font_get_glyph_dsc_fmt_txt+0x7c>
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 <lv_font_get_glyph_dsc_fmt_txt+0x48>
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 <lv_font_get_glyph_dsc_fmt_txt+0x138>
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 <lv_font_get_glyph_dsc_fmt_txt+0x2c>
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 <lv_font_get_glyph_dsc_fmt_txt+0x10a>
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 <lv_font_get_glyph_dsc_fmt_txt+0xd6>
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 <lv_font_get_glyph_dsc_fmt_txt+0x148>
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 <lv_font_get_glyph_dsc_fmt_txt+0x13c>)
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_font_get_glyph_dsc_fmt_txt+0x2e>
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 <lv_font_get_glyph_dsc_fmt_txt+0x2e>
else if(kdsc->glyph_ids_size == 1) {
d6ca: 2a01 cmp r2, #1
d6cc: d1a8 bne.n d620 <lv_font_get_glyph_dsc_fmt_txt+0x2c>
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 <lv_font_get_glyph_dsc_fmt_txt+0x140>)
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 <lv_font_get_glyph_dsc_fmt_txt+0x148>
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_font_get_glyph_dsc_fmt_txt+0x2e>
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 <lv_font_get_glyph_dsc_fmt_txt+0xce>
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 <lv_font_get_glyph_dsc_fmt_txt+0x2c>
d70e: 2900 cmp r1, #0
d710: d086 beq.n d620 <lv_font_get_glyph_dsc_fmt_txt+0x2c>
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 <lv_font_get_glyph_dsc_fmt_txt+0x2e>
if(!gid) return false;
d728: 4606 mov r6, r0
d72a: e79d b.n d668 <lv_font_get_glyph_dsc_fmt_txt+0x74>
return true;
d72c: 2601 movs r6, #1
d72e: e79b b.n d668 <lv_font_get_glyph_dsc_fmt_txt+0x74>
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 <lv_disp_drv_init>:
* 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 <lv_disp_drv_init+0x38>)
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 <lv_disp_drv_init+0x3c>)
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 <lv_disp_buf_init>:
* 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 <lv_disp_buf_init+0x1c>)
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 <lv_disp_drv_register>:
* 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 <lv_disp_drv_register+0xf4>)
d7c2: 4e3c ldr r6, [pc, #240] ; (d8b4 <lv_disp_drv_register+0xf8>)
{
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 <lv_disp_drv_register+0xfc>)
d7c8: 4798 blx r3
if(!disp) {
d7ca: 4604 mov r4, r0
d7cc: b998 cbnz r0, d7f6 <lv_disp_drv_register+0x3a>
LV_ASSERT_MEM(disp);
d7ce: 47b0 blx r6
d7d0: b120 cbz r0, d7dc <lv_disp_drv_register+0x20>
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 <lv_disp_drv_register+0x100>)
d7de: 4938 ldr r1, [pc, #224] ; (d8c0 <lv_disp_drv_register+0x104>)
d7e0: 9300 str r3, [sp, #0]
d7e2: 227c movs r2, #124 ; 0x7c
d7e4: 2003 movs r0, #3
d7e6: 4c37 ldr r4, [pc, #220] ; (d8c4 <lv_disp_drv_register+0x108>)
d7e8: 47a0 blx r4
d7ea: 4837 ldr r0, [pc, #220] ; (d8c8 <lv_disp_drv_register+0x10c>)
d7ec: 4937 ldr r1, [pc, #220] ; (d8cc <lv_disp_drv_register+0x110>)
d7ee: 2200 movs r2, #0
d7f0: 2300 movs r3, #0
d7f2: 4788 blx r1
d7f4: e7fe b.n d7f4 <lv_disp_drv_register+0x38>
_lv_memset_00(disp, sizeof(lv_disp_t));
d7f6: 4b36 ldr r3, [pc, #216] ; (d8d0 <lv_disp_drv_register+0x114>)
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 <lv_disp_drv_register+0x118>)
if(disp_def == NULL) disp_def = disp;
d802: 4d35 ldr r5, [pc, #212] ; (d8d8 <lv_disp_drv_register+0x11c>)
_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 <lv_disp_drv_register+0x120>)
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 <lv_disp_drv_register+0x64>
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 <lv_disp_drv_register+0x124>)
d828: f8df 80cc ldr.w r8, [pc, #204] ; d8f8 <lv_disp_drv_register+0x13c>
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 <lv_disp_drv_register+0x98>
d83a: 4b20 ldr r3, [pc, #128] ; (d8bc <lv_disp_drv_register+0x100>)
d83c: 4920 ldr r1, [pc, #128] ; (d8c0 <lv_disp_drv_register+0x104>)
d83e: 9300 str r3, [sp, #0]
d840: 228d movs r2, #141 ; 0x8d
d842: 2003 movs r0, #3
d844: 4d1f ldr r5, [pc, #124] ; (d8c4 <lv_disp_drv_register+0x108>)
d846: 47a8 blx r5
d848: 6ae2 ldr r2, [r4, #44] ; 0x2c
d84a: 481f ldr r0, [pc, #124] ; (d8c8 <lv_disp_drv_register+0x10c>)
d84c: 491f ldr r1, [pc, #124] ; (d8cc <lv_disp_drv_register+0x110>)
d84e: 4633 mov r3, r6
d850: 4788 blx r1
d852: e7fe b.n d852 <lv_disp_drv_register+0x96>
if(disp->refr_task == NULL) return NULL;
d854: 6ae3 ldr r3, [r4, #44] ; 0x2c
d856: 2b00 cmp r3, #0
d858: d0bb beq.n d7d2 <lv_disp_drv_register+0x16>
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 <lv_disp_drv_register+0x128>)
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 <lv_disp_drv_register+0x12c>)
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 <lv_disp_drv_register+0x130>)
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 <lv_disp_drv_register+0x134>)
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 <lv_disp_drv_register+0x138>)
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 <lv_disp_drv_register+0x18>
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 <lv_disp_get_default>:
* @return pointer to the default display
*/
lv_disp_t * lv_disp_get_default(void)
{
return disp_def;
}
d8fc: 4b01 ldr r3, [pc, #4] ; (d904 <lv_disp_get_default+0x8>)
d8fe: 6818 ldr r0, [r3, #0]
d900: 4770 bx lr
d902: bf00 nop
d904: 200085e8 .word 0x200085e8
0000d908 <lv_disp_get_hor_res>:
* @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 <lv_disp_get_hor_res+0x8>
return disp_def;
d90a: 4b07 ldr r3, [pc, #28] ; (d928 <lv_disp_get_hor_res+0x20>)
d90c: 6818 ldr r0, [r3, #0]
if(disp == NULL)
d90e: b138 cbz r0, d920 <lv_disp_get_hor_res+0x18>
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 <lv_disp_get_ver_res>:
* @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 <lv_disp_get_ver_res+0x8>
return disp_def;
d92e: 4b07 ldr r3, [pc, #28] ; (d94c <lv_disp_get_ver_res+0x20>)
d930: 6818 ldr r0, [r3, #0]
if(disp == NULL)
d932: b138 cbz r0, d944 <lv_disp_get_ver_res+0x18>
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 <lv_disp_get_dpi>:
* @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 <lv_disp_get_dpi+0x8>
return disp_def;
d952: 4b04 ldr r3, [pc, #16] ; (d964 <lv_disp_get_dpi+0x14>)
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 <lv_disp_get_dpi+0x10>
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 <lv_disp_get_size_category>:
* 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 <lv_disp_get_size_category+0xc>
return disp_def;
d96e: 4b0f ldr r3, [pc, #60] ; (d9ac <lv_disp_get_size_category+0x44>)
d970: 6819 ldr r1, [r3, #0]
uint32_t w;
if(disp == NULL) w = LV_HOR_RES_MAX;
d972: b199 cbz r1, d99c <lv_disp_get_size_category+0x34>
else w = lv_disp_get_hor_res(disp);
d974: 4b0e ldr r3, [pc, #56] ; (d9b0 <lv_disp_get_size_category+0x48>)
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 <lv_disp_get_size_category+0x4c>)
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 <lv_disp_get_size_category+0x3a>
if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM;
d98e: 2831 cmp r0, #49 ; 0x31
d990: d909 bls.n d9a6 <lv_disp_get_size_category+0x3e>
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 <lv_disp_get_size_category+0x14>
if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL;
d9a2: 2000 movs r0, #0
d9a4: e7f9 b.n d99a <lv_disp_get_size_category+0x32>
if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM;
d9a6: 2001 movs r0, #1
d9a8: e7f7 b.n d99a <lv_disp_get_size_category+0x32>
d9aa: bf00 nop
d9ac: 200085e8 .word 0x200085e8
d9b0: 0000d909 .word 0x0000d909
d9b4: 0000d951 .word 0x0000d951
0000d9b8 <lv_disp_flush_ready>:
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 <lv_disp_get_next>:
* @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 <lv_disp_get_next+0x10>)
if(disp == NULL)
d9c8: b909 cbnz r1, d9ce <lv_disp_get_next+0xa>
return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll));
d9ca: 4b03 ldr r3, [pc, #12] ; (d9d8 <lv_disp_get_next+0x14>)
d9cc: 4718 bx r3
else
return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp);
d9ce: 4b03 ldr r3, [pc, #12] ; (d9dc <lv_disp_get_next+0x18>)
d9d0: 4718 bx r3
d9d2: bf00 nop
d9d4: 2000860c .word 0x2000860c
d9d8: 0000e6a9 .word 0x0000e6a9
d9dc: 0000e6b5 .word 0x0000e6b5
0000d9e0 <lv_disp_get_buf>:
* @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 <lv_disp_is_double_buf>:
* @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 <lv_disp_is_double_buf+0xe>
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 <lv_disp_is_true_double_buf>:
* `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 <lv_disp_is_true_double_buf+0x20>)
{
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 <lv_disp_is_true_double_buf+0x1c>
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 <lv_indev_get_next>:
* @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 <lv_indev_get_next+0x10>)
if(indev == NULL)
da1c: b909 cbnz r1, da22 <lv_indev_get_next+0xa>
return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll));
da1e: 4b03 ldr r3, [pc, #12] ; (da2c <lv_indev_get_next+0x14>)
da20: 4718 bx r3
else
return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev);
da22: 4b03 ldr r3, [pc, #12] ; (da30 <lv_indev_get_next+0x18>)
da24: 4718 bx r3
da26: bf00 nop
da28: 20008618 .word 0x20008618
da2c: 0000e6a9 .word 0x0000e6a9
da30: 0000e6b5 .word 0x0000e6b5
0000da34 <lv_tick_inc>:
* 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 <lv_tick_inc+0x10>)
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 <lv_tick_get>:
{
#if LV_TICK_CUSTOM == 0
uint32_t result;
do {
tick_irq_flag = 1;
result = sys_time;
da48: 4b03 ldr r3, [pc, #12] ; (da58 <lv_tick_get+0x10>)
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 <lv_tick_get+0x6>
return result;
#else
return LV_TICK_CUSTOM_SYS_TIME_EXPR;
#endif
}
da56: 4770 bx lr
da58: 200085ec .word 0x200085ec
0000da5c <lv_tick_elaps>:
* 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 <lv_tick_elaps+0xc>)
{
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_anim_path_linear>:
{
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 <anim_mark_list_change>:
}
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 <anim_mark_list_change+0x20>)
if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL)
da94: 4807 ldr r0, [pc, #28] ; (dab4 <anim_mark_list_change+0x24>)
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 <anim_mark_list_change+0x28>)
da9c: 4798 blx r3
da9e: 4b07 ldr r3, [pc, #28] ; (dabc <anim_mark_list_change+0x2c>)
daa0: 4601 mov r1, r0
daa2: b918 cbnz r0, daac <anim_mark_list_change+0x1c>
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 <anim_mark_list_change+0x14>
dab0: 200085f4 .word 0x200085f4
dab4: 2000863c .word 0x2000863c
dab8: 0000e6a9 .word 0x0000e6a9
dabc: 0000fb6d .word 0x0000fb6d
0000dac0 <anim_task>:
{
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 <anim_task+0x144>)
dac6: 4f50 ldr r7, [pc, #320] ; (dc08 <anim_task+0x148>)
dac8: 4c4e ldr r4, [pc, #312] ; (dc04 <anim_task+0x144>)
daca: 4d50 ldr r5, [pc, #320] ; (dc0c <anim_task+0x14c>)
{
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 <anim_task+0x3c>
uint32_t elaps = lv_tick_elaps(last_task_run);
dad2: 4d4f ldr r5, [pc, #316] ; (dc10 <anim_task+0x150>)
dad4: 4b4f ldr r3, [pc, #316] ; (dc14 <anim_task+0x154>)
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 <anim_task+0x144>
dadc: f8df 912c ldr.w r9, [pc, #300] ; dc0c <anim_task+0x14c>
_lv_memcpy(&a_tmp, a, sizeof(lv_anim_t));
dae0: f8df a148 ldr.w sl, [pc, #328] ; dc2c <anim_task+0x16c>
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 <anim_task+0x144>)
daea: 47b8 blx r7
daec: 4604 mov r4, r0
while(a != NULL) {
daee: b97c cbnz r4, db10 <anim_task+0x50>
last_task_run = lv_tick_get();
daf0: 4b49 ldr r3, [pc, #292] ; (dc18 <anim_task+0x158>)
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_task+0x10>
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 <anim_task+0x13c>
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 <anim_task+0x76>
db2a: 42f3 cmn r3, r6
db2c: d403 bmi.n db36 <anim_task+0x76>
if(a->start_cb) a->start_cb(a);
db2e: 68a3 ldr r3, [r4, #8]
db30: b10b cbz r3, db36 <anim_task+0x76>
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 <anim_task+0xde>
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 <anim_task+0xea>
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 <anim_task+0xa0>
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 <anim_task+0xde>
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 <anim_task+0xfc>
db76: b9da cbnz r2, dbb0 <anim_task+0xf0>
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 <anim_task+0x136>
_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 <anim_task+0x15c>)
db88: 4640 mov r0, r8
db8a: 4798 blx r3
lv_mem_free(a);
db8c: 4b24 ldr r3, [pc, #144] ; (dc20 <anim_task+0x160>)
db8e: 4620 mov r0, r4
db90: 4798 blx r3
anim_mark_list_change();
db92: 4b24 ldr r3, [pc, #144] ; (dc24 <anim_task+0x164>)
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 <anim_task+0xde>
db9a: 4668 mov r0, sp
db9c: 4798 blx r3
if(anim_list_changed)
db9e: 782b ldrb r3, [r5, #0]
dba0: b363 cbz r3, dbfc <anim_task+0x13c>
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 <anim_task+0x2e>
else new_value = lv_anim_path_linear(&a->path, a);
dbaa: 4b1f ldr r3, [pc, #124] ; (dc28 <anim_task+0x168>)
dbac: 4798 blx r3
dbae: e7d2 b.n db56 <anim_task+0x96>
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 <anim_task+0x102>
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 <anim_task+0xb8>
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 <anim_task+0xde>
if(a->playback_now == 0) a->act_time = -a->playback_delay;
dbcc: b913 cbnz r3, dbd4 <anim_task+0x114>
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 <anim_task+0xde>
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 <anim_task+0x102>
dbfa: e7bf b.n db7c <anim_task+0xbc>
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 <anim_task+0xe6>
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 <lv_anim_init>:
{
dc78: b510 push {r4, lr}
_lv_memset_00(a, sizeof(lv_anim_t));
dc7a: 4b0b ldr r3, [pc, #44] ; (dca8 <lv_anim_init+0x30>)
{
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 <lv_anim_init+0x34>)
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 <lv_anim_del>:
{
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 <lv_anim_del+0x58>)
a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a);
dcb6: f8df 9054 ldr.w r9, [pc, #84] ; dd0c <lv_anim_del+0x5c>
dcba: f8df a05c ldr.w sl, [pc, #92] ; dd18 <lv_anim_del+0x68>
_lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a);
dcbe: f8df b05c ldr.w fp, [pc, #92] ; dd1c <lv_anim_del+0x6c>
{
dcc2: 4606 mov r6, r0
a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll));
dcc4: 4811 ldr r0, [pc, #68] ; (dd0c <lv_anim_del+0x5c>)
{
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 <lv_anim_del+0x28>
}
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 <lv_anim_del+0x52>
dce6: 6863 ldr r3, [r4, #4]
dce8: 42ab cmp r3, r5
dcea: d000 beq.n dcee <lv_anim_del+0x3e>
dcec: b94d cbnz r5, dd02 <lv_anim_del+0x52>
_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 <lv_anim_del+0x60>)
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 <lv_anim_del+0x64>)
dcfc: 4798 blx r3
del = true;
dcfe: f04f 0801 mov.w r8, #1
dd02: 463c mov r4, r7
dd04: e7e4 b.n dcd0 <lv_anim_del+0x20>
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 <lv_anim_start>:
{
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 <lv_anim_start+0xe>
dd28: 6800 ldr r0, [r0, #0]
dd2a: 4b1d ldr r3, [pc, #116] ; (dda0 <lv_anim_start+0x80>)
dd2c: 4798 blx r3
if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) {
dd2e: 481d ldr r0, [pc, #116] ; (dda4 <lv_anim_start+0x84>)
dd30: 4b1d ldr r3, [pc, #116] ; (dda8 <lv_anim_start+0x88>)
dd32: 4798 blx r3
dd34: b120 cbz r0, dd40 <lv_anim_start+0x20>
last_task_run = lv_tick_get() - 1;
dd36: 4b1d ldr r3, [pc, #116] ; (ddac <lv_anim_start+0x8c>)
dd38: 4798 blx r3
dd3a: 4b1d ldr r3, [pc, #116] ; (ddb0 <lv_anim_start+0x90>)
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 <lv_anim_start+0x94>)
dd42: 4818 ldr r0, [pc, #96] ; (dda4 <lv_anim_start+0x84>)
dd44: 4798 blx r3
LV_ASSERT_MEM(new_anim);
dd46: 4b1c ldr r3, [pc, #112] ; (ddb8 <lv_anim_start+0x98>)
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 <lv_anim_start+0x4a>
dd50: 4b1a ldr r3, [pc, #104] ; (ddbc <lv_anim_start+0x9c>)
dd52: 491b ldr r1, [pc, #108] ; (ddc0 <lv_anim_start+0xa0>)
dd54: 9300 str r3, [sp, #0]
dd56: 226a movs r2, #106 ; 0x6a
dd58: 2003 movs r0, #3
dd5a: 4d1a ldr r5, [pc, #104] ; (ddc4 <lv_anim_start+0xa4>)
dd5c: 47a8 blx r5
dd5e: 481a ldr r0, [pc, #104] ; (ddc8 <lv_anim_start+0xa8>)
dd60: 491a ldr r1, [pc, #104] ; (ddcc <lv_anim_start+0xac>)
dd62: 4622 mov r2, r4
dd64: 4633 mov r3, r6
dd66: 4788 blx r1
dd68: e7fe b.n dd68 <lv_anim_start+0x48>
if(new_anim == NULL) return;
dd6a: b1b4 cbz r4, dd9a <lv_anim_start+0x7a>
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 <lv_anim_start+0xb0>)
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 <lv_anim_start+0x70>
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 <lv_anim_start+0x70>
dd86: 6820 ldr r0, [r4, #0]
dd88: b110 cbz r0, dd90 <lv_anim_start+0x70>
dd8a: f9b4 1018 ldrsh.w r1, [r4, #24]
dd8e: 4798 blx r3
anim_mark_list_change();
dd90: 4b10 ldr r3, [pc, #64] ; (ddd4 <lv_anim_start+0xb4>)
}
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 <lv_anim_get>:
{
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 <lv_anim_get+0x28>)
dddc: 4e09 ldr r6, [pc, #36] ; (de04 <lv_anim_get+0x2c>)
ddde: 4f0a ldr r7, [pc, #40] ; (de08 <lv_anim_get+0x30>)
{
dde0: 4604 mov r4, r0
_LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) {
dde2: 4808 ldr r0, [pc, #32] ; (de04 <lv_anim_get+0x2c>)
{
dde4: 460d mov r5, r1
_LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) {
dde6: 4798 blx r3
dde8: b900 cbnz r0, ddec <lv_anim_get+0x14>
}
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 <lv_anim_get+0x20>
ddf2: 6843 ldr r3, [r0, #4]
ddf4: 42ab cmp r3, r5
ddf6: d0f8 beq.n ddea <lv_anim_get+0x12>
_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 <lv_anim_get+0x10>
de00: 0000e6a9 .word 0x0000e6a9
de04: 2000863c .word 0x2000863c
de08: 0000e6b5 .word 0x0000e6b5
0000de0c <lv_anim_speed_to_time>:
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 <lv_point_within_circle.isra.0>:
/**********************
* 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 <lv_area_set_height>:
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 <lv_area_get_size>:
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_color_fill>:
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 <lv_color_fill+0x28>
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 <lv_color_fill+0x3c>
*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 <lv_color_fill+0x14>
*buf = color;
e344: f821 4b02 strh.w r4, [r1], #2
px_num --;
e348: e7ef b.n e32a <lv_color_fill+0x22>
0000e34a <lv_color_lighten>:
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 <lv_color_darken>:
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 <lv_fs_get_real_path>:
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 <lv_fs_get_real_path+0x16>
if(*path == ':' || *path == '\\' || *path == '/') {
e3ca: 2a3a cmp r2, #58 ; 0x3a
e3cc: d0f9 beq.n e3c2 <lv_fs_get_real_path+0x2>
e3ce: 2a5c cmp r2, #92 ; 0x5c
e3d0: d0f7 beq.n e3c2 <lv_fs_get_real_path+0x2>
e3d2: 2a2f cmp r2, #47 ; 0x2f
e3d4: d0f5 beq.n e3c2 <lv_fs_get_real_path+0x2>
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 <lv_fs_close>:
{
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 <lv_fs_close+0x22>
if(file_p->drv->close_cb == NULL) {
e3f0: 6903 ldr r3, [r0, #16]
e3f2: b163 cbz r3, e40e <lv_fs_close+0x26>
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_close+0x2c>)
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 <lv_fs_close+0x1e>
return LV_FS_RES_NOT_IMP;
e40e: 2509 movs r5, #9
e410: e7f9 b.n e406 <lv_fs_close+0x1e>
e412: bf00 nop
e414: 0000eae5 .word 0x0000eae5
0000e418 <lv_fs_read>:
{
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 <lv_fs_read+0xc>
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 <lv_fs_read+0x2e>
if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP;
e428: 6986 ldr r6, [r0, #24]
e42a: b176 cbz r6, e44a <lv_fs_read+0x32>
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 <lv_fs_read+0x2a>
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 <lv_fs_read+0x2a>
if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP;
e44a: 2009 movs r0, #9
e44c: e7f9 b.n e442 <lv_fs_read+0x2a>
0000e44e <lv_fs_seek>:
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 <lv_fs_seek+0x18>
if(file_p->drv->seek_cb == NULL) {
e456: 6a1c ldr r4, [r3, #32]
e458: b14c cbz r4, e46e <lv_fs_seek+0x20>
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 <lv_fs_seek+0x1a>
...
0000e474 <lv_fs_get_drv>:
{
e474: b570 push {r4, r5, r6, lr}
_LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) {
e476: 4b07 ldr r3, [pc, #28] ; (e494 <lv_fs_get_drv+0x20>)
e478: 4d07 ldr r5, [pc, #28] ; (e498 <lv_fs_get_drv+0x24>)
e47a: 4e08 ldr r6, [pc, #32] ; (e49c <lv_fs_get_drv+0x28>)
{
e47c: 4604 mov r4, r0
_LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) {
e47e: 4806 ldr r0, [pc, #24] ; (e498 <lv_fs_get_drv+0x24>)
e480: 4798 blx r3
e482: b900 cbnz r0, e486 <lv_fs_get_drv+0x12>
}
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_fs_get_drv+0x10>
_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 <lv_fs_get_drv+0xe>
e494: 0000e6a9 .word 0x0000e6a9
e498: 20008624 .word 0x20008624
e49c: 0000e6b5 .word 0x0000e6b5
0000e4a0 <lv_fs_open>:
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 <lv_fs_open+0x9c>
file_p->drv = lv_fs_get_drv(letter);
e4b4: 7808 ldrb r0, [r1, #0]
e4b6: 4b23 ldr r3, [pc, #140] ; (e544 <lv_fs_open+0xa4>)
e4b8: 4798 blx r3
e4ba: 6060 str r0, [r4, #4]
if(file_p->drv == NULL) {
e4bc: b928 cbnz r0, e4ca <lv_fs_open+0x2a>
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 <lv_fs_open+0x3a>
if(file_p->drv->ready_cb(file_p->drv) == false) {
e4ce: 4798 blx r3
e4d0: b918 cbnz r0, e4da <lv_fs_open+0x3a>
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 <lv_fs_open+0x22>
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 <lv_fs_open+0xa8>)
e4e0: 4798 blx r3
LV_ASSERT_MEM(file_p->file_d);
e4e2: 4b1a ldr r3, [pc, #104] ; (e54c <lv_fs_open+0xac>)
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 <lv_fs_open+0x66>
e4ec: 4b18 ldr r3, [pc, #96] ; (e550 <lv_fs_open+0xb0>)
e4ee: 4919 ldr r1, [pc, #100] ; (e554 <lv_fs_open+0xb4>)
e4f0: 9300 str r3, [sp, #0]
e4f2: 226f movs r2, #111 ; 0x6f
e4f4: 2003 movs r0, #3
e4f6: 4e18 ldr r6, [pc, #96] ; (e558 <lv_fs_open+0xb8>)
e4f8: 47b0 blx r6
e4fa: 6822 ldr r2, [r4, #0]
e4fc: 4817 ldr r0, [pc, #92] ; (e55c <lv_fs_open+0xbc>)
e4fe: 4918 ldr r1, [pc, #96] ; (e560 <lv_fs_open+0xc0>)
e500: 462b mov r3, r5
e502: 4788 blx r1
e504: e7fe b.n e504 <lv_fs_open+0x64>
if(file_p->file_d == NULL) {
e506: 6821 ldr r1, [r4, #0]
e508: b911 cbnz r1, e510 <lv_fs_open+0x70>
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 <lv_fs_open+0x22>
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 <lv_fs_open+0xa0>
const char * real_path = lv_fs_get_real_path(path);
e51a: 4b12 ldr r3, [pc, #72] ; (e564 <lv_fs_open+0xc4>)
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_fs_open+0x22>
lv_mem_free(file_p->file_d);
e52e: 4b0e ldr r3, [pc, #56] ; (e568 <lv_fs_open+0xc8>)
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 <lv_fs_open+0x22>
if(path == NULL) return LV_FS_RES_INV_PARAM;
e53c: 250b movs r5, #11
e53e: e7c0 b.n e4c2 <lv_fs_open+0x22>
return LV_FS_RES_NOT_IMP;
e540: 2509 movs r5, #9
e542: e7be b.n e4c2 <lv_fs_open+0x22>
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 <lv_fs_get_ext>:
{
e56c: b510 push {r4, lr}
for(i = strlen(fn); i > 0; i--) {
e56e: 4b09 ldr r3, [pc, #36] ; (e594 <lv_fs_get_ext+0x28>)
{
e570: 4604 mov r4, r0
for(i = strlen(fn); i > 0; i--) {
e572: 4798 blx r3
e574: b908 cbnz r0, e57a <lv_fs_get_ext+0xe>
return ""; /*No extension if a '\' or '/' found*/
e576: 4808 ldr r0, [pc, #32] ; (e598 <lv_fs_get_ext+0x2c>)
e578: e004 b.n e584 <lv_fs_get_ext+0x18>
if(fn[i] == '.') {
e57a: 5c23 ldrb r3, [r4, r0]
e57c: 2b2e cmp r3, #46 ; 0x2e
e57e: d102 bne.n e586 <lv_fs_get_ext+0x1a>
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 <lv_fs_get_ext+0xa>
e58a: 2b5c cmp r3, #92 ; 0x5c
e58c: d0f3 beq.n e576 <lv_fs_get_ext+0xa>
for(i = strlen(fn); i > 0; i--) {
e58e: 3801 subs r0, #1
e590: e7f0 b.n e574 <lv_fs_get_ext+0x8>
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 <node_set_prev>:
* @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 <node_set_prev+0x12>
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 <node_set_prev+0x18>
_lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size);
e5bc: 4b04 ldr r3, [pc, #16] ; (e5d0 <node_set_prev+0x20>)
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 <node_set_prev+0x24>)
e5ca: 2104 movs r1, #4
e5cc: 4798 blx r3
e5ce: e7f8 b.n e5c2 <node_set_prev+0x12>
e5d0: 0000e59d .word 0x0000e59d
e5d4: 0000f019 .word 0x0000f019
0000e5d8 <node_set_next>:
* @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 <node_set_next+0x14>
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 <node_set_next+0x1a>
_lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size);
e5e6: 4b05 ldr r3, [pc, #20] ; (e5fc <node_set_next+0x24>)
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 <node_set_next+0x28>)
e5f4: 2104 movs r1, #4
e5f6: 4798 blx r3
e5f8: e7f8 b.n e5ec <node_set_next+0x14>
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 <ent_get_next>:
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 <ent_get_next+0x20>)
{
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 <ent_get_next+0x1e>
}
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 <ent_trunc>:
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 <ent_trunc+0x34>
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 <ent_trunc+0x2a>
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 <ent_trunc+0x2a>
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 <lv_mem_alloc>:
{
ea2c: b573 push {r0, r1, r4, r5, r6, lr}
if(size == 0) {
ea2e: 4605 mov r5, r0
ea30: b1e8 cbz r0, ea6e <lv_mem_alloc+0x42>
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 <lv_mem_alloc+0x58>)
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 <lv_mem_alloc+0x46>
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 <lv_mem_alloc+0x16>
ea50: 6803 ldr r3, [r0, #0]
ea52: ebb5 0f53 cmp.w r5, r3, lsr #1
ea56: d8f4 bhi.n ea42 <lv_mem_alloc+0x16>
ent_trunc(e, size);
ea58: 4b0b ldr r3, [pc, #44] ; (ea88 <lv_mem_alloc+0x5c>)
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 <lv_mem_alloc+0x60>)
ea70: e7fa b.n ea68 <lv_mem_alloc+0x3c>
if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory");
ea72: 4b07 ldr r3, [pc, #28] ; (ea90 <lv_mem_alloc+0x64>)
ea74: 9300 str r3, [sp, #0]
ea76: 4907 ldr r1, [pc, #28] ; (ea94 <lv_mem_alloc+0x68>)
ea78: 4b07 ldr r3, [pc, #28] ; (ea98 <lv_mem_alloc+0x6c>)
ea7a: 4d08 ldr r5, [pc, #32] ; (ea9c <lv_mem_alloc+0x70>)
ea7c: 22d1 movs r2, #209 ; 0xd1
ea7e: 2002 movs r0, #2
ea80: 47a8 blx r5
ea82: e7f1 b.n ea68 <lv_mem_alloc+0x3c>
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 <lv_mem_defrag>:
{
eaa0: b538 push {r3, r4, r5, lr}
next_e = (lv_mem_ent_t *)work_mem;
eaa2: 4b0e ldr r3, [pc, #56] ; (eadc <lv_mem_defrag+0x3c>)
e_free = ent_get_next(e_free);
eaa4: 4d0e ldr r5, [pc, #56] ; (eae0 <lv_mem_defrag+0x40>)
next_e = (lv_mem_ent_t *)work_mem;
eaa6: 681c ldr r4, [r3, #0]
while(e_free != NULL) {
eaa8: b904 cbnz r4, eaac <lv_mem_defrag+0xc>
}
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 <lv_mem_defrag+0x36>
{
eab6: 4604 mov r4, r0
eab8: e7f6 b.n eaa8 <lv_mem_defrag+0x8>
if(e_next->header.s.used == 0) {
eaba: 7803 ldrb r3, [r0, #0]
eabc: 07db lsls r3, r3, #31
eabe: d4fa bmi.n eab6 <lv_mem_defrag+0x16>
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 <lv_mem_defrag+0x1a>
eada: e7e6 b.n eaaa <lv_mem_defrag+0xa>
eadc: 20008788 .word 0x20008788
eae0: 0000e9b9 .word 0x0000e9b9
0000eae4 <lv_mem_free>:
if(data == &zero_mem) return;
eae4: 4a16 ldr r2, [pc, #88] ; (eb40 <lv_mem_free+0x5c>)
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 <lv_mem_free+0x2e>
if(data == NULL) return;
eaf0: b178 cbz r0, eb12 <lv_mem_free+0x2e>
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 <lv_mem_free+0x50>
e_next = ent_get_next(e);
eb0a: 4d0e ldr r5, [pc, #56] ; (eb44 <lv_mem_free+0x60>)
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 <lv_mem_free+0x30>
}
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 <lv_mem_free+0x2e>
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 <lv_mem_free+0x2a>
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 <lv_mem_free+0x64>)
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 <lv_mem_realloc>:
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 <lv_mem_realloc+0x20>
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 <lv_mem_realloc+0x7c>)
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 <lv_mem_realloc+0x36>
if(new_size < old_size) {
ee40: d205 bcs.n ee4e <lv_mem_realloc+0x3a>
ent_trunc(e, new_size);
ee42: 4b14 ldr r3, [pc, #80] ; (ee94 <lv_mem_realloc+0x80>)
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 <lv_mem_realloc+0x56>
new_p = lv_mem_alloc(new_size);
ee4e: 4b12 ldr r3, [pc, #72] ; (ee98 <lv_mem_realloc+0x84>)
ee50: 4628 mov r0, r5
ee52: 4798 blx r3
if(new_p == NULL) {
ee54: 4606 mov r6, r0
ee56: b958 cbnz r0, ee70 <lv_mem_realloc+0x5c>
LV_LOG_WARN("Couldn't allocate memory");
ee58: 4b10 ldr r3, [pc, #64] ; (ee9c <lv_mem_realloc+0x88>)
ee5a: 9300 str r3, [sp, #0]
ee5c: 4910 ldr r1, [pc, #64] ; (eea0 <lv_mem_realloc+0x8c>)
ee5e: 4b11 ldr r3, [pc, #68] ; (eea4 <lv_mem_realloc+0x90>)
ee60: 4c11 ldr r4, [pc, #68] ; (eea8 <lv_mem_realloc+0x94>)
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 <lv_mem_realloc+0x56>
if(old_size != 0) {
ee74: 2f00 cmp r7, #0
ee76: d0f8 beq.n ee6a <lv_mem_realloc+0x56>
_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 <lv_mem_realloc+0x98>)
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 <lv_mem_realloc+0x9c>)
ee88: 4620 mov r0, r4
ee8a: 4798 blx r3
ee8c: e7ed b.n ee6a <lv_mem_realloc+0x56>
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 <lv_vsnprintf>:
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 <lv_vsnprintf+0xc>)
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 <lv_task_create_basic>:
{
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 <lv_task_create_basic+0xdc>)
f858: 4836 ldr r0, [pc, #216] ; (f934 <lv_task_create_basic+0xe0>)
f85a: 4798 blx r3
if(NULL == tmp) {
f85c: 4605 mov r5, r0
f85e: b1e0 cbz r0, f89a <lv_task_create_basic+0x46>
tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp);
f860: 4e34 ldr r6, [pc, #208] ; (f934 <lv_task_create_basic+0xe0>)
f862: 4c35 ldr r4, [pc, #212] ; (f938 <lv_task_create_basic+0xe4>)
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 <lv_task_create_basic+0x7a>
new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp);
f870: 4b32 ldr r3, [pc, #200] ; (f93c <lv_task_create_basic+0xe8>)
f872: 4830 ldr r0, [pc, #192] ; (f934 <lv_task_create_basic+0xe0>)
f874: 4798 blx r3
LV_ASSERT_MEM(new_task);
f876: 4b32 ldr r3, [pc, #200] ; (f940 <lv_task_create_basic+0xec>)
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 <lv_task_create_basic+0x70>
f880: 4b30 ldr r3, [pc, #192] ; (f944 <lv_task_create_basic+0xf0>)
f882: 4931 ldr r1, [pc, #196] ; (f948 <lv_task_create_basic+0xf4>)
f884: 9300 str r3, [sp, #0]
f886: 22db movs r2, #219 ; 0xdb
f888: 2003 movs r0, #3
f88a: 4e30 ldr r6, [pc, #192] ; (f94c <lv_task_create_basic+0xf8>)
f88c: 47b0 blx r6
f88e: 4830 ldr r0, [pc, #192] ; (f950 <lv_task_create_basic+0xfc>)
f890: 4930 ldr r1, [pc, #192] ; (f954 <lv_task_create_basic+0x100>)
f892: 4622 mov r2, r4
f894: 462b mov r3, r5
f896: 4788 blx r1
f898: e7fe b.n f898 <lv_task_create_basic+0x44>
new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll));
f89a: 4b2f ldr r3, [pc, #188] ; (f958 <lv_task_create_basic+0x104>)
f89c: 4825 ldr r0, [pc, #148] ; (f934 <lv_task_create_basic+0xe0>)
f89e: 4798 blx r3
LV_ASSERT_MEM(new_task);
f8a0: 4b27 ldr r3, [pc, #156] ; (f940 <lv_task_create_basic+0xec>)
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 <lv_task_create_basic+0x70>
f8aa: 4b26 ldr r3, [pc, #152] ; (f944 <lv_task_create_basic+0xf0>)
f8ac: 4926 ldr r1, [pc, #152] ; (f948 <lv_task_create_basic+0xf4>)
f8ae: 9300 str r3, [sp, #0]
f8b0: 22d3 movs r2, #211 ; 0xd3
f8b2: 2003 movs r0, #3
f8b4: 4e25 ldr r6, [pc, #148] ; (f94c <lv_task_create_basic+0xf8>)
f8b6: 47b0 blx r6
f8b8: 4825 ldr r0, [pc, #148] ; (f950 <lv_task_create_basic+0xfc>)
f8ba: 4926 ldr r1, [pc, #152] ; (f954 <lv_task_create_basic+0x100>)
f8bc: 4622 mov r2, r4
f8be: 462b mov r3, r5
f8c0: 4788 blx r1
f8c2: e7fe b.n f8c2 <lv_task_create_basic+0x6e>
if(new_task == NULL) return NULL;
f8c4: b9ec cbnz r4, f902 <lv_task_create_basic+0xae>
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 <lv_task_create_basic+0x10>
new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll));
f8d8: 4b20 ldr r3, [pc, #128] ; (f95c <lv_task_create_basic+0x108>)
f8da: 4816 ldr r0, [pc, #88] ; (f934 <lv_task_create_basic+0xe0>)
f8dc: 4798 blx r3
LV_ASSERT_MEM(new_task);
f8de: 4b18 ldr r3, [pc, #96] ; (f940 <lv_task_create_basic+0xec>)
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 <lv_task_create_basic+0x70>
f8e8: 4b16 ldr r3, [pc, #88] ; (f944 <lv_task_create_basic+0xf0>)
f8ea: 4917 ldr r1, [pc, #92] ; (f948 <lv_task_create_basic+0xf4>)
f8ec: 9300 str r3, [sp, #0]
f8ee: 22e5 movs r2, #229 ; 0xe5
f8f0: 2003 movs r0, #3
f8f2: 4e16 ldr r6, [pc, #88] ; (f94c <lv_task_create_basic+0xf8>)
f8f4: 47b0 blx r6
f8f6: 4816 ldr r0, [pc, #88] ; (f950 <lv_task_create_basic+0xfc>)
f8f8: 4916 ldr r1, [pc, #88] ; (f954 <lv_task_create_basic+0x100>)
f8fa: 4622 mov r2, r4
f8fc: 462b mov r3, r5
f8fe: 4788 blx r1
f900: e7fe b.n f900 <lv_task_create_basic+0xac>
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 <lv_task_create_basic+0x10c>)
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 <lv_task_create_basic+0x110>)
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 <lv_task_create_basic+0x74>
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 <lv_task_del>:
{
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 <lv_task_del+0x24>)
f970: 4807 ldr r0, [pc, #28] ; (f990 <lv_task_del+0x28>)
task_list_changed = true;
f972: 4d08 ldr r5, [pc, #32] ; (f994 <lv_task_del+0x2c>)
_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 <lv_task_del+0x30>)
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 <lv_task_del+0x34>)
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 <lv_task_exec>:
* 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 <lv_task_exec+0x4c>)
{
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 <lv_task_exec+0x48>
task->last_run = lv_tick_get();
f9b0: 4b0f ldr r3, [pc, #60] ; (f9f0 <lv_task_exec+0x50>)
task_deleted = false;
f9b2: 4d10 ldr r5, [pc, #64] ; (f9f4 <lv_task_exec+0x54>)
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 <lv_task_exec+0x34>
if(task->repeat_count > 0) {
f9c2: 6923 ldr r3, [r4, #16]
f9c4: 2b00 cmp r3, #0
f9c6: dc0c bgt.n f9e2 <lv_task_exec+0x42>
if(task->repeat_count == 0) {
f9c8: 6923 ldr r3, [r4, #16]
f9ca: b943 cbnz r3, f9de <lv_task_exec+0x3e>
lv_task_del(task);
f9cc: 4b0a ldr r3, [pc, #40] ; (f9f8 <lv_task_exec+0x58>)
f9ce: 4620 mov r0, r4
f9d0: 4798 blx r3
f9d2: e004 b.n f9de <lv_task_exec+0x3e>
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_exec+0x22>
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 <lv_task_exec+0x28>
bool exec = false;
f9e8: 2000 movs r0, #0
f9ea: e7f9 b.n f9e0 <lv_task_exec+0x40>
f9ec: 0000da5d .word 0x0000da5d
f9f0: 0000da49 .word 0x0000da49
f9f4: 2000c7b4 .word 0x2000c7b4
f9f8: 0000f969 .word 0x0000f969
0000f9fc <lv_task_handler>:
{
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 <lv_task_handler+0x164>
fa04: f89b 4004 ldrb.w r4, [fp, #4]
fa08: 2001 movs r0, #1
fa0a: b934 cbnz r4, fa1a <lv_task_handler+0x1e>
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 <lv_task_handler+0x22>
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_task_handler+0x168>
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 <lv_task_handler+0x160>
fa26: f8df 9140 ldr.w r9, [pc, #320] ; fb68 <lv_task_handler+0x16c>
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 <lv_task_handler+0x150>)
if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) {
fa40: 4f43 ldr r7, [pc, #268] ; (fb50 <lv_task_handler+0x154>)
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 <lv_task_handler+0x70>
next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act));
fa48: 4b42 ldr r3, [pc, #264] ; (fb54 <lv_task_handler+0x158>)
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 <lv_task_handler+0x70>
if(LV_GC_ROOT(_lv_task_act) == task_interrupter) {
fa5a: 42a0 cmp r0, r4
fa5c: d050 beq.n fb00 <lv_task_handler+0x104>
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_handler+0xda>
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 <lv_task_handler+0x136>
busy_time += lv_tick_elaps(handler_start);
fa6c: 4c3a ldr r4, [pc, #232] ; (fb58 <lv_task_handler+0x15c>)
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 <lv_task_handler+0xbc>
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 <lv_task_handler+0x160>)
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 <lv_task_handler+0x160>)
fac6: 4f23 ldr r7, [pc, #140] ; (fb54 <lv_task_handler+0x158>)
next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll));
fac8: 4605 mov r5, r0
while(next) {
faca: b9e5 cbnz r5, fb06 <lv_task_handler+0x10a>
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 <lv_task_handler+0x1e>
else if(task_interrupter) {
fad6: b134 cbz r4, fae6 <lv_task_handler+0xea>
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 <lv_task_handler+0x68>
if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) {
fae6: 47b8 blx r7
fae8: 2800 cmp r0, #0
faea: d0bb beq.n fa64 <lv_task_handler+0x68>
if(!task_created && !task_deleted) {
faec: f89b 2002 ldrb.w r2, [fp, #2]
faf0: 2a00 cmp r2, #0
faf2: d1bb bne.n fa6c <lv_task_handler+0x70>
faf4: f89b 2003 ldrb.w r2, [fp, #3]
faf8: 2a00 cmp r2, #0
fafa: d1b7 bne.n fa6c <lv_task_handler+0x70>
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 <lv_task_handler+0x34>
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 <lv_task_handler+0x48>
if(next->prio != LV_TASK_PRIO_OFF) {
fb06: 7d2a ldrb r2, [r5, #20]
fb08: 0753 lsls r3, r2, #29
fb0a: d00d beq.n fb28 <lv_task_handler+0x12c>
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 <lv_task_handler+0xce>
if(task_created || task_deleted) {
fb32: f89b 2003 ldrb.w r2, [fp, #3]
fb36: 2a00 cmp r2, #0
fb38: d198 bne.n fa6c <lv_task_handler+0x70>
if(task_list_changed) {
fb3a: f89b 1000 ldrb.w r1, [fp]
fb3e: 2900 cmp r1, #0
fb40: d0df beq.n fb02 <lv_task_handler+0x106>
task_list_changed = false;
fb42: f88b 2000 strb.w r2, [fp]
task_interrupter = NULL;
fb46: 4614 mov r4, r2
fb48: e772 b.n fa30 <lv_task_handler+0x34>
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 <lv_task_set_prio>:
{
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_task_set_prio+0x42>
_LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) {
fb7c: 480f ldr r0, [pc, #60] ; (fbbc <lv_task_set_prio+0x50>)
fb7e: 4b10 ldr r3, [pc, #64] ; (fbc0 <lv_task_set_prio+0x54>)
fb80: 4e0e ldr r6, [pc, #56] ; (fbbc <lv_task_set_prio+0x50>)
fb82: 4f10 ldr r7, [pc, #64] ; (fbc4 <lv_task_set_prio+0x58>)
fb84: 4798 blx r3
fb86: 4602 mov r2, r0
fb88: b132 cbz r2, fb98 <lv_task_set_prio+0x2c>
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 <lv_task_set_prio+0x44>
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_task_set_prio+0x34>
_lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL);
fb98: 4808 ldr r0, [pc, #32] ; (fbbc <lv_task_set_prio+0x50>)
fb9a: 4b0b ldr r3, [pc, #44] ; (fbc8 <lv_task_set_prio+0x5c>)
fb9c: 4621 mov r1, r4
fb9e: 4798 blx r3
task_list_changed = true;
fba0: 4b0a ldr r3, [pc, #40] ; (fbcc <lv_task_set_prio+0x60>)
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 <lv_task_set_prio+0x1c>
fbba: bf00 nop
fbbc: 20008600 .word 0x20008600
fbc0: 0000e6a9 .word 0x0000e6a9
fbc4: 0000e6b5 .word 0x0000e6b5
fbc8: 0000e85d .word 0x0000e85d
fbcc: 2000c7b4 .word 0x2000c7b4
0000fbd0 <lv_task_create>:
{
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 <lv_task_create+0x50>)
{
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_create+0x54>)
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 <lv_task_create+0x38>
fbec: 4b0e ldr r3, [pc, #56] ; (fc28 <lv_task_create+0x58>)
fbee: 490f ldr r1, [pc, #60] ; (fc2c <lv_task_create+0x5c>)
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 <lv_task_create+0x60>)
fbfa: 47b0 blx r6
fbfc: 480d ldr r0, [pc, #52] ; (fc34 <lv_task_create+0x64>)
fbfe: 490e ldr r1, [pc, #56] ; (fc38 <lv_task_create+0x68>)
fc00: 4622 mov r2, r4
fc02: 462b mov r3, r5
fc04: 4788 blx r1
fc06: e7fe b.n fc06 <lv_task_create+0x36>
if(new_task == NULL) return NULL;
fc08: b134 cbz r4, fc18 <lv_task_create+0x48>
lv_task_set_prio(new_task, prio);
fc0a: 4b0c ldr r3, [pc, #48] ; (fc3c <lv_task_create+0x6c>)
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 <lv_task_ready>:
{
fc40: b510 push {r4, lr}
task->last_run = lv_tick_get() - task->period - 1;
fc42: 4b04 ldr r3, [pc, #16] ; (fc54 <lv_task_ready+0x14>)
{
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 <lv_txt_utf8_size>:
* @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 <lv_txt_utf8_size+0x2a>
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 <lv_txt_utf8_size+0x2e>
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 <lv_txt_utf8_size+0x32>
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 <lv_txt_utf8_next>:
* 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 <lv_txt_utf8_next+0xa>
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 <lv_txt_utf8_next+0x20>
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 <lv_txt_utf8_next+0x4a>
(*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 <lv_txt_utf8_next+0x38>
uint32_t result = 0;
fcc2: 2000 movs r0, #0
fcc4: e7f1 b.n fcaa <lv_txt_utf8_next+0x1c>
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 <lv_txt_utf8_next+0x1c>
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 <lv_txt_utf8_next+0x82>
(*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 <lv_txt_utf8_next+0x34>
(*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 <lv_txt_utf8_next+0x34>
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 <lv_txt_utf8_next+0x46>
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 <lv_txt_utf8_next+0x34>
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 <lv_txt_utf8_next+0x34>
(*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 <lv_txt_utf8_next+0x34>
(*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 <lv_txt_utf8_next+0x34>
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 <lv_txt_utf8_next+0x46>
0000fd60 <lv_txt_utf8_prev>:
{
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 <lv_txt_utf8_prev+0x3c>)
(*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 <lv_txt_utf8_prev+0x30>
if(*i != 0)
fd7c: b12b cbz r3, fd8a <lv_txt_utf8_prev+0x2a>
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 <lv_txt_utf8_prev+0x10>
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 <lv_txt_utf8_prev+0x2c>
fd9c: 20000054 .word 0x20000054
0000fda0 <lv_txt_utf8_get_byte_id>:
* @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 <lv_txt_utf8_get_byte_id+0x30>
{
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 <lv_txt_utf8_get_byte_id+0x1a>
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 <lv_txt_utf8_get_byte_id+0x10>
fdd0: 20000054 .word 0x20000054
0000fdd4 <lv_txt_utf8_get_char_id>:
* @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 <lv_txt_utf8_get_char_id+0x24>)
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 <lv_txt_utf8_get_char_id+0x18>
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 <lv_txt_utf8_get_char_id+0xc>
fdf8: 20000054 .word 0x20000054
0000fdfc <lv_txt_utf8_get_length>:
* 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 <lv_txt_utf8_get_length+0x24>)
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 <lv_txt_utf8_get_length+0x16>
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 <lv_txt_utf8_get_length+0xa>
fe1e: bf00 nop
fe20: 20000054 .word 0x20000054
0000fe24 <lv_txt_unicode_to_utf8>:
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 <lv_txt_unicode_to_utf8+0x2a>
if(letter_uni < 0x0800) {
fe2a: f5b0 6f00 cmp.w r0, #2048 ; 0x800
fe2e: d210 bcs.n fe52 <lv_txt_unicode_to_utf8+0x2e>
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 <lv_txt_unicode_to_utf8+0x5e>
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 <lv_txt_unicode_to_utf8+0x28>
else if(letter_uni < 0x110000) {
fe82: f5b0 1f88 cmp.w r0, #1114112 ; 0x110000
fe86: d2e1 bcs.n fe4c <lv_txt_unicode_to_utf8+0x28>
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 <lv_txt_unicode_to_utf8+0x28>
0000feb8 <lv_txt_utf8_conv_wc>:
if((c & 0x80) != 0) {
feb8: 0603 lsls r3, r0, #24
feba: d512 bpl.n fee2 <lv_txt_utf8_conv_wc+0x2a>
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 <lv_txt_utf8_conv_wc+0x22>
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 <lv_txt_utf8_conv_wc+0x1c>
}
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 <lv_theme_set_act>:
* 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 <lv_theme_set_act+0x8>)
102ce: 6018 str r0, [r3, #0]
}
102d0: 4770 bx lr
102d2: bf00 nop
102d4: 2000c7d0 .word 0x2000c7d0
000102d8 <lv_theme_get_font_normal>:
* 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 <lv_theme_get_font_normal+0x8>)
102da: 681b ldr r3, [r3, #0]
}
102dc: 68d8 ldr r0, [r3, #12]
102de: 4770 bx lr
102e0: 2000c7d0 .word 0x2000c7d0
000102e4 <lv_theme_apply>:
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 <lv_theme_apply+0x8>)
102e6: 681b ldr r3, [r3, #0]
102e8: 681b ldr r3, [r3, #0]
102ea: 4718 bx r3
102ec: 2000c7d0 .word 0x2000c7d0
000102f0 <lv_color_hex3>:
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 <theme_apply>:
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 <theme_apply+0x76>
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 <theme_apply+0x2c8>)
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 <theme_apply+0x2cc>)
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 <theme_apply+0x2d0>)
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 <theme_apply+0x2d4>)
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 <theme_apply+0x2d8>)
}
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 <theme_apply+0x2c8>)
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 <theme_apply+0x2cc>)
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 <theme_apply+0x2d0>)
103ba: 6819 ldr r1, [r3, #0]
103bc: 3104 adds r1, #4
103be: e7ec b.n 1039a <theme_apply+0x72>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
103c0: 4b8b ldr r3, [pc, #556] ; (105f0 <theme_apply+0x2c8>)
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 <theme_apply+0x2cc>)
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 <theme_apply+0x2d0>)
103d0: 6819 ldr r1, [r3, #0]
103d2: 3110 adds r1, #16
103d4: e7e1 b.n 1039a <theme_apply+0x72>
_lv_style_list_add_style(list, &styles->bg);
103d6: 4e88 ldr r6, [pc, #544] ; (105f8 <theme_apply+0x2d0>)
lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG);
103d8: f8df 9214 ldr.w r9, [pc, #532] ; 105f0 <theme_apply+0x2c8>
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG);
103dc: f8df 8214 ldr.w r8, [pc, #532] ; 105f4 <theme_apply+0x2cc>
_lv_style_list_add_style(list, &styles->bg);
103e0: 4d86 ldr r5, [pc, #536] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG);
1041a: 2100 movs r1, #0
1041c: f8df 91d0 ldr.w r9, [pc, #464] ; 105f0 <theme_apply+0x2c8>
list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG);
10420: f8df 81d0 ldr.w r8, [pc, #464] ; 105f4 <theme_apply+0x2cc>
_lv_style_list_add_style(list, &styles->scr);
10424: 4e74 ldr r6, [pc, #464] ; (105f8 <theme_apply+0x2d0>)
10426: 4d75 ldr r5, [pc, #468] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xd0>
lv_obj_clean_style_list(obj, LV_BAR_PART_BG);
1043c: f8df 81b0 ldr.w r8, [pc, #432] ; 105f0 <theme_apply+0x2c8>
_lv_style_list_add_style(list, &styles->bar_bg);
10440: 4e6d ldr r6, [pc, #436] ; (105f8 <theme_apply+0x2d0>)
list = lv_obj_get_style_list(obj, LV_BAR_PART_BG);
10442: 4f6c ldr r7, [pc, #432] ; (105f4 <theme_apply+0x2cc>)
_lv_style_list_add_style(list, &styles->bar_bg);
10444: 4d6d ldr r5, [pc, #436] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG);
10468: f8df 8184 ldr.w r8, [pc, #388] ; 105f0 <theme_apply+0x2c8>
_lv_style_list_add_style(list, &styles->bar_bg);
1046c: 4e62 ldr r6, [pc, #392] ; (105f8 <theme_apply+0x2d0>)
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG);
1046e: 4f61 ldr r7, [pc, #388] ; (105f4 <theme_apply+0x2cc>)
_lv_style_list_add_style(list, &styles->bar_bg);
10470: 4d62 ldr r5, [pc, #392] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN);
104a6: 4b52 ldr r3, [pc, #328] ; (105f0 <theme_apply+0x2c8>)
104a8: 2100 movs r1, #0
104aa: 4798 blx r3
break;
104ac: e777 b.n 1039e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_ARC_PART_BG);
104ae: f8df 9140 ldr.w r9, [pc, #320] ; 105f0 <theme_apply+0x2c8>
_lv_style_list_add_style(list, &styles->bg);
104b2: 4e51 ldr r6, [pc, #324] ; (105f8 <theme_apply+0x2d0>)
list = lv_obj_get_style_list(obj, LV_ARC_PART_BG);
104b4: f8df 813c ldr.w r8, [pc, #316] ; 105f4 <theme_apply+0x2cc>
_lv_style_list_add_style(list, &styles->bg);
104b8: 4d50 ldr r5, [pc, #320] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG);
104e6: f8df 8108 ldr.w r8, [pc, #264] ; 105f0 <theme_apply+0x2c8>
_lv_style_list_add_style(list, &styles->arc_bg);
104ea: 4e43 ldr r6, [pc, #268] ; (105f8 <theme_apply+0x2d0>)
list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG);
104ec: 4f41 ldr r7, [pc, #260] ; (105f4 <theme_apply+0x2cc>)
_lv_style_list_add_style(list, &styles->arc_bg);
104ee: 4d43 ldr r5, [pc, #268] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0x1b8>
_lv_style_list_add_style(list, &styles->bar_bg);
1050e: 4e3a ldr r6, [pc, #232] ; (105f8 <theme_apply+0x2d0>)
lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG);
10510: f8df 80dc ldr.w r8, [pc, #220] ; 105f0 <theme_apply+0x2c8>
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG);
10514: 4f37 ldr r7, [pc, #220] ; (105f4 <theme_apply+0x2cc>)
_lv_style_list_add_style(list, &styles->bar_bg);
10516: 4d39 ldr r5, [pc, #228] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xee>
_lv_style_list_add_style(list, &styles->cb_bg);
10556: 4f28 ldr r7, [pc, #160] ; (105f8 <theme_apply+0x2d0>)
lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG);
10558: f8df 8094 ldr.w r8, [pc, #148] ; 105f0 <theme_apply+0x2c8>
list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG);
1055c: 4e25 ldr r6, [pc, #148] ; (105f4 <theme_apply+0x2cc>)
_lv_style_list_add_style(list, &styles->cb_bg);
1055e: 4d27 ldr r5, [pc, #156] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG);
1058c: 4b18 ldr r3, [pc, #96] ; (105f0 <theme_apply+0x2c8>)
_lv_style_list_add_style(list, &styles->bg);
1058e: 4f1a ldr r7, [pc, #104] ; (105f8 <theme_apply+0x2d0>)
10590: 4e1a ldr r6, [pc, #104] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0x2cc>)
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 <theme_apply+0x37e>
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG);
105ae: f8df 8040 ldr.w r8, [pc, #64] ; 105f0 <theme_apply+0x2c8>
_lv_style_list_add_style(list, &styles->pad_small);
105b2: 4e11 ldr r6, [pc, #68] ; (105f8 <theme_apply+0x2d0>)
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG);
105b4: 4f0f ldr r7, [pc, #60] ; (105f4 <theme_apply+0x2cc>)
_lv_style_list_add_style(list, &styles->pad_small);
105b6: 4d11 ldr r5, [pc, #68] ; (105fc <theme_apply+0x2d4>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_LED_PART_MAIN);
105da: 4b05 ldr r3, [pc, #20] ; (105f0 <theme_apply+0x2c8>)
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 <theme_apply+0x2cc>)
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 <theme_apply+0x2d0>)
105ea: 6819 ldr r1, [r3, #0]
105ec: 316c adds r1, #108 ; 0x6c
105ee: e6d4 b.n 1039a <theme_apply+0x72>
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 <theme_apply+0x588>
_lv_style_list_add_style(list, &styles->bg);
10608: 4ea6 ldr r6, [pc, #664] ; (108a4 <theme_apply+0x57c>)
list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG);
1060a: 4fa7 ldr r7, [pc, #668] ; (108a8 <theme_apply+0x580>)
_lv_style_list_add_style(list, &styles->bg);
1060c: 4da7 ldr r5, [pc, #668] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG);
10654: 4d96 ldr r5, [pc, #600] ; (108b0 <theme_apply+0x588>)
_lv_style_list_add_style(list, &styles->scr);
10656: 4f93 ldr r7, [pc, #588] ; (108a4 <theme_apply+0x57c>)
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG);
10658: f8df 824c ldr.w r8, [pc, #588] ; 108a8 <theme_apply+0x580>
_lv_style_list_add_style(list, &styles->scr);
1065c: 4e93 ldr r6, [pc, #588] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_PAGE_PART_BG);
106aa: 4d81 ldr r5, [pc, #516] ; (108b0 <theme_apply+0x588>)
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 <theme_apply+0x580>)
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 <theme_apply+0x57c>)
106c0: 6819 ldr r1, [r3, #0]
106c2: 31b0 adds r1, #176 ; 0xb0
106c4: e669 b.n 1039a <theme_apply+0x72>
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG);
106c6: 2100 movs r1, #0
106c8: f8df 81e4 ldr.w r8, [pc, #484] ; 108b0 <theme_apply+0x588>
_lv_style_list_add_style(list, &styles->scr);
106cc: 4e75 ldr r6, [pc, #468] ; (108a4 <theme_apply+0x57c>)
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG);
106ce: 4f76 ldr r7, [pc, #472] ; (108a8 <theme_apply+0x580>)
_lv_style_list_add_style(list, &styles->scr);
106d0: 4d76 ldr r5, [pc, #472] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0x306>
_lv_style_list_add_style(list, &styles->bg);
106de: 4e71 ldr r6, [pc, #452] ; (108a4 <theme_apply+0x57c>)
lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG);
106e0: f8df 91cc ldr.w r9, [pc, #460] ; 108b0 <theme_apply+0x588>
list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG);
106e4: f8df 81c0 ldr.w r8, [pc, #448] ; 108a8 <theme_apply+0x580>
_lv_style_list_add_style(list, &styles->bg);
106e8: 4d70 ldr r5, [pc, #448] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN);
10716: 4b66 ldr r3, [pc, #408] ; (108b0 <theme_apply+0x588>)
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 <theme_apply+0x580>)
1071e: 2100 movs r1, #0
10720: 4620 mov r0, r4
10722: 4798 blx r3
break;
10724: e63b b.n 1039e <theme_apply+0x76>
lv_obj_clean_style_list(obj, LV_LIST_PART_BG);
10726: 4f62 ldr r7, [pc, #392] ; (108b0 <theme_apply+0x588>)
_lv_style_list_add_style(list, &styles->bg);
10728: 4e5e ldr r6, [pc, #376] ; (108a4 <theme_apply+0x57c>)
list = lv_obj_get_style_list(obj, LV_LIST_PART_BG);
1072a: f8df 917c ldr.w r9, [pc, #380] ; 108a8 <theme_apply+0x580>
_lv_style_list_add_style(list, &styles->bg);
1072e: 4d5f ldr r5, [pc, #380] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
10762: 4b53 ldr r3, [pc, #332] ; (108b0 <theme_apply+0x588>)
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 <theme_apply+0x580>)
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 <theme_apply+0x57c>)
10772: 6819 ldr r1, [r3, #0]
10774: 3178 adds r1, #120 ; 0x78
10776: e610 b.n 1039a <theme_apply+0x72>
_lv_style_list_add_style(list, &styles->bg);
10778: 4e4a ldr r6, [pc, #296] ; (108a4 <theme_apply+0x57c>)
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN);
1077a: f8df 8134 ldr.w r8, [pc, #308] ; 108b0 <theme_apply+0x588>
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN);
1077e: 4f4a ldr r7, [pc, #296] ; (108a8 <theme_apply+0x580>)
_lv_style_list_add_style(list, &styles->bg);
10780: 4d4a ldr r5, [pc, #296] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0xee>
_lv_style_list_add_style(list, &styles->bg);
107e4: 4e2f ldr r6, [pc, #188] ; (108a4 <theme_apply+0x57c>)
lv_obj_clean_style_list(obj, LV_CHART_PART_BG);
107e6: f8df 90c8 ldr.w r9, [pc, #200] ; 108b0 <theme_apply+0x588>
list = lv_obj_get_style_list(obj, LV_CHART_PART_BG);
107ea: f8df 80bc ldr.w r8, [pc, #188] ; 108a8 <theme_apply+0x580>
_lv_style_list_add_style(list, &styles->bg);
107ee: 4d2f ldr r5, [pc, #188] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_TABLE_PART_BG);
10840: f8df 806c ldr.w r8, [pc, #108] ; 108b0 <theme_apply+0x588>
_lv_style_list_add_style(list, &styles->bg);
10844: 4e17 ldr r6, [pc, #92] ; (108a4 <theme_apply+0x57c>)
list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG);
10846: 4f18 ldr r7, [pc, #96] ; (108a8 <theme_apply+0x580>)
_lv_style_list_add_style(list, &styles->bg);
10848: 4d18 ldr r5, [pc, #96] ; (108ac <theme_apply+0x584>)
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 <theme_apply+0xee>
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 <theme_apply+0x790>
_lv_style_list_add_style(list, &styles->scr);
108b8: 4e7c ldr r6, [pc, #496] ; (10aac <theme_apply+0x784>)
list = lv_obj_get_style_list(obj, LV_WIN_PART_BG);
108ba: 4f7d ldr r7, [pc, #500] ; (10ab0 <theme_apply+0x788>)
_lv_style_list_add_style(list, &styles->scr);
108bc: 4d7d ldr r5, [pc, #500] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
10902: 4b6d ldr r3, [pc, #436] ; (10ab8 <theme_apply+0x790>)
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 <theme_apply+0x788>)
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 <theme_apply+0x784>)
10912: 6819 ldr r1, [r3, #0]
10914: 31a4 adds r1, #164 ; 0xa4
10916: e540 b.n 1039a <theme_apply+0x72>
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG);
10918: f8df 819c ldr.w r8, [pc, #412] ; 10ab8 <theme_apply+0x790>
_lv_style_list_add_style(list, &styles->bg);
1091c: 4e63 ldr r6, [pc, #396] ; (10aac <theme_apply+0x784>)
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG);
1091e: 4f64 ldr r7, [pc, #400] ; (10ab0 <theme_apply+0x788>)
_lv_style_list_add_style(list, &styles->bg);
10920: 4d64 ldr r5, [pc, #400] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0x434>
_lv_style_list_add_style(list, &styles->bg);
1096e: 4e4f ldr r6, [pc, #316] ; (10aac <theme_apply+0x784>)
lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG);
10970: f8df 9144 ldr.w r9, [pc, #324] ; 10ab8 <theme_apply+0x790>
list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG);
10974: f8df 8138 ldr.w r8, [pc, #312] ; 10ab0 <theme_apply+0x788>
_lv_style_list_add_style(list, &styles->bg);
10978: 4d4e ldr r5, [pc, #312] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
109a6: 4b44 ldr r3, [pc, #272] ; (10ab8 <theme_apply+0x790>)
_lv_style_list_add_style(list, &styles->bg);
109a8: 4f40 ldr r7, [pc, #256] ; (10aac <theme_apply+0x784>)
109aa: 4e42 ldr r6, [pc, #264] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0x788>)
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 <theme_apply+0x282>
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG);
109c6: f8df 80f0 ldr.w r8, [pc, #240] ; 10ab8 <theme_apply+0x790>
_lv_style_list_add_style(list, &styles->bg);
109ca: 4e38 ldr r6, [pc, #224] ; (10aac <theme_apply+0x784>)
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG);
109cc: 4f38 ldr r7, [pc, #224] ; (10ab0 <theme_apply+0x788>)
_lv_style_list_add_style(list, &styles->bg);
109ce: 4d39 ldr r5, [pc, #228] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN);
10a16: f8df 80a0 ldr.w r8, [pc, #160] ; 10ab8 <theme_apply+0x790>
_lv_style_list_add_style(list, &styles->cpicker_bg);
10a1a: 4e24 ldr r6, [pc, #144] ; (10aac <theme_apply+0x784>)
list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN);
10a1c: 4f24 ldr r7, [pc, #144] ; (10ab0 <theme_apply+0x788>)
_lv_style_list_add_style(list, &styles->cpicker_bg);
10a1e: 4d25 ldr r5, [pc, #148] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0xee>
lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN);
10a42: 4b1d ldr r3, [pc, #116] ; (10ab8 <theme_apply+0x790>)
_lv_style_list_add_style(list, &styles->bg);
10a44: 4f19 ldr r7, [pc, #100] ; (10aac <theme_apply+0x784>)
10a46: 4e1b ldr r6, [pc, #108] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0x788>)
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 <theme_apply+0x282>
_lv_style_list_add_style(list, &styles->bg);
10a62: 4e12 ldr r6, [pc, #72] ; (10aac <theme_apply+0x784>)
lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN);
10a64: f8df 8050 ldr.w r8, [pc, #80] ; 10ab8 <theme_apply+0x790>
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN);
10a68: 4f11 ldr r7, [pc, #68] ; (10ab0 <theme_apply+0x788>)
_lv_style_list_add_style(list, &styles->bg);
10a6a: 4d12 ldr r5, [pc, #72] ; (10ab4 <theme_apply+0x78c>)
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 <theme_apply+0xee>
10aaa: bf00 nop
10aac: 2000c7d4 .word 0x2000c7d4
10ab0: 0000248d .word 0x0000248d
10ab4: 00005619 .word 0x00005619
10ab8: 00002549 .word 0x00002549
00010abc <style_init_reset>:
* STATIC FUNCTIONS
**********************/
static void style_init_reset(lv_style_t * style)
{
if(inited) lv_style_reset(style);
10abc: 4b03 ldr r3, [pc, #12] ; (10acc <style_init_reset+0x10>)
10abe: 791b ldrb r3, [r3, #4]
10ac0: b10b cbz r3, 10ac6 <style_init_reset+0xa>
10ac2: 4b03 ldr r3, [pc, #12] ; (10ad0 <style_init_reset+0x14>)
else lv_style_init(style);
10ac4: 4718 bx r3
10ac6: 4b03 ldr r3, [pc, #12] ; (10ad4 <style_init_reset+0x18>)
10ac8: e7fc b.n 10ac4 <style_init_reset+0x8>
10aca: bf00 nop
10acc: 2000c7d4 .word 0x2000c7d4
10ad0: 00005795 .word 0x00005795
10ad4: 00005531 .word 0x00005531
00010ad8 <switch_init>:
{
10ad8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
style_init_reset(&styles->sw_knob);
10adc: 4d3a ldr r5, [pc, #232] ; (10bc8 <switch_init+0xf0>)
10ade: 4b3b ldr r3, [pc, #236] ; (10bcc <switch_init+0xf4>)
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 <switch_init+0xf8>)
lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4));
10ae4: 4c3b ldr r4, [pc, #236] ; (10bd4 <switch_init+0xfc>)
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 <switch_init+0x100>)
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 <switch_init+0x104>)
10afa: 2129 movs r1, #41 ; 0x29
10afc: 881a ldrh r2, [r3, #0]
10afe: 4b38 ldr r3, [pc, #224] ; (10be0 <switch_init+0x108>)
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 <switch_init+0xd6>
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 <switch_init+0xdc>
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 <switch_init+0xe2>
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 <switch_init+0xe8>
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 <switch_init+0x58>
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 <switch_init+0x7e>
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 <switch_init+0xa4>
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 <switch_init+0xca>
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 <linemeter_init>:
{
10be4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
style_init_reset(&styles->lmeter);
10be8: 4d6b ldr r5, [pc, #428] ; (10d98 <linemeter_init+0x1b4>)
10bea: 4b6c ldr r3, [pc, #432] ; (10d9c <linemeter_init+0x1b8>)
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 <linemeter_init+0x1bc>)
lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
10bf0: 4c6c ldr r4, [pc, #432] ; (10da4 <linemeter_init+0x1c0>)
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 <linemeter_init+0x198>
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 <linemeter_init+0x19c>
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 <linemeter_init+0x1a0>
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 <linemeter_init+0x1a4>
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 <linemeter_init+0x1a8>
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 <linemeter_init+0x1c4>)
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 <linemeter_init+0x1c8>)
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 <linemeter_init+0x1ac>
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 <linemeter_init+0x1b0>
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 <linemeter_init+0x48>
lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
10d80: 2201 movs r2, #1
10d82: e76b b.n 10c5c <linemeter_init+0x78>
lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20));
10d84: 2201 movs r2, #1
10d86: e781 b.n 10c8c <linemeter_init+0xa8>
lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30));
10d88: 2201 movs r2, #1
10d8a: e796 b.n 10cba <linemeter_init+0xd6>
lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25));
10d8c: 2201 movs r2, #1
10d8e: e7ac b.n 10cea <linemeter_init+0x106>
lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10));
10d90: 2201 movs r2, #1
10d92: e7d7 b.n 10d44 <linemeter_init+0x160>
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 <linemeter_init+0x18c>
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 <led_init>:
{
10db0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
style_init_reset(&styles->led);
10db4: 4c32 ldr r4, [pc, #200] ; (10e80 <led_init+0xd0>)
10db6: 4b33 ldr r3, [pc, #204] ; (10e84 <led_init+0xd4>)
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 <led_init+0xd8>)
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
10dbc: 4e33 ldr r6, [pc, #204] ; (10e8c <led_init+0xdc>)
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar)
10dbe: 4d34 ldr r5, [pc, #208] ; (10e90 <led_init+0xe0>)
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 <led_init+0xe4>)
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 <led_init+0xe8>)
_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 <led_init+0xc8>
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 <led_init+0xcc>
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 <led_init+0x86>
lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5));
10e7c: 2201 movs r2, #1
10e7e: e7f5 b.n 10e6c <led_init+0xbc>
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 <lv_color_hex>:
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 <bar_init>:
{
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 <bar_init+0x114>)
10eba: f8df 9134 ldr.w r9, [pc, #308] ; 10ff0 <bar_init+0x13c>
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 <bar_init+0x118>)
_LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar)
10ec2: 4f43 ldr r7, [pc, #268] ; (10fd0 <bar_init+0x11c>)
10ec4: f8df 812c ldr.w r8, [pc, #300] ; 10ff4 <bar_init+0x140>
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 <bar_init+0x120>)
10eee: 483a ldreq r0, [pc, #232] ; (10fd8 <bar_init+0x124>)
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 <bar_init+0x128>)
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 <bar_init+0x108>
10f0a: 4835 ldr r0, [pc, #212] ; (10fe0 <bar_init+0x12c>)
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 <bar_init+0x130>)
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 <bar_init+0x10e>
10faa: 480f ldr r0, [pc, #60] ; (10fe8 <bar_init+0x134>)
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 <bar_init+0x138>)
10fbe: 881a ldrh r2, [r3, #0]
10fc0: e7a6 b.n 10f10 <bar_init+0x5c>
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 <bar_init+0x138>)
10fc4: 881a ldrh r2, [r3, #0]
10fc6: e7f3 b.n 10fb0 <bar_init+0xfc>
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 <slider_init>:
{
10ff8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
style_init_reset(&styles->slider_knob);
10ffc: 4c7d ldr r4, [pc, #500] ; (111f4 <slider_init+0x1fc>)
10ffe: 4f7e ldr r7, [pc, #504] ; (111f8 <slider_init+0x200>)
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 <slider_init+0x204>)
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 <slider_init+0x208>)
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 <slider_init+0x20c>)
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 <slider_init+0x1d6>
11036: 4874 ldr r0, [pc, #464] ; (11208 <slider_init+0x210>)
11038: 4b74 ldr r3, [pc, #464] ; (1120c <slider_init+0x214>)
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 <slider_init+0x218>)
lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
11048: 4d72 ldr r5, [pc, #456] ; (11214 <slider_init+0x21c>)
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 <slider_init+0x1dc>
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 <slider_init+0x1e0>
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 <slider_init+0x1e4>
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 <slider_init+0x1e8>
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 <slider_init+0x1ec>
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 <slider_init+0x1f0>
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 <slider_init+0x1f4>
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 <slider_init+0x1f8>
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 <slider_init+0x20c>)
111d0: 881a ldrh r2, [r3, #0]
111d2: e734 b.n 1103e <slider_init+0x46>
lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
111d4: 2201 movs r2, #1
111d6: e751 b.n 1107c <slider_init+0x84>
lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
111d8: 2201 movs r2, #1
111da: e766 b.n 110aa <slider_init+0xb2>
lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
111dc: 2201 movs r2, #1
111de: e77b b.n 110d8 <slider_init+0xe0>
lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
111e0: 2201 movs r2, #1
111e2: e78f b.n 11104 <slider_init+0x10c>
lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
111e4: 2201 movs r2, #1
111e6: e7a7 b.n 11138 <slider_init+0x140>
lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
111e8: 2201 movs r2, #1
111ea: e7bc b.n 11166 <slider_init+0x16e>
lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
111ec: 2201 movs r2, #1
111ee: e7d1 b.n 11194 <slider_init+0x19c>
lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
111f0: 2201 movs r2, #1
111f2: e7e6 b.n 111c2 <slider_init+0x1ca>
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 <gauge_init>:
{
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 <gauge_init+0x2e0>)
1121e: f8df 82f4 ldr.w r8, [pc, #756] ; 11514 <gauge_init+0x2fc>
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 <gauge_init+0x300>
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
11228: 4fb4 ldr r7, [pc, #720] ; (114fc <gauge_init+0x2e4>)
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 <gauge_init+0x2e8>)
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 <gauge_init+0x378>
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 <gauge_init+0x2ec>)
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 <gauge_init+0x37c>
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 <gauge_init+0x380>
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 <gauge_init+0x384>
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 <gauge_init+0x388>
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 <gauge_init+0x38c>
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 <gauge_init+0x390>
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 <gauge_init+0x394>
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 <gauge_init+0x398>
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 <gauge_init+0x39c>
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 <gauge_init+0x3a0>
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 <gauge_init+0x3a4>
114a2: 4819 ldr r0, [pc, #100] ; (11508 <gauge_init+0x2f0>)
114a4: 4b19 ldr r3, [pc, #100] ; (1150c <gauge_init+0x2f4>)
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 <gauge_init+0x3aa>
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 <gauge_init+0x2f8>)
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 <gauge_init+0x3ae>
114ee: 4806 ldr r0, [pc, #24] ; (11508 <gauge_init+0x2f0>)
114f0: 4b06 ldr r3, [pc, #24] ; (1150c <gauge_init+0x2f4>)
114f2: 4798 blx r3
114f4: 4602 mov r2, r0
114f6: e011 b.n 1151c <gauge_init+0x304>
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 <gauge_init+0x3b4>
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 <gauge_init+0x3b8>
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 <gauge_init+0x72>
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 <gauge_init+0x9a>
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 <gauge_init+0xc0>
lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
1159c: 2201 movs r2, #1
1159e: e6b3 b.n 11308 <gauge_init+0xf0>
lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
115a0: 2201 movs r2, #1
115a2: e6c9 b.n 11338 <gauge_init+0x120>
lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
115a4: 2201 movs r2, #1
115a6: e6df b.n 11368 <gauge_init+0x150>
lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20));
115a8: 2201 movs r2, #1
115aa: e6f5 b.n 11398 <gauge_init+0x180>
lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15));
115ac: 2201 movs r2, #1
115ae: e70a b.n 113c6 <gauge_init+0x1ae>
lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8));
115b0: 2201 movs r2, #1
115b2: e73d b.n 11430 <gauge_init+0x218>
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 <gauge_init+0x23e>
lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25));
115b8: 2201 movs r2, #1
115ba: e765 b.n 11488 <gauge_init+0x270>
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 <gauge_init+0x3bc>)
115be: 881a ldrh r2, [r3, #0]
115c0: e773 b.n 114aa <gauge_init+0x292>
lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8));
115c2: 2201 movs r2, #1
115c4: e784 b.n 114d0 <gauge_init+0x2b8>
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 <gauge_init+0x3bc>)
115c8: 881a ldrh r2, [r3, #0]
115ca: e7a7 b.n 1151c <gauge_init+0x304>
lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30));
115cc: 2201 movs r2, #1
115ce: e7c2 b.n 11556 <gauge_init+0x33e>
lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10));
115d0: 2201 movs r2, #1
115d2: e7d7 b.n 11584 <gauge_init+0x36c>
115d4: 00024272 .word 0x00024272
000115d8 <chart_init>:
{
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 <chart_init+0x1a8>)
115de: 4f69 ldr r7, [pc, #420] ; (11784 <chart_init+0x1ac>)
115e0: 6828 ldr r0, [r5, #0]
115e2: f8df 91bc ldr.w r9, [pc, #444] ; 117a0 <chart_init+0x1c8>
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 <chart_init+0x184>
115fa: 4b63 ldr r3, [pc, #396] ; (11788 <chart_init+0x1b0>)
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 <chart_init+0x1cc>
lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1));
1160e: 4c5f ldr r4, [pc, #380] ; (1178c <chart_init+0x1b4>)
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 <chart_init+0x18a>
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 <chart_init+0x1b8>)
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 <chart_init+0x18e>
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 <chart_init+0x192>
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 <chart_init+0x1bc>)
116ac: 483a ldrpl r0, [pc, #232] ; (11798 <chart_init+0x1c0>)
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 <chart_init+0x196>
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 <chart_init+0x19a>
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 <chart_init+0x19e>
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 <chart_init+0x1a2>
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 <chart_init+0x1c4>)
1175e: 47c8 blx r9
11760: e74f b.n 11602 <chart_init+0x2a>
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 <chart_init+0x60>
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 <chart_init+0x92>
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 <chart_init+0xc0>
lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3));
1176e: 2201 movs r2, #1
11770: e7b8 b.n 116e4 <chart_init+0x10c>
lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4));
11772: 2201 movs r2, #1
11774: e7c8 b.n 11708 <chart_init+0x130>
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 <chart_init+0x154>
lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1));
1177a: 2201 movs r2, #1
1177c: e7e8 b.n 11750 <chart_init+0x178>
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 <basic_init>:
{
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 <basic_init+0x290>)
117b2: 4fa2 ldr r7, [pc, #648] ; (11a3c <basic_init+0x294>)
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 <basic_init+0x298>)
_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 <basic_init+0x2c4>
{
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 <basic_init+0x29c>)
117d4: 489c ldreq r0, [pc, #624] ; (11a48 <basic_init+0x2a0>)
117d6: 46ab mov fp, r5
117d8: 4d9c ldr r5, [pc, #624] ; (11a4c <basic_init+0x2a4>)
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 <basic_init+0x2a8>)
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 <basic_init+0x2ac>)
117f2: 4899 ldrpl r0, [pc, #612] ; (11a58 <basic_init+0x2b0>)
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 <basic_init+0x2ac>)
1180a: 4893 ldrpl r0, [pc, #588] ; (11a58 <basic_init+0x2b0>)
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 <basic_init+0x2b4>)
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 <basic_init+0xb68>
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 <basic_init+0x2c8>
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 <basic_init+0x2b8>)
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 <basic_init+0x2bc>)
1188e: 4876 ldrpl r0, [pc, #472] ; (11a68 <basic_init+0x2c0>)
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 <basic_init+0xb6e>
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 <basic_init+0x2ac>)
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 <basic_init+0x2ac>)
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 <basic_init+0x2ac>)
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 <basic_init+0x2ac>)
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 <basic_init+0x2cc>
_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 <basic_init+0xb8e>
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 <basic_init+0xb74>
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 <basic_init+0xba4>
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 <basic_init+0xbc4>
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 <basic_init+0xbaa>
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 <basic_init+0xbda>
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 <basic_init+0xbfa>
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 <basic_init+0xbe0>
11a34: e020 b.n 11a78 <basic_init+0x2d0>
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 <basic_init+0xc10>
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 <basic_init+0xc30>
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 <basic_init+0xc16>
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 <basic_init+0xc46>
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 <basic_init+0xc64>
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 <basic_init+0xc4c>
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 <basic_init+0x63c>)
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 <basic_init+0x640>)
11b44: 48a9 ldrpl r0, [pc, #676] ; (11dec <basic_init+0x644>)
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 <basic_init+0x648>)
11b5c: 48a5 ldrpl r0, [pc, #660] ; (11df4 <basic_init+0x64c>)
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 <basic_init+0x650>)
11b74: 48a1 ldrpl r0, [pc, #644] ; (11dfc <basic_init+0x654>)
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 <basic_init+0x650>)
11b8e: 489b ldrpl r0, [pc, #620] ; (11dfc <basic_init+0x654>)
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 <basic_init+0x650>)
11ba6: 4895 ldrpl r0, [pc, #596] ; (11dfc <basic_init+0x654>)
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 <basic_init+0x650>)
11bc0: 488e ldrpl r0, [pc, #568] ; (11dfc <basic_init+0x654>)
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 <basic_init+0x684>
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 <basic_init+0x658>)
11be2: 4888 ldrpl r0, [pc, #544] ; (11e04 <basic_init+0x65c>)
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 <basic_init+0x660>)
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 <basic_init+0x688>
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 <basic_init+0xc7a>
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 <basic_init+0x68c>
11c7e: 0798 lsls r0, r3, #30
11c80: bf4c ite mi
11c82: 4862 ldrmi r0, [pc, #392] ; (11e0c <basic_init+0x664>)
11c84: 4862 ldrpl r0, [pc, #392] ; (11e10 <basic_init+0x668>)
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 <basic_init+0x66c>)
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 <basic_init+0x670>)
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 <basic_init+0x664>)
11ca4: 485a ldreq r0, [pc, #360] ; (11e10 <basic_init+0x668>)
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 <basic_init+0x674>)
11cbe: 4854 ldrpl r0, [pc, #336] ; (11e10 <basic_init+0x668>)
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 <basic_init+0x678>)
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 <basic_init+0x664>)
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 <basic_init+0x664>)
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 <basic_init+0x67c>)
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 <basic_init+0x680>)
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 <basic_init+0x660>)
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 <basic_init+0x690>
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 <basic_init+0xc80>
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 <basic_init+0xa0c>)
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 <basic_init+0xcd6>
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 <basic_init+0xa1c>
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 <basic_init+0xcdc>
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 <basic_init+0xa20>
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 <basic_init+0xa10>)
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 <basic_init+0xa14>)
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 <basic_init+0xa14>)
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 <basic_init+0xa18>)
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 <basic_init+0xa14>)
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 <basic_init+0xa14>)
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 <basic_init+0xa18>)
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 <basic_init+0xa14>)
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 <basic_init+0xa14>)
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 <basic_init+0xa18>)
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 <basic_init+0xce0>
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 <basic_init+0xce4>
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 <basic_init+0xce8>
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 <basic_init+0xcec>
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 <basic_init+0xa24>
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 <basic_init+0xcf0>
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 <basic_init+0xd4c>)
_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 <basic_init+0xd50>)
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 <basic_init+0xd0a>
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 <basic_init+0xcf4>
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 <basic_init+0xd36>
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 <basic_init+0xd20>
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 <basic_init+0xa8>
lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH);
12316: 2201 movs r2, #1
12318: f7ff badb b.w 118d2 <basic_init+0x12a>
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 <basic_init+0x1f8>
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 <basic_init+0x1f4>
12344: 2000 movs r0, #0
12346: 47b0 blx r6
12348: 231e movs r3, #30
1234a: e7ea b.n 12322 <basic_init+0xb7a>
1234c: 2001 movs r0, #1
1234e: f7ff bb33 b.w 119b8 <basic_init+0x210>
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 <basic_init+0x244>
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 <basic_init+0x240>
1237a: 2000 movs r0, #0
1237c: 47b0 blx r6
1237e: 231e movs r3, #30
12380: e7ea b.n 12358 <basic_init+0xbb0>
12382: 2001 movs r0, #1
12384: f7ff bb3e b.w 11a04 <basic_init+0x25c>
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 <basic_init+0x2d4>
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 <basic_init+0x2d0>
123b0: 2000 movs r0, #0
123b2: 47b0 blx r6
123b4: 231e movs r3, #30
123b6: e7ea b.n 1238e <basic_init+0xbe6>
123b8: 2001 movs r0, #1
123ba: f7ff bb6b b.w 11a94 <basic_init+0x2ec>
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 <basic_init+0x320>
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 <basic_init+0x31c>
123e6: 2000 movs r0, #0
123e8: 47b0 blx r6
123ea: 231e movs r3, #30
123ec: e7ea b.n 123c4 <basic_init+0xc1c>
123ee: 2001 movs r0, #1
123f0: f7ff bb76 b.w 11ae0 <basic_init+0x338>
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 <basic_init+0x368>
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 <basic_init+0x366>
1241a: 2000 movs r0, #0
1241c: 47b0 blx r6
1241e: 231e movs r3, #30
12420: e7eb b.n 123fa <basic_init+0xc52>
lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR);
12422: 4836 ldr r0, [pc, #216] ; (124fc <basic_init+0xd54>)
12424: 47a8 blx r5
12426: e421 b.n 11c6c <basic_init+0x4c4>
lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR);
12428: 4835 ldr r0, [pc, #212] ; (12500 <basic_init+0xd58>)
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 <basic_init+0x6fe>
lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA);
1247e: 4821 ldr r0, [pc, #132] ; (12504 <basic_init+0xd5c>)
12480: 47a8 blx r5
12482: e55f b.n 11f44 <basic_init+0x79c>
lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH);
12484: 2201 movs r2, #1
12486: e574 b.n 11f72 <basic_init+0x7ca>
lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40));
12488: 2201 movs r2, #1
1248a: e64c b.n 12126 <basic_init+0x97e>
lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40));
1248c: 2201 movs r2, #1
1248e: e662 b.n 12156 <basic_init+0x9ae>
lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15));
12490: 2201 movs r2, #1
12492: e677 b.n 12184 <basic_init+0x9dc>
lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15));
12494: 2201 movs r2, #1
12496: e699 b.n 121cc <basic_init+0xa24>
lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20));
12498: 2201 movs r2, #1
1249a: e6af b.n 121fc <basic_init+0xa54>
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 <basic_init+0xb00>
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 <basic_init+0xafe>
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 <basic_init+0xcfa>
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 <basic_init+0xb2a>
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 <basic_init+0xb28>
124ec: 2000 movs r0, #0
124ee: 47c0 blx r8
124f0: 2314 movs r3, #20
124f2: e7ec b.n 124ce <basic_init+0xd26>
124f4: 00010abd .word 0x00010abd
124f8: 0000d969 .word 0x0000d969
124fc: 005f656e .word 0x005f656e
12500: 00586273 .word 0x00586273
12504: 00404040 .word 0x00404040
00012508 <lv_theme_material_init>:
{
12508: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
if(!inited) {
1250c: 4cb4 ldr r4, [pc, #720] ; (127e0 <lv_theme_material_init+0x2d8>)
{
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_theme_material_init+0x24>
LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t));
12520: 4bb0 ldr r3, [pc, #704] ; (127e4 <lv_theme_material_init+0x2dc>)
12522: 20bc movs r0, #188 ; 0xbc
12524: 4798 blx r3
12526: 4bb0 ldr r3, [pc, #704] ; (127e8 <lv_theme_material_init+0x2e0>)
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 <lv_theme_material_init+0x2e4>)
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 <lv_theme_material_init+0x2e8>)
style_init_reset(&styles->arc_indic);
12548: f8df 82dc ldr.w r8, [pc, #732] ; 12828 <lv_theme_material_init+0x320>
_LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
1254c: 4fa9 ldr r7, [pc, #676] ; (127f4 <lv_theme_material_init+0x2ec>)
lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25));
1254e: 4daa ldr r5, [pc, #680] ; (127f8 <lv_theme_material_init+0x2f0>)
bar_init();
12550: 4798 blx r3
led_init();
12552: 4baa ldr r3, [pc, #680] ; (127fc <lv_theme_material_init+0x2f4>)
12554: 4798 blx r3
slider_init();
12556: 4baa ldr r3, [pc, #680] ; (12800 <lv_theme_material_init+0x2f8>)
12558: 4798 blx r3
switch_init();
1255a: 4baa ldr r3, [pc, #680] ; (12804 <lv_theme_material_init+0x2fc>)
1255c: 4798 blx r3
linemeter_init();
1255e: 4baa ldr r3, [pc, #680] ; (12808 <lv_theme_material_init+0x300>)
12560: 4798 blx r3
gauge_init();
12562: 4baa ldr r3, [pc, #680] ; (1280c <lv_theme_material_init+0x304>)
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 <lv_theme_material_init+0x1532>
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 <lv_theme_material_init+0x308>)
125a8: f8df a280 ldr.w sl, [pc, #640] ; 1282c <lv_theme_material_init+0x324>
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 <lv_theme_material_init+0x30c>)
125ce: 4892 ldreq r0, [pc, #584] ; (12818 <lv_theme_material_init+0x310>)
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 <lv_theme_material_init+0x1538>
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_theme_material_init+0x328>
_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 <lv_theme_material_init+0x314>)
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 <lv_theme_material_init+0x1556>
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 <lv_theme_material_init+0x153e>
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 <lv_theme_material_init+0x1584>
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 <lv_theme_material_init+0x156c>
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 <lv_theme_material_init+0x15b2>
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 <lv_theme_material_init+0x159a>
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 <lv_theme_material_init+0x15e0>
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 <lv_theme_material_init+0x15c8>
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 <lv_theme_material_init+0x32c>
126cc: f012 0f02 tst.w r2, #2
126d0: f103 0330 add.w r3, r3, #48 ; 0x30
126d4: f001 8213 beq.w 13afe <lv_theme_material_init+0x15f6>
126d8: 4851 ldr r0, [pc, #324] ; (12820 <lv_theme_material_init+0x318>)
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 <lv_theme_material_init+0x15fe>
12700: 4848 ldr r0, [pc, #288] ; (12824 <lv_theme_material_init+0x31c>)
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 <lv_theme_material_init+0x1622>
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 <lv_theme_material_init+0x160a>
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 <lv_theme_material_init+0x1650>
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 <lv_theme_material_init+0x1638>
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 <lv_theme_material_init+0x167e>
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 <lv_theme_material_init+0x1666>
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 <lv_theme_material_init+0x1694>
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 <lv_theme_material_init+0x169a>
127d2: 4814 ldr r0, [pc, #80] ; (12824 <lv_theme_material_init+0x31c>)
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 <lv_theme_material_init+0x330>
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 <lv_theme_material_init+0x648>)
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 <lv_theme_material_init+0x648>)
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 <lv_theme_material_init+0x648>)
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 <lv_theme_material_init+0x16a2>
128a2: 48ac ldr r0, [pc, #688] ; (12b54 <lv_theme_material_init+0x64c>)
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 <lv_theme_material_init+0x16aa>
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 <lv_theme_material_init+0x16c8>
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 <lv_theme_material_init+0x16b0>
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 <lv_theme_material_init+0x16f6>
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 <lv_theme_material_init+0x16de>
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 <lv_theme_material_init+0x1724>
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 <lv_theme_material_init+0x170c>
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 <lv_theme_material_init+0x173a>
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 <lv_theme_material_init+0x648>)
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 <lv_theme_material_init+0x650>)
129e8: 485c ldrpl r0, [pc, #368] ; (12b5c <lv_theme_material_init+0x654>)
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 <lv_theme_material_init+0x1740>
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_theme_material_init+0x648>
_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 <lv_theme_material_init+0x1746>
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 <lv_theme_material_init+0x174c>
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 <lv_theme_material_init+0x1752>
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 <lv_theme_material_init+0x1758>
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 <lv_theme_material_init+0x658>
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 <lv_theme_material_init+0x175e>
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 <lv_theme_material_init+0x1764>
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 <lv_theme_material_init+0x176a>
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 <lv_theme_material_init+0xa04>)
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 <lv_theme_material_init+0x1770>
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_theme_material_init+0xa24>
_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 <lv_theme_material_init+0xa08>)
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 <lv_theme_material_init+0x179c>
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_theme_material_init+0xa0c>)
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar)
12c96: 4fa0 ldr r7, [pc, #640] ; (12f18 <lv_theme_material_init+0xa10>)
_LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
12c98: 4ea0 ldr r6, [pc, #640] ; (12f1c <lv_theme_material_init+0xa14>)
_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 <lv_theme_material_init+0xa18>)
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 <lv_theme_material_init+0x17a2>
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 <lv_theme_material_init+0x17a8>
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 <lv_theme_material_init+0x17ae>
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 <lv_theme_material_init+0x17b4>
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 <lv_theme_material_init+0x17ba>
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_theme_material_init+0xa1c>)
_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 <lv_theme_material_init+0x17c0>
12dcc: 4856 ldr r0, [pc, #344] ; (12f28 <lv_theme_material_init+0xa20>)
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 <lv_theme_material_init+0x17c8>
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 <lv_theme_material_init+0x17ce>
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 <lv_theme_material_init+0x17d4>
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 <lv_theme_material_init+0x17da>
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 <lv_theme_material_init+0x17e0>
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 <lv_theme_material_init+0x17e6>
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 <lv_theme_material_init+0xa28>
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 <lv_theme_material_init+0x17ec>
12f44: 4bb6 ldr r3, [pc, #728] ; (13220 <lv_theme_material_init+0xd18>)
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 <lv_theme_material_init+0xd1c>)
12f6c: 48ae ldrpl r0, [pc, #696] ; (13228 <lv_theme_material_init+0xd20>)
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 <lv_theme_material_init+0x17fa>
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 <lv_theme_material_init+0x1800>
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 <lv_theme_material_init+0x1806>
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 <lv_theme_material_init+0xd24>)
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 <lv_theme_material_init+0xd28>)
13048: 487a ldrpl r0, [pc, #488] ; (13234 <lv_theme_material_init+0xd2c>)
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 <lv_theme_material_init+0x180c>
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 <lv_theme_material_init+0x1812>
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 <lv_theme_material_init+0x1818>
130be: 4b5b ldr r3, [pc, #364] ; (1322c <lv_theme_material_init+0xd24>)
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_theme_material_init+0xd18>)
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 <lv_theme_material_init+0x1820>
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 <lv_theme_material_init+0x1826>
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 <lv_theme_material_init+0xd40>
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_theme_material_init+0xd24>
_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 <lv_theme_material_init+0xd30>)
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 <lv_theme_material_init+0xd34>)
131dc: 4818 ldrpl r0, [pc, #96] ; (13240 <lv_theme_material_init+0xd38>)
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 <lv_theme_material_init+0xd30>)
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 <lv_theme_material_init+0xd3c>)
13218: f100 0878 add.w r8, r0, #120 ; 0x78
1321c: e016 b.n 1324c <lv_theme_material_init+0xd44>
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 <lv_theme_material_init+0x104c>)
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_theme_material_init+0x1050>)
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 <lv_theme_material_init+0x104c>)
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_theme_material_init+0x1054>)
lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF);
1330c: f8df 8268 ldr.w r8, [pc, #616] ; 13578 <lv_theme_material_init+0x1070>
_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 <lv_theme_material_init+0x1058>)
13322: 4890 ldrpl r0, [pc, #576] ; (13564 <lv_theme_material_init+0x105c>)
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 <lv_theme_material_init+0x1060>)
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 <lv_theme_material_init+0x1064>)
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 <lv_theme_material_init+0x1844>
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 <lv_theme_material_init+0x182c>
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 <lv_theme_material_init+0x1872>
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 <lv_theme_material_init+0x185a>
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 <lv_theme_material_init+0x18a0>
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 <lv_theme_material_init+0x1888>
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 <lv_theme_material_init+0x18ce>
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 <lv_theme_material_init+0x18b6>
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 <lv_theme_material_init+0x18fc>
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 <lv_theme_material_init+0x18e4>
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 <lv_theme_material_init+0x192c>
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 <lv_theme_material_init+0x1912>
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 <lv_theme_material_init+0x1074>
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 <lv_theme_material_init+0x1942>
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 <lv_theme_material_init+0x1078>
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 <lv_theme_material_init+0x1068>)
1350e: 4819 ldreq r0, [pc, #100] ; (13574 <lv_theme_material_init+0x106c>)
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 <lv_theme_material_init+0x104c>)
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 <lv_theme_material_init+0x107c>
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 <lv_theme_material_init+0x1948>
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 <lv_theme_material_init+0x13b0>
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_theme_material_init+0x1394>)
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 <lv_theme_material_init+0x13b4>
135f6: f013 0f02 tst.w r3, #2
135fa: bf0c ite eq
135fc: 48a8 ldreq r0, [pc, #672] ; (138a0 <lv_theme_material_init+0x1398>)
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 <lv_theme_material_init+0x139c>)
1361a: 48a3 ldrpl r0, [pc, #652] ; (138a8 <lv_theme_material_init+0x13a0>)
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 <lv_theme_material_init+0x194e>
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 <lv_theme_material_init+0x13a0>)
1366c: 488f ldrpl r0, [pc, #572] ; (138ac <lv_theme_material_init+0x13a4>)
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 <lv_theme_material_init+0x13a8>)
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 <lv_theme_material_init+0x13ac>)
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 <lv_theme_material_init+0x1954>
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 <lv_theme_material_init+0x1958>
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 <lv_theme_material_init+0x195c>
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 <lv_theme_material_init+0x13a0>)
1375e: 4853 ldrpl r0, [pc, #332] ; (138ac <lv_theme_material_init+0x13a4>)
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 <lv_theme_material_init+0x1960>
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 <lv_theme_material_init+0x1964>
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 <lv_theme_material_init+0x1968>
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_theme_material_init+0x13b8>
_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 <lv_theme_material_init+0x1982>
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 <lv_theme_material_init+0x196c>
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 <lv_theme_material_init+0x19ae>
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 <lv_theme_material_init+0x1998>
1389a: e013 b.n 138c4 <lv_theme_material_init+0x13bc>
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 <lv_theme_material_init+0x19da>
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 <lv_theme_material_init+0x19c4>
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 <lv_theme_material_init+0x1a06>
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 <lv_theme_material_init+0x19f0>
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 <lv_theme_material_init+0x1a32>
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 <lv_theme_material_init+0x1a1c>
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 <lv_theme_material_init+0x1778>)
1395a: 48ca ldrpl r0, [pc, #808] ; (13c84 <lv_theme_material_init+0x177c>)
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 <lv_theme_material_init+0x1a5e>
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 <lv_theme_material_init+0x1a48>
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 <lv_theme_material_init+0x1a8a>
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 <lv_theme_material_init+0x1a74>
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 <lv_theme_material_init+0x1780>)
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 <lv_theme_material_init+0x1ab6>
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 <lv_theme_material_init+0x1aa0>
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 <lv_theme_material_init+0x1784>)
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 <lv_theme_material_init+0x1ae2>
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 <lv_theme_material_init+0x1acc>
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 <lv_theme_material_init+0x1788>)
13a1e: 4798 blx r3
theme.apply_xcb = theme_apply;
13a20: 4b9c ldr r3, [pc, #624] ; (13c94 <lv_theme_material_init+0x178c>)
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 <lv_theme_material_init+0x1790>)
13a2c: 4798 blx r3
}
13a2e: 489b ldr r0, [pc, #620] ; (13c9c <lv_theme_material_init+0x1794>)
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_theme_material_init+0x9a>
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_theme_material_init+0xfe>
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 <lv_theme_material_init+0x13e>
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 <lv_theme_material_init+0x13c>
13a6c: 2000 movs r0, #0
13a6e: 47a8 blx r5
13a70: 231e movs r3, #30
13a72: e7eb b.n 13a4c <lv_theme_material_init+0x1544>
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 <lv_theme_material_init+0x166>
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 <lv_theme_material_init+0x164>
13a9a: 2000 movs r0, #0
13a9c: 47a8 blx r5
13a9e: 231e movs r3, #30
13aa0: e7eb b.n 13a7a <lv_theme_material_init+0x1572>
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 <lv_theme_material_init+0x18e>
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 <lv_theme_material_init+0x18c>
13ac8: 2000 movs r0, #0
13aca: 47a8 blx r5
13acc: 231e movs r3, #30
13ace: e7eb b.n 13aa8 <lv_theme_material_init+0x15a0>
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 <lv_theme_material_init+0x1b6>
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 <lv_theme_material_init+0x1b4>
13af6: 2000 movs r0, #0
13af8: 47a8 blx r5
13afa: 231e movs r3, #30
13afc: e7eb b.n 13ad6 <lv_theme_material_init+0x15ce>
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_theme_material_init+0x1da>
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 <lv_theme_material_init+0x1798>)
13b08: f640 60ee movw r0, #3822 ; 0xeee
13b0c: 4798 blx r3
13b0e: f7fe bdf9 b.w 12704 <lv_theme_material_init+0x1fc>
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 <lv_theme_material_init+0x22c>
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 <lv_theme_material_init+0x22a>
13b38: 2000 movs r0, #0
13b3a: 47a8 blx r5
13b3c: 231e movs r3, #30
13b3e: e7eb b.n 13b18 <lv_theme_material_init+0x1610>
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 <lv_theme_material_init+0x258>
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 <lv_theme_material_init+0x256>
13b66: 2000 movs r0, #0
13b68: 47a8 blx r5
13b6a: 231e movs r3, #30
13b6c: e7eb b.n 13b46 <lv_theme_material_init+0x163e>
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 <lv_theme_material_init+0x284>
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 <lv_theme_material_init+0x282>
13b94: 2000 movs r0, #0
13b96: 47a8 blx r5
13b98: 231e movs r3, #30
13b9a: e7eb b.n 13b74 <lv_theme_material_init+0x166c>
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_theme_material_init+0x2b4>
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_theme_material_init+0x330>
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_theme_material_init+0x3a4>
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_theme_material_init+0x404>
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 <lv_theme_material_init+0x430>
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 <lv_theme_material_init+0x42e>
13bde: 2000 movs r0, #0
13be0: 47a8 blx r5
13be2: 231e movs r3, #30
13be4: e7eb b.n 13bbe <lv_theme_material_init+0x16b6>
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 <lv_theme_material_init+0x45c>
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 <lv_theme_material_init+0x45a>
13c0c: 2000 movs r0, #0
13c0e: 47a8 blx r5
13c10: 231e movs r3, #30
13c12: e7eb b.n 13bec <lv_theme_material_init+0x16e4>
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 <lv_theme_material_init+0x488>
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 <lv_theme_material_init+0x486>
13c3a: 2000 movs r0, #0
13c3c: 47a8 blx r5
13c3e: 231e movs r3, #30
13c40: e7eb b.n 13c1a <lv_theme_material_init+0x1712>
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_theme_material_init+0x4c0>
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_theme_material_init+0x516>
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_theme_material_init+0x5ae>
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_theme_material_init+0x5e0>
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_theme_material_init+0x612>
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_theme_material_init+0x658>
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_theme_material_init+0x684>
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_theme_material_init+0x6b4>
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_theme_material_init+0x702>
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 <lv_theme_material_init+0x734>
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_theme_material_init+0x788>
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_theme_material_init+0x7e2>
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_theme_material_init+0x810>
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_theme_material_init+0x83e>
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_theme_material_init+0x86c>
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_theme_material_init+0x8a2>
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_theme_material_init+0x8d4>
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_theme_material_init+0x916>
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_theme_material_init+0x944>
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_theme_material_init+0x972>
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_theme_material_init+0x9a0>
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_theme_material_init+0x9ce>
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_theme_material_init+0xa28>
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 <lv_theme_material_init+0x1af8>)
13cf6: f640 1099 movw r0, #2457 ; 0x999
13cfa: 4798 blx r3
13cfc: 4602 mov r2, r0
13cfe: f7ff b923 b.w 12f48 <lv_theme_material_init+0xa40>
lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7));
13d02: 2201 movs r2, #1
13d04: f7ff b952 b.w 12fac <lv_theme_material_init+0xaa4>
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_theme_material_init+0xad2>
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_theme_material_init+0xb00>
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_theme_material_init+0xb6c>
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_theme_material_init+0xb92>
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 <lv_theme_material_init+0x1afc>)
13d22: 47b8 blx r7
13d24: f7ff b9cf b.w 130c6 <lv_theme_material_init+0xbbe>
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_theme_material_init+0xc1a>
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_theme_material_init+0xc4a>
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 <lv_theme_material_init+0xe64>
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 <lv_theme_material_init+0xe62>
13d5a: 2000 movs r0, #0
13d5c: 47a8 blx r5
13d5e: 231e movs r3, #30
13d60: e7eb b.n 13d3a <lv_theme_material_init+0x1832>
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 <lv_theme_material_init+0xe8c>
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 <lv_theme_material_init+0xe8a>
13d88: 2000 movs r0, #0
13d8a: 47a8 blx r5
13d8c: 231e movs r3, #30
13d8e: e7eb b.n 13d68 <lv_theme_material_init+0x1860>
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 <lv_theme_material_init+0xeb4>
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 <lv_theme_material_init+0xeb2>
13db6: 2000 movs r0, #0
13db8: 47a8 blx r5
13dba: 231e movs r3, #30
13dbc: e7eb b.n 13d96 <lv_theme_material_init+0x188e>
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 <lv_theme_material_init+0xedc>
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 <lv_theme_material_init+0xeda>
13de4: 2000 movs r0, #0
13de6: 47a8 blx r5
13de8: 231e movs r3, #30
13dea: e7eb b.n 13dc4 <lv_theme_material_init+0x18bc>
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 <lv_theme_material_init+0xf04>
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 <lv_theme_material_init+0xf02>
13e12: 2000 movs r0, #0
13e14: 47a8 blx r5
13e16: 231e movs r3, #30
13e18: e7eb b.n 13df2 <lv_theme_material_init+0x18ea>
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 <lv_theme_material_init+0xf2e>
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 <lv_theme_material_init+0xf2a>
13e42: 2000 movs r0, #0
13e44: 47a8 blx r5
13e46: 231e movs r3, #30
13e48: e7ea b.n 13e20 <lv_theme_material_init+0x1918>
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_theme_material_init+0xfae>
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_theme_material_init+0x109a>
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_theme_material_init+0x1146>
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_theme_material_init+0x11bc>
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_theme_material_init+0x11ea>
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_theme_material_init+0x1218>
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_theme_material_init+0x128e>
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_theme_material_init+0x12be>
lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5));
13e70: 2201 movs r2, #1
13e72: e4df b.n 13834 <lv_theme_material_init+0x132c>
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 <lv_theme_material_init+0x136c>
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 <lv_theme_material_init+0x136a>
13e98: 2000 movs r0, #0
13e9a: 47a8 blx r5
13e9c: 231e movs r3, #30
13e9e: e7ec b.n 13e7a <lv_theme_material_init+0x1972>
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 <lv_theme_material_init+0x13be>
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 <lv_theme_material_init+0x13bc>
13ec4: 2000 movs r0, #0
13ec6: 47a8 blx r5
13ec8: 231e movs r3, #30
13eca: e7ec b.n 13ea6 <lv_theme_material_init+0x199e>
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 <lv_theme_material_init+0x13e6>
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 <lv_theme_material_init+0x13e4>
13ef0: 2000 movs r0, #0
13ef2: 47a8 blx r5
13ef4: 231e movs r3, #30
13ef6: e7ec b.n 13ed2 <lv_theme_material_init+0x19ca>
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 <lv_theme_material_init+0x140e>
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 <lv_theme_material_init+0x140c>
13f1c: 2000 movs r0, #0
13f1e: 47a8 blx r5
13f20: 231e movs r3, #30
13f22: e7ec b.n 13efe <lv_theme_material_init+0x19f6>
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 <lv_theme_material_init+0x1436>
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 <lv_theme_material_init+0x1434>
13f48: 2000 movs r0, #0
13f4a: 47a8 blx r5
13f4c: 231e movs r3, #30
13f4e: e7ec b.n 13f2a <lv_theme_material_init+0x1a22>
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 <lv_theme_material_init+0x1494>
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 <lv_theme_material_init+0x1492>
13f74: 2000 movs r0, #0
13f76: 47a8 blx r5
13f78: 231e movs r3, #30
13f7a: e7ec b.n 13f56 <lv_theme_material_init+0x1a4e>
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 <lv_theme_material_init+0x14bc>
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 <lv_theme_material_init+0x14ba>
13fa0: 2000 movs r0, #0
13fa2: 47a8 blx r5
13fa4: 231e movs r3, #30
13fa6: e7ec b.n 13f82 <lv_theme_material_init+0x1a7a>
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 <lv_theme_material_init+0x14e6>
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 <lv_theme_material_init+0x14e4>
13fcc: 2000 movs r0, #0
13fce: 47a8 blx r5
13fd0: 231e movs r3, #30
13fd2: e7ec b.n 13fae <lv_theme_material_init+0x1aa6>
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 <lv_theme_material_init+0x1510>
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 <lv_theme_material_init+0x150e>
13ff8: 2000 movs r0, #0
13ffa: 47b0 blx r6
13ffc: 231e movs r3, #30
13ffe: e7ec b.n 13fda <lv_theme_material_init+0x1ad2>
14000: 000102f1 .word 0x000102f1
14004: 00a1adbd .word 0x00a1adbd
00014008 <lv_img_design>:
* 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 <lv_img_design+0x298>)
{
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 <lv_img_design+0xde>
_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 <lv_img_design+0x2cc>
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 <lv_img_design+0x426>
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 <lv_img_design+0x84>
/*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 <lv_img_design+0x3a>
1403e: 2b08 cmp r3, #8
14040: d124 bne.n 1408c <lv_img_design+0x84>
_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_img_design+0x84>
_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 <lv_img_design+0x2d0>
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 <lv_img_design+0x8c>
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_img_design+0x84>
_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 <lv_img_design+0x29c>)
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 <lv_img_design+0x2a0>)
14096: 4620 mov r0, r4
14098: 4798 blx r3
1409a: 4b84 ldr r3, [pc, #528] ; (142ac <lv_img_design+0x2a4>)
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 <lv_img_design+0x2a8>)
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 <lv_img_design+0x6c>
else if(mode == LV_DESIGN_DRAW_MAIN) {
140e6: 2e00 cmp r6, #0
140e8: f040 8176 bne.w 143d8 <lv_img_design+0x3d0>
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 <lv_img_design+0x3cc>
140f6: f9b0 3008 ldrsh.w r3, [r0, #8]
140fa: 2b00 cmp r3, #0
140fc: f000 816a beq.w 143d4 <lv_img_design+0x3cc>
lv_obj_get_coords(img, &img_coords);
14100: a904 add r1, sp, #16
14102: 4b6c ldr r3, [pc, #432] ; (142b4 <lv_img_design+0x2ac>)
_LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar)
14104: f8df 91cc ldr.w r9, [pc, #460] ; 142d4 <lv_img_design+0x2cc>
14108: 4620 mov r0, r4
1410a: 4798 blx r3
lv_draw_rect_dsc_init(&bg_dsc);
1410c: 4b6a ldr r3, [pc, #424] ; (142b8 <lv_img_design+0x2b0>)
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 <lv_img_design+0x2b4>)
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 <lv_img_design+0x122>
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_img_design+0x84>
_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 <lv_img_design+0x2a8>
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 <lv_img_design+0x2b8>)
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_img_design+0x22e>
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 <lv_img_design+0x2bc>)
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 <lv_img_design+0x2d4>
1422a: 47c8 blx r9
lv_draw_mask_add(mp, img + 8);
1422c: 4b26 ldr r3, [pc, #152] ; (142c8 <lv_img_design+0x2c0>)
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 <lv_img_design+0x370>
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 <lv_img_design+0x2c4>)
14284: 4798 blx r3
lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc);
14286: 4b12 ldr r3, [pc, #72] ; (142d0 <lv_img_design+0x2c8>)
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 <lv_img_design+0x2d8>
return LV_DESIGN_RES_OK;
1429a: 2600 movs r6, #0
1429c: e6f6 b.n 1408c <lv_img_design+0x84>
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 <lv_img_design+0x42c>)
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 <lv_img_design+0x84>
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 <lv_img_design+0x354>
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_img_design+0x30c>
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 <lv_img_design+0x32a>
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_img_design+0x3aa>
lv_draw_label_dsc_init(&label_dsc);
14380: a80a add r0, sp, #40 ; 0x28
14382: 4b2d ldr r3, [pc, #180] ; (14438 <lv_img_design+0x430>)
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 <lv_img_design+0x434>)
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 <lv_img_design+0x438>)
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 <lv_img_design+0x43c>)
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_img_design+0x84>
LV_LOG_WARN("lv_img_design: image source type is unknown");
143b2: 4b25 ldr r3, [pc, #148] ; (14448 <lv_img_design+0x440>)
143b4: 9300 str r3, [sp, #0]
143b6: 4925 ldr r1, [pc, #148] ; (1444c <lv_img_design+0x444>)
143b8: 4b25 ldr r3, [pc, #148] ; (14450 <lv_img_design+0x448>)
143ba: 4d26 ldr r5, [pc, #152] ; (14454 <lv_img_design+0x44c>)
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 <lv_img_design+0x42c>)
143ce: 4639 mov r1, r7
143d0: 47a0 blx r4
143d2: e65b b.n 1408c <lv_img_design+0x84>
if(ext->h == 0 || ext->w == 0) return true;
143d4: 2601 movs r6, #1
143d6: e659 b.n 1408c <lv_img_design+0x84>
else if(mode == LV_DESIGN_DRAW_POST) {
143d8: 2e01 cmp r6, #1
143da: f47f af5e bne.w 1429a <lv_img_design+0x292>
_LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar)
143de: 4d1e ldr r5, [pc, #120] ; (14458 <lv_img_design+0x450>)
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_img_design+0x3ee>
lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8);
143ea: 4b1c ldr r3, [pc, #112] ; (1445c <lv_img_design+0x454>)
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 <lv_img_design+0x458>)
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 <lv_img_design+0x45c>)
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 <lv_img_design+0x292>
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 <lv_img_design+0x460>)
1441e: 4798 blx r3
lv_draw_rect(&img->coords, clip_area, &draw_dsc);
14420: 4b12 ldr r3, [pc, #72] ; (1446c <lv_img_design+0x464>)
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 <lv_img_design+0x292>
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 <lv_img_design+0x84>
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 <lv_img_get_auto_size>:
{
14470: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(img, LV_OBJX_NAME);
14472: 4b0d ldr r3, [pc, #52] ; (144a8 <lv_img_get_auto_size+0x38>)
{
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 <lv_img_get_auto_size+0x28>
1447c: 4b0b ldr r3, [pc, #44] ; (144ac <lv_img_get_auto_size+0x3c>)
1447e: 490c ldr r1, [pc, #48] ; (144b0 <lv_img_get_auto_size+0x40>)
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 <lv_img_get_auto_size+0x44>)
1448a: 47b0 blx r6
1448c: 480a ldr r0, [pc, #40] ; (144b8 <lv_img_get_auto_size+0x48>)
1448e: 490b ldr r1, [pc, #44] ; (144bc <lv_img_get_auto_size+0x4c>)
14490: 4622 mov r2, r4
14492: 462b mov r3, r5
14494: 4788 blx r1
14496: e7fe b.n 14496 <lv_img_get_auto_size+0x26>
lv_img_ext_t * ext = lv_obj_get_ext_attr(img);
14498: 4b09 ldr r3, [pc, #36] ; (144c0 <lv_img_get_auto_size+0x50>)
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 <lv_img_set_src>:
{
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 <lv_img_set_src+0x24c>
{
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 <lv_img_set_src+0x2e>
144d8: 4b77 ldr r3, [pc, #476] ; (146b8 <lv_img_set_src+0x1f4>)
144da: 4978 ldr r1, [pc, #480] ; (146bc <lv_img_set_src+0x1f8>)
144dc: 9300 str r3, [sp, #0]
144de: 228f movs r2, #143 ; 0x8f
144e0: 2003 movs r0, #3
144e2: 4d77 ldr r5, [pc, #476] ; (146c0 <lv_img_set_src+0x1fc>)
144e4: 47a8 blx r5
144e6: 4877 ldr r0, [pc, #476] ; (146c4 <lv_img_set_src+0x200>)
144e8: 4977 ldr r1, [pc, #476] ; (146c8 <lv_img_set_src+0x204>)
144ea: 4632 mov r2, r6
144ec: 4623 mov r3, r4
144ee: 4788 blx r1
144f0: e7fe b.n 144f0 <lv_img_set_src+0x2c>
lv_img_src_t src_type = lv_img_src_get_type(src_img);
144f2: 4b76 ldr r3, [pc, #472] ; (146cc <lv_img_set_src+0x208>)
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_set_src+0x20c>)
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_img_set_src+0x8a>
LV_LOG_WARN("lv_img_set_src: unknown type");
14506: 4b73 ldr r3, [pc, #460] ; (146d4 <lv_img_set_src+0x210>)
14508: 9300 str r3, [sp, #0]
1450a: 496c ldr r1, [pc, #432] ; (146bc <lv_img_set_src+0x1f8>)
1450c: 4b6a ldr r3, [pc, #424] ; (146b8 <lv_img_set_src+0x1f4>)
1450e: f8df 81b0 ldr.w r8, [pc, #432] ; 146c0 <lv_img_set_src+0x1fc>
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_img_set_src+0x8a>
LV_LOG_WARN("lv_img_set_src: unknown image type");
1451c: 4b6e ldr r3, [pc, #440] ; (146d8 <lv_img_set_src+0x214>)
1451e: 9300 str r3, [sp, #0]
14520: 4966 ldr r1, [pc, #408] ; (146bc <lv_img_set_src+0x1f8>)
14522: 4b65 ldr r3, [pc, #404] ; (146b8 <lv_img_set_src+0x1f4>)
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_img_set_src+0x78>
lv_mem_free(ext->src);
14536: 6820 ldr r0, [r4, #0]
14538: 4b68 ldr r3, [pc, #416] ; (146dc <lv_img_set_src+0x218>)
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 <lv_img_set_src+0x21c>)
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_img_set_src+0x124>
LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found");
1455a: 4b62 ldr r3, [pc, #392] ; (146e4 <lv_img_set_src+0x220>)
1455c: 9300 str r3, [sp, #0]
1455e: 4957 ldr r1, [pc, #348] ; (146bc <lv_img_set_src+0x1f8>)
14560: 4b55 ldr r3, [pc, #340] ; (146b8 <lv_img_set_src+0x1f4>)
14562: f8df 815c ldr.w r8, [pc, #348] ; 146c0 <lv_img_set_src+0x1fc>
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_img_set_src+0xba>
lv_mem_free(ext->src);
14578: 6820 ldr r0, [r4, #0]
1457a: 4b58 ldr r3, [pc, #352] ; (146dc <lv_img_set_src+0x218>)
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 <lv_img_set_src+0x224>)
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_img_set_src+0x10a>
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 <lv_img_set_src+0x228>)
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 <lv_img_set_src+0x116>
145d2: 8a63 ldrh r3, [r4, #18]
145d4: f5b3 7f80 cmp.w r3, #256 ; 0x100
145d8: d002 beq.n 145e0 <lv_img_set_src+0x11c>
145da: 4b45 ldr r3, [pc, #276] ; (146f0 <lv_img_set_src+0x22c>)
145dc: 4630 mov r0, r6
145de: 4798 blx r3
lv_obj_invalidate(img);
145e0: 4b44 ldr r3, [pc, #272] ; (146f4 <lv_img_set_src+0x230>)
145e2: 4630 mov r0, r6
145e4: 4798 blx r3
145e6: e7af b.n 14548 <lv_img_set_src+0x84>
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 <lv_img_set_src+0x190>
if(ext->src != src_img) {
145f0: f8d4 9000 ldr.w r9, [r4]
145f4: 454f cmp r7, r9
145f6: d02d beq.n 14654 <lv_img_set_src+0x190>
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 <lv_img_set_src+0x234>)
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 <lv_img_set_src+0x238>)
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 <lv_img_set_src+0x172>
1461c: 4b26 ldr r3, [pc, #152] ; (146b8 <lv_img_set_src+0x1f4>)
1461e: 4927 ldr r1, [pc, #156] ; (146bc <lv_img_set_src+0x1f8>)
14620: 9300 str r3, [sp, #0]
14622: 22c7 movs r2, #199 ; 0xc7
14624: 2003 movs r0, #3
14626: 4c26 ldr r4, [pc, #152] ; (146c0 <lv_img_set_src+0x1fc>)
14628: 47a0 blx r4
1462a: 4835 ldr r0, [pc, #212] ; (14700 <lv_img_set_src+0x23c>)
1462c: 4926 ldr r1, [pc, #152] ; (146c8 <lv_img_set_src+0x204>)
1462e: 4642 mov r2, r8
14630: 4653 mov r3, sl
14632: 4788 blx r1
14634: e7fe b.n 14634 <lv_img_set_src+0x170>
if(new_str == NULL) return;
14636: f1b8 0f00 cmp.w r8, #0
1463a: d085 beq.n 14548 <lv_img_set_src+0x84>
1463c: 4b31 ldr r3, [pc, #196] ; (14704 <lv_img_set_src+0x240>)
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 <lv_img_set_src+0x190>
1464e: 4b23 ldr r3, [pc, #140] ; (146dc <lv_img_set_src+0x218>)
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_img_set_src+0xbc>
_LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar)
14658: 4b2b ldr r3, [pc, #172] ; (14708 <lv_img_set_src+0x244>)
_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_img_set_src+0x250>
_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 <lv_img_set_src+0x248>)
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 <lv_img_set_src+0xbc>
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 <lv_img_create>:
{
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_img_create+0x154>)
LV_ASSERT_MEM(img);
1471e: f8df 81a8 ldr.w r8, [pc, #424] ; 148c8 <lv_img_create+0x1b0>
{
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 <lv_img_create+0x32>
14730: 4b4f ldr r3, [pc, #316] ; (14870 <lv_img_create+0x158>)
14732: 4950 ldr r1, [pc, #320] ; (14874 <lv_img_create+0x15c>)
14734: 9300 str r3, [sp, #0]
14736: 2242 movs r2, #66 ; 0x42
14738: 2003 movs r0, #3
1473a: 4e4f ldr r6, [pc, #316] ; (14878 <lv_img_create+0x160>)
1473c: 47b0 blx r6
1473e: 484f ldr r0, [pc, #316] ; (1487c <lv_img_create+0x164>)
14740: 494f ldr r1, [pc, #316] ; (14880 <lv_img_create+0x168>)
14742: 462a mov r2, r5
14744: 4623 mov r3, r4
14746: 4788 blx r1
14748: e7fe b.n 14748 <lv_img_create+0x30>
if(img == NULL) return NULL;
1474a: b315 cbz r5, 14792 <lv_img_create+0x7a>
if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img);
1474c: 4c4d ldr r4, [pc, #308] ; (14884 <lv_img_create+0x16c>)
1474e: 6823 ldr r3, [r4, #0]
14750: b91b cbnz r3, 1475a <lv_img_create+0x42>
14752: 4b4d ldr r3, [pc, #308] ; (14888 <lv_img_create+0x170>)
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 <lv_img_create+0x174>)
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 <lv_img_create+0x6c>
1476a: 4b41 ldr r3, [pc, #260] ; (14870 <lv_img_create+0x158>)
1476c: 4941 ldr r1, [pc, #260] ; (14874 <lv_img_create+0x15c>)
1476e: 9300 str r3, [sp, #0]
14770: 2249 movs r2, #73 ; 0x49
14772: 2003 movs r0, #3
14774: 4d40 ldr r5, [pc, #256] ; (14878 <lv_img_create+0x160>)
14776: 47a8 blx r5
14778: 4840 ldr r0, [pc, #256] ; (1487c <lv_img_create+0x164>)
1477a: 4941 ldr r1, [pc, #260] ; (14880 <lv_img_create+0x168>)
1477c: 4622 mov r2, r4
1477e: 4643 mov r3, r8
14780: 4788 blx r1
14782: e7fe b.n 14782 <lv_img_create+0x6a>
if(ext == NULL) {
14784: f04f 0800 mov.w r8, #0
14788: b93c cbnz r4, 1479a <lv_img_create+0x82>
lv_obj_del(img);
1478a: 4628 mov r0, r5
1478c: 4b40 ldr r3, [pc, #256] ; (14890 <lv_img_create+0x178>)
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 <lv_img_create+0x17c>)
147ae: 4798 blx r3
ext->h = lv_obj_get_height(img);
147b0: 4b39 ldr r3, [pc, #228] ; (14898 <lv_img_create+0x180>)
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 <lv_img_create+0x184>)
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 <lv_img_create+0x188>)
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 <lv_img_create+0x18c>)
147da: 4b33 ldr r3, [pc, #204] ; (148a8 <lv_img_create+0x190>)
147dc: 4628 mov r0, r5
147de: 4798 blx r3
if(copy == NULL) {
147e0: b9e6 cbnz r6, 1481c <lv_img_create+0x104>
lv_theme_apply(img, LV_THEME_IMAGE);
147e2: 4b32 ldr r3, [pc, #200] ; (148ac <lv_img_create+0x194>)
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 <lv_img_create+0x198>)
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 <lv_img_create+0x19c>)
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 <lv_img_create+0xfe>
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 <lv_img_create+0x1a0>)
14806: 9300 str r3, [sp, #0]
14808: 491a ldr r1, [pc, #104] ; (14874 <lv_img_create+0x15c>)
1480a: 4b19 ldr r3, [pc, #100] ; (14870 <lv_img_create+0x158>)
1480c: 4c1a ldr r4, [pc, #104] ; (14878 <lv_img_create+0x160>)
1480e: 227f movs r2, #127 ; 0x7f
14810: 2001 movs r0, #1
14812: 47a0 blx r4
return img;
14814: e7bd b.n 14792 <lv_img_create+0x7a>
ext->auto_size = 0;
14816: f367 0382 bfi r3, r7, #2, #1
1481a: e7f2 b.n 14802 <lv_img_create+0xea>
lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy);
1481c: 4b27 ldr r3, [pc, #156] ; (148bc <lv_img_create+0x1a4>)
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 <lv_img_create+0x1a8>)
14860: 4798 blx r3
lv_obj_refresh_style(img, LV_STYLE_PROP_ALL);
14862: 4b18 ldr r3, [pc, #96] ; (148c4 <lv_img_create+0x1ac>)
14864: 21ff movs r1, #255 ; 0xff
14866: 4628 mov r0, r5
14868: 4798 blx r3
1486a: e7cb b.n 14804 <lv_img_create+0xec>
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 <lv_img_signal>:
* @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 <lv_img_signal+0x32>
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 <lv_img_signal+0x24>
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 <lv_img_signal+0x228>)
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 <lv_img_signal+0x228>)
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 <lv_img_signal+0x2a>
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 <lv_img_signal+0x52>
14910: 4979 ldr r1, [pc, #484] ; (14af8 <lv_img_signal+0x22c>)
14912: 4b7a ldr r3, [pc, #488] ; (14afc <lv_img_signal+0x230>)
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 <lv_img_signal+0x234>)
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 <lv_img_signal+0x80>
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_img_signal+0x2a>
lv_mem_free(ext->src);
14938: 4b72 ldr r3, [pc, #456] ; (14b04 <lv_img_signal+0x238>)
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 <lv_img_signal+0x2a>
else if(sign == LV_SIGNAL_STYLE_CHG) {
1494c: f1b9 0f04 cmp.w r9, #4
14950: d109 bne.n 14966 <lv_img_signal+0x9a>
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_signal+0x2a>
lv_img_set_src(img, ext->src);
1495c: 6801 ldr r1, [r0, #0]
1495e: 4b6a ldr r3, [pc, #424] ; (14b08 <lv_img_signal+0x23c>)
14960: 4620 mov r0, r4
14962: 4798 blx r3
14964: e7c7 b.n 148f6 <lv_img_signal+0x2a>
else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
14966: f1b9 0f06 cmp.w r9, #6
1496a: d16e bne.n 14a4a <lv_img_signal+0x17e>
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar)
1496c: 4e67 ldr r6, [pc, #412] ; (14b0c <lv_img_signal+0x240>)
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 <lv_img_signal+0xd0>
14992: fa0f f288 sxth.w r2, r8
14996: f5b2 7f80 cmp.w r2, #256 ; 0x100
1499a: d031 beq.n 14a00 <lv_img_signal+0x134>
_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 <lv_img_signal+0x24c>
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 <lv_img_signal+0x2a>
else if(sign == LV_SIGNAL_HIT_TEST) {
14a4a: f1b9 0f0a cmp.w r9, #10
14a4e: f47f af52 bne.w 148f6 <lv_img_signal+0x2a>
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 <lv_img_signal+0x21c>
14a5c: 8983 ldrh r3, [r0, #12]
14a5e: 2b00 cmp r3, #0
14a60: d142 bne.n 14ae8 <lv_img_signal+0x21c>
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 <lv_img_signal+0x244>)
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 <lv_img_signal+0x2a>
14ae8: 6831 ldr r1, [r6, #0]
14aea: 4b0a ldr r3, [pc, #40] ; (14b14 <lv_img_signal+0x248>)
14aec: 4620 mov r0, r4
14aee: 4798 blx r3
14af0: e7f8 b.n 14ae4 <lv_img_signal+0x218>
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 <lv_label_dot_tmp_free>:
* 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 <lv_label_dot_tmp_free+0x24>)
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 <lv_label_dot_tmp_free+0x16>
14b2a: 6840 ldr r0, [r0, #4]
14b2c: b108 cbz r0, 14b32 <lv_label_dot_tmp_free+0x16>
lv_mem_free(ext->dot.tmp_ptr);
14b2e: 4b05 ldr r3, [pc, #20] ; (14b44 <lv_label_dot_tmp_free+0x28>)
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 <lv_label_revert_dots>:
{
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 <lv_label_revert_dots+0x6c>)
{
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 <lv_label_revert_dots+0x66>
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 <lv_label_revert_dots+0x66>
uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i);
14b66: 4b14 ldr r3, [pc, #80] ; (14bb8 <lv_label_revert_dots+0x70>)
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_revert_dots+0x68>
lv_label_dot_tmp_free(label);
14b9e: 4b07 ldr r3, [pc, #28] ; (14bbc <lv_label_revert_dots+0x74>)
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 <lv_label_revert_dots+0x3c>
14bb4: 00003fa9 .word 0x00003fa9
14bb8: 2000005c .word 0x2000005c
14bbc: 00014b1d .word 0x00014b1d
00014bc0 <lv_label_set_offset_y>:
{
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 <lv_label_set_offset_y+0x18>)
{
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 <lv_label_set_offset_y+0x1c>)
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 <lv_label_set_offset_x>:
{
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 <lv_label_set_offset_x+0x18>)
{
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 <lv_label_set_offset_x+0x1c>)
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 <lv_label_set_dot_tmp>:
{
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 <lv_label_set_dot_tmp+0x6c>)
{
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_set_dot_tmp+0x70>)
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 <lv_label_set_dot_tmp+0x58>
ext->dot.tmp_ptr = lv_mem_alloc(len + 1);
14c1a: 4b16 ldr r3, [pc, #88] ; (14c74 <lv_label_set_dot_tmp+0x74>)
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_label_set_dot_tmp+0x40>
LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr");
14c28: 4b13 ldr r3, [pc, #76] ; (14c78 <lv_label_set_dot_tmp+0x78>)
14c2a: 9300 str r3, [sp, #0]
14c2c: 2003 movs r0, #3
14c2e: 4b13 ldr r3, [pc, #76] ; (14c7c <lv_label_set_dot_tmp+0x7c>)
14c30: 4913 ldr r1, [pc, #76] ; (14c80 <lv_label_set_dot_tmp+0x80>)
14c32: 4d14 ldr r5, [pc, #80] ; (14c84 <lv_label_set_dot_tmp+0x84>)
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 <lv_label_set_dot_tmp+0x88>)
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 <lv_label_set_dot_tmp+0x3c>
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 <lv_label_set_dot_tmp+0x88>)
14c64: 1d28 adds r0, r5, #4
14c66: 4798 blx r3
14c68: e7f4 b.n 14c54 <lv_label_set_dot_tmp+0x54>
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 <get_txt_coords>:
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 <get_txt_coords+0x54>)
_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 <get_txt_coords+0x58>
{
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 <lv_label_set_align>:
{
14ce8: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
14cea: 4b13 ldr r3, [pc, #76] ; (14d38 <lv_label_set_align+0x50>)
{
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 <lv_label_set_align+0x2a>
14cf6: 4b11 ldr r3, [pc, #68] ; (14d3c <lv_label_set_align+0x54>)
14cf8: 4911 ldr r1, [pc, #68] ; (14d40 <lv_label_set_align+0x58>)
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 <lv_label_set_align+0x5c>)
14d04: 47a8 blx r5
14d06: 4810 ldr r0, [pc, #64] ; (14d48 <lv_label_set_align+0x60>)
14d08: 4910 ldr r1, [pc, #64] ; (14d4c <lv_label_set_align+0x64>)
14d0a: 4622 mov r2, r4
14d0c: 4633 mov r3, r6
14d0e: 4788 blx r1
14d10: e7fe b.n 14d10 <lv_label_set_align+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
14d12: 4b0f ldr r3, [pc, #60] ; (14d50 <lv_label_set_align+0x68>)
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 <lv_label_set_align+0x4c>
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 <lv_label_set_align+0x6c>)
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 <lv_label_get_text>:
{
14d58: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
14d5a: 4b0c ldr r3, [pc, #48] ; (14d8c <lv_label_get_text+0x34>)
{
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 <lv_label_get_text+0x28>
14d64: 4b0a ldr r3, [pc, #40] ; (14d90 <lv_label_get_text+0x38>)
14d66: 490b ldr r1, [pc, #44] ; (14d94 <lv_label_get_text+0x3c>)
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 <lv_label_get_text+0x40>)
14d72: 47b0 blx r6
14d74: 4809 ldr r0, [pc, #36] ; (14d9c <lv_label_get_text+0x44>)
14d76: 490a ldr r1, [pc, #40] ; (14da0 <lv_label_get_text+0x48>)
14d78: 4622 mov r2, r4
14d7a: 462b mov r3, r5
14d7c: 4788 blx r1
14d7e: e7fe b.n 14d7e <lv_label_get_text+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
14d80: 4b08 ldr r3, [pc, #32] ; (14da4 <lv_label_get_text+0x4c>)
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 <lv_label_get_long_mode>:
{
14da8: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
14daa: 4b0d ldr r3, [pc, #52] ; (14de0 <lv_label_get_long_mode+0x38>)
{
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 <lv_label_get_long_mode+0x28>
14db4: 4b0b ldr r3, [pc, #44] ; (14de4 <lv_label_get_long_mode+0x3c>)
14db6: 490c ldr r1, [pc, #48] ; (14de8 <lv_label_get_long_mode+0x40>)
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 <lv_label_get_long_mode+0x44>)
14dc2: 47b0 blx r6
14dc4: 480a ldr r0, [pc, #40] ; (14df0 <lv_label_get_long_mode+0x48>)
14dc6: 490b ldr r1, [pc, #44] ; (14df4 <lv_label_get_long_mode+0x4c>)
14dc8: 4622 mov r2, r4
14dca: 462b mov r3, r5
14dcc: 4788 blx r1
14dce: e7fe b.n 14dce <lv_label_get_long_mode+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
14dd0: 4b09 ldr r3, [pc, #36] ; (14df8 <lv_label_get_long_mode+0x50>)
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 <lv_label_get_align>:
{
14dfc: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
14dfe: 4b0f ldr r3, [pc, #60] ; (14e3c <lv_label_get_align+0x40>)
{
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 <lv_label_get_align+0x28>
14e08: 4b0d ldr r3, [pc, #52] ; (14e40 <lv_label_get_align+0x44>)
14e0a: 490e ldr r1, [pc, #56] ; (14e44 <lv_label_get_align+0x48>)
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 <lv_label_get_align+0x4c>)
14e16: 47b0 blx r6
14e18: 480c ldr r0, [pc, #48] ; (14e4c <lv_label_get_align+0x50>)
14e1a: 490d ldr r1, [pc, #52] ; (14e50 <lv_label_get_align+0x54>)
14e1c: 4622 mov r2, r4
14e1e: 462b mov r3, r5
14e20: 4788 blx r1
14e22: e7fe b.n 14e22 <lv_label_get_align+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
14e24: 4b0b ldr r3, [pc, #44] ; (14e54 <lv_label_get_align+0x58>)
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 <lv_label_get_recolor>:
{
14e58: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
14e5a: 4b0d ldr r3, [pc, #52] ; (14e90 <lv_label_get_recolor+0x38>)
{
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 <lv_label_get_recolor+0x28>
14e64: 4b0b ldr r3, [pc, #44] ; (14e94 <lv_label_get_recolor+0x3c>)
14e66: 490c ldr r1, [pc, #48] ; (14e98 <lv_label_get_recolor+0x40>)
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 <lv_label_get_recolor+0x44>)
14e72: 47b0 blx r6
14e74: 480a ldr r0, [pc, #40] ; (14ea0 <lv_label_get_recolor+0x48>)
14e76: 490b ldr r1, [pc, #44] ; (14ea4 <lv_label_get_recolor+0x4c>)
14e78: 4622 mov r2, r4
14e7a: 462b mov r3, r5
14e7c: 4788 blx r1
14e7e: e7fe b.n 14e7e <lv_label_get_recolor+0x26>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
14e80: 4b09 ldr r3, [pc, #36] ; (14ea8 <lv_label_get_recolor+0x50>)
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 <lv_label_get_letter_on>:
{
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 <lv_label_get_letter_on+0x258>)
{
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 <lv_label_get_letter_on+0x32>
14ec2: 4b91 ldr r3, [pc, #580] ; (15108 <lv_label_get_letter_on+0x25c>)
14ec4: 4991 ldr r1, [pc, #580] ; (1510c <lv_label_get_letter_on+0x260>)
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 <lv_label_get_letter_on+0x264>)
14ed0: 47b0 blx r6
14ed2: 4890 ldr r0, [pc, #576] ; (15114 <lv_label_get_letter_on+0x268>)
14ed4: 4990 ldr r1, [pc, #576] ; (15118 <lv_label_get_letter_on+0x26c>)
14ed6: 4622 mov r2, r4
14ed8: 462b mov r3, r5
14eda: 4788 blx r1
14edc: e7fe b.n 14edc <lv_label_get_letter_on+0x30>
LV_ASSERT_NULL(pos);
14ede: 9802 ldr r0, [sp, #8]
14ee0: 47b0 blx r6
14ee2: 4605 mov r5, r0
14ee4: b968 cbnz r0, 14f02 <lv_label_get_letter_on+0x56>
14ee6: 4b88 ldr r3, [pc, #544] ; (15108 <lv_label_get_letter_on+0x25c>)
14ee8: 4988 ldr r1, [pc, #544] ; (1510c <lv_label_get_letter_on+0x260>)
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 <lv_label_get_letter_on+0x264>)
14ef4: 47a0 blx r4
14ef6: 9a02 ldr r2, [sp, #8]
14ef8: 4886 ldr r0, [pc, #536] ; (15114 <lv_label_get_letter_on+0x268>)
14efa: 4987 ldr r1, [pc, #540] ; (15118 <lv_label_get_letter_on+0x26c>)
14efc: 462b mov r3, r5
14efe: 4788 blx r1
14f00: e7fe b.n 14f00 <lv_label_get_letter_on+0x54>
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_label_get_letter_on+0x270>)
_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 <lv_label_get_letter_on+0x274>)
14f0a: 4798 blx r3
const char * txt = lv_label_get_text(label);
14f0c: 4b85 ldr r3, [pc, #532] ; (15124 <lv_label_get_letter_on+0x278>)
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 <lv_label_get_letter_on+0x27c>)
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 <lv_label_get_letter_on+0x280>)
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 <lv_label_get_letter_on+0x284>)
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 <lv_label_get_letter_on+0xe4>
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 <lv_label_get_letter_on+0x198>
if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT;
14f90: 2802 cmp r0, #2
14f92: d1f6 bne.n 14f82 <lv_label_get_letter_on+0xd6>
14f94: f046 0608 orr.w r6, r6, #8
14f98: e7f3 b.n 14f82 <lv_label_get_letter_on+0xd6>
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 <lv_label_get_letter_on+0x288>)
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 <lv_label_get_letter_on+0x18e>
letter = _lv_txt_encoded_prev(txt, &tmp);
14fbe: 4b5e ldr r3, [pc, #376] ; (15138 <lv_label_get_letter_on+0x28c>)
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 <lv_label_get_letter_on+0x12a>
14fce: f818 3005 ldrb.w r3, [r8, r5]
14fd2: b903 cbnz r3, 14fd6 <lv_label_get_letter_on+0x12a>
14fd4: 3501 adds r5, #1
if(align == LV_LABEL_ALIGN_CENTER) {
14fd6: 2c01 cmp r4, #1
14fd8: d13c bne.n 15054 <lv_label_get_letter_on+0x1a8>
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 <lv_label_get_letter_on+0x290>)
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 <lv_label_get_letter_on+0x248>
logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i);
15018: 4d49 ldr r5, [pc, #292] ; (15140 <lv_label_get_letter_on+0x294>)
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 <lv_label_get_letter_on+0xee>
15050: 463d mov r5, r7
15052: e7c0 b.n 14fd6 <lv_label_get_letter_on+0x12a>
else if(align == LV_LABEL_ALIGN_RIGHT) {
15054: 2c02 cmp r4, #2
15056: d110 bne.n 1507a <lv_label_get_letter_on+0x1ce>
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 <lv_label_get_letter_on+0x290>)
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_label_get_letter_on+0x15e>
lv_coord_t x = 0;
1507a: 2400 movs r4, #0
1507c: e7c6 b.n 1500c <lv_label_get_letter_on+0x160>
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 <lv_label_get_letter_on+0x298>)
15088: f10d 001b add.w r0, sp, #27
1508c: 4798 blx r3
1508e: 9a05 ldr r2, [sp, #20]
15090: b198 cbz r0, 150ba <lv_label_get_letter_on+0x20e>
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 <lv_label_get_letter_on+0x16c>
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 <lv_label_get_letter_on+0x1d2>
x += lv_font_get_glyph_width(font, letter, letter_next);
150ba: 4b23 ldr r3, [pc, #140] ; (15148 <lv_label_get_letter_on+0x29c>)
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 <lv_label_get_letter_on+0x22c>
i = i_act;
150d2: 9b03 ldr r3, [sp, #12]
150d4: 9307 str r3, [sp, #28]
break;
150d6: e79f b.n 15018 <lv_label_get_letter_on+0x16c>
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 <lv_label_get_letter_on+0x226>
150e0: f818 2002 ldrb.w r2, [r8, r2]
150e4: 2a00 cmp r2, #0
150e6: d0f4 beq.n 150d2 <lv_label_get_letter_on+0x226>
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 <lv_label_get_letter_on+0x1e6>
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 <lv_label_get_letter_on+0x2a0>
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
150fe: 9304 str r3, [sp, #16]
15100: e7c7 b.n 15092 <lv_label_get_letter_on+0x1e6>
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 <lv_label_refr_text>:
{
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 <lv_label_refr_text+0x23c>)
{
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 <lv_label_refr_text+0xda>
get_txt_coords(label, &txt_coords);
15164: 4b8a ldr r3, [pc, #552] ; (15390 <lv_label_refr_text+0x240>)
_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 <lv_label_refr_text+0x270>
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 <lv_label_refr_text+0x244>)
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 <lv_label_refr_text+0x274>
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_label_refr_text+0xe0>
_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 <lv_label_refr_text+0x248>)
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 <lv_label_refr_text+0x24c>)
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 <lv_label_refr_text+0xd4>
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 <lv_label_refr_text+0x250>)
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 <lv_label_refr_text+0x254>)
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_label_refr_text+0x228>
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_label_refr_text+0x268>
lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end));
15294: 4b44 ldr r3, [pc, #272] ; (153a8 <lv_label_refr_text+0x258>)
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 <lv_label_refr_text+0x25c>)
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 <lv_label_refr_text+0x224>
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 <lv_label_refr_text+0x19a>
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 <lv_label_refr_text+0x19a>
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 <lv_label_refr_text+0x260>)
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 <lv_label_refr_text+0x354>
1530c: 2f00 cmp r7, #0
1530e: f040 80c9 bne.w 154a4 <lv_label_refr_text+0x354>
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_label_refr_text+0x264>)
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 <lv_label_refr_text+0x258>)
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 <lv_label_refr_text+0x25c>)
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 <lv_label_refr_text+0x236>
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 <lv_label_refr_text+0x21c>
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 <lv_label_refr_text+0x21c>
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 <lv_label_refr_text+0x260>)
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 <lv_label_refr_text+0xd4>
int32_t act_time = 0;
15374: 4603 mov r3, r0
15376: e7a3 b.n 152c0 <lv_label_refr_text+0x170>
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
15378: 490f ldr r1, [pc, #60] ; (153b8 <lv_label_refr_text+0x268>)
1537a: 4b10 ldr r3, [pc, #64] ; (153bc <lv_label_refr_text+0x26c>)
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 <lv_label_refr_text+0x1a2>
int32_t act_time = 0;
15386: 463b mov r3, r7
15388: e7db b.n 15342 <lv_label_refr_text+0x1f2>
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 <lv_label_refr_text+0x4a4>)
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_label_refr_text+0x346>
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 <lv_label_refr_text+0x4a8>)
a->exec_cb = exec_cb;
153f4: 4f81 ldr r7, [pc, #516] ; (155fc <lv_label_refr_text+0x4ac>)
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 <lv_label_refr_text+0x4b0>)
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 <lv_label_refr_text+0x4b4>)
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 <lv_label_refr_text+0x2d6>
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 <lv_label_refr_text+0x4b8>)
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 <lv_label_refr_text+0x354>
15458: bb27 cbnz r7, 154a4 <lv_label_refr_text+0x354>
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_label_refr_text+0x4bc>)
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 <lv_label_refr_text+0x4b0>)
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 <lv_label_refr_text+0x4b4>)
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 <lv_label_refr_text+0x330>
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_label_refr_text+0x21c>
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
15496: 4959 ldr r1, [pc, #356] ; (155fc <lv_label_refr_text+0x4ac>)
15498: 4b5d ldr r3, [pc, #372] ; (15610 <lv_label_refr_text+0x4c0>)
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_label_refr_text+0x2f2>
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
154a4: 4b5a ldr r3, [pc, #360] ; (15610 <lv_label_refr_text+0x4c0>)
154a6: 4959 ldr r1, [pc, #356] ; (1560c <lv_label_refr_text+0x4bc>)
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 <lv_label_refr_text+0xd4>
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 <lv_label_refr_text+0x380>
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 <lv_label_refr_text+0xd4>
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 <lv_label_refr_text+0x4c4>)
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 <lv_label_refr_text+0x378>
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 <lv_label_refr_text+0x4a8>)
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 <lv_label_refr_text+0x4e0>
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 <lv_label_refr_text+0x4c8>)
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 <lv_label_refr_text+0x4cc>)
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 <lv_label_refr_text+0x4d0>)
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 <lv_label_refr_text+0x470>
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 <lv_label_refr_text+0x4d4>)
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 <lv_label_refr_text+0x41e>
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 <lv_label_refr_text+0x4d8>)
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 <lv_label_refr_text+0xd4>
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 <lv_label_refr_text+0xd4>
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_label_refr_text+0x404>
_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 <lv_label_refr_text+0x4dc>)
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 <lv_label_refr_text+0xd4>
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 <lv_label_set_text>:
{
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 <lv_label_set_text+0x108>)
{
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 <lv_label_set_text+0x2a>
15644: 4b3e ldr r3, [pc, #248] ; (15740 <lv_label_set_text+0x10c>)
15646: 493f ldr r1, [pc, #252] ; (15744 <lv_label_set_text+0x110>)
15648: 9300 str r3, [sp, #0]
1564a: 22b8 movs r2, #184 ; 0xb8
1564c: 2003 movs r0, #3
1564e: 4d3e ldr r5, [pc, #248] ; (15748 <lv_label_set_text+0x114>)
15650: 47a8 blx r5
15652: 483e ldr r0, [pc, #248] ; (1574c <lv_label_set_text+0x118>)
15654: 493e ldr r1, [pc, #248] ; (15750 <lv_label_set_text+0x11c>)
15656: 4632 mov r2, r6
15658: 4623 mov r3, r4
1565a: 4788 blx r1
1565c: e7fe b.n 1565c <lv_label_set_text+0x28>
lv_obj_invalidate(label);
1565e: 4b3d ldr r3, [pc, #244] ; (15754 <lv_label_set_text+0x120>)
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 <lv_label_set_text+0x124>)
15666: 4630 mov r0, r6
15668: 4798 blx r3
1566a: 4604 mov r4, r0
if(text == NULL) {
1566c: b92d cbnz r5, 1567a <lv_label_set_text+0x46>
lv_label_refr_text(label);
1566e: 4b3b ldr r3, [pc, #236] ; (1575c <lv_label_set_text+0x128>)
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 <lv_label_set_text+0x68>
15682: 4b2f ldr r3, [pc, #188] ; (15740 <lv_label_set_text+0x10c>)
15684: 492f ldr r1, [pc, #188] ; (15744 <lv_label_set_text+0x110>)
15686: 9300 str r3, [sp, #0]
15688: 22c4 movs r2, #196 ; 0xc4
1568a: 2003 movs r0, #3
1568c: 4c2e ldr r4, [pc, #184] ; (15748 <lv_label_set_text+0x114>)
1568e: 47a0 blx r4
15690: 482e ldr r0, [pc, #184] ; (1574c <lv_label_set_text+0x118>)
15692: 492f ldr r1, [pc, #188] ; (15750 <lv_label_set_text+0x11c>)
15694: 462a mov r2, r5
15696: 4643 mov r3, r8
15698: 4788 blx r1
1569a: e7fe b.n 1569a <lv_label_set_text+0x66>
if(ext->text == text && ext->static_txt == 0) {
1569c: 6820 ldr r0, [r4, #0]
1569e: f8df 90d4 ldr.w r9, [pc, #212] ; 15774 <lv_label_set_text+0x140>
156a2: 4285 cmp r5, r0
156a4: d11f bne.n 156e6 <lv_label_set_text+0xb2>
156a6: 7c23 ldrb r3, [r4, #16]
156a8: 071b lsls r3, r3, #28
156aa: d425 bmi.n 156f8 <lv_label_set_text+0xc4>
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 <lv_label_set_text+0x12c>)
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 <lv_label_set_text+0xa6>
156c0: 4b1f ldr r3, [pc, #124] ; (15740 <lv_label_set_text+0x10c>)
156c2: 4920 ldr r1, [pc, #128] ; (15744 <lv_label_set_text+0x110>)
156c4: 9300 str r3, [sp, #0]
156c6: 22d5 movs r2, #213 ; 0xd5
156c8: 2003 movs r0, #3
156ca: 4e1f ldr r6, [pc, #124] ; (15748 <lv_label_set_text+0x114>)
156cc: 47b0 blx r6
156ce: 6822 ldr r2, [r4, #0]
156d0: 4824 ldr r0, [pc, #144] ; (15764 <lv_label_set_text+0x130>)
156d2: 491f ldr r1, [pc, #124] ; (15750 <lv_label_set_text+0x11c>)
156d4: 462b mov r3, r5
156d6: 4788 blx r1
156d8: e7fe b.n 156d8 <lv_label_set_text+0xa4>
if(ext->text == NULL) return;
156da: 6823 ldr r3, [r4, #0]
156dc: 2b00 cmp r3, #0
156de: d1c6 bne.n 1566e <lv_label_set_text+0x3a>
}
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 <lv_label_set_text+0xc4>
156e8: 7c23 ldrb r3, [r4, #16]
156ea: f013 0808 ands.w r8, r3, #8
156ee: d103 bne.n 156f8 <lv_label_set_text+0xc4>
lv_mem_free(ext->text);
156f0: 4b1d ldr r3, [pc, #116] ; (15768 <lv_label_set_text+0x134>)
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 <lv_label_set_text+0x138>)
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 <lv_label_set_text+0xf0>
1570a: 4b0d ldr r3, [pc, #52] ; (15740 <lv_label_set_text+0x10c>)
1570c: 490d ldr r1, [pc, #52] ; (15744 <lv_label_set_text+0x110>)
1570e: 9300 str r3, [sp, #0]
15710: 22ee movs r2, #238 ; 0xee
15712: 2003 movs r0, #3
15714: 4d0c ldr r5, [pc, #48] ; (15748 <lv_label_set_text+0x114>)
15716: 47a8 blx r5
15718: 6822 ldr r2, [r4, #0]
1571a: 4812 ldr r0, [pc, #72] ; (15764 <lv_label_set_text+0x130>)
1571c: 490c ldr r1, [pc, #48] ; (15750 <lv_label_set_text+0x11c>)
1571e: 463b mov r3, r7
15720: 4788 blx r1
15722: e7fe b.n 15722 <lv_label_set_text+0xee>
if(ext->text == NULL) return;
15724: 6820 ldr r0, [r4, #0]
15726: 2800 cmp r0, #0
15728: d0da beq.n 156e0 <lv_label_set_text+0xac>
1572a: 4b11 ldr r3, [pc, #68] ; (15770 <lv_label_set_text+0x13c>)
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 <lv_label_set_text+0x3a>
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 <lv_label_set_text_static>:
{
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 <lv_label_set_text_static+0x5c>)
{
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 <lv_label_set_text_static+0x2a>
15786: 4b14 ldr r3, [pc, #80] ; (157d8 <lv_label_set_text_static+0x60>)
15788: 4914 ldr r1, [pc, #80] ; (157dc <lv_label_set_text_static+0x64>)
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 <lv_label_set_text_static+0x68>)
15794: 47b0 blx r6
15796: 4813 ldr r0, [pc, #76] ; (157e4 <lv_label_set_text_static+0x6c>)
15798: 4913 ldr r1, [pc, #76] ; (157e8 <lv_label_set_text_static+0x70>)
1579a: 462a mov r2, r5
1579c: 4623 mov r3, r4
1579e: 4788 blx r1
157a0: e7fe b.n 157a0 <lv_label_set_text_static+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
157a2: 4b12 ldr r3, [pc, #72] ; (157ec <lv_label_set_text_static+0x74>)
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 <lv_label_set_text_static+0x44>
157b2: 6800 ldr r0, [r0, #0]
157b4: b110 cbz r0, 157bc <lv_label_set_text_static+0x44>
lv_mem_free(ext->text);
157b6: 4b0e ldr r3, [pc, #56] ; (157f0 <lv_label_set_text_static+0x78>)
157b8: 4798 blx r3
ext->text = NULL;
157ba: 6027 str r7, [r4, #0]
if(text != NULL) {
157bc: b126 cbz r6, 157c8 <lv_label_set_text_static+0x50>
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 <lv_label_set_text_static+0x7c>)
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 <lv_label_set_long_mode>:
{
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 <lv_label_set_long_mode+0x90>)
{
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 <lv_label_set_long_mode+0x2a>
15806: 4b21 ldr r3, [pc, #132] ; (1588c <lv_label_set_long_mode+0x94>)
15808: 4921 ldr r1, [pc, #132] ; (15890 <lv_label_set_long_mode+0x98>)
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 <lv_label_set_long_mode+0x9c>)
15814: 47b0 blx r6
15816: 4820 ldr r0, [pc, #128] ; (15898 <lv_label_set_long_mode+0xa0>)
15818: 4920 ldr r1, [pc, #128] ; (1589c <lv_label_set_long_mode+0xa4>)
1581a: 4622 mov r2, r4
1581c: 462b mov r3, r5
1581e: 4788 blx r1
15820: e7fe b.n 15820 <lv_label_set_long_mode+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
15822: 4b1f ldr r3, [pc, #124] ; (158a0 <lv_label_set_long_mode+0xa8>)
lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x);
15824: 4f1f ldr r7, [pc, #124] ; (158a4 <lv_label_set_long_mode+0xac>)
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_set_long_mode+0xb0>)
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 <lv_label_set_long_mode+0xb4>)
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 <lv_label_set_long_mode+0xb8>)
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 <lv_label_set_long_mode+0xbc>)
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 <lv_label_set_long_mode+0x7a>
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_set_long_mode+0x7a>
lv_label_revert_dots(label);
1586c: 4b12 ldr r3, [pc, #72] ; (158b8 <lv_label_set_long_mode+0xc0>)
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 <lv_label_set_long_mode+0xc4>)
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 <lv_label_set_recolor>:
{
158c0: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
158c2: 4b13 ldr r3, [pc, #76] ; (15910 <lv_label_set_recolor+0x50>)
{
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 <lv_label_set_recolor+0x2a>
158ce: 4b11 ldr r3, [pc, #68] ; (15914 <lv_label_set_recolor+0x54>)
158d0: 4911 ldr r1, [pc, #68] ; (15918 <lv_label_set_recolor+0x58>)
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 <lv_label_set_recolor+0x5c>)
158dc: 47a8 blx r5
158de: 4810 ldr r0, [pc, #64] ; (15920 <lv_label_set_recolor+0x60>)
158e0: 4910 ldr r1, [pc, #64] ; (15924 <lv_label_set_recolor+0x64>)
158e2: 4622 mov r2, r4
158e4: 4633 mov r3, r6
158e6: 4788 blx r1
158e8: e7fe b.n 158e8 <lv_label_set_recolor+0x28>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
158ea: 4b0f ldr r3, [pc, #60] ; (15928 <lv_label_set_recolor+0x68>)
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 <lv_label_set_recolor+0x4c>
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 <lv_label_set_recolor+0x6c>)
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 <lv_label_create>:
{
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_label_create+0x1cc>)
LV_ASSERT_MEM(new_label);
15936: f8df 8248 ldr.w r8, [pc, #584] ; 15b80 <lv_label_create+0x250>
{
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 <lv_label_create+0x32>
15948: 4b6d ldr r3, [pc, #436] ; (15b00 <lv_label_create+0x1d0>)
1594a: 496e ldr r1, [pc, #440] ; (15b04 <lv_label_create+0x1d4>)
1594c: 9300 str r3, [sp, #0]
1594e: 2254 movs r2, #84 ; 0x54
15950: 2003 movs r0, #3
15952: 4e6d ldr r6, [pc, #436] ; (15b08 <lv_label_create+0x1d8>)
15954: 47b0 blx r6
15956: 486d ldr r0, [pc, #436] ; (15b0c <lv_label_create+0x1dc>)
15958: 496d ldr r1, [pc, #436] ; (15b10 <lv_label_create+0x1e0>)
1595a: 462a mov r2, r5
1595c: 4623 mov r3, r4
1595e: 4788 blx r1
15960: e7fe b.n 15960 <lv_label_create+0x30>
if(new_label == NULL) return NULL;
15962: b925 cbnz r5, 1596e <lv_label_create+0x3e>
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 <lv_label_create+0x1e4>)
15970: 6823 ldr r3, [r4, #0]
15972: b91b cbnz r3, 1597c <lv_label_create+0x4c>
15974: 4b68 ldr r3, [pc, #416] ; (15b18 <lv_label_create+0x1e8>)
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_create+0x1ec>)
lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label);
1597e: 4e68 ldr r6, [pc, #416] ; (15b20 <lv_label_create+0x1f0>)
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 <lv_label_create+0x7c>
15992: 4b5b ldr r3, [pc, #364] ; (15b00 <lv_label_create+0x1d0>)
15994: 495b ldr r1, [pc, #364] ; (15b04 <lv_label_create+0x1d4>)
15996: 9300 str r3, [sp, #0]
15998: 225d movs r2, #93 ; 0x5d
1599a: 2003 movs r0, #3
1599c: 4d5a ldr r5, [pc, #360] ; (15b08 <lv_label_create+0x1d8>)
1599e: 47a8 blx r5
159a0: 485a ldr r0, [pc, #360] ; (15b0c <lv_label_create+0x1dc>)
159a2: 495b ldr r1, [pc, #364] ; (15b10 <lv_label_create+0x1e0>)
159a4: 4622 mov r2, r4
159a6: 464b mov r3, r9
159a8: 4788 blx r1
159aa: e7fe b.n 159aa <lv_label_create+0x7a>
if(ext == NULL) {
159ac: b91c cbnz r4, 159b6 <lv_label_create+0x86>
lv_obj_del(new_label);
159ae: 4b5d ldr r3, [pc, #372] ; (15b24 <lv_label_create+0x1f4>)
159b0: 4628 mov r0, r5
159b2: 4798 blx r3
return NULL;
159b4: e7d7 b.n 15966 <lv_label_create+0x36>
ext->dot_end = LV_LABEL_DOT_END_INV;
159b6: 4a5c ldr r2, [pc, #368] ; (15b28 <lv_label_create+0x1f8>)
lv_obj_set_design_cb(new_label, lv_label_design);
159b8: 495c ldr r1, [pc, #368] ; (15b2c <lv_label_create+0x1fc>)
159ba: f8df 91c8 ldr.w r9, [pc, #456] ; 15b84 <lv_label_create+0x254>
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 <lv_label_create+0x200>)
159dc: 4798 blx r3
lv_obj_set_signal_cb(new_label, lv_label_signal);
159de: 4955 ldr r1, [pc, #340] ; (15b34 <lv_label_create+0x204>)
159e0: 4b55 ldr r3, [pc, #340] ; (15b38 <lv_label_create+0x208>)
159e2: 4628 mov r0, r5
159e4: 4798 blx r3
if(copy == NULL) {
159e6: b9c7 cbnz r7, 15a1a <lv_label_create+0xea>
lv_theme_apply(new_label, LV_THEME_LABEL);
159e8: 4b54 ldr r3, [pc, #336] ; (15b3c <lv_label_create+0x20c>)
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 <lv_label_create+0x210>)
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 <lv_label_create+0x214>)
15a00: 4b51 ldr r3, [pc, #324] ; (15b48 <lv_label_create+0x218>)
15a02: 4628 mov r0, r5
15a04: 4798 blx r3
LV_LOG_INFO("label created");
15a06: 4b51 ldr r3, [pc, #324] ; (15b4c <lv_label_create+0x21c>)
15a08: 4c3f ldr r4, [pc, #252] ; (15b08 <lv_label_create+0x1d8>)
15a0a: 9300 str r3, [sp, #0]
15a0c: 493d ldr r1, [pc, #244] ; (15b04 <lv_label_create+0x1d4>)
15a0e: 4b3c ldr r3, [pc, #240] ; (15b00 <lv_label_create+0x1d0>)
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_create+0x36>
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_create+0x220>)
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 <lv_label_create+0x224>)
15a2e: 4638 mov r0, r7
15a30: 4798 blx r3
15a32: 4b49 ldr r3, [pc, #292] ; (15b58 <lv_label_create+0x228>)
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 <lv_label_create+0x22c>)
15a3c: 4638 mov r0, r7
15a3e: 4798 blx r3
15a40: 4b47 ldr r3, [pc, #284] ; (15b60 <lv_label_create+0x230>)
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 <lv_label_create+0x234>)
if(copy_ext->static_txt == 0)
15a52: d123 bne.n 15a9c <lv_label_create+0x16c>
lv_label_set_text(new_label, lv_label_get_text(copy));
15a54: 4798 blx r3
15a56: 4b3c ldr r3, [pc, #240] ; (15b48 <lv_label_create+0x218>)
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 <lv_label_create+0x190>
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 <lv_label_create+0x258>
15a6e: 6827 ldr r7, [r4, #0]
15a70: 47c8 blx r9
15a72: 4b3d ldr r3, [pc, #244] ; (15b68 <lv_label_create+0x238>)
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 <lv_label_create+0x176>
15a82: 4b1f ldr r3, [pc, #124] ; (15b00 <lv_label_create+0x1d0>)
15a84: 491f ldr r1, [pc, #124] ; (15b04 <lv_label_create+0x1d4>)
15a86: 9300 str r3, [sp, #0]
15a88: 2295 movs r2, #149 ; 0x95
15a8a: 2003 movs r0, #3
15a8c: 4d1e ldr r5, [pc, #120] ; (15b08 <lv_label_create+0x1d8>)
15a8e: 47a8 blx r5
15a90: 6822 ldr r2, [r4, #0]
15a92: 481e ldr r0, [pc, #120] ; (15b0c <lv_label_create+0x1dc>)
15a94: 491e ldr r1, [pc, #120] ; (15b10 <lv_label_create+0x1e0>)
15a96: 463b mov r3, r7
15a98: 4788 blx r1
15a9a: e7fe b.n 15a9a <lv_label_create+0x16a>
lv_label_set_text_static(new_label, lv_label_get_text(copy));
15a9c: 4798 blx r3
15a9e: 4b33 ldr r3, [pc, #204] ; (15b6c <lv_label_create+0x23c>)
15aa0: 4601 mov r1, r0
15aa2: 4628 mov r0, r5
15aa4: e7da b.n 15a5c <lv_label_create+0x12c>
if(ext->text == NULL) return NULL;
15aa6: 6827 ldr r7, [r4, #0]
15aa8: 2f00 cmp r7, #0
15aaa: f43f af5b beq.w 15964 <lv_label_create+0x34>
_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 <lv_label_create+0x240>)
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 <lv_label_create+0x1c0>
15ac6: 6870 ldr r0, [r6, #4]
15ac8: b190 cbz r0, 15af0 <lv_label_create+0x1c0>
uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr);
15aca: 4b2a ldr r3, [pc, #168] ; (15b74 <lv_label_create+0x244>)
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 <lv_label_create+0x248>)
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 <lv_label_create+0x24c>)
15aea: 4628 mov r0, r5
15aec: 4798 blx r3
15aee: e78a b.n 15a06 <lv_label_create+0xd6>
_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 <lv_label_create+0x240>)
15af4: 18b1 adds r1, r6, r2
15af6: 18a0 adds r0, r4, r2
15af8: 4798 blx r3
15afa: e7ed b.n 15ad8 <lv_label_create+0x1a8>
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 <lv_label_signal>:
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 <lv_label_signal+0x2c>
switch(type) {
15b9a: 7813 ldrb r3, [r2, #0]
15b9c: b133 cbz r3, 15bac <lv_label_signal+0x20>
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 <lv_label_signal+0xac>)
}
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 <lv_label_signal+0xac>)
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 <lv_label_signal+0x26>
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 <lv_label_signal+0x48>
15bc8: 4628 mov r0, r5
15bca: 491c ldr r1, [pc, #112] ; (15c3c <lv_label_signal+0xb0>)
15bcc: 4b1c ldr r3, [pc, #112] ; (15c40 <lv_label_signal+0xb4>)
}
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 <lv_label_signal+0xb8>)
15bd6: 4620 mov r0, r4
15bd8: 4798 blx r3
15bda: 4680 mov r8, r0
if(sign == LV_SIGNAL_CLEANUP) {
15bdc: b966 cbnz r6, 15bf8 <lv_label_signal+0x6c>
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_label_signal+0x64>
lv_mem_free(ext->text);
15be6: 6800 ldr r0, [r0, #0]
15be8: 4b17 ldr r3, [pc, #92] ; (15c48 <lv_label_signal+0xbc>)
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 <lv_label_signal+0xc0>)
15bf2: 4620 mov r0, r4
lv_label_refr_text(label);
15bf4: 4798 blx r3
15bf6: e7dc b.n 15bb2 <lv_label_signal+0x26>
else if(sign == LV_SIGNAL_STYLE_CHG) {
15bf8: 2e04 cmp r6, #4
15bfa: d105 bne.n 15c08 <lv_label_signal+0x7c>
lv_label_revert_dots(label);
15bfc: 4b14 ldr r3, [pc, #80] ; (15c50 <lv_label_signal+0xc4>)
15bfe: 4620 mov r0, r4
15c00: 4798 blx r3
lv_label_refr_text(label);
15c02: 4b14 ldr r3, [pc, #80] ; (15c54 <lv_label_signal+0xc8>)
15c04: 4620 mov r0, r4
15c06: e7f5 b.n 15bf4 <lv_label_signal+0x68>
else if(sign == LV_SIGNAL_COORD_CHG) {
15c08: 2e02 cmp r6, #2
15c0a: d1d2 bne.n 15bb2 <lv_label_signal+0x26>
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 <lv_label_signal+0x70>
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 <lv_label_signal+0x70>
15c34: e7bd b.n 15bb2 <lv_label_signal+0x26>
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 <lv_label_get_text_sel_start>:
{
15c58: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
15c5a: 4b0b ldr r3, [pc, #44] ; (15c88 <lv_label_get_text_sel_start+0x30>)
{
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 <lv_label_get_text_sel_start+0x28>
15c64: 4b09 ldr r3, [pc, #36] ; (15c8c <lv_label_get_text_sel_start+0x34>)
15c66: 490a ldr r1, [pc, #40] ; (15c90 <lv_label_get_text_sel_start+0x38>)
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 <lv_label_get_text_sel_start+0x3c>)
15c72: 47b0 blx r6
15c74: 4808 ldr r0, [pc, #32] ; (15c98 <lv_label_get_text_sel_start+0x40>)
15c76: 4909 ldr r1, [pc, #36] ; (15c9c <lv_label_get_text_sel_start+0x44>)
15c78: 462a mov r2, r5
15c7a: 4623 mov r3, r4
15c7c: 4788 blx r1
15c7e: e7fe b.n 15c7e <lv_label_get_text_sel_start+0x26>
}
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 <lv_label_get_text_sel_end>:
{
15ca0: b573 push {r0, r1, r4, r5, r6, lr}
LV_ASSERT_OBJ(label, LV_OBJX_NAME);
15ca2: 4b0b ldr r3, [pc, #44] ; (15cd0 <lv_label_get_text_sel_end+0x30>)
{
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 <lv_label_get_text_sel_end+0x28>
15cac: 4b09 ldr r3, [pc, #36] ; (15cd4 <lv_label_get_text_sel_end+0x34>)
15cae: 490a ldr r1, [pc, #40] ; (15cd8 <lv_label_get_text_sel_end+0x38>)
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 <lv_label_get_text_sel_end+0x3c>)
15cba: 47b0 blx r6
15cbc: 4808 ldr r0, [pc, #32] ; (15ce0 <lv_label_get_text_sel_end+0x40>)
15cbe: 4909 ldr r1, [pc, #36] ; (15ce4 <lv_label_get_text_sel_end+0x44>)
15cc0: 462a mov r2, r5
15cc2: 4623 mov r3, r4
15cc4: 4788 blx r1
15cc6: e7fe b.n 15cc6 <lv_label_get_text_sel_end+0x26>
}
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 <lv_label_design>:
{
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 <lv_label_design+0x206>
else if(mode == LV_DESIGN_DRAW_MAIN) {
15cfa: 2a00 cmp r2, #0
15cfc: f040 8100 bne.w 15f00 <lv_label_design+0x218>
lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
15d00: 4b80 ldr r3, [pc, #512] ; (15f04 <lv_label_design+0x21c>)
_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 <lv_label_design+0x254>
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 <lv_label_design+0x220>)
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 <lv_label_design+0x224>)
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 <lv_label_design+0x228>)
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 <lv_label_design+0x22c>)
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 <lv_label_design+0x230>)
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_design+0x206>
lv_label_align_t align = lv_label_get_align(label);
15d84: 4b65 ldr r3, [pc, #404] ; (15f1c <lv_label_design+0x234>)
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 <lv_label_design+0x20e>
15da6: f046 0604 orr.w r6, r6, #4
lv_draw_label_dsc_init(&label_draw_dsc);
15daa: 4b5d ldr r3, [pc, #372] ; (15f20 <lv_label_design+0x238>)
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 <lv_label_design+0x23c>)
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 <lv_label_design+0x240>)
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 <lv_label_design+0x244>)
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 <lv_label_design+0x14c>
(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 <lv_label_design+0x10e>
(ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) {
15df2: 2b20 cmp r3, #32
15df4: d11e bne.n 15e34 <lv_label_design+0x14c>
_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 <lv_label_design+0x248>)
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 <lv_label_design+0x250>
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_label_design+0x206>
_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 <lv_label_design+0x248>)
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 <lv_label_design+0x1cc>
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 <lv_label_design+0x24c>)
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 <lv_label_design+0x206>
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 <lv_label_design+0x250>)
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 <lv_label_design+0xc2>
return LV_DESIGN_RES_OK;
15f00: 2700 movs r7, #0
15f02: e7f4 b.n 15eee <lv_label_design+0x206>
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 <memcmp>:
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 <memcmp+0xe>
1629e: 2000 movs r0, #0
162a0: e005 b.n 162ae <memcmp+0x1a>
162a2: 7803 ldrb r3, [r0, #0]
162a4: f811 4f01 ldrb.w r4, [r1, #1]!
162a8: 42a3 cmp r3, r4
162aa: d001 beq.n 162b0 <memcmp+0x1c>
162ac: 1b18 subs r0, r3, r4
162ae: bd10 pop {r4, pc}
162b0: 3001 adds r0, #1
162b2: e7f2 b.n 1629a <memcmp+0x6>
000162b4 <memcpy>:
162b4: 440a add r2, r1
162b6: 4291 cmp r1, r2
162b8: f100 33ff add.w r3, r0, #4294967295 ; 0xffffffff
162bc: d100 bne.n 162c0 <memcpy+0xc>
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 <memcpy+0xe>
162ce: bd10 pop {r4, pc}
000162d0 <memmove>:
162d0: 4288 cmp r0, r1
162d2: b510 push {r4, lr}
162d4: eb01 0402 add.w r4, r1, r2
162d8: d902 bls.n 162e0 <memmove+0x10>
162da: 4284 cmp r4, r0
162dc: 4623 mov r3, r4
162de: d807 bhi.n 162f0 <memmove+0x20>
162e0: 1e43 subs r3, r0, #1
162e2: 42a1 cmp r1, r4
162e4: d008 beq.n 162f8 <memmove+0x28>
162e6: f811 2b01 ldrb.w r2, [r1], #1
162ea: f803 2f01 strb.w r2, [r3, #1]!
162ee: e7f8 b.n 162e2 <memmove+0x12>
162f0: 4402 add r2, r0
162f2: 4601 mov r1, r0
162f4: 428a cmp r2, r1
162f6: d100 bne.n 162fa <memmove+0x2a>
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 <memmove+0x24>
00016304 <memset>:
16304: 4402 add r2, r0
16306: 4603 mov r3, r0
16308: 4293 cmp r3, r2
1630a: d100 bne.n 1630e <memset+0xa>
1630c: 4770 bx lr
1630e: f803 1b01 strb.w r1, [r3], #1
16312: e7f9 b.n 16308 <memset+0x4>
00016314 <strcmp>:
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 <strcmp>
16324: 1ad0 subs r0, r2, r3
16326: 4770 bx lr
00016328 <strcpy>:
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 <strcpy+0x2>
16336: 4770 bx lr
00016338 <strlen>:
16338: 4603 mov r3, r0
1633a: f813 2b01 ldrb.w r2, [r3], #1
1633e: 2a00 cmp r2, #0
16340: d1fb bne.n 1633a <strlen+0x2>
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 <sercomspi_regs>:
...
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 <hornet>:
164a8: 1662e40a 0000855b 000164b4 ..b.[....d..
000164b4 <hornet_map>:
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 }}<LRR....y..44.
175b4: 48697976 44480000 3648000c 70704836 vyiH..HD..H66Hpp
175c4: cbcb4848 69696969 4e126915 d1642be9 HH..iiii.i.N.+d.
175d4: af132041 41d7c50f 3113e8c5 79767679 A .....A...1yvvy
175e4: e2767979 7e1111e2 e2113434 96c16602 yyv....~44...f..
175f4: c1c1c31a 79137671 340d0d76 315f5f40 ....qv.yv..4@__1
17604: 562e3480 568f6060 5e406fc1 76767676 .4.V``.V.o@^vvvv
17614: 3a55410d f956c186 e026ccf9 ba997bbc .AU:..V...&..{..
17624: 7bbc0f65 bcc6c6e0 5e75dae0 b3206419 e..{......u^.d .
17634: a70427d7 8d8d86c1 79670e26 6094c813 .'......&.gy...`
17644: 55394b5b e75c554b c0a78399 2121f0ba [K9UKU\.......!!
17654: 7d7d3cd5 a0a0a005 339f9fa0 4c7df233 .<}}.......33.}L
17664: 337d5252 74c8c876 70c87468 48007048 RR}3v..tht.pHp.H
17674: 7048e91e 70483636 cb484870 6969cbcb ..Hp66HppHH...ii
17684: 69690c69 b31ee969 b1c5c5c5 d713c593 i.iii...........
17694: e8c54141 76763113 e2797979 11e2e2e2 AA...1vvyyy.....
176a4: 1134347e c19434e2 c1421afe 1376acc1 ~44..4....B...v.
176b4: 0dc87979 31114034 64e25e31 60968f42 yy..4@.11^.dB..`
176c4: 71c1c1c3 76767634 55e80d76 56c1a73a ...q4vvvv..U:..V
176d4: 55cc04f9 babaadbc e020afb6 c6c6deb8 ...U...... .....
176e4: 7550f4bc 2064195f 8d17e8b3 8da75683 ..Pu_.d .....V..
176f4: 130e4b92 60643167 39bdc56a c29e5555 .K..g1d`j..9UU..
17704: a7a7c0ba a285b6c2 35057da2 9f9f9f35 .........}.55...
17714: dcc59f9f 33333333 523cb19f c82bf2e3 ....3333..<R..+.
17724: 74597477 00000070 3669cb00 70364870 wtYtp.....i6pH6p
17734: 48487070 e91e69cb 690c6969 791e0c69 ppHH.i..ii.ii..y
17744: 9325c5d7 e8d7c58e c541c5d7 3131e8d7 ..%.......A...11
17754: 79797979 e2e2e276 34347e11 2e34e240 yyyyv....~44@.4.
17764: 601afe56 d1c3c1c1 c8797979 e240340d V..`....yyy..4@.
17774: 5e5e3131 96c1e140 c1c36060 763471c1 11^^@...``...q4v
17784: e8c8c876 c1a7f926 cc04f956 b6baf0c2 v...&...V.......
17794: 5e207f7b c6deb8f4 d0f4bcc6 64195f80 {. ^........._.d
177a4: 1713b3b3 a756cc8d 7d4b278d f5761333 ......V..'K}3.v.
177b4: bd41e642 c0f0e739 9899c2c0 d5ad5c14 B.A.9........\..
177c4: 3505a2a2 dc9fa035 9fa0359f 791313dc ...55....5.....y
177d4: c5331367 b15237a0 74770d2b 70700012 g.3..7R.+.wt..pp
177e4: 36700c70 00004836 48707070 e9776948 p.p66H..pppHHiw.
177f4: 690c0c0c 77e90c69 4c252013 c5d7138e ...ii..w. %L....
17804: c5c5d7e8 41e8e8dc 79797913 e2407679 .......A.yyyyv@.
17814: 347ee2e2 68e24034 1afec3ac c1c156fe ..~44@.h.....V..
17824: 79797953 400d0dc8 e83131e2 ac0d315e Syyy...@.11.^1..
17834: 606096c3 53c1c1c3 c8c87646 14f94b5e ..``...SFv..^K..
17844: 9c3a5656 bcb6c0a7 b362e0bc b5b562b3 VV:.......b..b..
17854: f4bcc6f4 195ff7d0 13b3b319 863a926b ......_.....k.:.
17864: 26278da7 c81367a0 f3e1e494 bac0ef9e ..'&.g..........
17874: 559e5c99 859c149c 05a2a2a2 9f9fa035 .\.U........5...
17884: 8e359f9f 13dc9fa0 79767979 fbaf3313 ..5.....yyvy.3..
17894: 462b0f52 70364677 48364844 70703670 R.+FwF6pDH6Hp6pp
178a4: 70707000 69776970 69e91e69 e94ee90c .ppppiwii..i..N.
178b4: 4caf672b 1313c58e d7d7d7e8 0edce8dc +g.L............
178c4: 797979dc 40767979 40e2e2e2 e2407e0d .yyyyyv@...@.~@.
178d4: fec3ac68 c1421a1a b37665c1 0d0dc879 h.....B..ev.y...
178e4: 3131e240 e2315e5e 6060c3e5 c1566060 @.11^^1...````V.
178f4: 2b46b4c1 044b31c8 a75656cc e0e7ccc0 ..F+.1K..VV.....
17904: 62e0def4 b862b3b3 e0c6f4b5 5ff7d0f4 ...b..b........_
17914: 64641919 f99216b3 278da786 5e67c54b ..dd.......'K.g^
17924: f1fefe64 5cc0c0bd 55e75555 9c140455 d......\UU.UU...
17934: 85d5a24b 9f9f3549 a09f9f9f c5a08e35 K...I5......5...
17944: 79797913 3367c840 b1520faf e976462b .yyy@.g3..R.+Fv.
17954: 0036cb48 70707036 36707070 e9e97036 H.6.6pppppp66p..
17964: 2dbb6d15 4e0ce92d 93af79c8 31c5c525 .m.--..N.y..%..1
17974: 13131379 dce8d7d7 797931e8 76797979 y........1yyyyyv
17984: e2e2e2e2 e27e7e40 c31a34e2 601a1afe ....@~~..4.....`
17994: d1c3c1c1 0d0d7979 31e2400d 315e5e31 ....yy...@.11^^1
179a4: c35a0d5e e4606096 6442c156 4b5ec80d ^.Z..``.V.Bd..^K
179b4: c156149c 2604e783 e0def4f4 6bb3b3b9 ..V....&.......k
179c4: c6c6de7b f7d0f4e0 b31919c9 925db364 {...........d.].
179d4: 8d8686f9 67136b27 6ae4f576 e799ba71 ....'k.gv..jq...
179e4: 39554b55 14e75555 85a2853a 0e35a2ad UKU9UU..:.....5.
179f4: dc9f9f35 358e9f9f 7913c59f 0d0d7931 5......5...y1y..
17a04: fbb1c579 2b2bafea 3600cbcb 70703670 y.....++...6p6pp
17a14: 70707070 69483648 6d1e0ccb 77e9e90c ppppH6Hi...m...w
17a24: 935bc82b 13d733c5 13137976 e8d7d713 +.[..3..vy......
17a34: 79793113 79797979 e2e2e276 31794031 .1yyyyyyv...1@y1
17a44: fe77e2e2 1a1afec3 c1c1c31a 407940be ..w..........@y@
17a54: e240340d 5e803131 bb5e315e 60968f60 .4@.11.^^1^.`..`
17a64: c156e460 130d7760 568683bd 8d269c56 `.V.`w.....VV.&.
17a74: c4f4f427 20b3b9e0 c6deb517 c6f4e0f8 '...... ........
17a84: 64bb19f7 f6b3b3b3 86a70427 311617ee ...d....'......1
17a94: 606679b3 4badb166 554b3939 e75555e7 .yf`f..K99KU.UU.
17aa4: 4b55cc14 35a2ad85 dca00535 8e35dcdc ..UK...55.....5.
17ab4: dc9f358e 76131313 c5793434 5b524cb1 .5.....v44y..LR[
17ac4: 703600c8 70703636 70707070 48707048 ..6p66ppppppHppH
17ad4: 6de9cb48 c8771e2d 0ff279b3 132067d1 H..m-.w..y...g .
17ae4: 5e76c879 13131313 79793113 79137979 y.v^.....1yyyy.y
17af4: 31e27979 6edc3131 0de2e245 1afec3fe yy.111.nE.......
17b04: c1e41a1a 31798fc1 7e340d76 5e313111 ......y1v.4~.11^
17b14: 13315e5e 96c35179 8f606060 772ec1c1 ^^1.yQ..```....w
17b24: ccefba37 27f95686 f4f42692 b3b9e0c4 7....V.'.&......
17b34: dec43020 f4e0d0c6 bb19dac6 b3b313b3 0..............
17b44: 86042741 62170486 acb4f213 bc415afe A'.....b.....ZA.
17b54: 4b39394b 5555e755 55cccc39 47ad5555 K99KU.UU9..UUU.G
17b64: 8e7d8e35 35dcdc9f 35358e8e 203131c5 5.}....5..55.11
17b74: 68347613 ea0fc579 6970b3fb 70700036 .v4hy.....pi6.pp
17b84: 70707070 707036cf 0c693648 77771e0c pppp.6ppH6i...ww
17b94: 0faf792b 79677967 0dc82b79 79797976 +y..gygyy+..vyyy
17ba4: 79797979 13dc1379 e2797931 b80e3131 yyyyy...1yy.11..
17bb4: e2e24041 fec3fe0d fe1a1a1a 53c1c1c1 A@.............S
17bc4: 34407640 31e24034 31315e5e acbbe85e @v@44@.1^^11^...
17bd4: 6060968f c1c14260 39852ce6 f956a73a ..```B...,.9:.V.
17be4: e0272627 62e0c4f4 50b3b3b3 f4d0c6f4 '&'....b...P....
17bf4: 1950f4f4 d7d7b3bb 041730d1 170486a7 ..P......0......
17c04: 24e30f3d 41f51a60 26264bbc 55394b4b =..$`..A.K&&KK9U
17c14: 14cc3955 85559e39 7d053547 dcdc3505 U9..9.U.G5.}.5..
17c24: 8e35359f 7979c535 7613c513 afb37468 .55.5.yy...vht..
17c34: 70f2ea37 70003636 70707070 70cbcf48 7..p66.pppppH..p
17c44: cb694870 771e1e0c 0ff2c82b 79792b67 pHi....w+...g+yy
17c54: c8791313 c80d0d77 79797979 e8dc6779 ..y.w...yyyyyg..
17c64: 79313113 b8353131 e2407687 c3ac68e2 .11y115..v@..h..
17c74: fe1a1afe c1c1421a 40764096 e240340d .....B...@v@.4@.
17c84: 31315e31 b3135e31 6096c30b c3e4e460 1^111^.....``...
17c94: 5daec1c1 56a7f939 272727f9 e0def4e0 ...]9..V.'''....
17ca4: 1919b362 50c6f480 d0c6f4f4 6e1319c9 b......P.......n
17cb4: 17e8d10e f986a704 5b52b6aa d8ac6066 ..........R[f`..
17cc4: 264b475d 554b4b26 cc395555 e70404a7 ]GK&&KKUUU9.....
17cd4: 0505a285 dc35057d 8e8e9fdc 79139f8e ....}.5........y
17ce4: c5c51376 c8687613 fb52b120 70700070 v....vh. .R.p.pp
17cf4: 70007070 70483836 e9484870 7777e90c pp.p68HppHH...ww
17d04: fb5bab2b 2b2bc803 79202079 0d0d77c8 +.[...++y y.w..
17d14: 31317976 13677979 31313131 6ee8e279 vy11yyg.1111y..n
17d24: 40403145 2e34e2e2 fe1afec3 c1fe1afe E1@@..4.........
17d34: 7e2cc1c1 34340d40 315ee240 135e3131 ..,~@.44@.^111^.
17d44: 8f2e2b13 e4606096 42c1c360 a7f926d8 .+...``.`..B.&..
17d54: 2717f956 bce0e027 19b3c6bc c6d07619 V..''........v..
17d64: c6f4f450 5db35ec6 13d1e817 86a78d6b P....^.]....k...
17d74: dc85ba83 6afefe2b 4b4b6e67 4b4b2626 ....+..jgnKK&&KK
17d84: 39555555 f99ca7cc 05a28504 35057d7d UUU9........}}.5
17d94: 8e9fdcdc 13dca08e d779c879 0d13c5c5 ........y.y.....
17da4: 375b2b74 000000e3 cf480070 690c3636 t+[7....p.H.66.i
17db4: 36367070 77e9e90c 37b02b2b 77c8c8d1 pp66...w++.7...w
17dc4: 201379c8 0d77c879 1331790d 79797931 .y. y.w..y1.1yyy
17dd4: 31131379 31e27931 40313131 34e2e240 y..11y.1111@@..4
17de4: 1afec32e 1afe1afe 96c1c142 3440400d ........B....@@4
17df4: 31114034 5e313131 72132013 60609642 4@.1111^. .rB.``
17e04: 56e4e460 9861fec1 173a56a7 b8de2717 `..V..a..V:..'..
17e14: 5ec6e0b8 7519bbbb f4c6f7d0 41f7c6c6 ...^...u.......A
17e24: d1d77c6b a7ee4920 164b1456 1ae4b4e2 k|.. I..V.K.....
17e34: 4b6e3166 4b26264b 5555554b 3a863a39 f1nKK&&KKUUU9:.:
17e44: 054b04f9 057d7d7d c5e8dc0e 9fc5a09f ..K.}}}.........
17e54: 76c86705 d7c5c513 79777479 0000102c .g.v....ytwy,...
17e64: 00707000 36361e0c cb707070 e90ccb0c .pp...66ppp.....
17e74: 37d82b79 0d2b2b5b 13792b77 0dc87913 y+.7[++.w+y..y..
17e84: 79790d0d 79793131 1313e831 e2793131 ..yy11yy1...11y.
17e94: 454531e2 e2117e76 fec36a34 1a1a1a1a .1EEv~..4j......
17ea4: c156fe1a 40342cc1 117e3434 315fe25f ..V..,4@44~._._1
17eb4: 4cafc513 fee42eb4 60e46060 57c1c1e4 ...L....``.`...W
17ec4: 3a868609 b8271727 c6e0deaa bbbbbbb3 ...:'.'.........
17ed4: 628075c9 f8c6c6f4 d7b9c4de 9c92f220 .u.b........ ...
17ee4: 173a5686 60be768b 6e31e11a 26264b4b .V:..v.`..1nKK&&
17ef4: 55554b26 863a3955 d5e7f93a 7d7d7d05 &KUUU9:.:....}}}
17f04: e8e89f05 c5c5dce8 c8793c8d 5e1331c8 .........<y..1.^
17f14: 74747679 00e3d119 cf007000 1e6d70e9 yvtt.....p...pm.
17f24: 70707070 0c69e936 37d8642b 0d2b2b5b pppp6.i.+d.7[++.
17f34: 79c8c8c8 c87913b3 c80d0d0d 79797979 ...y..y.....yyyy
17f44: 130e0e13 79313131 e831e2e2 11404031 ....111y..1.1@@.
17f54: c39434e2 1a1a1afe 8f1afe1a 46e4c1c1 .4.............F
17f64: 34344040 5e315f40 4c37afe8 c372130f @@44@_1^..7L..r.
17f74: 6060601a c14260e4 56cc81c1 b8b5273a .```.`B....V:'..
17f84: e0f4e0aa bbbb5ec6 5ec97474 c6c6c6b9 .....^..tt.^....
17f94: 50b527c4 9c845bd7 f956a79c ac768b27 .'.P.[....V.'.v.
17fa4: 45b4acfe 4b4b4b5d 554b2626 9c555555 ...E]KKK&&KUUUU.
17fb4: 55e73aa7 7da27d49 e89f357d 131333dc .:.UI}.}}5...3..
17fc4: 79338d05 76760dc8 4674740d 6f644674 ..3y..vv.ttFtFdo
17fd4: 00707070 cf1e6900 4870700c 69e93670 ppp..i...ppHp6.i
17fe4: 37d1b3ab 772b2bb1 79c8760d 79202079 ...7.++w.v.yy y
17ff4: 0d0d0dc8 797979c8 13359f79 79313131 .....yyyy.5.111y
18004: 31e2e276 7e7e4031 94345f11 1a1afec3 v..11@~~._4.....
18014: fefefe1a c1c1c3fe 34400224 e8314034 ........$.@44@1.
18024: 0f4c4caf 775e13c5 60fe60fe 60e4e460 .LL...^w.`.``..`
18034: 5742c1c3 b5273a56 f4f4b5b8 bb5ec6f4 ..BWV:'.......^.
18044: 743874bb c6f83019 b592dec6 043cd7b9 .t8t.0........<.
18054: 56149295 b41d27f9 d12eace4 4b4b5ddc ...V.'.......]KK
18064: 4b26264b 55555555 559ca79c 7d7d05a2 K&&KUUUU...U..}}
18074: dc8e7d7d 6733dce8 79f2a067 400dc879 }}....3gg..yy..@
18084: 68680d76 d8467474 00707010 48003648 v.hhttF..pp.H6.H
18094: 707036e9 cf360c48 37d12b0c 77b31393 .6ppH.6..+.7...w
180a4: c80d7777 c5d71379 0d0d0d31 3179760d ww..y...1....vy1
180b4: 13dc1379 79793179 e2407679 0d40e2e2 y...y1yyyv@...@.
180c4: 34e2117e 1afec3e6 1a1a1a1a c1601afe ~..4..........`.
180d4: 7ebbc3c1 c5314040 c58e4c93 b3132033 ...~@@1..L..3 ..
180e4: acc3e10d e4606060 c1c1e4e4 171494fe ....```.........
180f4: c6de17de 5ec6c4c6 387474bb f880bb38 .......^.tt88...
18104: 8ddec6c6 65fb7c27 148a4171 b927f956 ....'|.eqA..V.'.
18114: 94ace4be 4b5d4131 26264b4b 55554b4b ....1A]KKK&&KKUU
18124: 9ccc0455 7d49494b 0e05057d 13dc13e8 U...KII}}.......
18134: 79676767 c8c87979 76131331 7459b246 gggyyy..1..vF.Yt
18144: 7070fcb4 44bb3600 70367070 69e97070 ..pp.6.Dpp6ppp.i
18154: 0f64ab0c 2b205b4c 77777777 411379c8 ..d.L[ +wwww.y.A
18164: 0d76130e 31790d0d 79797931 79797979 ..v...y11yyyyyyy
18174: 40767931 40e2e2e2 5f117e7e 60c35a02 1yv@...@~~._.Z.`
18184: 1a1a1aac 1afefe1a 94c1c142 0f3331b2 ........B....13.
18194: 13e8b137 13131313 e4ab76b3 6060fe1a 7........v....``
181a4: 4260e460 7ae6c1c1 de17de27 f4c4c6c6 `.`B...z'.......
181b4: 7474bb80 5ebb3838 dec6c6d0 5221268d ..tt88.^.....&!R
181c4: 8ae8d1af 273a56cc ac60ac30 5ddc31be .....V:'0.`..1.]
181d4: 264b4b4b 554b4b26 f9e75555 49a2d5e7 KKK&&KKUUU.....I
181e4: 8e35057d 131313dc 67677913 c8797967 }.5......ygggyy.
181f4: afafc579 596876d7 70fcb474 70007070 y....vhYt..ppp.p
18204: 703638e9 36704870 af2b1e69 b320c5ce .86ppHp6i.+... .
18214: 777777c8 1379c877 7613c50e 79400d0d .wwww.y....v..@y
18224: 79793131 79767979 76793179 e2e2e240 11yyyyvyy1yv@...
18234: 117e7e40 c3e17ee2 1a1aac60 1a1a1a1a @~~..~..`.......
18244: c156fe1a 37c572c1 313113af 13135e31 ..V..r.7..111^..
18254: 465eb35e 60ace494 e4e46060 c1c1c360 ^.^F...```..`...
18264: 17de178c c4c6c6de 7419b9f4 74383874 ...........tt88t
18274: c6c61d5e b6c2eede 5eb35e41 3a86cc49 ^.......A^.^I..:
18284: ace4c527 dc452c1a 4b4b4b5d 4b4b2626 '....,E.]KKK&&KK
18294: e755554b 49a255e7 35350549 1313dc35 KUU..U.II.555...
182a4: 79797913 79797979 7d255ec8 4613af8e .yyyyyyy.^%}...F
182b4: fcd85959 36000070 cf3669bb e9367070 YY..p..6.i6.pp6.
182c4: d1abe936 b320afce 77777777 7976c877 6..... .wwwww.vy
182d4: 13d7d713 400d0d76 79793179 76c87976 ....v..@y1yyvy.v
182e4: 79797979 e2e24076 7e7e40e2 727ee240 yyyyv@...@~~@.~r
182f4: 1aac6042 1a1a1a1a e41a1a1a e542c1c1 B`............B.
18304: 11e25f31 135e5f11 b3b35e13 2e42b440 1_..._^..^..@.B.
18314: 606060fe c16060e4 deb060c1 c6c6de17 .```.``..`......
18324: 1950f4c4 38387474 c6f7b374 9ec2adf4 ..P.tt88t.......
18334: b35e8016 863a495e 42be053a e8d8ac6a ..^.^I:.:..Bj...
18344: 4b4b5d41 4b26264b 554b4b4b a24b5555 A]KKK&&KKKKUUUK.
18354: 35350549 13e89f8e 79793113 79797979 I.55.....1yyyyyy
18364: a233c82b 138e8e7d d8595946 707070a6 +.3.}...FYY..ppp
18374: 361e6900 70707070 ab1e0ccd 1320b137 .i.6pppp....7. .
18384: 77c877c8 b3b3c877 13137979 0d0dc831 .w.ww...yy..1...
18394: 7979790d 76767979 79797976 e2407979 .yyyyyvvvyyyyy@.
183a4: 7e40e2e2 7ee2117e 1ae442e5 1a1a1aac ..@~~..~.B......
183b4: fe1a1a1a c1c1e41a 4011342e 5e5f1111 .........4.@.._^
183c4: 79b3135e 60193179 6060ac1a 60e46060 ^..yy1.`..````.`
183d4: 32c1c142 c6deb506 50f4c6c6 38747476 B..2.......Pvtt8
183e4: 80b37438 9e99adc6 5ef78b27 f96e5eb3 8t......'..^.^n.
183f4: a6a03aa7 132e6ae4 4b5d0edc 26264b4b .:...j....]KKK&&
18404: 4b4b4b4b 47855555 35350549 139f3535 KKKKUU.GI.5555..
18414: 76791313 79797976 05797679 af8e8ed5 ..yvvyyyyvy.....
18424: 7454685e e970a6b4 703644bb cf707036 ^hTt..p..D6p6pp.
18434: bb6d4836 d164fb53 c8ab772b b379c8c8 6Hm.S.d.+w....y.
18444: 5e792b79 77c8795e 2b760d0d 79797979 y+y^^y.w..v+yyyy
18454: 79767679 40797979 40e2e2e2 e2117e7e yvvyyyy@...@~~..
18464: e460ab11 acacac1a 1a1a1a1a e41a1a1a ..`.............
18474: 025ac1c1 5f11115f b313b331 465e7679 ..Z._.._1...yv^F
18484: fe2ee466 60606060 c1566060 b5b54dc1 f...``````V..M..
18494: f4c6c6c6 74bb5ec6 64bb3838 7b99add7 .....^.t88.d...{
184a4: f78b2626 5d5eb35e a3f9a704 666a1a60 &&..^.^]....`.jf
184b4: 0e0e4131 264b4b47 4b4b4b26 4b55554b 1A..GKK&&KKKKUUK
184c4: 353549a2 dc35350e 79311313 79797676 .I55.55...1yvvyy
184d4: 33767979 258e8ed5 59597413 0065f574 yyv3...%.tYYt.e.
184e4: bbbb0c48 707070cf 2a0c0ccf ab4d104d H....ppp...*M.M.
184f4: c8ab77ab 7979c8c8 2bc8c879 c82b7979 .w....yyy..+yy+.
18504: c80d7777 79792bc8 76767979 76797979 ww...+yyyyvvyyyv
18514: e2e24040 117e7e40 ac77115f acacfe42 @@..@~~._.w.B...
18524: acacacac 1a1a1a1a c1c142fe 5fe2a4f5 .........B....._
18534: 135e315f 797679b3 6ae47240 6060601a _1^..yvy@r.j.```
18544: 60fe6060 33acc1c1 c6c6c6b5 bb80f4f4 ``.`...3........
18554: 77383874 bcbde3d8 8b2627c4 5eb35e80 t88w.....'&..^.^
18564: 8da7ee5d 1a6a4271 0e414553 4b4b470e ]...qBj.SEA..GKK
18574: 4b4b2626 85554b4b 35354947 0e0e0e0e &&KKKKU.GI55....
18584: 793113dc 2b797676 2b2b2b2b 8e9fc520 ..1yvvy+++++ ...
18594: 74590dc5 65f53859 70000048 7036e969 ..YtY8.eH..pi.6p
185a4: d3367070 ab5337ab 2bab77ab c8c82b79 pp6..7S..w.+y+..
185b4: 77770dc8 c82b792b 0d770dc8 7979c8c8 ..ww+y+...w...yy
185c4: 76797979 79797979 40404076 7e7e40e2 yyyvyyyyv@@@.@~~
185d4: 34e25f11 acfe4294 acacacac 1aacacac ._.4.B..........
185e4: 42fe1a1a 7ee5c1c1 5e315f5f 7679b35e ...B...~__1^^.yv
185f4: febb5f76 60962eac 60606060 c1c142fe v_.....`````.B..
18604: c6f4168c b9c4f4c6 38387419 6b26e3e5 .........t88..&k
18614: 2727c4c4 b35e808b 148df65e 9442a609 ..''..^.^.....B.
18624: 0ee85b1a 4b47350e 2626264b 554b4b4b .[...5GKK&&&KKKU
18634: 35354785 9f0e0e0e 31e8dc9f 79797679 .G55.......1yvyy
18644: c8c8c879 13c8c8c8 747479dc f538a959 y........yttY.8.
18654: 0c44446f 48700070 0c693670 03e32cab oDD.p.pHp6i..,..
18664: 2b7777ab c82b3333 7777770d 79792bab .ww+33+..www.+yy
18674: 0d0dc82b 7976c80d 79797976 79797976 +.....vyvyyyvyyy
18684: 40407679 7e40e240 11e2117e fe42e134 yv@@@.@~~...4.B.
18694: acacacac acacacac 1a1a1a1a 42c1c3fe ...............B
186a4: 5e311164 79b35e5e 465e7676 1a941a57 d.1^^^.yvv^FW...
186b4: 60606060 c160fe60 f43342c1 c4f4c6c6 `````.`..B3.....
186c4: 3874c98b 35d5102f 27c4c61d b35e8b27 ..t8/..5...''.^.
186d4: 92f65eb3 fefe71cc 8713ac57 49350e0e .^...q..W.....5I
186e4: 26264b4b 554b4b26 0e4b5555 dcdc410e KK&&&KKUUUK..A..
186f4: 33dcdcdc 79767613 c82b7913 7777c8c8 ...3.vvy.y+...ww
18704: 1274c80d bb3b5459 0c36bebe 7036e944 ..t.YT;...6.D.6p
18714: 69707070 2cced144 2b1e77ab c86705a0 pppiD..,.w.+..g.
18724: 1e1277c8 792bab77 0dc82b79 79c80d0d .w..w.+yy+.....y
18734: 79767979 79767676 40767979 40e24040 yyvyvvvyyyv@@@.@
18744: e2117e7e 427240e2 acacac60 acacacac ~~...@rB`.......
18754: 1aacacac c3feac1a 11b38fc1 b35e5e5e ............^^^.
18764: 5e767679 941ae146 6060feac fefefefe yvv^F.....``....
18774: 5ac1c142 c6c6c6b9 745ec4c4 c553a6b4 B..Z......^t..S.
18784: c4c68013 5e8b2717 f65eb3b3 42bef992 .....'.^..^....B
18794: 13a694ac 35350e41 264b476e 4b4b2626 ....A.55nGK&&&KK
187a4: 4b55554b 45e8e80e 13131345 76763113 KUUK...EE....1vv
187b4: 2b791379 77c8c8c8 54597474 543b0854 y.y+...wttYTT.;T
187c4: 00b46f64 36367000 70707070 cefbbf69 do...p66ppppi...
187d4: 771eabd1 ab670533 127777ab 2b77771e ...w3.g..ww..ww+
187e4: c8797979 760d0d0d 79797979 76767676 yyy....vyyyyvvvv
187f4: 76797979 e2e24040 e27e7e40 72d73131 yyyv@@..@~~.11.r
18804: acace460 acacacac acacacac ac1a1aac `...............
18814: 8fc1c3fe 5e5ee2b3 767679b3 fe2f405e ......^^.yvv^@/.
18824: fe1a6a94 fefefefe c1c1fefe c6c65ee4 .j...........^..
18834: 80dedec6 bbb4a6b4 c65e1964 8b2717c4 ........d.^...'.
18844: 5eb3b35e a6842630 66ac9442 350e0e45 ^..^0&..B..fE..5
18854: 4b476e35 4b262626 5555554b 45e86e4b 5nGK&&&KKUUUKn.E
18864: 13311345 76791313 31137976 77c82b79 E.1...yvvy.1y+.w
18874: 74597474 12595974 646fb459 00007036 ttYttYY.Y.od6p..
18884: 70707000 d2bf4469 1e1e64b1 ab2b67ab .pppiD...d...g+.
18894: 777777ab c8771e12 7979792b 0d0d4076 .www..w.+yyyv@..
188a4: 79797976 76767679 79797676 e2404076 vyyyyvvvvvyyv@@.
188b4: 407e4011 4c8ec531 ace46a4d acacac2e .@~@1..LMj......
188c4: acacacac acacacac c3feacac 5fb38fc1 ..............._
188d4: 7679b313 bf765e5f ac94941a fefe1afe ..yv_^v.........
188e4: 421afefe 50e1c1c1 b5dec6c6 38b4a647 ...B...P....G..8
188f4: c9191938 2717c650 5eb35e16 a326305e 8...P..'.^.^^0&.
18904: 1ae660fe 350e8753 a2493535 2626264b .`..S..555I.K&&&
18914: 55554b4b dc0e4b55 313145e8 79317979 KKUUUK...E11yy1y
18924: 13797676 2b791313 c8127777 74591279 vvy...y+ww..y.Yt
18934: bebe7412 cbe9e9bb 70707070 53d36970 .t......pppppi.S
18944: 1eabd1ea 7777771e 7777abab 77771277 .....www..www.ww
18954: 13792bc8 40763113 7979c80d 76797979 .+y..1v@..yyyyyv
18964: 797676c8 40407679 76e2e211 8e4c7d13 .vvyyv@@...v.}L.
18974: 42e60de8 2e2e2eac acacac2e acacacac ...B............
18984: acacacac 42c1c3fe 795e76d8 5f5e5f76 .......B.v^yv_^_
18994: 94942ebb fe1a1aac fefefefe fec156fe .............V..
189a4: dec6c65e 745bba9e 19193838 17c6f719 ^.....[t88......
189b4: b35e1627 17305e5e e6ace471 0e0eaf1a '.^.^^0.q.......
189c4: 49053535 264b4749 854b4b26 35475555 55.IIGK&&KK.UUG5
189d4: 45dc0e0e 79793113 76c8c879 13137979 ...E.1yyy..vyy..
189e4: 7474c879 54747479 10193ba9 697038f5 y.ttyttT.;...8pi
189f4: 367036cd 44e90ce9 1eab2c10 77777712 .6p6...D.,...www
18a04: 77777777 771e7777 792bc877 31e8d713 wwwwww.ww.+y...1
18a14: 79c84076 79797979 7676c876 40767679 v@.yyyyyv.vvyvv@
18a24: d71331e2 dc8e3c8e 0b7ee231 2e2e1a42 .1...<..1.~.B...
18a34: 2e2e2e2e acac2e2e acacacac c31aacac ................
18a44: 762cc3c1 5e5f76b3 9494745f 1a1a6a57 ..,v.v_^_t..Wj..
18a54: 1a1a1a1a c1e41afe c4d053c1 5e7bc0ad .........S....{^
18a64: 19383874 f85f1919 5e1627b5 415e5e5e t88..._..'.^^^^A
18a74: 9442945d 6e0e9457 0535350e 4b474949 ].B.W..n.55.IIGK
18a84: 4b4b2626 a24b554b 0e35356e 1313dc0e &&KKKUK.n55.....
18a94: 0dc87979 1379c80d 74c83113 12747474 yy....y..1.tttt.
18aa4: b4385454 00546410 00707000 d30ce969 TT8..dT..pp.i...
18ab4: 44bf10f5 7777771e c8777777 7777c82b ...D.wwwwww.+.ww
18ac4: 2bc87777 d7c51379 7676795e 79797979 ww.+y...^yvvyyyy
18ad4: 76c87679 79767676 0fdc3131 3113b14c yv.vvvvy11..L..1
18ae4: 7e404031 2efefebf 2e2e2e2e 2e2e2e2e 1@@~............
18af4: acacacac acacacac c1c1e4ac 5e790d53 ............S.y^
18b04: 6a465f5e 1a6a576a 1a1a1a1a 1a1a1a1a ^_FjjWj.........
18b14: 80fec1c1 2755baad 38387480 c9191919 ......U'.t88....
18b24: 1627deda 5e805e5e 60fe4141 5d6694e6 ..'.^^.^AA.`..f]
18b34: 35350e6e 49494905 4b26264b a24b4b4b n.55.IIIK&&KKKK.
18b44: 3535356e dc0e0e35 767913e8 c8c8c80d n5555.....yv....
18b54: c879792b 74122bc8 64767454 a974be66 +yy..+.tTtvdf.t.
18b64: 70000000 6d360070 44e110bf c8771ee9 ...pp.6m...D..w.
18b74: c8c8c8c8 c8b31379 c8777777 d7137979 ....y...www.yy..
18b84: 767913c5 79797976 76767979 31797976 ..yvvyyyyyvvvyy1
18b94: 4c8e3313 40e2330f 4040e240 606a7440 .3.L.3.@@.@@@tj`
18ba4: 2e2e2e2e 2e2e2e2e 2e6a6a2e acac6aac .........jj..j..
18bb4: 96ac2eac 0d37c1c3 46315e31 6a576a94 ......7.1^1F.jWj
18bc4: 1a1a1a1a 1a1a1a1a c1c1e4ac 27bcb671 ............q..'
18bd4: 3846b926 19194638 27c45f46 808080c4 &.F88F..F_.'....
18be4: e4b106e8 716a321a 35350e6b 49494905 .....2jqk.55.III
18bf4: 4b4ba26e 4947474b 0e0e0e0e 0e0e0e0e n.KKKGGI........
18c04: 13e89f0e c80dc879 c8c8c877 74c87974 ....y...w...ty.t
18c14: b3c85959 54b4a6b4 700069a9 cf703636 YY.....T.i.p66p.
18c24: bf6fe144 2b774ed3 b379b3b3 13d713b3 D.o..Nw+..y.....
18c34: 0d7777c8 b3b379c8 79e8c5e8 79797640 .ww..y.....y@vyy
18c44: 76797979 13797676 7d4c8e33 7ee231c5 yyyvvvy.3.L}.1.~
18c54: 40e2407e ed344040 a6942ee4 2e2e2e2e ~@.@@@4.........
18c64: 6a6a6a2e 6a6a6a6a 2e2e2e6a c18fac2e .jjjjjjjj.......
18c74: 5f11b365 57941a19 1aacac94 1a1a1a1a e.._...W........
18c84: c11a1a1a c4411ac1 c916928a c9463838 ......A.....88F.
18c94: 1dc94619 8030c4de 6645e830 ac322e42 .F....0.0.EfB.2.
18ca4: 350e17b1 49050535 496e3549 0e6e4949 ...55..II5nIIIn.
18cb4: 4545e841 e8e84545 dc0edcdc c87913e8 A.EEEE........y.
18cc4: 77c8c8c8 77677777 c874592b bb6fbed1 ...wwwgw+Yt...o.
18cd4: 700c4f08 70cb0ccb e16f780c 2b1e2dd3 .O.p...p.xo..-.+
18ce4: d1b3b3b3 d720d1d1 0d77c813 135e76c8 ...... ...w..v^.
18cf4: e8d71313 79764079 79767979 13797676 ....y@vyyyvyvvy.
18d04: c5fb37af 40e23113 e2400d0d 7e404040 .7...1.@..@.@@@~
18d14: 94ac6072 a6a69494 6a6a2e2e 6a6a6a6a r`........jjjjjj
18d24: 6a6a6a6a 2e2e2e2e 538fc196 326a5146 jjjj.......SFQj2
18d34: acac9457 acacacac 6a1a1aac 20c3c142 W..........jB..
18d44: 6b9227c4 467474c9 191919c9 7cc41d5f .'.k.ttF...._..|
18d54: 13303030 6694e41a 0e1735a6 05050535 000....f.5..5...
18d64: 35354949 0e353535 45e8dc41 31313131 II55555.A..E1111
18d74: e8133131 3113e8e8 c82b7679 2b7477c8 11.....1yv+..wt+
18d84: 7459c8c8 b4eb7119 364fa954 6de96970 ..Yt.q..T.O6pi.m
18d94: a6ae0c36 770c2dae d1b3b32b d7201320 6....-.w+... . .
18da4: 77c813d7 13c8c8c8 e813e8d7 764076e8 ...w.........v@v
18db4: 76797979 33797979 13b137fb 4040e231 yyyvyyy3.7..1.@@
18dc4: 400d0d40 404040e2 1a1aab40 94949494 @..@.@@@@.......
18dd4: 949494a6 6a949494 946a6a6a 2e2e2e6a .......jjjj.j...
18de4: e4ac2e2e 94fefec3 6a6a9457 acacacac ........W.jj....
18df4: acacacac c1c11a6a 8d271d5a 74745f17 ....j...Z.'.._tt
18e04: 46c9c946 b95f7619 30b9b962 32fee45b F..F.v_.b..0[..2
18e14: 496e9494 0505350e 35494905 0e0e0e35 ..nI.5...II55...
18e24: dcdc410e 313145e8 31793131 13133131 .A...E1111y111..
18e34: 13133131 74c87979 54591238 10ead174 11..yy.t8.YTt...
18e44: a94fa9bb 0ccf7070 240c69e9 69e92feb ..O.pp...i.$./.i
18e54: b32bc81e 201313d1 7713c520 c82b7977 ..+.... ..wwy+.
18e64: d7c5d7b3 4076e8d7 76797976 b1136779 ......v@vyyvyg..
18e74: 13330f4c e2404079 7e0d40e2 4040e240 L.3.y@@..@.~@.@@
18e84: e6344040 94949460 94949494 94949494 @@4.`...........
18e94: 94949494 a6949494 a62e2e2e 6060ac6a ............j.``
18ea4: acfe6060 6a6a6a6a 6a6a6a6a 426a6a6a ``..jjjjjjjjjjjB
18eb4: b5e8fec1 745e1792 c9c94674 76761946 ......^ttF..F.vv
18ec4: 7c7c7c80 ace4be06 17716a5a 05350e6e .|||....Zjq.n.5.
18ed4: 49050505 0e0e0e35 0edc0e0e e8dc410e ...I5........A..
18ee4: 76313145 79797979 dc133179 2b870edc E11vyyyyy1.....+
18ef4: 5974c874 eb2c5954 3ba9cdb4 3670703b t.tYTY,....;;pp6
18f04: d3cb0ccf 6db4d210 c81e0ccf 13d1b32b .......m....+...
18f14: 13d72020 797977c8 c513792b 79e84141 ...wyy+y..AA.y
18f24: 79797640 37af1379 3113c5fb 40767679 @vyyy..7...1yvv@
18f34: 7e40e2e2 40e2407e 7e404040 942e600b ..@~~@.@@@@~.`..
18f44: 94949494 94949494 94949494 94949494 ................
18f54: a6a6a694 949494a6 2eacac6a 6a6a6a6a ........j...jjjj
18f64: 6a6a6a6a 946a6a6a 5bc1c31a 7517926b jjjjjjj....[k..u
18f74: c9467446 761919c9 41305e76 602ee87c FtF....vv^0A|..`
18f84: b1ac2494 35353517 35050505 0e0e3505 .$...555...5.5..
18f94: dc87870e 41410e0e e8e84141 76793131 ......AAAA..11yv
18fa4: 13767676 dcb56edc 74797779 a6bb5459 vvv..n..ywytYT..
18fb4: 3ba9386f 70703b3b 69cbcf36 2f6fa678 o8.;;;pp6..ix.o/
18fc4: e90c69e9 b32bc877 2020d1d1 7977c813 .i..w.+... ..wy
18fd4: 137979b3 d74141d7 31764031 4cfb3313 .yy..AA.1@v1.3.L
18fe4: 797913b1 40767979 40e24040 e2e2407e ..yyyyv@@@.@~@..
18ff4: 40404040 ac1aab40 94949494 94949494 @@@@@...........
19004: 94949494 94949494 94949494 94949494 ................
19014: 94949494 6a6a6a94 6a6a6a6a 6a6a6a6a .....jjjjjjjjjjj
19024: c1e46a94 17264166 46461980 c9c9c9c9 .j..fA&...FF....
19034: 5e5e7676 96c57c06 2e3266fe 0e0e178e vv^^.|...f2.....
19044: 35050535 0e353535 dcdc870e 0e0e0edc 5..5555.........
19054: 350e4141 dc9f0e35 76767913 6eb5e879 AA.55....yvvy..n
19064: c8777933 71385412 543b2feb 0c3b3bcd 3yw..T8q./;T.;;.
19074: 0070cb0c 51a6892d 0c690cd3 2bc81ee9 ..p.-..Q..i....+
19084: 13b3b32b 0d792020 7979b3c8 41d7e8b3 +... y...yy...A
19094: 67795e30 0f4cb133 76791333 76797979 0^yg3.L.3.yvyyyv
190a4: e2404040 e2404040 4040e2e2 e634e240 @@@.@@@...@@@.4.
190b4: 949494fe 94949494 57575757 94575757 ........WWWWWWW.
190c4: 94949494 94949494 94949494 94949494 ................
190d4: 94949494 6a6a6a6a fe576a6a 263396c1 ....jjjjjjW...3&
190e4: c9c9f727 c9c9c946 31767676 7180e831 '...F...vvv11..q
190f4: 5732ace4 0e6e0ea6 0505350e 35353535 ..2W..n..5..5555
19104: dcdc870e 0e0edcdc 6b5d4141 a2a2a26e ........AA]kn...
19114: 13dc35a2 6b5d7979 742b7913 b4595438 .5..yy]k.y+t8TY.
19124: 3bb3e3eb 3b3bcd54 48700c44 a60bec48 ...;T.;;D.pHH...
19134: cf36ecae 771e0c69 2b2b2bc8 b32013b3 ..6.i..w.+++.. .
19144: 79790d0d e8137979 20c54130 af3737af ..yyyy..0A. .77.
19154: 76767913 79797676 40e24076 e21140e2 .yvvvvyyv@.@.@..
19164: 40e23131 40404040 9494600b 94949494 11.@@@@@.`......
19174: 57575757 57575757 94945757 94949494 WWWWWWWWWW......
19184: 94949494 94949494 94579494 94949494 ..........W.....
19194: 57949494 f1c3c3ac 5fb92727 c9c9c95f ...W....''.__...
191a4: 317676c9 31e8e85e 2494e4a6 0e0e6f6a .vv1^..1...$jo..
191b4: 35350e0e 35353535 dcdc0e0e 0edcdcdc ..555555........
191c4: de0e410e d5a2496b a2d58585 5de8e835 .A..kI......5..]
191d4: c8c82b79 bb597474 79f26510 08080854 y+..ttY..e.yT...
191e4: 70706908 e12d7036 0cd3aea6 1e69cbcf .ipp6p-.......i.
191f4: c8c87777 13b3b3c8 c877c8b3 79797979 ww........w.yyyy
19204: 8e25c513 20b14c93 76797967 79767676 ..%..L. gyyvvvvy
19214: 40407679 e240e240 e23131e2 e2404040 yv@@@.@..11.@@@.
19224: ac1a64e2 57949457 57575757 57575757 .d..W..WWWWWWWWW
19234: 57575757 94949494 94949494 57575757 WWWW........WWWW
19244: 57575757 57575757 94949457 c1e49457 WWWWWWWWW...W...
19254: b94b355a 5f5f7575 5e76c95f 31dc35dc Z5K.uu___.v^.5.1
19264: 5796965b 0e712e24 350e0e0e 35353535 [..W$.q....55555
19274: dc0e3535 dcdcdcdc 6b410e0e a2490e6b 55........Akk.I.
19284: 858585d5 dc35a2d5 c8767913 77c8c877 ......5..yv.w..w
19294: b371eb53 0808a946 36cb0808 2d707048 S.q.F......6Hpp-
192a4: d872a651 69cb0c64 bb771ee9 b32bc8c8 Q.r.d..i..w...+.
192b4: 77c879b3 7979c877 93c51379 13c585b6 .y.ww.yyy.......
192c4: 79797979 76404076 40767979 e2404040 yyyyv@@vyyv@@@@.
192d4: 3131e2e2 e2404040 e64031e2 575757fe ..11@@@..1@..WWW
192e4: 57575757 575757e6 57575757 57575757 WWWW.WWWWWWWWWWW
192f4: 57575757 57575757 57575757 57575757 WWWWWWWWWWWWWWWW
19304: 57575757 96575757 4b1bacc1 80b975b9 WWWWWWW....K.u..
19314: 5e5f5e5e e87dd533 1ae47131 afac3232 ^^_^3.}.1q..22..
19324: 0e0e0e35 3535350e 0e353535 dcdcdcdc 5....555555.....
19334: 414141dc 490e0e5d 8585d5a2 9f8e7dd5 .AAA]..I.....}..
19344: 5e13c5dc 7720c879 d1e365e5 54125976 ...^y. w.e..vY.T
19354: 693b0808 48480069 ae659069 69e9d1e5 ..;ii.HHi.e....i
19364: 1e1e0c69 c8c8bb77 c8c82b2b 2bc87777 i...w...++..ww.+
19374: 933320b3 13258521 79797979 40407679 . 3.!.%.yyyyyv@@
19384: 76797976 40404040 31e2e2e2 40404031 vyyv@@@@...11@@@
19394: e23131e2 5794fed8 57e65757 e6e6e6e6 .11....WWW.W....
193a4: e6e6e6e6 57e6e6e6 57e6e6e6 57575757 .......W...WWWWW
193b4: 57575757 57575757 57575757 57575757 WWWWWWWWWWWWWWWW
193c4: b08fc31a 62757c4b 5e5e8062 dc923c13 ....K|ubb.^^.<..
193d4: e4a631e8 a666242e 0e0e35c5 35350e0e .1...$f..5....55
193e4: 35353535 dcdcdc0e 4141e8e8 0e0e4187 5555......AA.A..
193f4: d5d5a249 dc25a2d5 9f9fdcd7 13c85e33 I.....%.....3^..
19404: b4eb6f64 795477b3 3b080819 690c6969 do...wTy...;ii.i
19414: fcf56948 0c440cae 0c0c6969 bb77771e Hi....D.ii...ww.
19424: c82bc8ab c8777777 4cafd1b3 41f32537 ..+.www....L7%.A
19434: 7679795e 40767676 79797676 40404076 ^yyvvvv@vvyyv@@@
19444: 4040e240 4040e2e2 3131e240 ac2ec831 @.@@..@@@.111...
19454: e6e657e6 e6e6e6e6 e6e6e6e6 e6e6e6e6 .W..............
19464: e6e6e6e6 e6e6e6e6 e6e6e6e6 575757e6 .............WWW
19474: 57575757 57575757 c1426ae6 753d4924 WWWWWWWW.jB.$I=u
19484: 5e7ce062 dc05dc31 fed13113 94249496 b.|^1....1....$.
19494: 0e35dc66 350e0e0e 35353535 dcdc0e35 f.5....555555...
194a4: 41e8e8dc 41dcdcdc a2a2490e dc8ea2a2 ...A...A.I......
194b4: 9fdc1313 c813c59f 53eb7120 3838b377 ........ q.Sw.88
194c4: 0808c8b3 6944cb3b 4d693648 692d7152 ....;.DiH6iMRq-i
194d4: 44e96969 771ee96d c8ab7777 c87777c8 ii.Dm..www...ww.
194e4: 4cb1d179 301320b1 7979e841 76767679 y..L. .0A.yyyvvv
194f4: 79767640 e2e27679 40404040 40e2e240 @vvyyv..@@@@@..@
19504: 31e24040 e1403131 e6e657fe e6e6e6e6 @@.111@..W......
19514: e6e6e6e6 3281e6e6 e6323232 e6e6e6e6 .......2222.....
19524: e6e6e6e6 e6e6e6e6 e6e6e6e6 57575757 ............WWWW
19534: e457e657 3d3510c1 7f7f6280 3113e830 W.W...5=.b..0..1
19544: 53313131 2432fee4 0e877194 0e0e0e0e 111S..2$.q......
19554: 35353535 dc0e3535 e8e8e8dc e8e8dcdc 555555..........
19564: a2490e41 9f35a2a2 dc1313e8 13c59f9f A.I...5.........
19574: 10ebb1c8 547459bb 0838b377 6969a554 .....YtTw.8.T.ii
19584: 0ccb69cb ca66521b e9690c0c 6d6dbfbf .i...Rf...i...mm
19594: 7777bb77 c877c877 4cfb5b2b 767967af w.www.w.+[.L.gyv
195a4: 31307ce8 76767979 76764076 40767979 .|01yyvvv@vvyyv@
195b4: 4040e2e2 e2e24040 e24040e2 e23131e2 ..@@@@...@@..11.
195c4: 322eac2b e6e6e6e6 e6e6e6e6 578181e6 +..2...........W
195d4: e6575757 32323232 e6e6e632 e6e6e6e6 WWW.22222.......
195e4: e6e6e6e6 57e6e6e6 e6e65757 35acc196 .......WWW.....5
195f4: 7f62807f 31e86e6b e2313131 32ac6094 ..b.kn.1111..`.2
19604: 0eb16a24 0e0e0e0e 3535350e 0e353535 $j.......555555.
19614: 45e8dcdc e8dcdce8 490edce8 9f35a2a2 ...E.......I..5.
19624: 131333dc 209f9fdc 6565d179 a554775b .3..... y.ee[wT.
19634: 59797754 0054a508 cb36e90c a6711b43 TwyY..T...6.C.q.
19644: 690c0c78 44e5440c 77bb77e9 2b777777 x..i.D.D.w.wwww+
19654: 0fe32c64 c879d15b 41415e0d 76797913 d,..[.y..^AA.yyv
19664: 76407676 76797979 e2e2e240 40407e40 vv@vyyyv@...@~@@
19674: 404040e2 31314040 fee17e31 323232e6 .@@@@@111~...222
19684: 81323232 e6e68181 9778781c 81e6e68c 222......xx.....
19694: 81818181 81818181 81818181 e6e6e681 ................
196a4: 575757e6 96c31ae6 7c807f9f 4517276b .WWW.......|k'.E
196b4: 31313131 94fefeb3 c52e3224 0e870e0e 1111....$2......
196c4: 350e0e0e 0e353535 e8dcdc0e e8dce845 ...5555.....E...
196d4: 0edce845 0e7da249 1313e8dc c59fdc13 E...I.}.........
196e4: ebe3d1b3 5474772c 54547438 3ba53b54 ....,wtT8tTTT;.;
196f4: 69704870 ae0c2a6d 0c44e165 bfe969cb pHpim*..e.D..i..
19704: bb1ee944 2b7777bb 53e3b103 797967d1 D....ww+...S.gyy
19714: 30790dc8 76791341 40767676 79797676 ..y0A.yvvvv@vvyy
19724: 76407679 7e7e40e2 40e2e240 e2404011 yv@v.@~~@..@.@@.
19734: 64e23131 32322eac 81818132 e6818181 11.d..222.......
19744: a91f0091 9078543b 818181e6 81818181 ....;Tx.........
19754: 81818181 81818181 e6e6e681 c32ee6e6 ................
19764: 807fafe4 6e27177c 31313145 1ae4f1e2 ....|.'nE111....
19774: 94662466 870e0ee8 0e0e0e0e 35353535 f$f.........5555
19784: e8dc0e0e dce84545 dce845e8 35a2350e ....EE...E...5.5
19794: 1333e8dc 9f331313 3f3713c5 54597453 ..3...3...7?StYT
197a4: 3820d174 543b5408 36000054 48cb6d44 t. 8.T;TT..6Dm.H
197b4: 2fa6102d 0c69690c 1ee94444 64ab1e1e -../.ii.DD.....d
197c4: 5be3fbd1 79797967 400dc879 791341e8 ...[gyyyy..@.A.y
197d4: 76797676 79767676 40767979 7e40e276 vvyvvvvyyyv@v.@~
197e4: e2e2407e 40404040 31e231e2 e6fe2440 ~@..@@@@.1.1@$..
197f4: 81813232 81818181 367036ed a93bcd4f 22.......6p6O.;.
19804: e681784f 81818181 81818181 81818181 Ox..............
19814: e6818181 94e6e6e6 6bb14242 17b85d30 ........BB.k0]..
19824: 3131805d 60667e31 942432ac 0e0ee871 ].111~f`.2$.q...
19834: 0e0e8787 0e350e0e dc0e0e0e 454545e8 ......5......EEE
19844: 4545e8e8 35350edc 13dcdc35 33133113 ..EE..555....1.3
19854: 3ffbc59f 7459bb37 b3d12b77 3b543854 ...?7.Ytw+..T8T;
19864: 70703808 69367070 eb0b6936 69690cbe .8pppp6i6i....ii
19874: 0c0c6d0c 64441e1e d1fb37b0 792b2b2b .m....Dd.7..+++y
19884: 0dc82b79 13d75e0d 79767679 76767676 y+...^..yvvyvvvv
19894: 40767979 40e27640 e2e24040 404040e2 yyv@@v.@@@...@@@
198a4: e2e2e240 ac03e231 81328194 81818181 @...1.....2.....
198b4: 70362281 4f4f361f ec1f4f4f 81ed81ed ."6p.6OOOO......
198c4: edededed 81818181 81818181 e6e6e681 ................
198d4: 71c3e457 1717416e 31807f17 1a793131 W..qnA.....111y.
198e4: 24246afe 0edc2c94 41410e0e 0e0e0e0e .j$$.,....AA....
198f4: 410e0e0e 454545dc 4545e845 0e41e845 ...A.EEEE.EEE.A.
19904: dc9f0e0e 13131313 3ffb9f33 38382be3 ........3..?.+88
19914: 202b2b5b 54191212 7077083b 6dcb0070 [++ ...T;.wpp..m
19924: 69cb360c cf723f24 690c0c69 d864e90c .6.i$?r.i..i..d.
19934: 03b1e32c 2bc8c82b c82b7979 13790d0d ,...+..+yy+...y.
19944: 76767931 76767676 76767976 e2e24076 1yvvvvvvvyvvv@..
19954: e24040e2 40e23131 e2e24040 7e31e2e2 .@@.11.@@@....1~
19964: 81e61a8c 81818181 709081ed 361f7070 ...........ppp.6
19974: 36363636 81ed6970 edededed edededed 6666pi..........
19984: 818181ed e6818181 c36057e6 6e5d5d37 .........W`.7]]n
19994: 067f476e b4e23131 24661a60 87339432 nG..11..`.f$2.3.
199a4: 41870e0e 0e0e0e41 0e0e0e0e e845e8dc ...AA.........E.
199b4: 45e84545 41e84531 dc0e0e0e 131313dc EE.E1E.A........
199c4: 3ffb3313 747403fc 2b77d1b3 74775474 .3.?..tt..w+tTwt
199d4: 773b3b54 0c007070 3636366d 2e6f2d70 T;;wpp..m666p-o.
199e4: 690ccd78 d8d30c69 032ce30f c8c877c8 x..ii.....,..w..
199f4: 2b797979 0d0d0dc8 76797979 76767676 yyy+....yyyvvvvv
19a04: 79797676 31e27676 e2e23131 e2456e45 vvyyvv.111..EnE.
19a14: e24040e2 31e23131 946aabe2 eded81ed .@@.11.1..j.....
19a24: 7381eded 1f707070 1f1f1f1f ec007070 ...sppp.....pp..
19a34: ededed81 edededed edededed 81818181 ................
19a44: 96e632e6 5d0e10c3 6e475d06 7e313106 .2.....].]Gn.11~
19a54: 24ace4be e866328c 87410e0e 0e414187 ...$.2f...A..AA.
19a64: 0e0e0e0e e8dcdc0e e8e845e8 e8453145 .........E..E1E.
19a74: 0e0e0e41 1313dc5d 3fb11313 7477b065 A...]......?e.wt
19a84: 2bd1f22b 38593877 cd543b12 70707038 +..+w8Y8.;T.8ppp
19a94: 70704870 d3693670 6978a6a6 bfd30c69 pHppp6i...xii...
19aa4: 64d8e3fb c8c877c8 797979c8 0dc8c82b ...d.w...yyy+...
19ab4: 79760d0d 76767976 79767676 31317931 ..vyvyvvvvvy1y11
19ac4: 31313131 456b2745 e2e23131 31313131 1111E'kE11..1111
19ad4: 90343131 eded811a edededed 70007073 114.........sp.p
19ae4: 701f7070 70707070 ed819100 edededed pp.ppppp........
19af4: edededed 8181eded e6e68181 87fcc360 ............`...
19b04: 475d3130 3131806e 6afeac76 be578c24 01]Gn.11v..j$.W.
19b14: 410e0e45 41418787 0e0e0e0e 410e0e0e E..A..AA.......A
19b24: 454545e8 31311345 5d0edce8 13135dde .EEEE.11...].]..
19b34: ebf27913 192b2cd2 d15b2b74 74d17777 .y...,+.t+[.ww.t
19b44: 54545454 707054cd 70000070 44697070 TTTT.Tppp..pppiD
19b54: a6a6d3e9 bfd36978 bfe566be 77771ebb ....xi...f....ww
19b64: 79792bc8 0dc87979 760d0d0d 79797679 .+yyyy.....vyvyy
19b74: 76404076 31313179 45453131 06271745 v@@vy11111EEE.'.
19b84: 31313145 313131e2 e2e23131 ed6a5777 E111.11111..wWj.
19b94: edededed 004822ed 70707070 70707070 ....."H.pppppppp
19ba4: 97707070 222222ed eded2222 81ededed ppp.."""""......
19bb4: 97e68181 a6c372e9 30314531 3180416e .....r..1E10nA.1
19bc4: 1a60d8e2 94242457 0e0ee853 41414141 ..`.W$$.S...AAAA
19bd4: 0e0e0e41 0e0e0e0e 1345e8dc 31134513 A.........E..E.1
19be4: 41e84531 13dcde6b ea337931 2bb30fd2 1E.Ak...1y3....+
19bf4: b37477c8 2b77bb2b 54545474 704ecdcd .wt.+.w+tTTT..Np
19c04: 70697070 69487070 2d0ce92d aee12e5a ppipppHi-..-Z...
19c14: 78bf24be 1e1e1ebb 7979c877 c8797979 .$.x....w.yyyyy.
19c24: 0d0d0dc8 76767676 76407676 31317976 ....vvvvvv@vvy11
19c34: 87414531 87174145 31314545 31313131 1EA.EA..EE111111
19c44: e2313131 1aae40e2 ededed32 cbededed 111..@..2.......
19c54: 70707000 70707070 00707070 9090edec .pppppppppp.....
19c64: 22222290 ededed22 ca8181ed 6059081f ."""".........Y`
19c74: 3131402e 31068745 60be4031 24e1321a .@11E..11@.`.2.$
19c84: 41875b94 8787410e 0e0e4187 0e0e410e .[.A.A...A...A..
19c94: 1345dc0e 31131313 45453131 e85dde41 ..E....111EEA.].
19ca4: 52333113 b3330fd2 7477192b 382bbb38 .13R..3.+.wt8.+8
19cb4: 54543838 1e543bcd 0c007048 36366944 88TT.;T.Hp..Di66
19cc4: 69cbcf36 a6e1e9cf 44ae6feb 1e1ebbe9 6..i.....o.D....
19cd4: 2bc8771e 7979b379 0d0d0dc8 7679760d .w.+y.yy.....vyv
19ce4: 40767676 13133176 6e17e813 450645e8 vvv@v1.....n.E.E
19cf4: 3145e845 31e23131 e2e2e231 b330e2e2 E.E111.11.....0.
19d04: ededaced edededed 7070004a 70707070 ........J.pppppp
19d14: 70700000 22ff7070 90909090 22222290 ..pppp."....."""
19d24: 9181eded 5954a900 31402e96 31313131 ......TY..@11111
19d34: ac763131 e124acfe 87135732 87414141 11v...$.2W..AAA.
19d44: 0e418787 4141410e 45e8410e 13131313 ..A..AAA.A.E....
19d54: 31313131 dc0e4145 e33313dc 33330fd2 1111EA....3...33
19d64: 772b2bb3 b3777777 541212bb 54cdcd54 .++wwww....TT..T
19d74: 707048cd 0c446900 3636cb69 72446936 .Hpp.iD.i.666iDr
19d84: a6106610 bf72f5be c8772bbb 7979792b .f....r..+w.+yyy
19d94: 0d0dc8c8 13790d0d 20136713 afaf9f5b ......y..g. [...
19da4: aa17dc9f 31454587 3106f631 e2e2e231 .....EE11..11...
19db4: e2e231e2 e8e2e2e2 5757e5f3 22eded22 .1........WW".."
19dc4: 700063ed 00000000 00000000 07007000 .c.p.........p..
19dd4: 73737322 22909073 73ed2222 3ba97070 "ssss..""".spp.;
19de4: 40a69659 31313131 d8e24531 e1941afe Y..@11111E......
19df4: 45be32e1 41414141 41878787 41410e41 .2.EAAAA...AA.AA
19e04: e8dc4141 13131313 31313113 dce83131 AA.......11111..
19e14: 52c5e8dc 3313b1d2 2b2bb333 c8c87777 ...R...33.++ww..
19e24: 12e87974 cdcd5454 0069e9cd 36007070 ty..TT....i.pp.6
19e34: cb6d0cd3 aed36936 e5ae53a6 a6102472 ..m.6i...S..r$..
19e44: 0fe3e310 afb1b1b1 5bf2f2af 0faff2f2 ...........[....
19e54: 0f0f0f93 c5afb10f aa6ee833 3145450e ........3.n..EE1
19e64: 3106f645 40403131 e2e2e240 e2e2e2e2 E..111@@@.......
19e74: ae413031 ed2281ac 48902222 00000000 10A..."."".H....
19e84: 00000000 00707070 73737315 90737373 ....ppp..ssssss.
19e94: ed222290 1f7000ec 6660593b 31313140 .""...p.;Y`f@111
19ea4: 11454531 321afe24 535724e1 41418745 1EE.$..2.$WSE.AA
19eb4: 87878741 87414141 dc414141 134545e8 A...AAA.AAA..EE.
19ec4: 31131313 13313131 529fdce8 b3790fd2 ...1111....R..y.
19ed4: 2bb33333 2b7777c8 796bc82b cdcd5454 33.+.ww++.kyTT..
19ee4: 36e94ecd 70707000 2d2d3600 aed3cb2d .N.6.ppp.6---...
19ef4: e5ae24a6 44e9e9ab 715372bf cecee337 .$.....D.rSq7...
19f04: 37e3cece 0ffbfb37 9f8e930f 79796733 ...77.......3gyy
19f14: 27e87979 1313135d e2314531 40403131 yy.']...1E1.11@@
19f24: e2e24040 e2e2e2e2 5de24040 8c2e222c @@......@@.],"..
19f34: ed902222 000000ca 00000000 00000000 ""..............
19f44: 731c7000 73737373 ed907373 70700089 .p.sssssss....pp
19f54: e4123b1f 31314071 45313131 acfe6a40 .;..q@11111E@j..
19f64: 9424e124 4187455b 06874141 dc878787 $.$.[E.AAA......
19f74: dcdc87e8 4545e8dc 87454545 31313145 ......EEEEE.E111
19f84: 52c51331 79130fd2 b32020b3 7777bb2b 1..R...y. .+.ww
19f94: dcdcb3b3 cd544e12 cfe9cdcd 70707048 .....NT.....Hppp
19fa4: cb007070 782d2d69 bf782466 6dd3bbe5 pp..i--xf$x....m
19fb4: 1ee92de9 d12b1e1e d1202020 79797967 .-....+. .gyyy
19fc4: e8c51379 40767679 e8797976 313113e8 y...yvv@vyy...11
19fd4: 40403131 40e231e2 e2404040 e2e2e231 11@@.1.@@@@.1...
19fe4: 9fe240e2 e6bf854c 90909094 00707390 .@..L........sp.
...
19ffc: 63000000 73739773 73737373 7000eced ...cs.ssssss...p
1a00c: bb081f70 31e22c42 45313131 1a1ad131 p...B,.1111E1...
1a01c: 24e1e194 e8061357 87414187 e8870606 ...$W....AA.....
1a02c: dcdce8e8 4545dc41 5d454545 76314516 ....A.EEEEE].E1v
1a03c: e3137676 79130fd2 1313b379 7777bb79 vv.....yy...y.ww
1a04c: 7979b3bb 544e4e1e cd0ccdcd 48487069 ..yy.NNT....ipHH
1a05c: 48707070 782d3648 d3786671 bb444444 pppHH6-xqfx.DDD.
1a06c: 6d6d2d44 bb1ee9e9 79b379c8 0d0dc879 D-mm.....y.yy...
1a07c: dc13760d 79793113 79797976 31313179 .v...1yyvyyyy111
1a08c: 40403131 e2e24040 e2e2e240 40e23131 11@@@@..@...11.@
1a09c: 3cdc31e2 870e354c 73e69478 fa907390 .1.<L5..x..s.s..
...
1a0b8: 97977307 73737397 70707390 081f7070 .s...sss.spppp..
1a0c8: 3167420b 31313131 fee1e245 e1dbe61a .Bg11111E.......
1a0d8: 06315a32 8787dce8 06060606 e8e8e8e8 2Z1.............
1a0e8: e8dc4141 f6454545 7631f6de e3797676 AA..EEE...1vvvy.
1a0f8: 7979b1eb b3b37979 7777c8b3 772b7777 ..yyyy....wwww+w
1a108: 77384e1e cfcdcd54 48700c69 70707048 .N8wT...i.pHHppp
1a118: d3cb692d d3aee3db 6444440c d36dd364 -i.......DDdd.m.
1a128: 77e9e96d b32b2b2b 0dc82b79 e8790dc8 m..w+++.y+....y.
1a138: 79e8e8d7 76767676 79797979 40e27679 ...yvvvvyyyyyv.@
1a148: e2404040 314531e2 40e23131 953c3340 @@@..1E111.@@3<.
1a158: 0e87dc7d 6a897e45 737373ed 0000ec73 }...E~.j.ssss...
...
1a170: ff974a00 73979797 00639073 1f707070 .J.....ss.c.ppp.
1a180: 401a9408 31313131 94764531 e124ac1a ...@11111Ev...$.
1a190: 31e157e1 87e8e806 e8e806dc e8e8e830 .W.1........0...
1a1a0: 4141dce8 41e845e8 7945dede e3794076 ..AA.E.A..Eyv@y.
1a1b0: 7679b1eb 792b2b76 7477c82b 77777777 ..yvv++y+.wtwwww
1a1c0: 1ee93877 cfcfe964 700c0ccf 48704848 w8..d......pHHpH
1a1d0: ec6d0c70 780b1089 bf446969 bb6d44bf p.m....xiiD..Dm.
1a1e0: e9e96dab 2b2b64bb c82b7979 790dc8c8 .m...d++yy+....y
1a1f0: 138741e8 76767979 76767676 76767679 .A..yyvvvvvvyvvv
1a200: 407e7e40 874531e2 e2e2e231 4c527d13 @~~@.1E.1....}RL
1a210: 0e87139f 6811e213 73226aff 15737373 .......h.j"ssss.
...
1a228: 97ec0000 9797ff1c 4a907373 70707000 ........ss.J.ppp
1a238: 53e44e1f 313113e2 d1311331 8c6a1a6a .N.S..111.1.j.j.
1a248: b49424e1 e8e8e831 e80687dc e8e8e8e8 .$..1...........
1a258: dce84545 4545e8dc 3141de16 e3790d79 EE....EE..A1y.y.
1a268: 76762ceb 7777c8c8 74777777 77777774 .,vv..wwwwwttwww
1a278: e91ebb74 cf0c64e9 690ccfcf 48483648 t....d.....iH6HH
1a288: 0c364848 782424ca d369692d 44e9d3bf HH6..$$x-ii....D
1a298: e91e64d1 2b2b77e9 2b2bb32b 0d0dc8c8 .d...w+++.++....
1a2a8: 13414131 76767979 76764076 79797676 1AA.yyvvv@vvvvyy
1a2b8: 7e7e4079 4545e240 1331e231 3595527d y@~~@.EE1.1.}R.5
1a2c8: 8745e213 4040e231 94736811 97739773 ..E.1.@@.hs.s.s.
1a2d8: 00001597 00000000 ec000000 971c1c97 ................
1a2e8: 73739797 707000cb e4e17070 31313176 ..ss..pppp..v111
1a2f8: e2453131 e6ac1af5 9424e1db e8453ed1 11E.......$..>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..<RL.1.
1a438: 40313131 e2404040 40401131 57221211 111@@@@.1.@@.."W
1a448: 1cff1c73 00156397 70000000 1c1c4a00 s....c.....p.J..
1a458: 97ff1c1c 70489773 90007070 31312b42 ....s.Hppp..B+11
1a468: 31313131 ac6ab331 e1dbe16a 45112457 11111.j.j...W$.E
1a478: dce84545 45e80687 e8e84545 e8e81345 EE.....EEE..E...
1a488: 313113e8 e367765e c80d5bfc 770dc8c8 ..11^vg..[.....w
1a498: 77777777 77747777 bb2b7777 1ebb6477 wwwwwwtwww+.wd..
1a4a8: cfcfcd0c cb69cfcf 43ec6948 97eccb2a ......i.Hi.C*...
1a4b8: 69d378ed e5bf6969 e9bbc55b 1e64d1bb .x.iii..[.....d.
1a4c8: 2b771ee9 c8797979 415ec80d 761341f3 ..w+yyy...^A.A.v
1a4d8: 40404076 79764040 79793131 c5794040 v@@@@@vy11yy@@y.
1a4e8: 7d95957d 404079dc 313131e2 e2404040 }..}.y@@.111@@@.
1a4f8: 40114545 12114040 1c975773 1c1c1c1c EE.@@@..sW......
1a508: 0048ec91 1c910000 1c1c1c89 701c971c ..H............p
1a518: 91007070 317e5a42 31313131 1af5e231 pp..BZ~111111...
1a528: dbdb57ac e2f1948c e8454531 e88741e8 .W......1EE..A..
1a538: 45453145 133145e8 31311313 e3207631 E1EE.E1...111v .
1a548: c846b0fc c8c8c8c8 77c8c8c8 38777777 ..F........wwww8
1a558: 77bb2b77 bbbb7477 cf69e913 d3694fcf w+.wwt....i..Oi.
1a568: 430c0c48 eccb694d 0c2d9097 d32d780c H..CMi....-..x-.
1a578: 2025d8e5 abd1bb1e 77e94ee9 79797979 ..% .....N.wyyyy
1a588: 5e760dc8 1341f37c 40407676 76404040 ..v^|.A.vv@@@@@v
1a598: 79767979 950f3313 878e4c52 407e7e45 yyvy.3..RL..E~~@
1a5a8: 31e24040 407e40e2 404031e2 40404040 @@.1.@~@.1@@@@@@
1a5b8: e6ff12e2 891c1c73 631c1c89 89074afa ....s......c.J..
1a5c8: 1c898989 1c971c1c 07700070 31741a1a ........p.p...t1
1a5d8: 31313131 66403131 db24acac d16a24db 111111@f..$..$j.
1a5e8: 45313131 e8d7e8e8 314545e8 3145e831 111E.....EE11.E1
1a5f8: 795e5e5e fc5b7676 7446d852 c8c84674 ^^^yvv[.R.FttF..
1a608: c8c8c8c8 77777777 772bbb74 77747777 ....wwwwt.+wwwtw
1a618: cf1edcdc 694fcfcf 2d690cd3 cbcb2d4d ......Oi..i-M-..
1a628: d3e197ec bfae0c69 af2f642d bb1e6425 ....i...-d/.%d..
1a638: 1ee9e91e 13797977 760d7913 7cf37c5e ....wyy..y.v^|.|
1a648: 40767913 400d0d0d 5b137640 ce6c520f .yv@...@@v.[.Rl.
1a658: 871333b1 7e7ee287 76404040 7e4040e2 .3....~~@@@v.@@~
1a668: 7e404040 40404040 68e24040 89738191 @@@~@@@@@@.h..s.
1a678: 63891c1c 63636363 1c898963 1c1c1c1c ...cccccc.......
1a688: 89cbcb97 117860e6 31313131 b3313131 .....`x.1111111.
1a698: 8c6a6a6a 9432dbdb 31313179 d7e8e845 jjj...2.y111E...
1a6a8: 454545e8 5e313131 5e5e5e31 655b7679 .EEE111^1^^^yv[e
1a6b8: 46c820e3 77747474 77c8c8c8 bb747477 . .Ftttw...wwtt.
1a6c8: bb7774bb 74771e77 64bb0e79 36cfcf0c .tw.w.wty..d...6
1a6d8: 36486969 48cbd32a 241c6948 786d6978 iiH6*..HHi.$ximx
1a6e8: e5bf0cd3 6dd8255b e90ce9e9 dc79771e ....[%.m.....wy.
1a6f8: 0d79e85d 3d415ec8 4076e85d 400d0d40 ].y..^A=].v@@..@
1a708: 52fbf279 5b935265 e8407e79 40403187 y..ReR.[y~@..1@@
1a718: 4040407e 7e404040 40407e7e 4040407e ~@@@@@@~~~@@~@@@
1a728: 40404040 73d33411 07fa6373 2d2dcaca @@@@.4.ssc....--
1a738: ca2d2d2d 6363faca 739773ff 3497fe22 ---...cc.s.s"..4
1a748: 31313131 e2313131 946aacb4 57dbdbdb 1111111...j....W
1a758: 313111e6 e8453131 45e8e8e8 31313145 ..1111E....EE111
1a768: 5e313131 65f27979 7676b337 747474c8 111^yy.e7.vv.ttt
1a778: 74747474 38383838 7438bbbb c8c87477 tttt8888..8twt..
1a788: 0c1e2b77 cfcfbb44 480c0c36 48cb0c69 w+..D...6..Hi..H
1a798: 89cb4848 0c6991e6 440c6978 c55b5be5 HH....i.xi.D.[[.
1a7a8: e90c0cbb 33ab1ee9 7979416b 7ce87679 .......3kAyyyv.|
1a7b8: 79e8f33d af337979 ce52cefb 76315b0f =..yyy3...R..[1v
1a7c8: e27e7e40 4040e213 407e7e40 40404040 @~~...@@@~~@@@@@
1a7d8: 407e7e7e 7e7e7e7e 40404040 597e11e2 ~~~@~~~~@@@@..~Y
1a7e8: 7438d369 68684646 02020202 744646dd i.8tFFhh.....FFt
1a7f8: fffacae9 68901a22 3131e2e2 45313131 ...."..h..11111E
1a808: acac5a40 e1dbf132 3111e194 45313131 @Z..2......1111E
1a818: e8e8e8e8 3131315e 5e313131 65b179b3 ....^111111^.y.e
1a828: c8c87671 7446c8c8 38747474 77773838 qv....Ftttt888ww
1a838: 38777738 87c8771e 0ce91e2b 0c44690c 8ww8.w..+....iD.
1a848: 2d69cbcb 6948480c 70704848 ae5a5aca ..i-.HHiHHpp.ZZ.
1a858: 0c69780c 5b5be544 1e6dd1c5 1377771e .xi.D.[[..m..ww.
1a868: 79135d6b 41e83179 93287f3d e3e3fb0f k].yy1.A=.(.....
1a878: 13f2fbe3 40407679 347e4076 7e40407e ....yv@@v@~4~@@~
1a888: 7e7e7e7e 407e4040 7e7e7e40 7e7e7e40 ~~~~@@~@@~~~@~~~
1a898: 40407e7e 12120de2 1246dd46 cfcdcd54 ~~@@....F.F.T...
1a8a8: 4f4fcfcf 5954cd4f c95fdd46 341c8938 ..OOO.TYF._.8..4
1a8b8: 31e240e2 31313131 6a6a7631 dbf1246a .@.111111vjjj$..
1a8c8: e2b46a8c 31313131 e8e8e8e8 3131315e .j..1111....^111
1a8d8: 79313131 65fb1379 c8c8c82c 46c8c8c8 111yy..e,......F
1a8e8: 74774646 77383874 381e381e 0e771e38 FFwtt88w.8.88.w.
1a8f8: 0ce91e0e 6969690c cbcbcb69 480c69bb .....iiii....i.H
1a908: 70700ccb edca6970 69ca9065 d1d1440c ..pppi..e..i.D..
1a918: bbc525d8 13b32bbb 67131616 28252067 .%...+.....gg %(
1a928: f0f0b6ad af7d4c21 0d0d79d1 7979760d ....!L}..y...vyy
1a938: 0d407676 40400d34 7e7e7e7e 4040407e vv@.4.@@~~~~~@@@
1a948: 7e404040 7e7e7e7e 407e7e7e dd7468e2 @@@~~~~~~~~@.ht.
1a958: cf4e74dd cfcfcfcf 3636cfcf a9a9a936 .tN.......666...
1a968: 544fa9a9 745fc974 e2e23412 31313131 ..OTt._t.4..1111
1a978: acd8e231 f1db946a b39424db 31313131 1...j....$..1111
1a988: e8e83131 31315ee8 79313131 fc371376 11...^11111yv.7.
1a998: c8c876f2 77c8c8c8 77467774 38383874 .v.....wtwFwt888
1a9a8: 38383838 13383838 e96d2bb5 69690c0c 8888888..+m...ii
1a9b8: cbcbcbcf 69cb44cb 701ebbe9 36697070 .....D.i...pppi6
1a9c8: 5a5af16d b0a02ce1 28c7b4e5 5bb4e55b m.ZZ.,.....([..[
1a9d8: 8e8e6b6e 214c4c93 28adb6b6 1341f37f nk...LL!...(..A.
1a9e8: 0d0d0d40 76760d0d 40767679 400d340d @.....vvyvv@.4.@
1a9f8: 7e7e7e40 4040407e 40404040 7e7e4040 @~~~~@@@@@@@@@~~
1aa08: 7e7e7e7e 744e117e 5454cd12 cfcfcdcd ~~~~~.Nt..TT....
1aa18: 4f4f4fcf a9a9a91f 3b3ba9a9 12543b3b .OOO......;;;;T.
1aa28: 34195e76 3131e2e2 5a403131 f1e66a6a v^.4..1111@Zjj..
1aa38: 6632dbdb 5f313176 5e313131 31315ee8 ..2fv11_111^.^11
1aa48: 76765f31 10e32076 c8c8765b 77c8c8c8 1_vvv ..[v.....w
1aa58: 74747474 12387474 4e38384e 7738384e tttttt8.N88NN88w
1aa68: 441e336e 440c0ce9 cbcbcbe9 48e936cb n3.D...D.....6.H
1aa78: 44e96948 36707070 cbd3d348 4c3c5378 Hi.Dppp6H...xS<L
1aa88: f0e3be71 713721f0 8e8e6e8e c7930f0f q....!7q.n......
1aa98: 7c7c4125 41f3f37c 0d0d7613 400d0d0d %A|||..A.v.....@
1aaa8: 76767976 0d347e40 7e7e4040 407e7e7e vyvv@~4.@@~~~~~@
1aab8: 40404040 40404040 7e7e7e7e 40407e7e @@@@@@@@~~~~~~@@
1aac8: 54cdcf4f cdcdcd4e 4f4fcfcf a9a9a9a9 O..TN.....OO....
1aad8: 08a9a9a9 54543b08 5e461259 31317e76 .....;TTY.F^v~11
1aae8: 76313131 246a6a6a 94dbdbf1 5f311124 111vjjj$....$.1_
1aaf8: 31315f5f 5e5e135e 76765f31 37105b76 __11^.^^1_vvv[.7
1ab08: c82b76d1 c8c8c8c8 38747477 38387438 .v+.....wtt88t88
1ab18: 54545412 38384e54 bbe9132b d30c0c6d .TTTTN88+...m...
1ab28: cbcf6d44 0c36cbcb cb697070 70704838 Dm....6.ppi.8Hpp
1ab38: 36367070 03abcb48 5bbfaebf afafaf8e pp66H......[....
1ab48: ab2b2bd1 41d720b3 5e315ed7 f37c41e8 .++.. .A.^1^.A|.
1ab58: 4031d741 0d0d0d0d 76767640 340d4076 A.1@....@vvvv@.4
1ab68: 7e404034 7e7e4040 40404040 e2404040 4@@~@@~~@@@@@@@.
1ab78: 7e7e7e40 407e7e7e cd4f0d40 cd541254 @~~~~~~@@.O.T.T.
1ab88: 4fcfcfcd a9a9a9a9 a9a9a9a9 543b0808 ...O..........;T
1ab98: 74685954 314074c9 e2313131 6a94acd8 TYht.t@1111....j
1aba8: e1dbf1db 3111b46a 5f5f5f5f 5e135e31 ....j..1____1^.^
1abb8: 76767631 0ffcaf76 c8767679 19c8c8c8 1vvvv...yvv.....
1abc8: 74747477 38747474 54545412 38545454 wtttttt8.TTTTTT8
1abd8: 0ce91e1e 69690c6d cb690c0c 36cbcbcb ....m.ii..i....6
1abe8: 4870700c 00cbe9cb 69697070 2d0c6948 .ppH....ppiiHi.-
1abf8: 1ebf6d2d bb1e64b3 77c86464 205ec877 -m...d..dd.ww.^
1ac08: 0dc8b313 d731760d e8417c7c 0d0d4076 .....v1.||A.v@..
1ac18: 7640400d 0d407676 40403434 7e404040 .@@vvv@.44@@@@@~
1ac28: 7e40407e 407e7e7e 7e404040 7e7e7e7e ~@@~~~~@@@@~~~~~
1ac38: 34117e40 1e4e4ecf cfcdcd4e a9a9a94f @~.4.NN.N...O...
1ac48: a9a9a9a9 080808a9 68595454 e26838dd ........TTYh.8h.
1ac58: 313131e2 6a6ae140 dbf1f157 5fb36a24 .111@.jjW...$j._
1ac68: 5f5f5f31 5e5e315f 7676315e b1fcb176 1____1^^^1vvv...
1ac78: 76797679 464619c8 38747474 38747438 yvyv..FFttt88tt8
1ac88: 54545412 54545454 0c0ce94e 6969690c .TTTTTTTN....iii
1ac98: cf0c6969 cbcbcbcb 70704436 360c7070 ii......6Dpppp.6
1aca8: 2d707000 0cd3cb0c 780ccb69 6d6dd1bb .pp-....i..x..mm
1acb8: c8771e44 2bc8c8c8 7477c82b 760d3468 D.w....++.wth4.v
1acc8: 417c4131 0d7631d7 400d0d0d 40404040 1A|A.1v....@@@@@
1acd8: 4034340d 40407e40 40407e7e 7e7e7e7e .44@@~@@~~@@~~~~
1ace8: 40404040 7e7e7e7e e240407e 674e0d31 @@@@~~~~~@@.1.Ng
1acf8: cdcd3867 a9a94fcf a9a9a9a9 0808a9a9 g8...O..........
1ad08: 68545408 e2685446 313131e2 94944031 .TThFTh..1111@..
1ad18: f1f1246a 769432db 5f5f5f5f 5e315f5f j$...2.v______1^
1ad28: 765e5e5e 5b10fb5e 795e7976 7446c879 ^^^v^..[vy^yy.Ft
1ad38: 74747474 38381238 54545412 5454cd54 tttt8.88.TTTT.TT
1ad48: 0c0c4e4e 690c6969 440c6969 cbcb360c NN..ii.iii.D.6..
1ad58: 00bbcbcb 0c000000 70707036 d3cb0c2d ........6ppp-...
1ad68: 0c69692d 4441bb0c 1e1e6de9 77c82b1e -ii...AD.m...+.w
1ad78: 12772bc8 34681212 41e8760d 31e84141 .+w...h4.v.AAA.1
1ad88: 0d0d0d76 40404040 34343440 7e7e7e7e v...@@@@@444~~~~
1ad98: 7e7e7e7e 7e7e7e7e 40407e7e 7e347e7e ~~~~~~~~~~@@~~4~
1ada8: 31407e34 dc314545 544e2b17 a94fcdcd 4~@1EE1..+NT..O.
1adb8: a9a9a9a9 08a9a9a9 b2540808 e23454b2 ..........T..T4.
1adc8: 31e2e2e2 6ad1e231 f1db6a57 5a32dbf1 ...11..jWj....2Z
1add8: 5f5f5fdd 5f5f5f5f 5f5e5e31 20e3e313 ._______1^^_...
1ade8: 79797676 c8c87679 74747446 12123838 vvyyyv..Fttt88..
1adf8: 12545459 cdcdcd54 0c4e54cd 0ce96969 YTT.T....TN.ii..
1ae08: cb696969 cbcbcbcb 446936cb 00000070 iii......6iDp...
1ae18: 4870360c 360c2d70 6969e96d f3200c69 .6pHp-.6m.iii. .
1ae28: e90ce9d1 64bb1e1e c8b3771e 12121212 .......d.w......
1ae38: 310d0d34 d7414141 0d407913 400d0d0d 4..1AAA..y@....@
1ae48: 34340d40 347e7e34 34347e34 407e7e7e @.444~~44~44~~~@
1ae58: 34347e7e 3434347e e27e347e 87e84145 ~~44~444~4~.EA..
1ae68: 12e933b5 4fcdcd54 a9a9a9a9 a9a9a9a9 .3..T..O........
1ae78: 23540808 11111254 e2e21111 e1403131 ..T#T.......11@.
1ae88: f157946a 94dbdbf1 5f317ef5 5f5f5f5f j.W......~1_____
1ae98: 315e315f 5e37fcc5 76767676 19c87676 _1^1..7^vvvvvv..
1aea8: 747477c8 59383838 38545959 cdcdcd54 .wtt888YYYT8T...
1aeb8: cd54cdcd 0c696969 69696969 690c6969 ..T.iii.iiiiii.i
1aec8: 0c48cbcb 00704844 48360c00 cbcb4848 ..H.DHp...6HHH..
1aed8: 696dd3cb 44693669 e964c520 1ee91ee9 ..mii6iD .d.....
1aee8: 2babab2b 121274b3 0d776812 4141e879 +..+.t...hw.y.AA
1aef8: 7631e8d7 0d0d0d40 340d400d 0d0d3434 ..1v@....@.444..
1af08: 34343434 7e0d7e34 347e407e 34343434 44444~.~~@~44444
1af18: 407e7e34 0e5d06e2 4ee25db5 cdcd5454 4~~@..]..].NTT..
1af28: a9a94f4f a9a9a9a9 a5a50808 11e2676d OO..........mg..
1af38: 11111111 4031e2e2 246a5757 dbdbf10b ......1@WWj$....
1af48: 5f11d86a 765f5f5f 315f5f76 790feab1 j..____vv__1...y
1af58: 76767676 19c81976 74747419 59123838 vvvvv....ttt88.Y
1af68: 54545959 cdcdcd54 cdcdcdcd cf6969cd YYTTT........ii.
1af78: 696969cf 0c696969 48cb3669 4870440c .iiiiii.i6.H.DpH
1af88: 48cb7070 48cbcb48 4444cb70 6d36690c pp.HH..Hp.DD.i6m
1af98: d7d16d2d e91e6dbb 2bdc671e 1277c8bb -m...m...g.+..w.
1afa8: 74121212 e879760d 13e8d7d7 40404079 ...t.vy.....y@@@
1afb8: 7e407e7e 407e3434 3434347e 407e7e34 ~~@~44~@~4444~~@
1afc8: 1268347e 347e3468 407e3434 5d41e831 ~4h.h4~444~@1.A]
1afd8: e2316bb5 cd54cd34 4f4f4fcd a9a9a9a9 .k1.4.T..OOO....
1afe8: 080808a9 13051843 11111111 e2e21111 ....C...........
1aff8: 94e66a64 dbf10bdb 5f19948c 765f5f5f dj.........____v
1b008: 31767676 76af65fb 76767676 1919c876 vvv1.e.vvvvvv...
1b018: 74741919 12383838 54545454 cdcdcdcd ..tt888.TTTT....
1b028: cdcdcdcd 0c0c0ccd 690c69cb 69cbcbcf .........i.i...i
1b038: cbcb0c0c 00d30c48 48484870 cb6d69cb ....H...pHHH.im.
1b048: 6dcb4848 cbcb690c 4469d36d 1e1ed120 HH.m.i..m.iD ...
1b058: 336e2be9 1e777777 12121212 0d0d0d68 .+n3www.....h...
1b068: e8e81379 0d7931e8 12541268 54545459 y....1y.h.T.YTTT
1b078: 7e343468 4040347e dd466812 68546846 h44~~4@@.hF.FhTh
1b088: 4034347e 5df34131 e2e86b6b cdcd4040 ~44@1A.]kk..@@..
1b098: 4f4fcdcd a9a94f3b 08080808 9a187a6d ..OO;O......mz..
1b0a8: 111131a0 e2111111 e66af57e f10b0b57 .1......~.j.W...
1b0b8: 346624db 5f5f5f5f 5e407676 7633fce3 .$f4____vv@^..3v
1b0c8: 76767676 c80dc876 7419c876 12383838 vvvvv...v..t888.
1b0d8: cd545454 cd3b3b3b cdcdcdcd e90ccdcd TTT.;;;.........
1b0e8: cbcbcb0c 0c69cbcb 36692d2d 2d0c4836 ......i.--i66H.-
1b0f8: 48487070 2ab02dcb 703636cb 36363648 ppHH.-.*.66pH666
1b108: 690c0c69 bbd1ab0c 33dc1ee9 1e771e77 i..i.......3w.w.
1b118: 124e4e12 0d341212 13790d0d 68c813e8 .NN...4...y....h
1b128: a1a1dd46 a1d9d9d9 6802dda1 407e6812 F..........h.h~@
1b138: 75a15959 d95858df 7e7e1259 f3f306e2 YY.u.XX.Y.~~....
1b148: 31e85d5d 547e4040 4fcdcdcd 4f3b3b4f ]].1@@~T...OO;;O
1b158: 3b08a53b 7ad43b54 e2dc9a18 11111111 ;..;T;.z........
1b168: 94e67ee2 72723257 e1e60bf1 765f5fa4 .~..W2rr.....__v
1b178: 20407676 7613e310 0d0d7676 0d0d7676 vv@ ...vvv..vv..
1b188: 77c87676 12121274 cd545454 4f4f3bcd vv.wt...TTT..;OO
1b198: cdcdcd3b e9cdcd0c cfcb2d6d cbcb6969 ;.......m-..ii..
1b1a8: 6969cbcb 69483636 48484869 011b6936 ..ii66HiiHHH6i..
1b1b8: 3636cb2d 36487048 0c69cb36 646d0c0c -.66HpH66.i...md
1b1c8: 2b774e77 1e1e1eab 4e4e121e 68121212 wNw+......NN...h
1b1d8: 400d0d0d a168120d df5858df dfdfdfdf ...@..h..XX.....
1b1e8: 58585858 5902d958 2323a5a9 df75a1a4 XXXXX..Y..##..u.
1b1f8: 6868d9df f3f34511 3131e841 12407e40 ..hh.E..A.11@~@.
1b208: cdcd5459 3b543b4f 54a53b3b 43a5543b YT..O;T;;;.T;T.C
1b218: 619a187a 1111e231 6a2b1111 72db5732 z..a1.....+j2W.r
1b228: 940bf172 765fddd8 af407676 76760f65 r....._vvv@.e.vv
1b238: 0d767676 0d464646 46c8760d 59123874 vvv.FFF..v.Ft8.Y
1b248: 54545454 4f4f3bcd cd4f4f4f cdcd0ccd TTTT.;OOOOO.....
1b258: cf6d0c0c cbcb0c0c 696969cb 483636cb ..m......iii.66H
1b268: 48486936 8a43cb48 36cb6943 69707048 6iHHH.C.Ci.6Hppi
1b278: d3690c0c e90c44d3 4e4e77bb 1e1e2b1e ..i..D...wNN.+..
1b288: 12121e1e 12124e4e 0d343474 f7a15412 ....NN..t44..T..
1b298: dfdff7da d9757575 a1a1a1d9 58dfd90a ....uuu........X
1b2a8: a90802d9 a102b723 a1d9dfdf 6e413159 ....#.......Y1An
1b2b8: 40e23141 68407e40 cd546859 54544fcd A1.@@~@hYhT..OTT
1b2c8: 54cdcdcd 59cdcd54 187ad459 11e2dc01 ...TT..YY.z.....
1b2d8: 727e1111 7257326a dbf1722f 7611c86a ..~rj2Wr/r..j..v
1b2e8: 0f764076 7640f265 76767676 4646460d v@v.e.@vvvvv.FFF
1b2f8: 0d190d46 12387474 54545454 4f4fcdcd F...tt8.TTTT..OO
1b308: cf4f4fa9 cd0ccdcd 69cbcfcd cbcb69cb .OO........i.i..
1b318: cbcb6969 48483669 48cbcb48 050ccb48 ii..i6HHH..HH...
1b328: cbcb6961 cb704848 0c0ce9d3 0c446dd3 ai..HHp......mD.
1b338: 4e771ee9 1e64bb0c 381e1e1e 12544e12 ..wN..d....8.NT.
1b348: 0d777774 dadf744e 5f7575df a1a1a1a1 tww.Nt...uu_....
1b358: 0202a4a1 29a40202 df58d9a1 b2a5a9b2 .......)..X.....
1b368: d9dfa102 3d13b2a1 4040310e 0d407e7e .......=.1@@~~@.
1b378: 54590254 59a9cdcd cdcd5459 cd545954 T.YT...YYT..TYT.
1b388: a877b254 e21b8218 02111111 323294ed T.w...........22
1b398: 0b722fe5 11469424 e35edd40 76dd1310 ./r.$.F.@.^....v
1b3a8: 76767640 46464676 0d464646 12387446 @vvvvFFFFFF.Ft8.
1b3b8: 54545454 4fcdcdcd 4f4fa9a9 cfcdcdcf TTTT...O..OO....
1b3c8: cbcfcfcf 6969cb36 cbcbcbcb cb696969 ....6.ii....iii.
1b3d8: 48cb4848 43cb4848 cbcb6da0 70484836 HH.HHH.C.m..6HHp
1b3e8: e9e9d369 446d0c69 77e90c0c ab2b4e4e i...i.mD...wNN+.
1b3f8: 77771e1e 54121e1e c8771212 d9da46cd ..ww...T..w..F..
1b408: 59b246dd a5a5a559 a5a5a5a5 23a5a5a5 .F.YY..........#
1b418: a1a4b723 a5a1dfd9 a1a4b208 79b2a1d9 #..............y
1b428: 7e40455d 0d403434 54b20254 a94fcd54 ]E@~44@.T..TT.O.
1b438: cd5459b2 54595454 025954cd 1b82a8e5 .YT.TTYT.TY.....
1b448: 1111e231 32325777 0b2fe5db a45a320b 1...wW22../..2Z.
1b458: 655b4040 40dd7637 7676760d 46460d76 @@[e7v.@.vvvv.FF
1b468: 74747474 38747474 54545459 4fcdcdcd ttttttt8YTTT...O
1b478: 4f1fa94f 4fcfcf4f cbcb4f4f 69cbcb36 O..OO..OOO..6..i
1b488: cbcbcbcb 0c0c0c69 48367036 69484870 ....i...6p6HpHHi
1b498: cb366d43 70484848 1e697070 e90c69e9 Cm6.HHHpppi..i..
1b4a8: e90c0ce9 2b1e4e77 ab7777bb 121e1e77 ....wN.+.ww.w...
1b4b8: 7712124e ddf7464e 545959b2 a9a90808 N..wNF...YYT....
1b4c8: a9a9a9a9 a50808a9 23a5a5a5 d92902b7 ...........#..).
1b4d8: 23a546df 02a1d929 7e403112 68407e34 .F.#)....1@~4~@h
1b4e8: 2302dd3b 1fcd5454 5459b254 59545454 ;..#TT..T.YTTTTY
1b4f8: 59545459 824dddb2 e2e2311b ed6aae7e YTTY..M..1..~.j.
1b508: 2fe57232 b494720b 650f7602 dddd40af 2r./.r...v.e.@..
1b518: 0dc9c946 b2684646 687474b2 12126868 F...FFh..tthhh..
1b528: 54545412 cfcdcdcd 1f1fa94f cfcf4f4f .TTT....O...OO..
1b538: 36cbcf1f 69cb3636 696969cb 696969cb ...666.i.iii.iii
1b548: 48484836 70004848 4848cb36 70484848 6HHHHH.p6.HHHHHp
1b558: cf707070 e90c0c44 0ccd0cd3 1e387738 ppp.D.......8w8.
1b568: 771e1e77 77777764 744e1212 4675121e w..wdwww..Nt..uF
1b578: a9085459 59a508a9 020202b2 08a559b2 YT.....Y.....Y..
1b588: 08a9a9a9 23a5a5a5 d9d929b7 a10259b2 .......#.)...Y..
1b598: 7e68b2a4 4f683434 2302a13b 3b5454a5 ..h~44hO;..#.TT;
1b5a8: 59b2b21f 54545454 5454b259 a102b754 ...YTTTTY.TTT...
1b5b8: 11316143 572268e2 e5e58ced 94727272 Ca1..h"W....rrr.
1b5c8: fcea25d1 dd407e13 464646dd 80d7e876 .%...~@..FFFv...
1b5d8: b2685f5e 59595968 54545459 cfcdcdcd ^_h.hYYYYTTT....
1b5e8: 1fa94f4f cf4f1f1f cbcf1fcf 36363636 OO....O.....6666
1b5f8: 6969cb36 3636cbcb 48484848 00484848 6.ii..66HHHHHHH.
1b608: 48707000 70704848 1f1f7070 0ccf0c36 .ppHHHpppp..6...
1b618: cde9bf6d 381e4e0c 1e4e4e4e ab772b2b m....N.8NNN.++w.
1b628: 54121277 465f4e68 081fa954 58dfa1b2 w..ThN_FT......X
1b638: 58585858 58585858 02a1d958 a5a9a9a5 XXXXXXXXX.......
1b648: 02232323 b2a1d9a4 a9235459 1fa95454 ###.....YT#.TT..
1b658: 2302d959 54a5a5a5 59b23ba9 543b5454 Y..#...T.;.YTT;T
1b668: 59b25954 b723543b 79775fdd 571e11e2 TY.Y;T#.._wy...W
1b678: bf51eded 517272e5 f0d6afe6 40dd3425 ..Q..rrQ....%4.@
1b688: 5e466846 e0e0e062 b9c6c6f4 59595968 FhF^b.......hYYY
1b698: 54545459 cfcdcdcd 4f4f4fcf 4f1f1f1f YTTT.....OOO...O
1b6a8: cb1fcbcf cbcb3636 69cbcb36 36cbcb69 ....66..6..ii..6
1b6b8: 48484848 48484848 00000000 70707000 HHHHHHHH.....ppp
1b6c8: 1f707070 cf363636 cd44d30c 4e4e0ccd ppp.666...D...NN
1b6d8: 4e544e12 bbbbab1e 121e742b 68545454 .NTN....+t..TTTh
1b6e8: dd54a9a9 dff7f775 a1a1d975 a1a1a1a1 ..T.u...u.......
1b6f8: 88d90a0a 02d95858 a508a908 a4b72323 ....XX......##..
1b708: 02a429a1 b25423b2 23b2d9d9 a5a5a5a5 .)...#T....#....
1b718: b2b21f54 0854a559 5959a5a5 a5a554b2 T...Y.T...YY.T..
1b728: 75ddb7b7 787e3446 2f8c8c57 4d72e5bf ...uF4~xW../..rM
1b738: 216f5a8c 345e3d7c 625e0234 3d3df4f4 .Zo!|=^44.^b..==
1b748: 5062623d 5959da50 54545459 4fcdcdcd =bbPP.YYYTTT...O
1b758: cf4f4f4f 1f1f364f 7036cf1f cb363648 OOO.O6....6pH66.
1b768: cb36cbcb 36cb6969 48483636 70707048 ..6.ii.666HHHppp
1b778: 00007048 70000000 70707070 cf361f1f Hp.....ppppp..6.
1b788: 0c6d0c0c cd5454cd 544e4e54 77777712 ..m..TT.TNNT.www
1b798: 771277c8 3b545974 df5f54a9 a1d975df .w.wtYT;.T_..u..
1b7a8: 29a1a1a1 a1a12929 2929a1a1 d9a1a129 ...)))....)))...
1b7b8: b2dddf58 a5a5a523 a5080808 a1ddb259 X...#.......Y...
1b7c8: a523a4d9 a5a5a5a5 02a5a9a5 54a523b2 ..#..........#.T
1b7d8: 23a5a508 08b2b7b2 b7b723a5 08ddf7dd ...#.....#......
1b7e8: 908c3273 72bfbfbf 20e132e5 465e80d7 s2.....r.2. ..^F
1b7f8: f4625fb7 3d3d62c6 50626262 c950da50 ._b..b==bbbPP.P.
1b808: 54545454 cfcdcdcd cf4f4f4f 1f364fcf TTTT....OOO..O6.
1b818: 701f1f1f 36363670 363636cb cbcbcbcb ...pp666.666....
1b828: 48363636 48704848 7070fafd 00000000 666HHHpH..pp....
1b838: 70707000 4f1f1f1f cdcd0c0c 4e5454cd .ppp...O.....TTN
1b848: 5454cd54 2b2b7454 74127777 12741277 T.TTTt++ww.tw.t.
1b858: 75df46a9 dda1a1d9 02dda1dd 02020202 .F.u............
1b868: a402b702 a12929a4 d90aa1a1 a1d9d9d9 .....)).........
1b878: dddddda1 a1a1a1a1 a5a52302 a5a5a5a5 .........#......
1b888: 02a9a5a5 a5a52302 a5540823 b259b2a5 .....#..#.T...Y.
1b898: 23230859 daddb7b7 908c2274 bfbfab0b Y.##....t"......
1b8a8: e5e6ae2f 23027640 f4f43002 62626262 /...@v.#.0..bbbb
1b8b8: 50b95062 dff75050 545454a1 4fcdcdcd bP.PPP...TTT...O
1b8c8: 4f4f4f4f 3636364f 1f1f1f1f 36cb1f70 OOOOO666....p..6
1b8d8: 36363636 36cbcb36 36cbcb36 48484848 66666..66..6HHHH
1b8e8: 0063fafd 00000070 70700000 1f1f1f70 ..c.p.....ppp...
1b8f8: cdcdcf4f 5454cdcd 3b545454 2b12543b O.....TTTTT;;T.+
1b908: 74c8b3b3 74121277 7575a174 a1a1a15f ...tw..tt.uu_...
1b918: 23b202dd 080808a5 a5a50808 b7b723a5 ...#.........#..
1b928: a402b7b7 a1a1dda4 a1a1a1a1 b7b7a429 ............)...
1b938: a5a5a523 a5a5a5a5 021fa5a5 a52323a4 #............##.
1b948: a50823a5 b223a5a5 a9b2a423 b7b72323 .#....#.#...##..
1b958: 9081d3a4 bfbbae9b e6aeaebf 0223b274 ............t.#.
1b968: 62f46280 b9505062 6262b9b9 a175f750 .b.bbPP...bbP.u.
1b978: 543bb2dd 3bcdcdcd 364f4f4f 36363636 ..;T...;OOO66666
1b988: 1f1f1f36 36367070 69364848 36363669 6...pp66HH6ii666
1b998: cbcb3636 48484836 fdfa0715 70707000 66..6HHH.....ppp
1b9a8: 70000070 1f1f7070 cdcdcfa9 54cd4ee9 p..ppp.......N.T
1b9b8: cd545454 123b3b3b b3d1c877 1274c879 TTT.;;;.w...y.t.
1b9c8: 5f75d946 a15fdda1 0808a5b2 08080808 F.u_.._.........
1b9d8: a5080808 a5a5a5a5 232323a5 b7b72323 .........#####..
1b9e8: 23b7b7b7 a5a5a523 a5a5a5a5 a5a5a5a5 ...##...........
1b9f8: b2a9a5a5 2323b2a1 0823a5a5 a5a5a5a5 ......##..#.....
1ba08: a123b2b2 23230868 ed63a5b7 bbbf9797 ..#.h.##..c.....
1ba18: 72bfbfbf 305f6832 b97c6262 f7f7b9b9 ...r2h_0bb|.....
1ba28: b950b9f7 02dd5f80 3b23b2b2 cdcd3b3b ..P.._....#;;;..
1ba38: 4f4f4f4f 36363636 1f701f36 4870701f OOOO66666.p..ppH
1ba48: 48483648 36483636 cbcb3636 cbcbcbcb H6HH66H666......
1ba58: fd630715 70700015 00007000 1f707070 ..c...pp.p..ppp.
1ba68: 4fcfa91f cdcde9cd 54544e54 54545454 ...O....TNTTTTTT
1ba78: 2b771e54 771379b3 a15f7546 dda1dda1 T.w+.y.wFu_.....
1ba88: 08080823 08080808 08080808 08080808 #...............
1ba98: 08080808 a5a5a508 a5a5a5a5 a5a5a5a5 ................
1baa8: a5a5a5a5 a5a5a5a5 02a9a5a5 232302d9 ..............##
1bab8: 59a508a5 a5a5a5a9 b2b223a5 a5a1a123 ...Y.....#..#...
1bac8: 733b23a5 44979773 78bfbf44 f4f79090 .#;ss..DD..x....
1bad8: f7b9b962 daf7f7f7 75f7dada b2b234c9 b..........u.4..
1bae8: a5b2b2b2 3b3b3b08 4f4f4f4f 3636364f .....;;;OOOOO666
1baf8: 701f3636 70483670 48487070 48484848 66.pp6HpppHHHHHH
1bb08: cbcbcb36 1e0ccbcb 4a63faec 00000048 6.........cJH...
1bb18: 70000070 70707000 4f4f4fcf cde94e4f p..p.ppp.OOOON..
1bb28: 4e4e5454 54545454 12125454 2b2bbb77 TTNNTTTTTT..w.++
1bb38: a1d97546 a1a1a1a1 0808a5b2 08a9a908 Fu..............
1bb48: 0808a908 08080808 08080808 a508a508 ................
1bb58: a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 ................
1bb68: dd08a9a5 2323a4df 23a5a523 a5a508b2 ......###..#....
1bb78: b7a5a5a5 a1b7b702 2da502d9 891c9722 ...........-"...
1bb88: 7844441e f772ed44 f7f7f7b9 dadab9f7 .DDxD.r.........
1bb98: a4a1d9df 59686868 23235959 3b3b3b08 ....hhhYYY##.;;;
1bba8: 4f4f4f3b 36363636 70363636 70367070 ;OOO6666666ppp6p
1bbb8: 70707070 48484870 69cb3648 3e0c6969 pppppHHHH6.iii.>
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 <hex.1>:
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 <CSWTCH.21>:
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 <wcorr.0>:
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 <CSWTCH.66>:
201d3: 06040200 0f0d0b09 ........
000201db <__func__.0>:
201db: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm
201eb: 665f7061 745f746d 00007478 ap_fmt_txt...
000201f8 <kern_classes>:
201f8: 00020208 00020e50 00020db5 0000313d ....P.......=1..
00020208 <kern_class_values>:
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 <kern_right_class_mapping>:
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 <kern_left_class_mapping>:
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 <cmaps>:
20eec: 00000020 0001005f 00000000 00000000 ..._...........
20efc: 00000000 000000b0 0060f7f3 00020f14 ..........`.....
20f0c: 00000000 0002003b ....;...
00020f14 <unicode_list_1>:
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 <glyph_dsc>:
...
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 <gylph_bitmap>:
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 <lv_anim_path_def>:
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 <sin0_90_table>:
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<K.M.N.P
23fd8: 53f95246 574b55a5 5a8258ea 5d9c5c13 FR.S.UKW.X.Z.\.]
23fe8: 609a5f1f 6379620d 663964dd 68d9678d ._.`.byc.d9f.g.h
23ff8: 6b596a1d 6db76c8c 6ff36ed9 720c7104 .jYk.l.m.n.o.q.r
24008: 7401730b 75d274ee 777f76ad 79067847 .s.t.t.u.v.wGx.y
24018: 7a6779bb 7ba27b0a 7cb77c32 7da57d33 .ygz.{.{2|.|3}.}
24028: 7e6c7e0d 7f0b7ec0 7f827f4b 7fd27faf .~l~.~..K.......
24038: 7ffa7feb 2e2e7fff 6168732f 2f646572 ......../shared/
24048: 72696874 72617064 6c2f7974 2f6c6776 thirdparty/lvgl/
24058: 2f637273 6d5f766c 2f637369 6d5f766c src/lv_misc/lv_m
24068: 632e6d65 756f4300 276e646c 6c612074 em.c.Couldn't al
24078: 61636f6c 6d206574 726f6d65 766c0079 locate memory.lv
24088: 6d656d5f 6675625f 6c65725f 65736165 _mem_buf_release
24098: 2070203a 6e207369 6120746f 6f6e6b20 : p is not a kno
240a8: 62206e77 65666675 766c0072 6d656d5f wn buffer.lv_mem
240b8: 6675625f 7465675f 754f203a 666f2074 _buf_get: Out of
240c8: 6d656d20 2c79726f 6e616320 61207427 memory, can't a
240d8: 636f6c6c 20657461 656e2061 62202077 llocate a new b
240e8: 65666675 69282072 6572636e 20657361 uffer (increase
240f8: 72756f79 5f564c20 5f4d454d 455a4953 your LV_MEM_SIZE
24108: 6165682f 69732070 0029657a 6d5f766c /heap size).lv_m
24118: 625f6d65 675f6675 203a7465 66206f6e em_buf_get: no f
24128: 20656572 66667562 202e7265 72636e49 ree buffer. Incr
24138: 65736165 5f564c20 57415244 4655425f ease LV_DRAW_BUF
24148: 58414d5f 4d554e5f _MAX_NUM..
00024152 <__func__.4>:
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 ....